Add Lierda AM36 Pico (L-LRMAM36-FANN4-PK02) variant — ESP32-S3 + Semtech LR2021 - #3074
Open
omegaconjecture wants to merge 2 commits into
Open
Add Lierda AM36 Pico (L-LRMAM36-FANN4-PK02) variant — ESP32-S3 + Semtech LR2021#3074omegaconjecture wants to merge 2 commits into
omegaconjecture wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a variant for the Lierda AM36 Pico evaluation board
(
L-LRMAM36-FANN4-PK02). The board carries Lierda's L-LRMAM36-FANN4 module:an ESP32-S3 (8 MB flash / 8 MB PSRAM) paired with a Semtech LR2021
Gen-4 LoRa transceiver. As far as I can tell this is the first ESP32-S3 +
LR2021 target in MeshCore.
Headline test result: confirmed LR2021 ↔ SX1262 interoperability on a live
mesh — messages received from six distinct third-party senders at up to
9 hops, with full path reconstruction. Details below.
Environments added
Lierda_AM36_Pico_companion_radio_usbLierda_AM36_Pico_companion_radio_bleLierda_AM36_Pico_repeaterNames follow the existing suffix convention, so
build.shtarget discoverypicks them up with no changes needed to the release workflows.
Pin map and provenance
Values are taken from Lierda's own ESP-IDF driver,
lierda-iot/esp32_lora_driver,specifically the
default N if LIERDA_BOARD_LRMAM36_FANN4entries in itsKconfig(LR2021_SPI_CLK,LR2021_SPI_MOSI,LR2021_SPI_MISO,LR2021_NSS_GPIO,LR2021_NRST_GPIO,LR2021_BUSY_GPIO,LR20XX_DIO7_GPIO),cross-checked against the board schematic shipped in
lierda-iot/esp32_lora_samplesunder
docs/L-LRMAM36-FANN4-PK02_SCH_V01.pdf.Important difference from the Seeed Wio-LR2021 kit in #2944: the host IRQ on
this module comes from the LR2021's DIO7, not DIO8. The variant therefore
sets
-D LR2021_IRQ_DIO=7. Without this override the radio initialises andtransmits, but send-completion and receive interrupts never fire.
Board specifics
(
V3P3 → 620R → LED1 → GNDon the schematic), soPIN_STATUS_LEDisdeliberately not defined.
haven't traced it on hardware, so
PIN_USER_BTNis commented out with a noterather than shipped unverified. Happy to enable it in a follow-up.
boot-loop pitfalls on the S3.
flashing and debug both go over native USB-JTAG.
USBis the ESP32-S3's native USBand is what esptool talks to;
UARTgoes to an on-board CP2105 bridge and isnot used for flashing. Noted in the variant README since it's an easy trap.
hardcoding — since the companion app sets and persists them at runtime.
Hardware testing
Tested on a physical board, not just built.
Test setup
Lierda_AM36_Pico_companion_radio_blebuildheltec_tracker_v2,CustomSX1262) — so this exercises LR2021 ↔ SX1262 interop(SMA male, manufacturer-measured SWR 1.3) on both nodes
LORA_TX_POWER=22dev+ Kit lr2021 #2944, RadioLib 7.7.1, espressif32 @ 6.11.0Transmit
−108…−115 dBm on channel activity (i.e. real ADC reads, not a stuck register)
type=4, route=F) and direct (type=9, route=D) TX both confirmed,logged via the success path of
isSendComplete()— i.e. interrupt-drivencompletion, with no
outbound packed send timed outwarnings. This is whatvalidates the DIO7 IRQ routing.
LORA_TX_POWER=22exercised on air with no instability observedReceive
AM36 Pico was received by the Heltec Tracker v2, and the reply was received
back on the AM36 Pico at SNR 3.25 dB. Some traffic between the two nodes
routed through repeaters that I operate.
~1 hour window — operators and hardware I have no involvement with.
decoded at 3, 4, 5, 6, 7 and 9 hops, plus one direct (0-hop) reception.
for received messages (a 4-hop path across four intermediate repeaters and a
5-hop path across five, at 2 bytes per hop), confirming the radio works
correctly with MeshCore's path/routing handling and not just point-to-point
links.
↑11.5 dB / ↓13.0 dB — that same repeater subsequently appeared as the
final hop in a received message's path. Own transmissions were also seen
returned as repeats ("Heard 2 Repeats").
Companion / host interface
(
App meshcore-flutter connected); device reports asLierda AM36 Pico(
CMD_SET_RADIO_PARAMSaccepted)Not covered
only the BLE companion build was run on air
MeshCore behaviour
traversed multi-hop paths across the local mesh