diff --git a/variants/ikoka_nano_nrf/platformio.ini b/variants/ikoka_nano_nrf/platformio.ini index 08b1101b..eaeba048 100644 --- a/variants/ikoka_nano_nrf/platformio.ini +++ b/variants/ikoka_nano_nrf/platformio.ini @@ -31,6 +31,40 @@ upload_protocol = nrfutil lib_deps = ${nrf52_base.lib_deps} ${sensor_base.lib_deps} +[ikoka_nano_nrf_e22p] +extends = nrf52_base +board = seeed-xiao-afruitnrf52-nrf52840 +board_build.ldscript = boards/nrf52840_s140_v7.ld +build_flags = ${nrf52_base.build_flags} + ${sensor_base.build_flags} + -D NRF52_PLATFORM -D XIAO_NRF52 + -I lib/nrf52/s140_nrf52_7.3.0_API/include + -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 + -I variants/ikoka_nano_nrf + -I src/helpers/nrf52 + -D P_LORA_TX_LED=11 + -D DISPLAY_CLASS=NullDisplayDriver + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D P_LORA_DIO_1=D1 + -D P_LORA_BUSY=D2 + -D P_LORA_RESET=D3 + -D P_LORA_NSS=D0 + -D P_LORA_EN=D7 + -D SX126X_RXEN=RADIOLIB_NC + -D SX126X_TXEN=RADIOLIB_NC + -D SX126X_DIO2_AS_RF_SWITCH=1 + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=140 + -D SX126X_RX_BOOSTED_GAIN=1 + -D PIN_WIRE_SCL=5 + -D PIN_WIRE_SDA=4 + -UENV_INCLUDE_GPS +debug_tool = jlink +upload_protocol = nrfutil +lib_deps = ${nrf52_base.lib_deps} + ${sensor_base.lib_deps} + [ikoka_nano_nrf_e22_22dbm] extends = ikoka_nano_nrf ; No PA in this model, full 22dBm @@ -58,6 +92,20 @@ build_src_filter = ${ikoka_nano_nrf.build_src_filter} + +<../variants/ikoka_nano_nrf> +[ikoka_nano_nrf_e22p_30dbm] +extends = ikoka_nano_nrf_e22p +; limit txpower to 20dBm on E22p-900M30S. Anything higher will +; cause distortion in the PA output. 20dBm in -> 30dBm out +build_flags = + ${ikoka_nano_nrf_e22p.build_flags} + -D MANUFACTURER_STRING='"Ikoka Nano-E22p-30dBm (Xiao_nrf52)"' + -D LORA_TX_POWER=20 +build_src_filter = ${ikoka_nano_nrf_e22p.build_src_filter} + + + + + + + +<../variants/ikoka_nano_nrf> + [ikoka_nano_nrf_e22_33dbm] extends = ikoka_nano_nrf ; limit txpower to 9dBm on E22-900M33S to avoid hardware damage @@ -234,6 +282,53 @@ build_src_filter = ${ikoka_nano_nrf_e22_30dbm.build_src_filter} +;;; 30dBm EBYTE E22P-868M30/E22P-915M30 variants + +[env:ikoka_nano_nrf_e22p_30dbm_companion_radio_usb] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_companion_radio_usb +build_flags = + ${ikoka_nano_nrf_companion_radio_usb.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_companion_radio_usb.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + +[env:ikoka_nano_nrf_e22p_30dbm_companion_radio_ble] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_companion_radio_ble +build_flags = + ${ikoka_nano_nrf_companion_radio_ble.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_companion_radio_ble.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + +[env:ikoka_nano_nrf_e22p_30dbm_repeater] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_repeater +build_flags = + ${ikoka_nano_nrf_repeater.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_repeater.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + +[env:ikoka_nano_nrf_e22p_30dbm_room_server] +extends = + ikoka_nano_nrf_e22p_30dbm + ikoka_nano_nrf_room_server +build_flags = + ${ikoka_nano_nrf_room_server.build_flags} + ${ikoka_nano_nrf_e22p_30dbm.build_flags} +build_src_filter = + ${ikoka_nano_nrf_room_server.build_src_filter} + ${ikoka_nano_nrf_e22p_30dbm.build_src_filter} + + ;;; 33dBm EBYTE E22-900M33 variants [env:ikoka_nano_nrf_33dbm_companion_radio_usb] extends = diff --git a/variants/ikoka_nano_nrf/target.cpp b/variants/ikoka_nano_nrf/target.cpp index be20cfb4..1d7eab7d 100644 --- a/variants/ikoka_nano_nrf/target.cpp +++ b/variants/ikoka_nano_nrf/target.cpp @@ -20,6 +20,11 @@ EnvironmentSensorManager sensors; bool radio_init() { rtc_clock.begin(Wire); +#ifdef P_LORA_EN + pinMode(P_LORA_EN, OUTPUT); + digitalWrite(P_LORA_EN, HIGH); +#endif + return radio.std_init(&SPI); }