Corrected pin configuration to 0.7final PCB
This commit is contained in:
parent
55d66b763c
commit
093b7c7fc3
@ -46,7 +46,7 @@
|
|||||||
/** \addtogroup Configuration
|
/** \addtogroup Configuration
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define FIRMWARE_VERSION "1.0.10"
|
#define FIRMWARE_VERSION "1.1.0"
|
||||||
|
|
||||||
#define ADC_TO_VOLT(adc) ((adc) * 3.3 ) / 4095)
|
#define ADC_TO_VOLT(adc) ((adc) * 3.3 ) / 4095)
|
||||||
#define ADC_TO_VOLT_WITH_MULTI(adc, multi) (((adc)*3.3 * (multi)) / 4095)
|
#define ADC_TO_VOLT_WITH_MULTI(adc, multi) (((adc)*3.3 * (multi)) / 4095)
|
||||||
@ -58,23 +58,21 @@
|
|||||||
#define BATTSENSOR_INDEX_BATTERY 1
|
#define BATTSENSOR_INDEX_BATTERY 1
|
||||||
#define MS_TO_S 1000
|
#define MS_TO_S 1000
|
||||||
|
|
||||||
#define SENSOR_LIPO 34 /**< GPIO 34 (ADC1) */
|
#define SENSOR_PLANT0 32 /**< GPIO 32 (ADC1) */
|
||||||
#define SENSOR_SOLAR 35 /**< GPIO 35 (ADC1) */
|
#define SENSOR_PLANT1 33 /**< GPIO 33 (ADC1) */
|
||||||
#define SENSOR_PLANT0 12 /**< GPIO 32 (ADC1) */
|
#define SENSOR_PLANT2 25 /**< GPIO 25 (ADC2) */
|
||||||
#define SENSOR_PLANT1 14/**< GPIO 33 (ADC1) */
|
|
||||||
#define SENSOR_PLANT2 27 /**< GPIO 25 (ADC2) */
|
|
||||||
#define SENSOR_PLANT3 26 /**< GPIO 26 (ADC2) */
|
#define SENSOR_PLANT3 26 /**< GPIO 26 (ADC2) */
|
||||||
#define SENSOR_PLANT4 25 /**< GPIO 27 (ADC2) */
|
#define SENSOR_PLANT4 27 /**< GPIO 27 (ADC2) */
|
||||||
#define SENSOR_PLANT5 14 /**< GPIO 14 (ADC2) */
|
#define SENSOR_PLANT5 39 /**< SENSOR_VIN */
|
||||||
#define SENSOR_PLANT6 12 /**< GPIO 12 (ADC2) */
|
#define SENSOR_PLANT6 36 /**< SENSOR_VP */
|
||||||
|
|
||||||
#define OUTPUT_PUMP0 15 /**< GPIO 23 */
|
#define OUTPUT_PUMP0 17 /**< GPIO 17 */
|
||||||
#define OUTPUT_PUMP1 5 /**< GPIO 22 */
|
#define OUTPUT_PUMP1 5 /**< GPIO 5 */
|
||||||
#define OUTPUT_PUMP2 18 /**< GPIO 21 */
|
#define OUTPUT_PUMP2 18 /**< GPIO 18 */
|
||||||
#define OUTPUT_PUMP3 19 /**< GPIO 19 */
|
#define OUTPUT_PUMP3 19 /**< GPIO 19 */
|
||||||
#define OUTPUT_PUMP4 21 /**< GPIO 18 */
|
#define OUTPUT_PUMP4 21 /**< GPIO 21 */
|
||||||
#define OUTPUT_PUMP5 22 /**< GPIO 5 */
|
#define OUTPUT_PUMP5 22 /**< GPIO 22 */
|
||||||
#define OUTPUT_PUMP6 23 /**< GPIO 15 */
|
#define OUTPUT_PUMP6 23 /**< GPIO 23 */
|
||||||
|
|
||||||
#define OUTPUT_SENSOR 16 /**< GPIO 16 - Enable Sensors */
|
#define OUTPUT_SENSOR 16 /**< GPIO 16 - Enable Sensors */
|
||||||
#define OUTPUT_PUMP 13 /**< GPIO 13 - Enable Pumps */
|
#define OUTPUT_PUMP 13 /**< GPIO 13 - Enable Pumps */
|
||||||
@ -89,6 +87,8 @@
|
|||||||
#define MINIMUM_SOLAR_VOLT 4.0f /**< Minimum voltage of the sun, to detect daylight */
|
#define MINIMUM_SOLAR_VOLT 4.0f /**< Minimum voltage of the sun, to detect daylight */
|
||||||
#define SOLAR_CHARGE_MIN_VOLTAGE 7 /**< Sun is rising (morning detected) */
|
#define SOLAR_CHARGE_MIN_VOLTAGE 7 /**< Sun is rising (morning detected) */
|
||||||
#define SOLAR_CHARGE_MAX_VOLTAGE 9 /**< Sun is shining (noon) */
|
#define SOLAR_CHARGE_MAX_VOLTAGE 9 /**< Sun is shining (noon) */
|
||||||
|
#define VOLT_MAX_BATT 4.2f
|
||||||
|
#define VOLT_MAX_SOLAR 20.0f
|
||||||
|
|
||||||
#define MAX_CONFIG_SETTING_ITEMS 50 /**< Parameter, that can be configured in Homie */
|
#define MAX_CONFIG_SETTING_ITEMS 50 /**< Parameter, that can be configured in Homie */
|
||||||
|
|
||||||
@ -104,7 +104,6 @@
|
|||||||
|
|
||||||
#define TEMPERATUR_TIMEOUT 3000 /**< 3 Seconds timeout for the temperatur sensors */
|
#define TEMPERATUR_TIMEOUT 3000 /**< 3 Seconds timeout for the temperatur sensors */
|
||||||
#define TEMP_SENSOR_MEASURE_SERIES 5
|
#define TEMP_SENSOR_MEASURE_SERIES 5
|
||||||
#define VOLT_SENSOR_MEASURE_SERIES 5
|
|
||||||
|
|
||||||
/* @} */
|
/* @} */
|
||||||
#endif
|
#endif
|
@ -87,11 +87,9 @@ int readCounter = 0;
|
|||||||
bool mConfigured = false;
|
bool mConfigured = false;
|
||||||
long nextBlink = 0; /**< Time needed in main loop to support expected blink code */
|
long nextBlink = 0; /**< Time needed in main loop to support expected blink code */
|
||||||
|
|
||||||
RunningMedian lipoRawSensor = RunningMedian(VOLT_SENSOR_MEASURE_SERIES);
|
|
||||||
RunningMedian solarRawSensor = RunningMedian(VOLT_SENSOR_MEASURE_SERIES);
|
|
||||||
RunningMedian waterRawSensor = RunningMedian(5);
|
RunningMedian waterRawSensor = RunningMedian(5);
|
||||||
RunningMedian lipoTempSensor = RunningMedian(TEMP_SENSOR_MEASURE_SERIES);
|
float mTempLipo = 0.0f;
|
||||||
RunningMedian waterTempSensor = RunningMedian(TEMP_SENSOR_MEASURE_SERIES);
|
float mTempWater = 0.0f;
|
||||||
float mBatteryVoltage = 0.0f;
|
float mBatteryVoltage = 0.0f;
|
||||||
float mSolarVoltage = 0.0f;
|
float mSolarVoltage = 0.0f;
|
||||||
float mChipTemp = 0.0f;
|
float mChipTemp = 0.0f;
|
||||||
@ -181,8 +179,6 @@ void readSystemSensors()
|
|||||||
int timeoutTemp = millis() + TEMPERATUR_TIMEOUT;
|
int timeoutTemp = millis() + TEMPERATUR_TIMEOUT;
|
||||||
int sensorCount = 0;
|
int sensorCount = 0;
|
||||||
|
|
||||||
rtcLastLipoTemp = lipoTempSensor.getAverage();
|
|
||||||
rtcLastWaterTemp = waterTempSensor.getAverage();
|
|
||||||
|
|
||||||
/* Required to read the temperature at least once */
|
/* Required to read the temperature at least once */
|
||||||
while (sensorCount == 0 && millis() < timeoutTemp)
|
while (sensorCount == 0 && millis() < timeoutTemp)
|
||||||
@ -211,14 +207,10 @@ void readSystemSensors()
|
|||||||
mSolarVoltage = battery.getVoltage(BATTSENSOR_INDEX_SOLAR) * SOLAR_VOLT_FACTOR;
|
mSolarVoltage = battery.getVoltage(BATTSENSOR_INDEX_SOLAR) * SOLAR_VOLT_FACTOR;
|
||||||
mBatteryVoltage = battery.getVoltage(BATTSENSOR_INDEX_BATTERY);
|
mBatteryVoltage = battery.getVoltage(BATTSENSOR_INDEX_BATTERY);
|
||||||
mChipTemp = battery.getTemperature();
|
mChipTemp = battery.getTemperature();
|
||||||
for (int i = 0; i < VOLT_SENSOR_MEASURE_SERIES; i++)
|
|
||||||
{
|
|
||||||
lipoRawSensor.add(analogRead(SENSOR_LIPO));
|
|
||||||
solarRawSensor.add(analogRead(SENSOR_SOLAR));
|
|
||||||
}
|
|
||||||
Serial << "Lipo " << lipoRawSensor.getAverage() << " -> " << mBatteryVoltage << endl;
|
|
||||||
rtcLastBatteryVoltage = mBatteryVoltage;
|
rtcLastBatteryVoltage = mBatteryVoltage;
|
||||||
rtcLastSolarVoltage = mSolarVoltage;
|
rtcLastSolarVoltage = mSolarVoltage;
|
||||||
|
rtcLastLipoTemp = mTempLipo;
|
||||||
|
rtcLastWaterTemp = mTempWater;
|
||||||
}
|
}
|
||||||
|
|
||||||
long getCurrentTime()
|
long getCurrentTime()
|
||||||
@ -324,87 +316,24 @@ void mode2MQTT()
|
|||||||
Serial << "W : " << waterRawSensor.getAverage() << " cm (" << String(waterLevelMax.get() - waterRawSensor.getAverage()) << "%)" << endl;
|
Serial << "W : " << waterRawSensor.getAverage() << " cm (" << String(waterLevelMax.get() - waterRawSensor.getAverage()) << "%)" << endl;
|
||||||
lastWaterValue = waterRawSensor.getAverage();
|
lastWaterValue = waterRawSensor.getAverage();
|
||||||
|
|
||||||
sensorLipo.setProperty("percent").send(String(100 * lipoRawSensor.getAverage() / 4095));
|
sensorLipo.setProperty("percent").send(String(100 * mBatteryVoltage / VOLT_MAX_BATT));
|
||||||
sensorLipo.setProperty("volt").send(String(mBatteryVoltage));
|
sensorLipo.setProperty("volt").send(String(mBatteryVoltage));
|
||||||
sensorSolar.setProperty("percent").send(String((100 * solarRawSensor.getAverage()) / 4095));
|
sensorSolar.setProperty("percent").send(String(100 * mSolarVoltage / VOLT_MAX_SOLAR));
|
||||||
sensorSolar.setProperty("volt").send(String(mSolarVoltage));
|
sensorSolar.setProperty("volt").send(String(mSolarVoltage));
|
||||||
startupReason.setProperty("startupReason").send(String(wakeUpReason));
|
startupReason.setProperty("startupReason").send(String(wakeUpReason));
|
||||||
|
|
||||||
rtcLipoTempIndex = lipoSensorIndex.get();
|
rtcLipoTempIndex = lipoSensorIndex.get();
|
||||||
rtcWaterTempIndex = waterSensorIndex.get();
|
rtcWaterTempIndex = waterSensorIndex.get();
|
||||||
|
|
||||||
float lipoTempCurrent = lipoTempSensor.getMedian();
|
|
||||||
float t2 = NAN;
|
|
||||||
if (! isnan(lipoTempCurrent))
|
|
||||||
{
|
|
||||||
sensorTemp.setProperty(TEMPERATUR_SENSOR_LIPO).send(String(lipoTempCurrent));
|
|
||||||
Serial << "Lipo Temperatur " << lipoTempCurrent << " °C " << endl;
|
|
||||||
|
|
||||||
t2 = waterTempSensor.getMedian();
|
sensorTemp.setProperty(TEMPERATUR_SENSOR_LIPO).send(String(mTempLipo));
|
||||||
if (! isnan(t2))
|
Serial << "Lipo Temperatur " << mTempLipo << " °C " << endl;
|
||||||
{
|
|
||||||
sensorTemp.setProperty(TEMPERATUR_SENSOR_WATER).send(String(t2));
|
|
||||||
Serial << "Water Temperatur " << lipoTempCurrent << " °C " << endl;
|
|
||||||
}
|
|
||||||
//give mqtt time, use via publish callback instead?
|
|
||||||
delay(100);
|
|
||||||
} else {
|
|
||||||
int j=0;
|
|
||||||
/* Activate the Sensors and measure the temperature again */
|
|
||||||
/* activate all sensors */
|
|
||||||
pinMode(OUTPUT_SENSOR, OUTPUT);
|
|
||||||
digitalWrite(OUTPUT_SENSOR, HIGH);
|
|
||||||
|
|
||||||
delay(100);
|
sensorTemp.setProperty(TEMPERATUR_SENSOR_WATER).send(String(mTempWater));
|
||||||
sensors.begin();
|
Serial << "Water Temperatur " << mTempWater << " °C " << endl;
|
||||||
|
|
||||||
for(j=0; j < TEMP_SENSOR_MEASURE_SERIES && sensors.getDeviceCount() == 0; j++) {
|
|
||||||
delay(100);
|
|
||||||
sensors.begin();
|
|
||||||
Serial << "Reset 1-Wire Bus" << endl;
|
|
||||||
// Setup Battery sensor DS2438
|
|
||||||
battery.begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
for(j=0; j < TEMP_SENSOR_MEASURE_SERIES && isnan(lipoTempCurrent); j++) {
|
|
||||||
delay(200);
|
|
||||||
readTemp();
|
|
||||||
lipoTempCurrent = lipoTempSensor.getMedian();
|
|
||||||
t2 = waterTempSensor.getMedian();
|
|
||||||
Serial << "Temperatur Lipo:" << lipoTempCurrent << " °C Water : " << t2 << " °C" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! isnan(lipoTempCurrent))
|
|
||||||
{
|
|
||||||
sensorTemp.setProperty(TEMPERATUR_SENSOR_LIPO).send(String(lipoTempCurrent));
|
|
||||||
Serial << "Lipo Temperatur " << lipoTempCurrent << " °C " << endl;
|
|
||||||
|
|
||||||
t2 = waterTempSensor.getMedian();
|
|
||||||
if (! isnan(t2))
|
|
||||||
{
|
|
||||||
sensorTemp.setProperty(TEMPERATUR_SENSOR_WATER).send(String(t2));
|
|
||||||
Serial << "Water Temperatur " << lipoTempCurrent << " °C " << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! isnan(mChipTemp)) {
|
|
||||||
sensorTemp.setProperty(TEMPERATUR_SENSOR_CHIP).send(String(mChipTemp));
|
sensorTemp.setProperty(TEMPERATUR_SENSOR_CHIP).send(String(mChipTemp));
|
||||||
Serial << "Chip Temperatur " << mChipTemp << " °C " << endl;
|
Serial << "Chip Temperatur " << mChipTemp << " °C " << endl;
|
||||||
}
|
|
||||||
|
|
||||||
/* deactivate the sensors */
|
|
||||||
digitalWrite(OUTPUT_SENSOR, LOW);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! isnan(lipoTempCurrent) && ! isnan(t2)) {
|
|
||||||
bool lipoTempWarning = (lipoTempCurrent != LIPO_MAX_TEMPERATUR) && abs(lipoTempCurrent - t2) > LIPO_MAX_TEMPERATUR_DIFF;
|
|
||||||
if (lipoTempWarning)
|
|
||||||
{
|
|
||||||
Serial.println("Lipo temp incorrect, panic mode deepsleep TODO");
|
|
||||||
//espDeepSleepFor(PANIK_MODE_DEEPSLEEP);
|
|
||||||
//return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < MAX_PLANTS; i++)
|
for (int i = 0; i < MAX_PLANTS; i++)
|
||||||
{
|
{
|
||||||
@ -534,9 +463,7 @@ int readTemp() {
|
|||||||
{
|
{
|
||||||
if (rtcLipoTempIndex != -1)
|
if (rtcLipoTempIndex != -1)
|
||||||
{
|
{
|
||||||
float temp1Raw = sensors.getTempCByIndex(rtcLipoTempIndex);
|
mTempLipo = sensors.getTempCByIndex(rtcLipoTempIndex);
|
||||||
//Serial << "lipoTempCurrent: " << temp1Raw << endl;
|
|
||||||
lipoTempSensor.add(temp1Raw);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -552,9 +479,8 @@ int readTemp() {
|
|||||||
|
|
||||||
if (sensorCount > 1 && rtcWaterTempIndex != -1)
|
if (sensorCount > 1 && rtcWaterTempIndex != -1)
|
||||||
{
|
{
|
||||||
float temp2Raw = sensors.getTempCByIndex(rtcWaterTempIndex);
|
mTempWater = sensors.getTempCByIndex(rtcWaterTempIndex);
|
||||||
//Serial << "waterTempCurrent: " << temp2Raw << endl;
|
//Serial << "waterTempCurrent: " << temp2Raw << endl;
|
||||||
waterTempSensor.add(temp2Raw);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
readAgain--;
|
readAgain--;
|
||||||
@ -623,12 +549,12 @@ bool readSensors()
|
|||||||
// check if chip needs to start into full operational mode
|
// check if chip needs to start into full operational mode
|
||||||
leaveMode1 |= readTemp();
|
leaveMode1 |= readTemp();
|
||||||
|
|
||||||
if (abs(lipoTempSensor.getAverage() - rtcLastLipoTemp) > TEMPERATURE_DELTA_TRIGGER_IN_C)
|
if (abs(mTempWater - rtcLastLipoTemp) > TEMPERATURE_DELTA_TRIGGER_IN_C)
|
||||||
{
|
{
|
||||||
leaveMode1 = true;
|
leaveMode1 = true;
|
||||||
wakeUpReason = WAKEUP_REASON_TEMP1_CHANGE;
|
wakeUpReason = WAKEUP_REASON_TEMP1_CHANGE;
|
||||||
}
|
}
|
||||||
if (abs(waterTempSensor.getAverage() - rtcLastWaterTemp) > TEMPERATURE_DELTA_TRIGGER_IN_C)
|
if (abs(mTempWater - rtcLastWaterTemp) > TEMPERATURE_DELTA_TRIGGER_IN_C)
|
||||||
{
|
{
|
||||||
wakeUpReason = WAKEUP_REASON_TEMP2_CHANGE;
|
wakeUpReason = WAKEUP_REASON_TEMP2_CHANGE;
|
||||||
leaveMode1 = true;
|
leaveMode1 = true;
|
||||||
@ -928,9 +854,6 @@ void setup()
|
|||||||
mPlants[i].init();
|
mPlants[i].init();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Intialize inputs and outputs */
|
|
||||||
pinMode(SENSOR_LIPO, ANALOG);
|
|
||||||
pinMode(SENSOR_SOLAR, ANALOG);
|
|
||||||
/* read button */
|
/* read button */
|
||||||
pinMode(BUTTON, INPUT);
|
pinMode(BUTTON, INPUT);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user