시리얼(serial) 통신 : 아두이노 측정 결과를 라즈베리파이로 전송
내용 : 아두이노에 연결한 MH-Z19B 센서를 PWM을 이용하여 CO2 측정 결과를 시리얼(serial) 통신을 사용하여 라즈베리파이로 전송 연결 : 아두이노에 소스코드를 업로드 한 후에 아두이노를 라즈베리파이의 USB에 연결 아두이노 소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// https://blog.naver.com/mkhee77/220727891122 #include <SoftwareSerial.h> #define pwmPin 10 SoftwareSerial mySerial(2,3); void setup() { Serial.begin(9600); mySerial.begin(9600); pinMode(pwmPin, INPUT); } void loop() { unsigned long th, tl, ppm5000 = 0; // get CO2 concentration via PWM do { th = pulseIn(pwmPin, HIGH, 1004000) / 1000; tl = 1004 - th; ppm5000 = 5000 * (th-2)/(th+tl-4); // calculation for the range 0 - 5000ppm } while (th == 0); Serial.print(ppm5000); Serial.println(" ppm (PWM)"); Serial.println("------------"); mySerial.println(ppm5000); delay(1000); } |
라즈베리파이 소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import serial port = '/dev/ttyACM0' brate = 9600 cmd = 'temp' seri = serial.Serial(port, baudrate = brate, timeout = None) print(seri.name) a = 1 while a: if seri.in_waiting != 0: content = seri.readline() print(content[:-2].decode()) |