-
Notifications
You must be signed in to change notification settings - Fork 722
Feature Request / Bug: Re-add support for RAK12039 (PMSA003I) Air Quality Sensor + Boot Loop fix #2253
Description
Hardware Setup:
- MCU: WisBlock RAK4631
- Base: RAK19007
- Sensor: RAK12039 (PMSA003I Dust / Air Quality Sensor)
Description of the problem:
I am trying to build an environmental node using the MeshCore firmware (Companion/Sensor roles). However, connecting the RAK12039 sensor causes the board to instantly crash and enter an infinite boot loop (only the red charge LED stays on).
The exact same hardware setup works perfectly on the official upstream Meshtastic firmware.
Root Cause Analysis:
After reviewing the MeshCore source code (specifically src/helpers/sensors/EnvironmentSensorManager.cpp), it appears that the initialization logic for the PMSA003I and the entire AirQualityTelemetry module has been completely removed in MeshCore compared to the upstream Meshtastic code.
Important Note for Implementation:
If you decide to re-add support for this sensor, please be aware of a known hardware quirk that causes the boot loop: the PMSA003I requires a strict delay(4000); right after powering on and before calling PMSA003I.begin(). This allows its internal internal fan/motor to spin up. Without this 4-second delay, the sudden current draw crashes the I2C bus and sends the nRF52 into a Kernel Panic during the boot sequence.
Would it be possible to bring back the Air Quality module and add this startup delay so we can use dust sensors in the MeshCore network?
Thank you for your great work on this firmware!