저장소

[아두이노] ESP32 파이어베이스 연동하기 본문

카테고리 없음

[아두이노] ESP32 파이어베이스 연동하기

huiu 2022. 2. 7. 16:43
1. 필요한 라이브러리 설치

IOXhop_FirebaseESP32-master.zip
0.01MB

스케치-라이브러리 포함하기-.ZIP 라이브러리 추가하기

압축파일 그대로 추가하면 된다.

 

툴-라이브러리 관리

ArduinoJson을 검색 후 설치한다.

설치 시 6.x 이상 버전을 설치하는 경우가 많을텐데, ESP32에 업로드 시 아래와 같은 에러 메시지가 출력된다면 5.xx.x 버전을 추가 설치해보는 것을 추천한다.

staticjsonbuffer is a class from arduinojson 5. please see https://arduinojson.org/upgrade to learn how to upgrade your program to arduinojson version 6 return staticjsonbuffer<stream_json_data_buffer_size>().parseobject(_data);

 

라이브러리가 정상적으로 설치되었다면 파일-예제-IOX...에서 Firebase와 관련된 코드 예제를 볼 수 있다.

 

2. 파이어베이스 생성 및 설정

단순 생성 과정은 생략한다.

테스트용으로 만드는게 좋다.

웹 앱을 추가해준다.

프로젝트 개요-프로젝트 설정-일반 에서 웹 API 키를 확인한다.

 

프로젝트 설정-서비스 계정 에서 데이터베이스 비밀번호를 확인한다.

RealtimeDatabase를 새로 생성하고 URL을 확인한다.

 

3. 데이터 업로드 확인

다시 아두이노 IDE로 돌아와서 파일-예제-IOX...-FirbaseDemo_ESP32 코드를 불러온다.

#define 부분을 수정해준다.

//
// Copyright 2015 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

// FirebaseDemo_ESP32 is a sample that demo the different functions
// of the FirebaseArduino API.

#include <WiFi.h>
#include <IOXhop_FirebaseESP32.h>

// Set these to run example.
#define FIREBASE_HOST "Realtime Database-URL(프로젝트 설정-서비스 계정-Firebase Admin SDK-databaseURL.firebaseio.com)"
#define FIREBASE_AUTH "파이어베이스-프로젝트 개요-프로젝트 설정-데이터베이스 비밀번호-비밀번호"
#define WIFI_SSID "WiFi 이름"
#define WIFI_PASSWORD "WiFi 비밀번호"

void setup() {
  Serial.begin(9600);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}

int n = 0;

void loop() {
  // set value
  Firebase.setFloat("number", 42.0);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);
  
  // update value
  Firebase.setFloat("number", 43.0);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);

  // get value 
  Serial.print("number: ");
  Serial.println(Firebase.getFloat("number"));
  delay(1000);

  // remove value
  Firebase.remove("number");
  delay(1000);

  // set string value
  Firebase.setString("message", " works???");
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /message failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);
  
  // set bool value
  Firebase.setBool("truth", false);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /truth failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);

  // append a new value to /logs
  String name = Firebase.pushInt("logs", n++);
  // handle error
  if (Firebase.failed()) {
      Serial.print("pushing /logs failed:");
      Serial.println(Firebase.error());  
      return;
  }
  Serial.print("pushed: /logs/");
  Serial.println(name);
  delay(1000);
}​

위의 코드는 복사할 필요 없다. 예제를 불러와서 살짝 수정하면 된다.

 

단, ESP32는 5G WiFi를 인식하지 못한다.

2G WiFi를 사용하는 것을 권장한다.

 

setString의 내용을 'Hello World'에서 'works???'로 변경해서 업로드해보았다.

잘 업데이트 된다.

 

만약 ESP32에 업로드 시 WiFi.h 가 2개 이상 존재한다는 메시지가 뜨면 사용된 헤더 파일과 사용하지 않은 헤더 파일의 경로가 에러 메시지에 뜰 것이다. 해당 경로를 참고해서 WiFi 폴더를 1개만 남겨두면 된다.

Comments