/*
 * CAMETEO project
 * 
 * This is a personnal project of weather station with
 * automatic photo taking.
 * This code is the weather station part and is meant 
 * to be run on a PJRC Teensy 3.2 board.
 * 
 * Author : Arofarn
 * 
 * Licence : GPL v3
 * 
 */

/*
 * LIBRARIES
 */
 
//Protocols
#include <Wire.h>   // library used with I2C protocol
#include <SPI.h>    // SPI protocol

//Teensy3.x Real Time Clock
#include <TimeLib.h>

//SD card
#include <SD.h>

// Sensors
#include <Adafruit_Sensor.h>    // Generic
//#include <DHT.h>                // DHT22
//#include <DHT_U.h>              // DHT22 unified
//#include <Adafruit_BMP085_U.h>  // BMP180
#include <Adafruit_BME280.h>    // BME280
#include <PWFusion_AS3935.h>

//GPS
//#include <Adafruit_GPS.h>       // Adafruit Ultimate GPS
#include <TinyGPS.h>            //Builtin GPS lib

/*
 * DEFINE
 * &
 * DECLARE
 */

//Special characteres
#define DEGREE      (char)176  //degree symbol in ISO 8859-1
#define DEGREE_LCD  (char)222  //degree symbol for lcd display

// Pins used
#define RX1_PIN         0     // Raspberry Pi2 serial comm. - Hard wired
#define TX1_PIN         1     // Raspberry Pi2 serial comm. - Hard wired
#define RPI_PWR_PIN     2     // Raspberry Pi power control - Hard wired
#define SD_CS_PIN       4     // SPI SD CS                  - Hard wired
#define GPS_EN_PIN      6     // GPS ENable
#define RX3_PIN         7     // GPS serial comm.
#define TX3_PIN         8     // GPS serial comm.
#define AS3935_IRQ_PIN  9     // Interrupts from AS3935 lightning sensor
#define AS3935_CS_PIN   10    // SPI CS AS3935 lightning sensor
#define SPI_DI_PIN      11    // SPI MOSI AS3935 lightning sensor
#define SPI_DO_PIN      12    // SPI MISO AS3935 lightning sensor
#define SPI_CK_PIN      13    // SPI clock SD + AS3935 lightning sensor + built-in LED
//#define DHT_PIN         14    // Humidity sensor data
#define GPS_BUT_PIN     16    // GPS switch power control

#define I2C_SDA_PIN 18    // I2C SDA 
#define I2C_SCL_PIN 19    // I2C SCL 

#define BATT_VOLT_PIN 22  // Battery voltage monitoring (Analog Input)
#define LOW_BATT_PIN  23  // Low Battery signal from charger (digital input)

//I2C addresses
//#define TCN75A_ADDR 0x00   //Sensor I2C bus address
#define BMP180_ADDR 0x77
//#define BME280_ADDR 0x00      // ???

//Serial over USB communication
#define SERIAL_PORT       Serial
#define SERIAL_BAUD_RATE  9600

//Raspberry Pi Serial Comm.
#define RPI_SERIAL_PORT       Serial1
#define RPI_SERIAL_BAUD_RATE  115200

//GPS
#define GPS_SERIAL_PORT       Serial3
#define GPS_SERIAL_BAUD_RATE  9600

// AS3935 Lightning sensor
#define AS3935_INDOORS       0
#define AS3935_OUTDOORS      1
#define AS3935_DIST_DIS      0
#define AS3935_DIST_EN       1
#define AS3935_CAPACITANCE   72      // 72pF for THIS board (from seller)


