diff --git a/platformio.ini b/platformio.ini index f0865d3..5fdad78 100644 --- a/platformio.ini +++ b/platformio.ini @@ -36,3 +36,23 @@ build_flags = ${common.build_flags} -DNODE_GREENHOUSE -DHOSTNAME=\"Greenhouse\" monitor_speed = ${common.monitor_speed} upload_protocol = espota upload_port = 10.0.0.169 + +[env:FermenterUSB] +platform = ${esp12e.platform} +board = ${esp12e.board} +framework = ${common.framework} +lib_deps = ${common.lib_deps} +build_flags = ${common.build_flags} -DNODE_FERMENTER -DHOSTNAME=\"Fermenter\" +monitor_speed = ${common.monitor_speed} +upload_port = /dev/ttyUSB0 +upload_speed = 460800 + +[env:FermenterOTA] +platform = ${esp12e.platform} +board = ${esp12e.board} +framework = ${common.framework} +lib_deps = ${common.lib_deps} +build_flags = ${common.build_flags} -DNODE_FERMENTER -DHOSTNAME=\"Fermenter\" +monitor_speed = ${common.monitor_speed} +upload_protocol = espota +;upload_port = 10.0.0.169 diff --git a/src/Fermenter.cpp b/src/Fermenter.cpp new file mode 100644 index 0000000..ad15e74 --- /dev/null +++ b/src/Fermenter.cpp @@ -0,0 +1,24 @@ +#ifdef NODE_FERMENTER + +#include "patrix/bme680.h" +#include "patrix/tsl2561.h" + +DS18B20 ds18b20(); + +DS18B20Sensor sensor(ds18b20); + +PWMOutput heater(); + +void patrixSetup() { + ds18b20.setup(); + sensor.setup(); + heater.setup(); +} + +void patrixLoop() { + ds18b20.loop(); + sensor.loop(); + heater.loop(); +} + +#endif \ No newline at end of file diff --git a/src/patrix/DS18B20.h b/src/patrix/DS18B20.h new file mode 100644 index 0000000..7708e58 --- /dev/null +++ b/src/patrix/DS18B20.h @@ -0,0 +1,74 @@ +#ifndef HELLIGKEIT_DS18B20_H +#define HELLIGKEIT_DS18B20_H + +#include "OneWire.h" +#include "DallasTemperature.h" + +class DS18B20 { + + enum State { + IDLE, CONVERTING, DONE + }; + + String& name; + + const int pin; + + OneWire oneWire; + + DallasTemperature sensors; + + State state = IDLE; + + unsigned long timeout = 1000; + +public: + + explicit DS18B20(String& name, int pin) : name(name), pin(pin), oneWire(pin), sensors(&oneWire) { + // nothing + } + + void begin() { + sensors.begin(); + sensors.setWaitForConversion(false); + } + + void loop() { + switch (state) { + case IDLE: + sensors.requestTemperatures(); + break; + case CONVERTING: + if (sensors.isConversionComplete()) { + + } else if (millis() - last > timeout) { + Serial.printf("DS18B20 \"%s\" pin #%d: timeout", name.c_str(), pin); + } + } + } + +}; + +class DS18B20Sensor { + + DS18B20& bus; + + const int index; + +public: + + DS18B20Sensor(DS18B20& bus, int index) : bus(bus), index(index) { + // + } + + void setup() { + + } + + void loop() { + + } + +}; + +#endif //HELLIGKEIT_DS18B20_H