저장소
[아두이노] ESP32 파이어베이스 연동하기 본문
1. 필요한 라이브러리 설치

스케치-라이브러리 포함하기-.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개만 남겨두면 된다.