(macOS)[python] Arduino LM35 sensor monitoring
Intro
OS : MacOS, Monterey, v12.6
HW : Arduino UNO R3 board, LM35 Sensor
SW : Visual Studio Code, so-called vscode
python : 3.10.7
Requirements
vscode
vscode extension : Arduino
1. Arduino UNO R3 : LM35 Sensor 연결도 및 전달함수식
Analog Output이므로 A0 ~ A5에 연결 : 필자는 A0에 연결
range : 온도 / 출력(전송)전압, -55ºC ~ 150ºC : -550mV ~ 1500mV
LM35 Transfer Function
Arduino AO resolution : 10bit(2^10=1024)
V_ref : Arduino 인가 전압, 여기서는 5V
<func.1>을 <func.2>에 대입하여 T[oC]로 정리하면,
arduino.ino code에 함수식 적용
2. Arduino: Initialize
# 참고 : (macOS)[python] pyserial을 이용한 Arduino UNO R3 제어 with vscode - 2/2
command+shift+p : >Arduino: Initialize
- project 폴더명과 동일하게 스케치(.ino) 파일 생성
- select board type : arduino uno
3. Coding & Upload
py_ard_lm35.ino
int value;
int Vin = 5;
void setup()
{
Serial.begin(9600);
}
void loop()
{
value = analogRead(0);
float tempC = ( value/1024.0)*Vin*100;
Serial.print("TEMPRATURE IS ");
Serial.print(tempC);
Serial.println("^oC");
delay(2000);
}
comment palette : cmmand+shift+'p'
Arduino: Verify
Arduino: Upload
or 우상단 아이콘 클릭
4. Serial Monitor
하단 플러그모양 아이콘 클릭하거나 command palette에서 Arduino: Open Serial Monitor 입력
출력창에 온습도 데이터 수집 모니터링 진행 : 출력창이 안보이면 우측 Serial Monitor 선택 후 확인
5. python 출력 : pyserial
py_ard_pyserial.py
import serial
serial_port = '/dev/tty.usbmodem142301'
serial_baudrate = 9600
ard = serial.Serial(serial_port,serial_baudrate)
while(1):
if ard.readable():
# ard.readline() : Serial Monitor 내용을 한 줄씩 읽어온다.
smo = ard.readline()
# print(smo)
# ard.decode() : readline을 decoding
msg = smo.decode()[:len(smo)-1]
# Arduino Serial Monitor 처럼 print
print(msg)
python 파일을 실행하면 아래 터미널 탭에서 serial 통신 결과를 볼 수 있음
센서를 손으로 잡아 온도를 올려서 테스트
터미널 종료는 control+'z'