nRF52832 RS-485 Firmware Development
Budget: $250 – $750 AUD
Embedded Firmware PoC — nRF52832 + RS-485/Modbus + LoRaWAN (SX1262) + Cellular MQTT (SIM7600)
Platform
MCU: Nordic nRF52832 (Cortex-M4), Zephyr RTOS.
Radios: SX1262 LoRa over SPI (DIO/Busy/Reset pins provided).
Cellular: SIM7600 (LTE/4G) via UART (PPP/IP or AT-TCP).
RS-485: UART to transceiver (e.g., MAX3485). GPIOs for DE/RE, 120 Ω termination + fail-safe bias on board.
Non-volatile: FRAM FM24CL64B (I²C).
Scope (phased to reduce risk)
P1 – RS-485 / Modbus (Slave first)
UART half-duplex driver with DE/RE control and timeouts.
Modbus RTU Slave at 9 600–115 200 bps, CRC-16, exceptions.
Configurable register map (holding/input/coils).
Python harness (PC/RPi) for read/write tests.
P2 – LoRaWAN Uplink (SX1262)
Regional stack (AU915/AS923), join (OTAA), ADR, confirmed/unconfirmed uplinks.
P3 – Cellular MQTT (SIM7600)
AT task, PDP context, MQTT publish/subscribe over TCP/IP (broker URL provided).
P4 – Integration & Hardening
Run RS-485 + LoRa uplink + MQTT publish concurrently.
Watchdog, logging, persistent settings (FRAM), basic power-fail safety.
Deliverables
Source (C/C++) for Zephyr; CMake/nRF Connect build.
Board config (DTS/Kconfig) + pin map.
HAL drivers: UART/RS-485, I²C FRAM, SPI SX1262, SIM7600 AT.
Python test tools (Modbus read/write, simple MQTT pub).
README: build/flash, config, test steps.
CI script (GitHub Actions): build + unit tests (if any).
License report (all third-party libs) and confirmation of IP assignment to client.
Acceptance
On your board:
Modbus Slave exchange at 115 200 bps (read/write N registers, correct CRC & exceptions).
LoRaWAN OTAA join + uplink success.
MQTT publish via SIM7600 (LTE/4G) to broker.
All three operate in the same build for ≥10 minutes without task starvation or watchdog reset.
(Optionally add Modbus Master in a follow-on milestone.)
Out-of-scope (for now)
Full OTA, deep power optimization, TLS offload on modem, cloud dashboards.
Platform
MCU: Nordic nRF52832 (Cortex-M4), Zephyr RTOS.
Radios: SX1262 LoRa over SPI (DIO/Busy/Reset pins provided).
Cellular: SIM7600 (LTE/4G) via UART (PPP/IP or AT-TCP).
RS-485: UART to transceiver (e.g., MAX3485). GPIOs for DE/RE, 120 Ω termination + fail-safe bias on board.
Non-volatile: FRAM FM24CL64B (I²C).
Scope (phased to reduce risk)
P1 – RS-485 / Modbus (Slave first)
UART half-duplex driver with DE/RE control and timeouts.
Modbus RTU Slave at 9 600–115 200 bps, CRC-16, exceptions.
Configurable register map (holding/input/coils).
Python harness (PC/RPi) for read/write tests.
P2 – LoRaWAN Uplink (SX1262)
Regional stack (AU915/AS923), join (OTAA), ADR, confirmed/unconfirmed uplinks.
P3 – Cellular MQTT (SIM7600)
AT task, PDP context, MQTT publish/subscribe over TCP/IP (broker URL provided).
P4 – Integration & Hardening
Run RS-485 + LoRa uplink + MQTT publish concurrently.
Watchdog, logging, persistent settings (FRAM), basic power-fail safety.
Deliverables
Source (C/C++) for Zephyr; CMake/nRF Connect build.
Board config (DTS/Kconfig) + pin map.
HAL drivers: UART/RS-485, I²C FRAM, SPI SX1262, SIM7600 AT.
Python test tools (Modbus read/write, simple MQTT pub).
README: build/flash, config, test steps.
CI script (GitHub Actions): build + unit tests (if any).
License report (all third-party libs) and confirmation of IP assignment to client.
Acceptance
On your board:
Modbus Slave exchange at 115 200 bps (read/write N registers, correct CRC & exceptions).
LoRaWAN OTAA join + uplink success.
MQTT publish via SIM7600 (LTE/4G) to broker.
All three operate in the same build for ≥10 minutes without task starvation or watchdog reset.
(Optionally add Modbus Master in a follow-on milestone.)
Out-of-scope (for now)
Full OTA, deep power optimization, TLS offload on modem, cloud dashboards.
Related categories:
C Programming
Python
Microcontroller
C++ Programming
Bluetooth Low Energy (BLE)
MQTT
Embedded Systems
I2C