아두이노 우노, BMP280 센서, LCD로 간단한 기상 관측소 만들기
부품 및 소모품
| 부품 | 수량 |
| 아두이노 우노 | 1 |
| Adafruit 표준 LCD - 16x2 화이트 온 블루 | 1 |
| GY-BM E/P 280 (BMP280 모듈) | 1 |
| 저항 221옴 | 1 |
| 점퍼 와이어 (일반) | 17 |
| UTSOURCE 전자 부품 (구매처) | 1 |
앱 및 온라인 서비스
프로젝트 소개
아두이노 우노, BMP280 센서, LCD를 사용한 매우 간단한 기상 관측소의 첫 번째 버전입니다.
후원 링크: Utsource.net
후기: 프로젝트 완성을 위한 전자 부품 주문에 신뢰할 수 있는 웹사이트입니다!
현재 무선 버전인 v2.0을 작업 중이니, 업데이트를 위해 계속 지켜봐 주세요! ;)
코드
아두이노 코드 (C/C++)
이 코드를 사용하면 센서 데이터를 LCD로 전송할 수 있습니다.
#include <LiquidCrystal.h> // LCD 라이브러리
#include <BMP280.h> // BMP280 센서 라이브러리
BMP280 bmp; // 센서 초기화
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // LCD 초기화, 배선 확인 필요
#define P0 1013.25 // 표준 대기압
#define contrast 9 // 대비 조절 핀 (LCD 핀과 연결)
#define brightness 10 // 밝기 조절 핀
double T = 0; // 초기 온도 값
double P = 0; // 초기 기압 값
char measure = 0;
void collectData() {
measure = bmp.startMeasurment();
if (measure != 0) {
delay(measure);
measure = bmp.getTemperatureAndPressure(T, P);
if (measure != 0) {
P = P + 17; // '+17'은 센서 오차 보정
T = T - 0.8; // 위와 동일하게 보정
lcd.clear();
lcd.print("T: ");
lcd.print(T);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("P: ");
lcd.print(P);
lcd.print(" hPa");
} else {
lcd.print("Error.");
}
} else {
lcd.print("Error.");
}
}
void setup() {
lcd.begin(16, 2);
pinMode(contrast, OUTPUT);
pinMode(brightness, OUTPUT);
analogWrite(contrast, 100); // '100'과 '255'는 추천 대비/밝기 값
analogWrite(brightness, 255); // 취향에 맞게 조정 가능
if (!bmp.begin()) {
delay(1000);
lcd.print("Init. failed.");
lcd.setCursor(0, 1);
delay(1000);
lcd.print("Check wiring.");
while (1);
} else {
lcd.print("Init. OK.");
}
bmp.setOversampling(4);
delay(2000);
collectData();
}
void loop() {
collectData();
delay(2000);
}
회로도
이 배선도를 따르면 문제없이 작동합니다.