@@ -32,9 +32,14 @@
|
|||||||
*
|
*
|
||||||
* Version 1.3 - Thomas Bowman Mørch
|
* Version 1.3 - Thomas Bowman Mørch
|
||||||
* Improved transmission logic, eliminating spurious transmissions (when temperatuere / humidity fluctuates 1 up and down between measurements)
|
* Improved transmission logic, eliminating spurious transmissions (when temperatuere / humidity fluctuates 1 up and down between measurements)
|
||||||
*
|
|
||||||
* Added OTA boot mode, need to hold A1 low while applying power. (uses slightly more power as it's waiting for bootloader messages)
|
* Added OTA boot mode, need to hold A1 low while applying power. (uses slightly more power as it's waiting for bootloader messages)
|
||||||
*
|
*
|
||||||
|
* Version 1.4 - Thomas Bowman Mørch
|
||||||
|
*
|
||||||
|
* Corrected division in the code deciding whether to transmit or not, that resulted in generating an integer. Now it's generating floats as expected.
|
||||||
|
* Simplified detection for OTA bootloader, now detecting if MY_OTA_FIRMWARE_FEATURE is defined. If this is defined sensebender automaticly waits 300mS after each transmission
|
||||||
|
* Moved Battery status messages, so they are transmitted together with normal sensor updates (but only every 60th minute)
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Enable debug prints to serial monitor
|
// Enable debug prints to serial monitor
|
||||||
@@ -61,7 +66,7 @@
|
|||||||
// Uncomment the line below, to transmit battery voltage as a normal sensor value
|
// Uncomment the line below, to transmit battery voltage as a normal sensor value
|
||||||
//#define BATT_SENSOR 199
|
//#define BATT_SENSOR 199
|
||||||
|
|
||||||
#define RELEASE "1.3"
|
#define RELEASE "1.4"
|
||||||
|
|
||||||
#define AVERAGES 2
|
#define AVERAGES 2
|
||||||
|
|
||||||
@@ -88,7 +93,6 @@
|
|||||||
|
|
||||||
// Pin definitions
|
// Pin definitions
|
||||||
#define TEST_PIN A0
|
#define TEST_PIN A0
|
||||||
#define OTA_ENABLE A1
|
|
||||||
#define LED_PIN A2
|
#define LED_PIN A2
|
||||||
#define ATSHA204_PIN 17 // A3
|
#define ATSHA204_PIN 17 // A3
|
||||||
|
|
||||||
@@ -111,7 +115,6 @@ int measureCount = 0;
|
|||||||
int sendBattery = 0;
|
int sendBattery = 0;
|
||||||
boolean isMetric = true;
|
boolean isMetric = true;
|
||||||
boolean highfreq = true;
|
boolean highfreq = true;
|
||||||
boolean ota_enabled = false;
|
|
||||||
boolean transmission_occured = false;
|
boolean transmission_occured = false;
|
||||||
|
|
||||||
// Storage of old measurements
|
// Storage of old measurements
|
||||||
@@ -142,18 +145,11 @@ void setup() {
|
|||||||
digitalWrite(TEST_PIN, HIGH); // Enable pullup
|
digitalWrite(TEST_PIN, HIGH); // Enable pullup
|
||||||
if (!digitalRead(TEST_PIN)) testMode();
|
if (!digitalRead(TEST_PIN)) testMode();
|
||||||
|
|
||||||
pinMode(OTA_ENABLE, INPUT);
|
|
||||||
digitalWrite(OTA_ENABLE, HIGH);
|
|
||||||
if (!digitalRead(OTA_ENABLE)) {
|
|
||||||
ota_enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure that ATSHA204 is not floating
|
// Make sure that ATSHA204 is not floating
|
||||||
pinMode(ATSHA204_PIN, INPUT);
|
pinMode(ATSHA204_PIN, INPUT);
|
||||||
digitalWrite(ATSHA204_PIN, HIGH);
|
digitalWrite(ATSHA204_PIN, HIGH);
|
||||||
|
|
||||||
digitalWrite(TEST_PIN,LOW);
|
digitalWrite(TEST_PIN,LOW);
|
||||||
digitalWrite(OTA_ENABLE, LOW); // remove pullup, save some power.
|
|
||||||
|
|
||||||
digitalWrite(LED_PIN, HIGH);
|
digitalWrite(LED_PIN, HIGH);
|
||||||
|
|
||||||
@@ -169,7 +165,10 @@ void setup() {
|
|||||||
raHum.clear();
|
raHum.clear();
|
||||||
sendTempHumidityMeasurements(false);
|
sendTempHumidityMeasurements(false);
|
||||||
sendBattLevel(false);
|
sendBattLevel(false);
|
||||||
if (ota_enabled) Serial.println("OTA FW update enabled");
|
|
||||||
|
#ifdef MY_OTA_FIRMWARE_FEATURE
|
||||||
|
Serial.println("OTA FW update enabled");
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,11 +195,13 @@ void loop() {
|
|||||||
sendBattery ++;
|
sendBattery ++;
|
||||||
bool forceTransmit = false;
|
bool forceTransmit = false;
|
||||||
transmission_occured = false;
|
transmission_occured = false;
|
||||||
|
#ifndef MY_OTA_FIRMWARE_FEATURE
|
||||||
if ((measureCount == 5) && highfreq)
|
if ((measureCount == 5) && highfreq)
|
||||||
{
|
{
|
||||||
if (!ota_enabled) clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power.
|
clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power.
|
||||||
highfreq = false;
|
highfreq = false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (measureCount > FORCE_TRANSMIT_INTERVAL) { // force a transmission
|
if (measureCount > FORCE_TRANSMIT_INTERVAL) { // force a transmission
|
||||||
forceTransmit = true;
|
forceTransmit = true;
|
||||||
@@ -208,15 +209,16 @@ void loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sendTempHumidityMeasurements(forceTransmit);
|
sendTempHumidityMeasurements(forceTransmit);
|
||||||
if (sendBattery > 60)
|
/* if (sendBattery > 60)
|
||||||
{
|
{
|
||||||
sendBattLevel(forceTransmit); // Not needed to send battery info that often
|
sendBattLevel(forceTransmit); // Not needed to send battery info that often
|
||||||
sendBattery = 0;
|
sendBattery = 0;
|
||||||
}
|
}*/
|
||||||
|
#ifdef MY_OTA_FIRMWARE_FEATURE
|
||||||
if (ota_enabled & transmission_occured) {
|
if (transmission_occured) {
|
||||||
wait(OTA_WAIT_PERIOD);
|
wait(OTA_WAIT_PERIOD);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
sleep(MEASURE_INTERVAL);
|
sleep(MEASURE_INTERVAL);
|
||||||
}
|
}
|
||||||
@@ -238,7 +240,7 @@ void sendTempHumidityMeasurements(bool force)
|
|||||||
|
|
||||||
raHum.addValue(data.humidityPercent);
|
raHum.addValue(data.humidityPercent);
|
||||||
|
|
||||||
float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100);
|
float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100.0);
|
||||||
float diffHum = abs(lastHumidity - raHum.getAverage());
|
float diffHum = abs(lastHumidity - raHum.getAverage());
|
||||||
|
|
||||||
Serial.print(F("TempDiff :"));Serial.println(diffTemp);
|
Serial.print(F("TempDiff :"));Serial.println(diffTemp);
|
||||||
@@ -261,6 +263,10 @@ void sendTempHumidityMeasurements(bool force)
|
|||||||
lastTemperature = temperature;
|
lastTemperature = temperature;
|
||||||
lastHumidity = humidity;
|
lastHumidity = humidity;
|
||||||
transmission_occured = true;
|
transmission_occured = true;
|
||||||
|
if (sendBattery > 60) {
|
||||||
|
sendBattLevel(true); // Not needed to send battery info that often
|
||||||
|
sendBattery = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user