Update WeatherNode example

This commit is contained in:
Felix Rusu 2019-01-17 17:02:11 -05:00
parent 32a80592e2
commit 56032af2cc
2 changed files with 15 additions and 20 deletions

View File

@ -50,7 +50,7 @@
#define IS_RFM69HW_HCW //uncomment only for RFM69HW/HCW! Leave out if you have RFM69W/CW! #define IS_RFM69HW_HCW //uncomment only for RFM69HW/HCW! Leave out if you have RFM69W/CW!
//********************************************************************************************* //*********************************************************************************************
#define ENABLE_ATC //comment out this line to disable AUTO TRANSMISSION CONTROL #define ENABLE_ATC //comment out this line to disable AUTO TRANSMISSION CONTROL
#define ATC_RSSI -75 #define ATC_RSSI -80
//********************************************************************************************* //*********************************************************************************************
#define SEND_LOOPS 15 //send data this many sleep loops (15 loops of 8sec cycles = 120sec ~ 2 minutes) #define SEND_LOOPS 15 //send data this many sleep loops (15 loops of 8sec cycles = 120sec ~ 2 minutes)
#define SLEEP_FASTEST SLEEP_15MS #define SLEEP_FASTEST SLEEP_15MS
@ -68,17 +68,12 @@ period_t sleepTime = SLEEP_LONGEST; //period_t is an enum type defined in the Lo
#define BATT_LOW 3.6 //(volts) #define BATT_LOW 3.6 //(volts)
#define BATT_READ_LOOPS SEND_LOOPS*10 // read and report battery voltage every this many sleep cycles (ex 30cycles * 8sec sleep = 240sec/4min). For 450 cycles you would get ~1 hour intervals between readings #define BATT_READ_LOOPS SEND_LOOPS*10 // read and report battery voltage every this many sleep cycles (ex 30cycles * 8sec sleep = 240sec/4min). For 450 cycles you would get ~1 hour intervals between readings
//***************************************************************************************************************************** //*****************************************************************************************************************************
#ifdef __AVR_ATmega1284P__
#define LED 15 // Moteino MEGAs have LEDs on D15
#define FLASH_SS 23 // and FLASH SS on D23
#else
#define LED 9 // Moteinos have LEDs on D9
#define FLASH_SS 8 // and FLASH SS on D8
#endif
//#define BLINK_EN //uncomment to blink LED on every send //#define BLINK_EN //uncomment to blink LED on every send
//#define SERIAL_EN //comment out if you don't want any serial output //#define SERIAL_EN //comment out if you don't want any serial output
//*****************************************************************************************************************************
#if defined (MOTEINO_M0) && defined(SERIAL_PORT_USBVIRTUAL)
#define Serial SERIAL_PORT_USBVIRTUAL // Required for Serial on Zero based boards
#endif
#ifdef SERIAL_EN #ifdef SERIAL_EN
#define SERIAL_BAUD 115200 #define SERIAL_BAUD 115200
@ -91,15 +86,14 @@ period_t sleepTime = SLEEP_LONGEST; //period_t is an enum type defined in the Lo
#define SERIALFLUSH(); #define SERIALFLUSH();
#endif #endif
//***************************************************************************************************************************** //*****************************************************************************************************************************
#ifdef ENABLE_ATC #ifdef ENABLE_ATC
RFM69_ATC radio; RFM69_ATC radio;
#else #else
RFM69 radio; RFM69 radio;
#endif #endif
//*****************************************************************************************************************************
SPIFlash flash(FLASH_SS, 0xEF30); //WINDBOND 4MBIT flash chip on CS pin D8 (default for Moteino) SPIFlash flash(SS_FLASHMEM, 0xEF30); //WINDBOND 4MBIT flash chip on CS pin D8 (default for Moteino)
BME280 bme280; BME280 bme280;
char Pstr[10]; char Pstr[10];
char Fstr[10]; char Fstr[10];
@ -112,7 +106,7 @@ void setup(void)
#ifdef SERIAL_EN #ifdef SERIAL_EN
Serial.begin(SERIAL_BAUD); Serial.begin(SERIAL_BAUD);
#endif #endif
pinMode(LED, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
radio.initialize(FREQUENCY,NODEID,NETWORKID); radio.initialize(FREQUENCY,NODEID,NETWORKID);
#ifdef IS_RFM69HW_HCW #ifdef IS_RFM69HW_HCW
@ -149,14 +143,14 @@ void setup(void)
bme280.setMode(MODE_SLEEP); bme280.setMode(MODE_SLEEP);
radio.sendWithRetry(GATEWAYID, "START", 6); radio.sendWithRetry(GATEWAYID, "START", 6);
Blink(LED, 100);Blink(LED, 100);Blink(LED, 100); Blink(LED_BUILTIN, 100);Blink(LED_BUILTIN, 100);Blink(LED_BUILTIN, 100);
if (flash.initialize()) flash.sleep(); if (flash.initialize()) flash.sleep();
for (uint8_t i=0; i<=A5; i++) for (uint8_t i=0; i<=A5; i++)
{ {
if (i == RF69_SPI_CS) continue; if (i == RF69_SPI_CS) continue;
if (i == FLASH_SS) continue; if (i == SS_FLASHMEM) continue;
pinMode(i, OUTPUT); pinMode(i, OUTPUT);
digitalWrite(i, LOW); digitalWrite(i, LOW);
} }
@ -203,7 +197,7 @@ void loop()
DEBUG(buffer); DEBUG(" (packet length:"); DEBUG(sendLen); DEBUGln(")"); DEBUG(buffer); DEBUG(" (packet length:"); DEBUG(sendLen); DEBUGln(")");
#ifdef BLINK_EN #ifdef BLINK_EN
Blink(LED, 5); Blink(LED_BUILTIN, 5);
#endif #endif
} }
@ -242,9 +236,9 @@ void readBattery()
{ {
unsigned int readings=0; unsigned int readings=0;
//enable battery monitor on WeatherShield (via mosfet controlled by A3) //enable battery monitor on WeatherShield R1 (via mosfet controlled by A3)
pinMode(BATT_MONITOR_EN, OUTPUT); //pinMode(BATT_MONITOR_EN, OUTPUT);
digitalWrite(BATT_MONITOR_EN, LOW); //digitalWrite(BATT_MONITOR_EN, LOW);
for (byte i=0; i<5; i++) //take several samples, and average for (byte i=0; i<5; i++) //take several samples, and average
readings+=analogRead(BATT_MONITOR); readings+=analogRead(BATT_MONITOR);

View File

@ -67,6 +67,7 @@ RF69_315MHZ LITERAL1
RF69_433MHZ LITERAL1 RF69_433MHZ LITERAL1
RF69_868MHZ LITERAL1 RF69_868MHZ LITERAL1
RF69_915MHZ LITERAL1 RF69_915MHZ LITERAL1
RF69_SPI_CS LITERAL1
####################################### #######################################
# Variables/Volatiles (LITERAL2) # Variables/Volatiles (LITERAL2)
####################################### #######################################