This repo aims at providing a PM2.5 (and others) sensor that pushes data to the Internets, namely AirCasting API. It uses a PMS3003 + NodeMCU v1.0 (ESP-12E), as it was built as a side-project to augment (now defunct) Mozilla SensorWeb project with something that could be autonomous and outdoor.
- Arduino IDE 1.8.8
- ESP8266 Package v2.4.2
- ArduinoJson v5.13.5
- NtpClientLib v2.5.1
- Time v1.5
- WiFiManager v0.14
- ESP8266TrueRandom (any version?)
- ESP8266FS.jar v0.3.0 (not a lib, need to be installed separately into tools/ arduino subdir)
Ensure to configure board in Arduino IDE as:
- NodeMCU 1.0 (ESP-12E)
- 80MHz
- Flash
- 4M (3M SPIFFS)
- v2 Lower Memory
For first flash, ensure you properly populate data/
subdirectory with:
wifi.json
ntp.json
aircasting.json
Please follow the templates named .in, copy them as the proper name underdata/
. Then in Arduino IDE, flash usingTools
,ESP8266 Sketch Data Upload
.
Default configuration should be for AirCasting.org website, but it is expected to work on any instance following their API.
Then you can build and flash. It should boot and work.
Serial debugging should work over USB. The same data is sent over the wire,
defaulting to UDP multicast address 239.0.0.1
, port 8899
.
To be able to handle outdoor, original SensorWeb project has been augmented with a power source. This leads to the design of a small PCB that serves several purposes:
- properly fitting / holding the NodeMCU with inline connectors
- some logic to handle PMS3003 standby mode
- proper connector for the PMS3003 wired to the NodeMCU pins
- proper 5v: PMS3003 tends to be picky, working with less than 4v but giving inconsistent results
The power part of the PCB is inspired from Adafruit's Minty Boost: https://learn.adafruit.com/minty-boost/overview
Solar power cannot be available 100% of the time, so it is battery-backed, using the kit provided by Adafruit: https://learn.adafruit.com/usb-dc-and-solar-lipoly-charger?view=all
Solar panel are also provided, though they can be found at a lot of different places.
Any LiPo or LiIon should work.
Checkout the Kicad project for exact references.