본문 바로가기

아두이노

블루투스 센서와 LCD 화면으로 시간과 날씨 표시

반응형

아두이노를 사용하여 블루투스 센서와 LCD 화면을 활용하여 시간과 날씨 정보를 표시하는 방법을 상세히 설명하겠습니다.

1. 이론 소개:

  • 이 프로젝트에서는 아두이노를 사용하여 블루투스로 연결된 스마트폰에서 시간과 날씨 정보를 읽어와 LCD 화면에 표시하는 시스템을 구축합니다.

2. 준비물:

  • 아두이노 보드 (예: Arduino Uno 또는 Arduino Nano)
  • 블루투스 모듈 (예: HC-05 또는 HC-06)
  • 16x2 LCD 화면
  • DHT11 또는 DHT22 온습도 센서
  • 점퍼 와이어
  • 전원 공급 장치

3. 비슷한 센서명:

  • DHT11 또는 DHT22 온습도 센서와 호환 가능한 다른 모델의 온습도 센서를 사용할 수 있습니다.

4. 추천 보드 및 추천이유:

  • Arduino Uno 또는 Arduino Nano와 호환되는 아두이노 보드를 사용하는 것이 일반적입니다. 이러한 보드들은 안정성과 다양한 라이브러리 지원이 있어 프로젝트에 적합합니다.

5. 회로 구성(한글로 상세히 설명):

  • 아래는 회로 구성의 간략한 설명입니다.
  • LCD 화면은 아두이노와 연결됩니다. 전원, 접지 및 데이터 핀 연결을 확인하세요.
  • DHT11 또는 DHT22 온습도 센서는 아두이노와 연결됩니다. 전원, 접지 및 데이터 핀 연결을 확인하세요.
  • 블루투스 모듈을 아두이노와 연결합니다. 주로 TX, RX, VCC, GND 핀을 사용합니다.
  • 전원 및 접지 연결을 확인합니다.

6. 코딩 내용(주석으로 설명):

  • 아래는 아두이노 코드의 간략한 예시입니다. 블루투스로 시간 및 날씨 정보를 읽어 LCD 화면에 표시하는 코드입니다.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

#define DHTPIN 2          // DHT 센서 데이터 핀
#define DHTTYPE DHT11     // DHT 센서 종류 (DHT11, DHT21, DHT22)

DHT dht(DHTPIN, DHTTYPE);

LiquidCrystal_I2C lcd(0x27, 16, 2);  // I2C 주소와 LCD 화면 크기 설정

void setup() {
  lcd.init();                      // LCD 초기화
  lcd.backlight();                 // 백라이트 활성화
  dht.begin();                     // DHT 센서 초기화
}

void loop() {
  displayTime();
  delay(5000);  // 5초마다 시간 업데이트
  
  displayWeather();
  delay(5000);  // 5초마다 온도 업데이트
}

void displayTime() {
  // 현재 시간을 가져오는 코드
  int hours = hour();
  int minutes = minute();
  int seconds = second();
  
  // LCD 화면에 시간 표시
  lcd.setCursor(0, 0); // 첫 번째 행으로 이동
  lcd.print("Time: ");
  if (hours < 10) {
    lcd.print("0"); // 시간이 한 자리 수일 때 0을 추가
  }
  lcd.print(hours);
  lcd.print(":");
  if (minutes < 10) {
    lcd.print("0"); // 분이 한 자리 수일 때 0을 추가
  }
  lcd.print(minutes);
  lcd.print(":");
  if (seconds < 10) {
    lcd.print("0"); // 초가 한 자리 수일 때 0을 추가
  }
  lcd.print(seconds);
}

void displayWeather() {
  // 온도 및 습도 정보를 가져오는 코드
  float temperature = dht.readTemperature(); // 온도 (섭씨)
  float humidity = dht.readHumidity();       // 습도
  
  // LCD 화면에 온도 및 습도 표시
  lcd.setCursor(0, 1); // 두 번째 행으로 이동
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C  ");
  lcd.print("Humidity: ");
  lcd.print(humidity);
  lcd.print(" %");
}

 

 

7. 코딩 내용 설명:

  • 이 코드는 LiquidCrystal, SoftwareSerial 및 DHT 라이브러리를 사용하여 블루투스로부터 시간 및 온도 정보를 읽어 LCD 화면에 표시합니다.

8. 코드 업로드 및 테스트:

  • 아두이노 IDE를 사용하여 코드를 아두이노에 업로드하고, 블루투스 앱을 사용하여 블루투스 모듈과 연결한 후 시간 및 날씨 정보를 요청하고 표시합니다.

9. 응용 업그레이드:

  • 이 프로젝트를 확장하여 다른 센서를 추가하거나 날씨 정보를 더 상세하게 표시하는 등의 업그레이드를 수행할 수 있습니다.

10. 전문용어 및 설명:

  • LCD (Liquid Crystal Display): 액정 디스플레이로, 정보를 표시하기 위한 화면입니다.
  • 블루투스 모듈: 무선 통신을 위한 장치로, 아두이노와 스마트폰 간의 데이터 전송에 사용됩니다.
  • DHT 센서: 온도 및 습도를 측정하는 디지털 센서입니다.

11. 기타:

  • 이 프로젝트를 구현하려면 블루투스 앱과의 통신 프로토콜도 고려해야 합니다.
반응형