From 2a645ee42734e9679845b3d9e4d805434ec06342 Mon Sep 17 00:00:00 2001 From: Florent Date: Sat, 31 May 2025 15:52:59 +0200 Subject: [PATCH] wio-e5 : make distinct targets for dev board and mini dev board --- .../{wio-e5 => wio-e5-dev}/platformio.ini | 4 +- variants/{wio-e5 => wio-e5-dev}/target.cpp | 0 variants/wio-e5-dev/target.h | 33 +++++++++ variants/wio-e5-dev/variant.h | 10 +++ variants/wio-e5-mini/platformio.ini | 32 ++++++++ variants/wio-e5-mini/target.cpp | 73 +++++++++++++++++++ variants/{wio-e5 => wio-e5-mini}/target.h | 8 +- variants/{wio-e5 => wio-e5-mini}/variant.h | 6 +- 8 files changed, 160 insertions(+), 6 deletions(-) rename variants/{wio-e5 => wio-e5-dev}/platformio.ini (94%) rename variants/{wio-e5 => wio-e5-dev}/target.cpp (100%) create mode 100644 variants/wio-e5-dev/target.h create mode 100644 variants/wio-e5-dev/variant.h create mode 100644 variants/wio-e5-mini/platformio.ini create mode 100644 variants/wio-e5-mini/target.cpp rename variants/{wio-e5 => wio-e5-mini}/target.h (78%) rename variants/{wio-e5 => wio-e5-mini}/variant.h (50%) diff --git a/variants/wio-e5/platformio.ini b/variants/wio-e5-dev/platformio.ini similarity index 94% rename from variants/wio-e5/platformio.ini rename to variants/wio-e5-dev/platformio.ini index d8f7954f..22c2d880 100644 --- a/variants/wio-e5/platformio.ini +++ b/variants/wio-e5-dev/platformio.ini @@ -7,9 +7,9 @@ build_flags = ${stm32_base.build_flags} -D WRAPPER_CLASS=CustomSTM32WLxWrapper -D SPI_INTERFACES_COUNT=0 -D RX_BOOSTED_GAIN=true - -I variants/wio-e5 + -I variants/wio-e5-dev build_src_filter = ${stm32_base.build_src_filter} - +<../variants/wio-e5> + +<../variants/wio-e5-dev> [env:wio-e5-repeater] extends = lora_e5 diff --git a/variants/wio-e5/target.cpp b/variants/wio-e5-dev/target.cpp similarity index 100% rename from variants/wio-e5/target.cpp rename to variants/wio-e5-dev/target.cpp diff --git a/variants/wio-e5-dev/target.h b/variants/wio-e5-dev/target.h new file mode 100644 index 00000000..83fd9cf1 --- /dev/null +++ b/variants/wio-e5-dev/target.h @@ -0,0 +1,33 @@ +#pragma once + +#define RADIOLIB_STATIC_ONLY 1 +#include +#include +#include +#include +#include +#include + +class WIOE5Board : public STM32Board { +public: + const char* getManufacturerName() const override { + return "Seeed Wio E5 Dev Board"; + } + + // Just returns ADC value for now to test adc + uint16_t getBattMilliVolts() override { + uint32_t raw = analogRead(PIN_A3); + return raw; + } +}; + +extern WIOE5Board board; +extern WRAPPER_CLASS radio_driver; +extern VolatileRTCClock rtc_clock; +extern SensorManager sensors; + +bool radio_init(); +uint32_t radio_get_rng_seed(); +void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr); +void radio_set_tx_power(uint8_t dbm); +mesh::LocalIdentity radio_new_identity(); diff --git a/variants/wio-e5-dev/variant.h b/variants/wio-e5-dev/variant.h new file mode 100644 index 00000000..821fc410 --- /dev/null +++ b/variants/wio-e5-dev/variant.h @@ -0,0 +1,10 @@ +#pragma once + +// UART Definitions +// #ifndef SERIAL_UART_INSTANCE +// #define SERIAL_UART_INSTANCE 101 +// #endif + +#include + +#undef RNG diff --git a/variants/wio-e5-mini/platformio.ini b/variants/wio-e5-mini/platformio.ini new file mode 100644 index 00000000..55ab0bc8 --- /dev/null +++ b/variants/wio-e5-mini/platformio.ini @@ -0,0 +1,32 @@ +[lora_e5_mini] +extends = stm32_base +board = lora_e5_mini +board_upload.maximum_size = 229376 ; 32kb for FS +build_flags = ${stm32_base.build_flags} + -D RADIO_CLASS=CustomSTM32WLx + -D WRAPPER_CLASS=CustomSTM32WLxWrapper + -D SPI_INTERFACES_COUNT=0 + -D RX_BOOSTED_GAIN=true + -I variants/wio-e5-mini +build_src_filter = ${stm32_base.build_src_filter} + +<../variants/wio-e5-mini> + +[env:wio-e5-mini-repeater] +extends = lora_e5_mini +build_flags = ${lora_e5_mini.build_flags} + -D LORA_TX_POWER=22 + -D ADVERT_NAME='"wio-e5-mini Repeater"' + -D ADMIN_PASSWORD='"password"' +build_src_filter = ${lora_e5_mini.build_src_filter} + +<../examples/simple_repeater/main.cpp> + +[env:wio-e5-mini_companion_radio_usb] +extends = lora_e5_mini +build_flags = ${lora_e5_mini.build_flags} + -D LORA_TX_POWER=22 + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${lora_e5_mini.build_src_filter} + +<../examples/companion_radio/*.cpp> +lib_deps = ${lora_e5_mini.lib_deps} + densaugeo/base64 @ ~1.4.0 diff --git a/variants/wio-e5-mini/target.cpp b/variants/wio-e5-mini/target.cpp new file mode 100644 index 00000000..8ccbe384 --- /dev/null +++ b/variants/wio-e5-mini/target.cpp @@ -0,0 +1,73 @@ +#include +#include "target.h" +#include + +WIOE5Board board; + +RADIO_CLASS radio = new STM32WLx_Module(); + +WRAPPER_CLASS radio_driver(radio, board); + +static const uint32_t rfswitch_pins[] = {PA4, PA5, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC}; +static const Module::RfSwitchMode_t rfswitch_table[] = { + {STM32WLx::MODE_IDLE, {LOW, LOW}}, + {STM32WLx::MODE_RX, {HIGH, LOW}}, + {STM32WLx::MODE_TX_HP, {LOW, HIGH}}, // for LoRa-E5 mini +// {STM32WLx::MODE_TX_LP, {HIGH, HIGH}}, // for LoRa-E5-LE mini + END_OF_MODE_TABLE, +}; + +VolatileRTCClock rtc_clock; +SensorManager sensors; + +#ifndef LORA_CR + #define LORA_CR 5 +#endif + +bool radio_init() { +// rtc_clock.begin(Wire); + +// #ifdef SX126X_DIO3_TCXO_VOLTAGE +// float tcxo = SX126X_DIO3_TCXO_VOLTAGE; +// #else +// float tcxo = 1.6f; +// #endif + + radio.setRfSwitchTable(rfswitch_pins, rfswitch_table); + + int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, 1.7, 0); + + if (status != RADIOLIB_ERR_NONE) { + Serial.print("ERROR: radio init failed: "); + Serial.println(status); + return false; // fail + } + + #ifdef RX_BOOSTED_GAIN + radio.setRxBoostedGainMode(RX_BOOSTED_GAIN); + #endif + + radio.setCRC(1); + + return true; // success +} + +uint32_t radio_get_rng_seed() { + return radio.random(0x7FFFFFFF); +} + +void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr) { + radio.setFrequency(freq); + radio.setSpreadingFactor(sf); + radio.setBandwidth(bw); + radio.setCodingRate(cr); +} + +void radio_set_tx_power(uint8_t dbm) { + radio.setOutputPower(dbm); +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); // create new random identity +} diff --git a/variants/wio-e5/target.h b/variants/wio-e5-mini/target.h similarity index 78% rename from variants/wio-e5/target.h rename to variants/wio-e5-mini/target.h index cc6131cf..f7a882ee 100644 --- a/variants/wio-e5/target.h +++ b/variants/wio-e5-mini/target.h @@ -11,7 +11,13 @@ class WIOE5Board : public STM32Board { public: const char* getManufacturerName() const override { - return "Seeed Wio E5"; + return "Seeed Wio E5 mini"; + } + + uint16_t getBattMilliVolts() override { + analogReadResolution(12); + uint32_t raw = analogRead(PIN_A3); + return raw; } }; diff --git a/variants/wio-e5/variant.h b/variants/wio-e5-mini/variant.h similarity index 50% rename from variants/wio-e5/variant.h rename to variants/wio-e5-mini/variant.h index 84b9cd16..79540c79 100644 --- a/variants/wio-e5/variant.h +++ b/variants/wio-e5-mini/variant.h @@ -1,9 +1,9 @@ #pragma once // UART Definitions -#ifndef SERIAL_UART_INSTANCE - #define SERIAL_UART_INSTANCE 101 -#endif +// #ifndef SERIAL_UART_INSTANCE +// #define SERIAL_UART_INSTANCE 101 +// #endif #include