Arduino
(macOS)[python] Arduino DHT11/LM35 multi DAQ
jinozpersona
2022. 11. 11. 17:40
Intro
OS : MacOS, Monterey, v12.6
HW : Arduino UNO R3 board, DHT11 Sensor, LM35 Sensor
SW : Visual Studio Code, so-called vscode
python : 3.10.7
- Arduino 연결 부터 확인하려면 다음 포스트 참고
Arduino UNO DHT11 sensor 연결 및 모니터링
- Arduino Sensor DAQ 확인하려면 다음 포스트 참고
2종 multi sensor DAQ
DHT11 : Digital Output Sensor
LM35 : Analog Output Sensor
Requirements
vscode
vscode extension : Arduino
Arduino UNO R3 : DHT11/LM35 Sensor 연결도
1. Arduino: Initialize
2. Arduino: Library Manager
# 참고 : (macOS)[python] pyserial을 이용한 Arduino UNO R3 제어 with vscode - 2/2
3. Arduino Coding & Upload
ard_dht11_lm35.ino
// DHT11 Sensor
#include <DHT_U.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
// LM35 Sensor
int value;
int Vin = 5;
// arduino board
int baudrate = 9600;
void setup() {
Serial.begin(baudrate);
dht.begin();
}
void loop(){
// DHT
float dht_h = dht.readHumidity();
float dht_t = dht.readTemperature();
if (isnan(dht_h) || isnan(dht_t)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print(dht_h);
// Serial.println(dht_t);
Serial.print(dht_t);
// LM35
value = analogRead(0);
float lm_t = ( value/1024.0)*Vin*100;
Serial.println(lm_t);
delay(2000);
}
Arduino: Verify
Arduino: Upload
4. python Coding & DAQ
py_dht11_lm35.py
import os
import serial
from time import localtime, strftime
serial_port = '/dev/tty.usbmodem141101'
serial_baudrate = 9600
ard = serial.Serial(serial_port,serial_baudrate)
fname = 'data_save.csv'
if os.path.exists(fname):
os.remove(fname)
cnt = 1
while True:
td = strftime('%Y-%m-%d', localtime())
tt = strftime('%H:%M:%S', localtime())
# print(tm)
datas_raw = ard.readline()
print(datas_raw)
## ard.decode() : readline을 decoding
datas = datas_raw.decode()[:len(datas_raw)-2]
print('--- Arduino Output ---\n{}\n'.format(datas_raw))
print('--- python Terminal Output ---\n{}\n'.format(datas))
print('Count : {}'.format(cnt))
print('DHT_Humidity[%] : {}\nDHT_Temperature[oC] : {}\n'.format(datas[:5],datas[5:10]))
print('LM_Temperature[oC] : {}\n'.format(datas[10:15]))
with open(fname,'a') as cf:
cf.write("{},{},{},{},{}\n".format(td,tt,datas[0:5],datas[5:10],datas[10:15]))
cf.close()
cnt = cnt + 1
data 저장 결과
data_save.csv
2022-11-11 | 17:33:25 | 34 | 26.5 | 26.86 |
2022-11-11 | 17:33:26 | 34 | 26.5 | 24.41 |
2022-11-11 | 17:33:28 | 34 | 26.5 | 24.41 |
# 참고 : python Terminal 실행창
반응형