마이크로 컨트롤러는 센서가 생성 한 데이터를 장시간 저장하기에 충분하지 않은 작은 내부 메모리를 가지고 있습니다. 외부 메모리 장치를 사용해야하거나 인터넷을 사용하여 일부 클라우드에 데이터를 저장할 수 있습니다. 또한 사람이 닿을 수 없거나 자주 방문하기 어려운 극한 조건의 현장에 센서를 배치하면 관리가 어려워지는 경우도 있습니다. 이러한 종류의 문제를 해결하기 위해 우리는 항상 그 장소에 물리적 인 존재없이 어디서든 실시간으로 센서 데이터를 모니터링하려는 방법을 조사합니다.
실시간 데이터베이스는 우리가 인터넷에 연결 할 수있는 컨트롤러 인터페이스해야하고 클라우드 서버와 데이터를 교환 할 수있을 수있는 곳이 시나리오에서 사용할 수 있습니다. 서버 데이터는 실시간 시스템 동작 모니터링, 데이터베이스 분석, 통계 분석 및 처리, 향후 사용 사례 해석에 유용 할 수 있습니다. 이 목적을 달성하기 위해 사용 가능한 IoT 하드웨어 플랫폼과 클라우드 플랫폼이 많이 있습니다. IoT 애플리케이션에 적합한 플랫폼을 찾는 데 어려움이있는 경우 링크를 따르십시오.
이전에 우리는 이미 ThingSpeak, Adafruit IO 및 기타 여러 IoT 소프트웨어를 다루었습니다. 오늘 우리는 온도 및 습도 센서 DHT11 및 NodeMCU ESP8266 모듈 을 사용하여 온도 및 습도를 Google의 Firebase 데이터베이스 서버에 실시간으로 기록하는 유사한 프로젝트를 구축 할 것 입니다.
프로젝트를 두 부분으로 나눌 것입니다. 먼저 하드웨어 구성 요소를 조립하고 펌웨어를 업로드하는 것으로 시작합니다. 두 번째로 Firebase를 사용하여 NodeMCU를 설정하여 실시간 데이터를 교환합니다. ESP8266 또는 Firebase를 처음 사용하는 경우 Firebase를 사용한 LED 제어에 대한 이전 자습서를 따르십시오.
필요한 구성 요소
- NodeMCU ESP8266 모듈
- DHT11 온도 및 습도 센서
회로도
DHT11 온도 및 습도 센서
DHT11 모듈은 보정 된 디지털 신호 출력이있는 습도 및 온도 복합체가 특징입니다. DHT11 센서 모듈은 보정 된 디지털 출력 신호를 제공하는 습도 및 온도 감지를위한 결합 모듈입니다. DHT11은 습도와 온도의 매우 정확한 값을 제공하고 높은 신뢰성과 장기적인 안정성을 보장합니다. 이 센서에는 저항성 유형 습도 측정 구성 요소와 NTC 유형 온도 측정 구성 요소와 8 비트 마이크로 컨트롤러가 내장되어있어 응답 속도가 빠르고 비용 효율적이며 4 핀 단일 행 패키지로 제공됩니다.
이전에 ESP12E를 사용하여 웹 서버에서 DHT11 판독 값을 업데이트했습니다. DHT11을 사용하여 Arduino, PIC, Raspberry와 같은 다른 많은 마이크로 컨트롤러와 인터페이스하고이를 사용하여 기상 관측소를 구축 한 모든 DHT11 기반 프로젝트를 확인할 수 있다는 점을 제외하고는 ESP12E를 사용했습니다.
NodeMCU ESP8266 실시간 온도 및 습도 모니터링 프로그래밍
작동하는 비디오 가있는 완전한 프로그램 이 마지막에 제공됩니다. 여기서는 코드의 몇 가지 중요한 부분을 설명합니다.
먼저 ESP8266 및 firebase를 사용하기위한 라이브러리를 포함합니다.
#포함
아래 링크를 따라 라이브러리를 다운로드하고 설치하십시오.
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
컴파일 중에 ArduinoJson.h 라이브러리가 설치되어 있지 않다는 오류가 발생하면 위의 링크를 사용하여 설치하십시오.
NodeMCU를 프로그래밍하여 DHT11 센서에서 판독 값을 가져 와서 5 초 간격으로 Firebase에 푸시합니다. 데이터 푸시 경로를 설정합니다. 지금은 두 개의 매개 변수 즉, 습도와 온도는 동일한 상위 경로와 다른 하위 경로로 전송됩니다.
이 두 매개 변수는 Firebase와 통신하는 데 매우 중요합니다. 이 매개 변수를 설정하면 ESP8266과 firebase 간의 데이터 교환이 가능합니다. 프로젝트에 대한 이러한 매개 변수를 찾으려면 Firebase 설정에 대한 이전 가이드를 따르세요.
#define FIREBASE_HOST "your-project.firebaseio.com"// firebase id의 프로젝트 이름 주소 #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN"// firebase에서 생성 된 비밀 키
자격 증명을 성공적으로 찾은 후 위의 코드를 바꾸십시오.
네트워크에 연결하려면 Wi-Fi SSID와 비밀번호를 입력하세요.
#define WIFI_SSID "network_name"// 집 또는 공용 Wi-Fi 이름 입력 #define WIFI_PASSWORD "password"// wifi ssid의 암호
NodeMCU에서 DHT 데이터 핀을 정의합니다. NodeMCU에서 모든 디지털 GPIO 핀을 사용할 수 있습니다.
#define DHTPIN D4
DHT 라이브러리는 모든 DHT 변형을 위해 만들어졌으며 예를 들어 DHT11 또는 DHT22에 사용하려는 DHT 센서 옵션이 함께 제공됩니다. 올바른 DHT 센서를 선택하고 계속하십시오.
#define DHTTYPE DHT11 // dht 유형을 DHT 11 또는 DHT22로 선택합니다. DHT dht (DHTPIN, DHTTYPE);
선택한 Wi-Fi 네트워크에 연결하고 Firebase 데이터베이스 서버에도 연결합니다.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
NodeMCU의 핀 D4에서 읽기를 시작합니다.
dht.begin ();
DHT 센서에서 습도 및 온도 판독 값을 가져와 플로트 값으로 저장합니다.
float h = dht.readHumidity (); // 온도 또는 습도를 읽는 데 약 250 밀리 초가 걸립니다! float t = dht.readTemperature (); // 온도를 섭씨로 읽습니다 (기본값).
그냥 DHT 센서가 제대로 연결되어 있는지 확인하거나 손상되지 및 컨트롤러는 할 수 그것에서 측정 값을 읽을 수 있습니다. 판독 값이 표시되지 않으면 센서가 손상되었을 수 있습니다. 오류 메시지를 표시하고 계속 진행하지 않고 다시 확인하기 위해 돌아갑니다.
if (isnan (h)-isnan (t)) {// 읽기가 실패했는지 확인하고 일찍 종료합니다 (다시 시도하기 위해). Serial.println (F ("DHT 센서에서 읽지 못했습니다!")); 반환; }
디버깅을 위해 직렬 모니터에 센서 데이터를 인쇄하고 온도 및 습도 값을 문자열 형식으로 저장하여 Firebase에 보냅니다. 또한 DHT11 센서의 두 판독 값 사이에 필요한 최소 지연은 2 초이므로 항상 2 초 이상의 지연을 사용하십시오. DHT11에 대한 자세한 내용은 공식 데이터 시트를 참조하십시오.
Serial.print ("습도:"); Serial.print (h); 문자열 fireHumid = String (h) + String ("%"); // 정수 습도를 문자열 습도로 변환 Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); 문자열 fireTemp = String (t) + String ("° C"); 지연 (4000);
마지막으로 온도 및 습도 데이터를 'your-project.firebaseio.com/DHT11/Humidity/'경로의 Firebase에 전송합니다.
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // 경로 설정 및 판독 값 전송 Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // 경로 설정 및 판독 값 전송
Firebase 계정의 모든 데이터를 볼 수 있습니다. Firebase의 ' 내 콘솔 '에 있는 ' 내 프로젝트 ' 의 ' 데이터베이스 '섹션으로 이동하세요.
데이터 전송 및 모니터링을 위해 Firebase를 설정하려면 이전 가이드를 참조하세요.
이 IoT 기반 온도 및 습도 모니터링에 대한 전체 코드와 비디오 는 다음과 같습니다.