log

[아두이노] Arduino UNO WIFI REV2 파이어베이스 연동 본문

HW

[아두이노] Arduino UNO WIFI REV2 파이어베이스 연동

sun_young 2023. 6. 24. 18:08

ARDUINO UNO WiFi REV2

'아두이노 우노 와이파이 rev2'을 사용해서 파이어 베이스와 연동하는 작업이 필요한데 계속 connection refused가 떠서 포기해야 하나 싶었는데 드디어 해결했다🤩

 

먼저 연동에 필요한 코드는 다음과 같고, 이건 기본 예제 코드이다

아래 코드에서 상단에 #define 4개 제외 다른 부분은 수정 안 했음 <- 이거는 워낙 예제가 많아서 다른 글 참고하면 됨

#include <Arduino_LSM6DS3.h>
#include <Firebase_Arduino_WiFiNINA.h>

#define FIREBASE_HOST ""
#define FIREBASE_AUTH ""
#define WIFI_SSID ""
#define WIFI_PASSWORD ""

FirebaseData firebaseData;

String path = "/IMU_LSM6DS3";
String jsonStr;

void setup()
{
  Serial.begin(9600);
  delay(1000);
  Serial.println();

  Serial.print("Initialize IMU sensor...");
  if (!IMU.begin()) {
    Serial.println(" failed!");
    while (1);
  }
  Serial.println(" done");
  Serial.print("Accelerometer sample rate = ");
  Serial.print(IMU.accelerationSampleRate());
  Serial.println(" Hz");

  Serial.print("Connecting to WiFi...");
  int status = WL_IDLE_STATUS;
  while (status != WL_CONNECTED) {
    status = WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    Serial.print(".");
    delay(300);
  }
  Serial.print(" IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH, WIFI_SSID, WIFI_PASSWORD);
  Firebase.reconnectWiFi(true);
}

void loop()
{
  float x, y, z;

  // Read IMU acceleration data
  if (IMU.accelerationAvailable()) {
    IMU.readAcceleration(x, y, z);

    // Send data to Firebase with specific path
    if (Firebase.setFloat(firebaseData, path + "/1-setFloat/X", x)) {
      Serial.println(firebaseData.dataPath() + " = " + x);
    }
    if (Firebase.setFloat(firebaseData, path + "/1-setFloat/Y", y)) {
      Serial.println(firebaseData.dataPath() + " = " + y);
    }
    if (Firebase.setFloat(firebaseData, path + "/1-setFloat/Z", z)) {
      Serial.println(firebaseData.dataPath() + " = " + z);
    }

    // Push data using pushJSON
    jsonStr = "{\"X\":" + String(x,6) + ",\"Y\":" + String(y,6) + ",\"Z\":" + String(z,6) + "}";

    if (Firebase.pushJSON(firebaseData, path + "/2-pushJSON", jsonStr)) {
      Serial.println(firebaseData.dataPath() + " = " + firebaseData.pushName());
    }
    else {
      Serial.println("Error: " + firebaseData.errorReason());
    }

    Serial.println();
    delay(2000);
  }
  else {
    Serial.println(IMU.accelerationAvailable());
  }
}

https://www.youtube.com/watch?v=xNOk2o4iKZM 

참고할 만한 유튜브 강의가 위에 올린 영상이 유일한데 영상을 보면 알겠지만 필요한 보드 설치하고 기본 예제 코드 사용하고 파이어베이스 생성하는 게 끝이다 

* 코드 실행할 때 필요한 라이브러리는 구글에 치면 깃허브 바로 나오는데 거기서  .zip 파일 다운로드 하고 아두이노 IDE에 포함시켜주면 된다

 

🔎 해결 방안

펌웨어 업데이트

 

https://docs.arduino.cc/tutorials/generic/firmware-updater

 

Firmware Updater | Arduino Documentation

Firmware Updater Update the firmware or loading certificates on your MKR1000 WiFi board or WiFi Shield 101 Introduction This tutorial will guide you in the process of updating the firmware or loading certificates on your MKR1000 WiFi board or WiFi Shield 1

docs.arduino.cc

 

공식 홈페이지 참고해서 펌웨어 업데이트하니까 바로 해결되었다

 

1. 파일 - 예제 - WIFININA - Tools - FirmwareUpdater 코드를 열고 업로드한다. 

* 홈페이지에는 wifi 101 여기로 들어가던데 나는 WIFININA - Tools에 있었다 

 

2. 툴 - WiFi101/WiFiNINA Firmware Updater 클릭

 

3. 해당하는 장치 선택하고 'Update Firmware' 클릭 

 

4. 업데이트에 성공하면 끝! 원래 코드 실행하면 정상적으로 동작한다