diff --git a/neosensor/libraries/boards/neosensor.h b/neosensor/libraries/boards/neosensor.h index 5516cc581bb4db43b664559f9fad5b219f8e2ff0..cceaed6828d26f09c41e0efaa4c6379507951184 100644 --- a/neosensor/libraries/boards/neosensor.h +++ b/neosensor/libraries/boards/neosensor.h @@ -154,9 +154,17 @@ */ #ifndef SENSORS_SERIAL_LINK #ifdef ESP32 - #define SENSORS_SERIAL_LINK (uint8_t)2 // [jul.21] neOSensor V5 added (i.e Serial2) - #else - #define SENSORS_SERIAL_LINK INVALID_SERIAL_LINK + #define SENSORS_SERIAL_LINK (uint8_t)2 // [jul.21] neOSensor V5 added (i.e Serial2) + #elif defined(ESP8266) + /* [apr.22] notes about serial ports on esp8266 + * - serial0(HW) is for programming and debug + * - serial1(HW) only TX + * - serial2(sw) this one + */ + //#define SENSORS_SERIAL_LINK INVALID_SERIAL_LINK + #define SENSORS_SERIAL_LINK (uint8_t)2 // [apr.22] useless but just to have var defined (i.e Serial2) + #define SENSORS_SERIAL_LINK_RX 4 // shared with PIR sensor hence avoid double declaration ;) + #define SENSORS_SERIAL_LINK_TX INVALID_GPIO // no TX pin #endif #endif diff --git a/neosensor/libraries/neocampus_drivers/pm_serial.cpp b/neosensor/libraries/neocampus_drivers/pm_serial.cpp index aab2c01c791c66883122035ef20988e3435802a5..36eb56b2955a0a713d5a3dda199982b576793da9 100644 --- a/neosensor/libraries/neocampus_drivers/pm_serial.cpp +++ b/neosensor/libraries/neocampus_drivers/pm_serial.cpp @@ -19,6 +19,9 @@ * Includes */ #include <Arduino.h> +#ifdef ESP8266 +#include <SoftwareSerial.h> +#endif /* ESP8266 */ #include "neocampus.h" #include "neocampus_debug.h" @@ -65,7 +68,7 @@ pm_serial::pm_serial( void ) : generic_driver( _MEASURES_INTERLEAVE_MS, _measures = nullptr; _nbMeasures = 0; - /* [nov.21] we choose to disable PM%_ENABLE gpio because PMS sensors + /* [nov.21] we choose to disable PM_ENABLE gpio because PMS sensors * already features both sleep() and wakeUp() commands _enable_gpio = PM_ENABLE; // PM_ENABLE gpio */ @@ -700,12 +703,18 @@ boolean pm_serial::_init( void ) { return false; } - #warning "esp8266 hack: Serial2 is not known ... correct me!" - #ifndef ESP8266 - Serial2.begin( _link_speed ); - _stream = &Serial2; // TODO pointer to stream according to link number specified ... maybe later ;) + #if defined(ESP8266) + #warning "esp8266 serial2 makes use of SoftwareSerial!" + SoftwareSerial *mySerial2 = new SoftwareSerial(SENSORS_SERIAL_LINK_RX,SENSORS_SERIAL_LINK_TX); + if( !mySerial2 ) return false; + mySerial2->begin( _link_speed ); + _stream = mySerial2; + #elif defined(ESP32) + Serial2.begin( _link_speed ); + _stream = &Serial2; // TODO pointer to stream according to link number specified ... maybe later ;) #else - return false; + #warning "unknown architecture for Serial2 link" + return false; #endif /* ESP8266 */ if( !_stream ) return false;