Turn an Elecrow All-in-One NANO sensor kit into a wireless LoRaWAN weather station with a $4 ESP32-C3 and a $15 REYAX RYLR993 radio module — data flowing into ChirpStack in under an hour.
Nano R4 (8 sensors + LCD) ──[UART CSV]──▶ ESP32-C3 ──[UART AT]──▶ RYLR993 ──[LoRa]──▶ ChirpStack
├── nano-firmware/
│ └── elecrow_sensor_bridge.ino — Arduino Nano R4 sensor firmware
├── rlr993-c3-firmware/
│ ├── main.cpp — ESP32-C3 LoRaWAN auto-join firmware
│ └── platformio.ini — PlatformIO project config
├── diagrams/
│ ├── architecture.png — Full system architecture diagram
│ ├── wiring_detail.png — Wiring diagram
│ └── data-flow.png — Data pipeline flow
└── docs/
└── README-orig.md — Original project guide
- Reads all 8 sensors (AHT20, BH1750, HC-SR04, mic, PIR, soil moisture, pot, accelerometer)
- Drives 16×2 I2C LCD with 8 navigable pages (K1 cycle, K2 freeze, K3 relay toggle)
- Outputs CSV on Serial1 (D1) every 30s at 9600 baud
- Full OTAA join sequence (NWKKEY=APPKEY, BAND=8 for US915)
- Sends CayenneLPP payloads on port 2 every 30s
- LED feedback at every stage (alive → AT OK → JOINED → sending)
- NWKKEY must equal APPKEY — without it, the module can't decrypt the Join-Accept
- AT+BAND=8 — the Arduino library maps US915 to band 11 internally; override with BAND=8
- GPIO20/21 not GPIO4/5 — only GPIO20(RX)/GPIO21(TX) work with the RYLR993 at 9600 baud
- RYLR993 VDD = 3.0–3.6V max — 5V will destroy it
- NRST → VDD jumper is mandatory (module stays in reset otherwise)
- Disable the servo in firmware (~500mA stall draw) to power ESP32-C3 + RYLR993 from Nano's 5V pin
MIT