From 86ec82fd06768a8d4afc5a35edb7b12af3640d36 Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Tue, 12 Aug 2025 20:56:59 +1000 Subject: [PATCH] * Heltec CT62: sensor role (with 2 channel relay support + 1 digital input) --- variants/heltec_ct62/HT-CT62Board.h | 30 +++++++++++++++++++++++++++-- variants/heltec_ct62/platformio.ini | 21 ++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/variants/heltec_ct62/HT-CT62Board.h b/variants/heltec_ct62/HT-CT62Board.h index e5a627b8..d26e7b26 100644 --- a/variants/heltec_ct62/HT-CT62Board.h +++ b/variants/heltec_ct62/HT-CT62Board.h @@ -8,9 +8,35 @@ #include class Heltec_CT62_Board : public ESP32Board { -public: + uint32_t gpio_state = 0; -uint16_t getBattMilliVolts() override { +public: + void begin() { + ESP32Board::begin(); +#if defined(PIN_BOARD_RELAY_CH1) && defined(PIN_BOARD_RELAY_CH2) + pinMode(PIN_BOARD_RELAY_CH1, OUTPUT); + pinMode(PIN_BOARD_RELAY_CH2, OUTPUT); +#endif +#if defined(PIN_BOARD_DIGITAL_IN) + pinMode(PIN_BOARD_DIGITAL_IN, INPUT); +#endif + } + uint32_t getGpio() override { +#if defined(PIN_BOARD_DIGITAL_IN) + return gpio_state | (digitalRead(PIN_BOARD_DIGITAL_IN) ? 1 : 0); +#else + return 0; +#endif + } + void setGpio(uint32_t values) override { +#if defined(PIN_BOARD_RELAY_CH1) && defined(PIN_BOARD_RELAY_CH2) + gpio_state = values; + digitalWrite(PIN_BOARD_RELAY_CH1, values & 2); + digitalWrite(PIN_BOARD_RELAY_CH2, values & 4); +#endif + } + + uint16_t getBattMilliVolts() override { #ifdef PIN_VBAT_READ analogReadResolution(12); // ESP32-C3 ADC is 12-bit - 3.3/4096 (ref voltage/max counts) uint32_t raw = 0; diff --git a/variants/heltec_ct62/platformio.ini b/variants/heltec_ct62/platformio.ini index ba23a5a6..ec24cdcd 100644 --- a/variants/heltec_ct62/platformio.ini +++ b/variants/heltec_ct62/platformio.ini @@ -86,3 +86,24 @@ lib_deps = ${Heltec_ct62.lib_deps} ${esp32_ota.lib_deps} densaugeo/base64 @ ~1.4.0 + +[env:Heltec_ct62_sensor] +extends = Heltec_ct62 +build_flags = + ${Heltec_ct62.build_flags} + -D ADVERT_NAME='"HT-CT62 Sensor"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D PIN_BOARD_SDA=-1 + -D PIN_BOARD_SCL=-1 + -D PIN_BOARD_RELAY_CH1=0 + -D PIN_BOARD_RELAY_CH2=1 + -D PIN_BOARD_DIGITAL_IN=19 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${Heltec_ct62.build_src_filter} + +<../examples/simple_sensor> +lib_deps = + ${Heltec_ct62.lib_deps} + ${esp32_ota.lib_deps}