IR 센서와 LCD 화면을 사용하여 환경 데이터를 표시하고 기록하는 아두이노 프로젝트를 만들어 보겠습니다.
1. 이론 소개:
- 이 프로젝트에서는 IR (적외선) 센서를 사용하여 온도 및 습도를 측정하고, LCD 화면을 통해 데이터를 표시하고 SD 카드 모듈을 사용하여 데이터를 기록합니다.
2. 준비물:
- Arduino 보드 (예: Arduino Uno)
- DHT22 또는 DHT11 온습도 센서
- LCD 화면 (16x2 문자 LCD)
- SD 카드 모듈
- 점퍼 와이어
- 빵판 또는 프로토타이핑 보드
3. 비슷한 센서 모델명:
- 온습도 센서: DHT11, DHT22, AM2302 등
- LCD 화면: 16x2 문자 LCD
- SD 카드 모듈: SD Card Shield 또는 Micro SD Card 모듈
4. 추천 보드 및 간단한 설명:
- Arduino Uno: 이 프로젝트에 적합한 시작 보드입니다.
5. 회로 구성:
- DHT22 또는 DHT11 센서를 아두이노와 연결합니다.
- LCD 화면을 아두이노와 연결합니다.
- SD 카드 모듈을 아두이노와 연결합니다.
DHT 센서 연결:
- DHT 센서의 VCC 핀을 아두이노의 5V 핀에 연결하고, GND 핀을 GND에 연결합니다.
- DHT 센서의 DATA 핀을 아두이노의 디지털 핀 (예: D2)에 연결합니다.
LCD 화면 연결:
- LCD 화면의 VCC 핀을 아두이노의 5V 핀에 연결하고, GND 핀을 GND에 연결합니다.
- LCD 화면의 SDA 핀을 아두이노의 아날로그 핀 (예: A4)에 연결합니다.
- LCD 화면의 SCL 핀을 아두이노의 아날로그 핀 (예: A5)에 연결합니다.
SD 카드 모듈 연결:
- SD 카드 모듈의 VCC 핀을 아두이노의 5V 핀에 연결하고, GND 핀을 GND에 연결합니다.
- SD 카드 모듈의 MOSI, MISO, SCK, CS 핀을 아두이노에 연결합니다.
6. 코딩 내용:
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SD.h>
#include <SPI.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define SCREEN_WIDTH 16
#define SCREEN_HEIGHT 2
DHT_Unified dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, SCREEN_WIDTH, SCREEN_HEIGHT);
File dataFile;
void setup() {
Serial.begin(9600);
if (!dht.begin()) {
Serial.println(F("DHT sensor initialization failed"));
while (1);
}
if (!lcd.begin(16, 2)) {
Serial.println(F("LCD initialization failed"));
while (1);
}
lcd.init();
lcd.backlight();
if (!SD.begin(10)) {
Serial.println(F("SD card initialization failed"));
while (1);
}
dataFile = SD.open("data.txt", FILE_WRITE);
if (!dataFile) {
Serial.println(F("Failed to open file"));
}
lcd.print(F("Environment"));
lcd.setCursor(0, 1);
lcd.print(F("Monitoring"));
delay(2000);
}
void loop() {
sensors_event_t event;
dht.temperature().getEvent(&event);
float temperature = event.temperature;
dht.humidity().getEvent(&event);
float humidity = event.relative_humidity;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("Temp: "));
lcd.print(temperature);
lcd.print(F(" C"));
lcd.setCursor(0, 1);
lcd.print(F("Humidity: "));
lcd.print(humidity);
lcd.print(F("%"));
dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(F("Temperature: "));
dataFile.print(temperature);
dataFile.print(F(" C, "));
dataFile.print(F("Humidity: "));
dataFile.print(humidity);
dataFile.println(F("%"));
dataFile.close();
} else {
Serial.println(F("Error opening file"));
}
delay(5000);
}
7. 코딩 내용 설명:
- DHT 라이브러리를 사용하여 온도와 습도 값을 측정합니다.
- LiquidCrystal_I2C 라이브러리를 사용하여 LCD 화면을 초기화하고 데이터를 표시합니다.
- SD 라이브러리를 사용하여 SD 카드에 데이터를 기록합니다.
8. 코드 업로드 및 테스트:
- 위의 코드를 아두이노 IDE에 복사하여 업로드합니다.
- LCD 화면과 SD 카드에 온습도 데이터가 표시 및 기록되는지 확인합니다.
9. 응용 업그레이드:
- 이 프로젝트를 확장하여 다른 환경 데이터를 측정하고 기록할 수 있습니다. 또한 데이터를 시각화하거나 원격으로 모니터링할 수 있는 기능을 추가할 수 있습니다.
10. 전문용어 및 설명:
- IR 센서: 적외선을 감지하는 센서로, 이 프로젝트에서는 사용되지 않습니다.
- LCD 화면: 문자와 숫자를 표시하기 위한 디스플레이 모듈입니다.
- SD 카드 모듈: 아두이노와 SD 카드 간에 데이터를 읽고 쓸 수 있게 하는 모듈입니다.
11. 기타:
- 이 프로젝트를 통해 환경 데이터 모니터링 시스템을 구축할 수 있으며, 데이터 기록 및 표시에 대한 기본적인 아이디어를 얻을 수 있습니다.
'아두이노' 카테고리의 다른 글
IR 센서와 초음파 센서로 물체의 위치 및 거리 측정 (0) | 2023.12.03 |
---|---|
IR 센서와 소리 감지 센서를 결합한 음성 인식 시스템 (0) | 2023.12.03 |
IR 센서와 가변 저항기를 활용한 물체 위치 감지 (0) | 2023.12.03 |
IR 센서와 조도 센서를 사용한 밝기 조절 및 에너지 절약 (0) | 2023.12.03 |
IR 센서와 터치 센서를 결합한 원격 터치 스크린 (1) | 2023.12.03 |