티스토리 뷰

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 확인하려면 다음 포스트 참고

Arduino UNO DHT11 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 실행창

 

 

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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 29 30 31
글 보관함