python code + fritzing

This commit is contained in:
ladyada 2017-12-27 18:28:22 -05:00
parent 68579ae467
commit b410abf010
3 changed files with 61 additions and 2 deletions

View file

@ -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);

Binary file not shown.

View 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)