python code + fritzing
This commit is contained in:
parent
68579ae467
commit
b410abf010
3 changed files with 61 additions and 2 deletions
|
|
@ -33,12 +33,11 @@ void loop() {
|
|||
Serial.println();
|
||||
Serial.println("---------------------------------------");
|
||||
Serial.println("Concentration Units (standard)");
|
||||
Serial.println("---------------------------------------");
|
||||
Serial.print("PM 1.0: "); Serial.print(data.pm10_standard);
|
||||
Serial.print("\t\tPM 2.5: "); Serial.print(data.pm25_standard);
|
||||
Serial.print("\t\tPM 10: "); Serial.println(data.pm100_standard);
|
||||
Serial.println("Concentration Units (environmental)");
|
||||
Serial.println("---------------------------------------");
|
||||
Serial.println("Concentration Units (environmental)");
|
||||
Serial.print("PM 1.0: "); Serial.print(data.pm10_env);
|
||||
Serial.print("\t\tPM 2.5: "); Serial.print(data.pm25_env);
|
||||
Serial.print("\t\tPM 10: "); Serial.println(data.pm100_env);
|
||||
|
|
|
|||
BIN
PMS5003_Air_Quality_Sensor/PMS5003_Arduino/wiring.fzz
Normal file
BIN
PMS5003_Air_Quality_Sensor/PMS5003_Arduino/wiring.fzz
Normal file
Binary file not shown.
60
PMS5003_Air_Quality_Sensor/PMS5003_CircuitPython/main.py
Normal file
60
PMS5003_Air_Quality_Sensor/PMS5003_CircuitPython/main.py
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
from digitalio import DigitalInOut, Direction
|
||||
import board
|
||||
import busio
|
||||
import time
|
||||
import ustruct as struct
|
||||
|
||||
led = DigitalInOut(board.D13)
|
||||
led.direction = Direction.OUTPUT
|
||||
|
||||
# Connect the Sensor's TX pin to the board's RX pin
|
||||
uart = busio.UART(board.TX, board.RX, baudrate=9600)
|
||||
|
||||
buffer = []
|
||||
|
||||
while True:
|
||||
data = uart.read(32) # read up to 32 bytes
|
||||
data = list(data)
|
||||
#print("read: ", data) # this is a bytearray type
|
||||
|
||||
buffer += data
|
||||
|
||||
while buffer and buffer[0] != 0x42:
|
||||
buffer.pop(0)
|
||||
|
||||
if len(buffer) < 32:
|
||||
continue
|
||||
|
||||
if buffer[1] != 0x4d:
|
||||
buffer.pop(0)
|
||||
continue
|
||||
|
||||
frame_len = struct.unpack(">H", bytes(buffer[2:4]))[0]
|
||||
if frame_len != 28:
|
||||
continue
|
||||
|
||||
frame = struct.unpack(">HHHHHHHHHHHHHH", bytes(buffer[4:]))
|
||||
|
||||
pm10_standard, pm25_standard, pm100_standard, pm10_env, pm25_env, pm100_env, particles_03um, particles_05um, particles_10um, particles_25um, particles_50um, particles_100um, skip, checksum = frame
|
||||
|
||||
check = sum(buffer[0:30])
|
||||
|
||||
if check != checksum:
|
||||
continue
|
||||
print("Concentration Units (standard)")
|
||||
print("---------------------------------------")
|
||||
print("PM 1.0: %d\tPM2.5: %d\tPM10: %d" % (pm10_standard, pm25_standard, pm100_standard))
|
||||
print("Concentration Units (environmental)")
|
||||
print("---------------------------------------")
|
||||
print("PM 1.0: %d\tPM2.5: %d\tPM10: %d" % (pm10_env, pm25_env, pm100_env))
|
||||
print("---------------------------------------")
|
||||
print("Particles > 0.3um / 0.1L air:", particles_03um)
|
||||
print("Particles > 0.5um / 0.1L air:", particles_05um)
|
||||
print("Particles > 1.0um / 0.1L air:", particles_10um)
|
||||
print("Particles > 2.5um / 0.1L air:", particles_25um)
|
||||
print("Particles > 5.0um / 0.1L air:", particles_50um)
|
||||
print("Particles > 10 um / 0.1L air:", particles_100um)
|
||||
print("---------------------------------------")
|
||||
|
||||
buffer = buffer[32:]
|
||||
#print("Buffer ", buffer)
|
||||
Loading…
Reference in a new issue