본문 바로가기
아두이노

아두이노, 파이어베이스, 앱인벤터 연결 - 온습도 센서

by chaechaekim 2020. 7. 7.

이번에 새로 파이어베이스 라이브러리가 바뀌면서 전에 되던 코드가 되지 않았다.

혹시 몰라서 파이어베이스랑 연결하지 않고, 온습도 측정하는 코드만 따로 해봤는데 이 코드는 잘 됐다.

파이어베이스랑 연결되는 것에서 문제가 있는 듯 했다.

 

전에 사용했던 코드 ↓

https://practicecprogram.tistory.com/94

 

아두이노 파이어베이스랑 온도습도 연결-앱인벤터

#include #include #include "DHT.h" #define DHTPIN 5     // what digital pin we're connected to #define DHTTYPE DHT11   // DHT 11 DHT dht(DHTPIN, DHTTYPE); // Set these to ..

practicecprogram.tistory.com

 

아두이노 보드 : WEMOS D1 R1 보드를 사용

 

※ WEMOS D1 R1 보드 설정

아두이노 파일-환경설정- 추가적인 보드 매니저에

arduino.esp8266.com/stable/package_esp8266com_index.json 

dl.espressif.com/dl/package_esp32_index.json

↑위의 URL 추가하기

추가할 때 스크린같은 아이콘 누르고 각 줄에 한 개씩 추가해주세요 (사진 참고)

 

툴-보드-보드매니저에서 esp8266 검색 후 설치

스케치-라이브러리 포함하기 - 라이브러리 관리에서 json 검색 후 설치

*다른거 말고 ArduinoJson by Benoit Blanchon 설치해야 함

다음 과정을 한 후, 툴 - 보드에 가면 WEMOS D1 R1보드가 추가되어있는 것 확인 가능

참고한 깃허브 github.com/mobizt/Firebase-ESP8266

사용한 ZIP 라이브러리 파일

DHT.zip
0.01MB
Firebase-ESP8266-master.zip
0.14MB
firebase-arduino-master.zip
0.39MB

 

#include "DHT.h"
#include "FirebaseESP8266.h" //파이어베이스 라이브러리
#include <ESP8266WiFi.h>
#define DHTPIN 5     // what digital pin we're connected to

#define FIREBASE_HOST "연결할 파이어베이스 이름.firebaseio.com" //앞에 http 빼야함
#define FIREBASE_AUTH "" // 데이터베이스 비밀번호
#define WIFI_SSID "" // 연결 가능한 wifi의 ssid
#define WIFI_PASSWORD "" // wifi 비밀번호

#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);
FirebaseData firebaseData;
FirebaseJson json;

void setup() {
  Serial.begin(115200);
  Serial.println("DHTxx test!");


    Serial.begin(115200);
 
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.println();
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();
 
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Firebase.reconnectWiFi(true);
 
  //Set the size of WiFi rx/tx buffers in the case where we want to work with large data.
  firebaseData.setBSSLBufferSize(1024, 1024);
  //Set the size of HTTP response buffers in the case where we want to work with large data.
  firebaseData.setResponseSize(1024);
  //Set database read timeout to 1 minute (max 15 minutes)
  Firebase.setReadTimeout(firebaseData, 1000 * 60);
  //tiny, small, medium, large and unlimited.
  //Size and its write timeout e.g. tiny (1s), small (10s), medium (30s) and large (60s).
  Firebase.setwriteSizeLimit(firebaseData, "tiny");

  dht.begin();
}

int n = 0; //n은 측정한 횟수라 생략해도 됨

void loop() {
  n++; // 횟수 파이어베이스에 안 올릴거면 생략
  // Wait a few seconds between measurements.
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // Check if any reads failed and exit early (to try again).
    Serial.println("Failed to rea  if (isnan(h) || isnan(t)) {
d from DHT sensor!");
    return;
  }


Firebase.setFloat(firebaseData, "humidity", h);
  Firebase.setFloat(firebaseData, "temperature", t);
  // set value
  Firebase.setFloat(firebaseData, "number", n); // 횟수 파이어베이스에 안 올릴거면 생략
  // handle error

  delay(1000);
}

앱인벤터는 그대로 하면 됨

파이어베이스 데이터베이스에 값이 바뀌는 것을 확인할 수 있다.

댓글