PM2.5/PM10 pollution sensor built with Nerves.
Roadmap:
-
Target builds:
- Local UART (QinHeng Electronics HL-340)
- GPIO/UART (Raspberry Pi)
- GPIO (NodeMCU V3/ESP8266-12)
- Kernel module: ch341
- Group membership:
sudo gpasswd -a $NERVES_USER uucp
TBD
TBD
Pin | Name | explain |
---|---|---|
1 | CTL | Control pin, reserved |
2 | 1um | >0.3 Micron particle concentration, PWM Output |
3 | 5V | 5V power input |
4 | 25um | >2.5 Micron particle concentration, PWM Output |
5 | GND | GND |
6 | R | Serial port receiver RX |
7 | T | Serial port transmission TX |
The pitch of Interface is 2.54mm
Serial communication protocol: 9600 8N1. (Rate of 9600, data bits 8, parity none, stop bits 1)
Serial report communication cycle: 1+0.5 seconds
Data frame (10 bytes):
message header + order+ data(6 bytes) + checksum + message trailer
The number of bytes | Name | Content |
---|---|---|
0 | message header | AA |
1 | order | C0 |
2 | data 1 | PM2.5 low byte |
3 | data 2 | PM2.5 high byte |
4 | data 3 | PM10 low byte |
5 | data 4 | PM10 high byte |
6 | data 5 | 0(reserved) |
7 | data 6 | 0(reserved) |
8 | checksum | checksum |
9 | message trailer | AB |
Checksum: data 1 + data 2 + ...+ data 6
PM2.5 data content: PM2.5 (ug/m3) = ((PM2.5 high byte*256 ) + PM2.5 low byte)/10
PM10 data content: PM10 (ug/m3) = ((PM10 high byte*256 ) + PM10 low byte)/10
Nerves applications produce images for hardware targets based on the
MIX_TARGET
environment variable. If MIX_TARGET
is unset, mix
builds an
image that runs on the host (e.g., your laptop). This is useful for executing
logic tests, running utilities, and debugging. Other targets are represented by
a short name like rpi3
that maps to a Nerves system image for that platform.
All of this logic is in the generated mix.exs
and may be customized. For more
information about targets see:
https://hexdocs.pm/nerves/targets.html#content
To start your Nerves app:
export MIX_TARGET=my_target
or prefix every command withMIX_TARGET=my_target
. For example,MIX_TARGET=rpi3
- Install dependencies with
mix deps.get
- Create firmware with
mix firmware
- Burn to an SD card with
mix firmware.burn
- Official docs: https://hexdocs.pm/nerves/getting-started.html
- Official website: http://www.nerves-project.org/
- Discussion Slack elixir-lang #nerves (Invite)
- Source: https://github.com/nerves-project/nerves