pm2.5 pm 2.5 pm10 pm25
pms5003
import serial import matplotlib.pyplot as plt import numpy as np from struct import unpack s = serial.Serial(port='COM6',baudrate=9600) plt.ion() fig = plt.figure() plt.grid() plt.title('particale concentration in my room'); zz = np.array(0) y1 = np.array(np.nan) y2 = np.array(np.nan) y3 = np.array(np.nan) ax = fig.add_subplot(111) line1, = ax.plot(zz, y1, 'r-', label='PM 1') line2, = ax.plot(zz, y2, 'k-', label='PM 2.5') line3, = ax.plot(zz, y3, 'g-', label='PM 10') fig.show() fig.legend() while True: res = s.read(size=32) all_data = unpack('>BBHHHHHHHHHHHHHHH', res) # byte, byte, print(all_data) y1 = np.append(y1, all_data[2]) y2 = np.append(y2, all_data[3]) y3 = np.append(y3, all_data[4]) x = np.arange(y1.shape[0]) line1.set_xdata(x) line2.set_xdata(x) line3.set_xdata(x) line1.set_ydata(y1) line2.set_ydata(y2) line3.set_ydata(y3) fig.canvas.draw() fig.canvas.flush_events() plt.pause(0.05) v1 = np.min([np.nanmin(y1),np.nanmin(y2),np.nanmin(y3)]) v2 = np.max([np.nanmax(y1),np.nanmax(y2),np.nanmax(y3)]) ax.set(xlim=(x.min()-1, x.max()+1), ylim=(v1-1, v2+1)) s.close()