본문 바로가기

아두이노

IR 센서와 LCD 화면으로 환경 데이터 표시 및 기록

반응형

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. 기타:

  • 이 프로젝트를 통해 환경 데이터 모니터링 시스템을 구축할 수 있으며, 데이터 기록 및 표시에 대한 기본적인 아이디어를 얻을 수 있습니다.

 

반응형