اتصال آردوینو به Firebase برای دریافت و انتقال داده [با ESP8266]

فهرست مطالب

مقدمه

در این آموزش با نحوه دانلود و آپلود از/به دیتابیس Firebase با برد آردوینو UNO و ماژول ESP8266 آشنا می شوید. ذخیره داده ها(مانند داده های سنسورها) به دیتابیسی که در همه جا با اینترنت قابل دسترس است، می تواند خیلی مفید باشد. Firebase ذخیره و بازیابی داده ها را آسان می کند.

آنچه در این آموزش یاد می گیرید

Firebase چیست؟

Firebase یک پلتفروم سیار تحت وب است که توسط شرکت Firebase در سال 2011 منتشر و سپس در سال 2014 توسط گوگل خریداری شد. در سال 2018 پلتفروم Firebase دارای 18 محصول بود که در 1.5 میلیون برنامه استفاده می شد. Firebase سروریس های چندگانه ای ارائه می دهد. مانند:
  • Firebase Analytics یک برنامه رایگان برای پلتفروم های اندروید و IOS می باشد که زمان استفاده کاربر از برنامه، میزان فعالیت، نرخ ترک کردن و … را به شما ارئه می دهد.
  • FCM(سرویس پیام رسان ابری Firebase) که یک سرویس رایگان ارسال و دریافت پیام برای اندروید و IOS، تحت وب می باشد.
  • Firebase Auth که امکان احراز هویت کاربران به برنامه های موبایل و وب می دهد، این سرویس شبکه های اجتماعی فیسبوک، توییتر، Github و گوگل را پشتیبانی می کند، همچنین این سوریس اجازه فعالسازی اکانت ها را با استفاده از ایمیل و رمز عبور را به کاربران می دهد.

لوازمی که به آن احتیاج دارید

سخت افزارهای مورد نیاز

آردوینو UNO R3 × 1
ماژول ESP-01 دارای هسته وای‌فای ESP8266 تولید Ai-Thinker × 1

نرم افزارهای مورد نیاز

Arduino IDE

اتصال آردوینو به Firebase

ابتدا می بایست یک اکانت در Firebase بسازید. به firebase.google.com بروید و روی sign in by google account کلیک کنید، سپس یک پروژه جدید ایجاد کنید، بعد از ساخت پروژه یک نام برای آن انتخاب کرده و test mode را فعال کنید، می توانید مقادیری برای بخش دیتابیس real time به صورت دستی وارد کنید. شما می توانید با اضافه کردن json. به انتهای URL دیتابیس، از داده های خود JSON بگیرید. برای اطلاعات بیشتر ویدئو زیر را مشاهده کنید:
شما می توانید داده ها را از دیتابیس با آردوینو و ESP8266، بخوانید یا انتقال دهید. شما به یک نام کاربری و کلید رجیستری پروژه Firebase خود نیاز دارید، سپس باید کتابخانه Firebase را نصب کرده و کد خود را روی برد، بارگذاری کنید. اگر برای بار اول است که این کار را انجام می دهید، مراحل زیر را دنبال کنید:
  1. به آدرس www.arduino.cc/en/Main/Software رفته و نرم افزار IDE را متناسب با سیستم عامل خود دانلود و نصب کنید.
  2. نرم افزار Arduino IDE را اجرا کنید. تمام کد های پیش فرض را پاک کرده و کد زیر را به جای آن کپی کنید.
  3. برد آردوینو خود را از پنجره ی Tools و قسمت Board انتخاب کنید.
  4. پورتی که (COM) آردوینو به آن متصل است را در پنجره ی Tools انتخاب کنید.
  5. دکمه ی Upload (شکلی که شبیه فلش است) را بزنید تا کد شما روی آردوینو آپلود شود.
  6. شما با موفقیت کد خود را روی آردوینو ریختید.

سیم بندی

کد

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
 
// Set these to run example. 
#define FIREBASE_HOST "example.firebaseio.com" 
#define FIREBASE_AUTH "token_or_secret" 
#define WIFI_SSID "SSID" 
#define WIFI_PASSWORD "PASSWORD" 
 
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", "hello world"); 
  // 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); 
}

فایل زیر را دانلود کرده و مثال های دیگر برای اتصال آردوینو به Firebase را بررسی کنید.

یک گام جلوتر

  • یک ارتباط زمان واقعی (Real Time) بین دو سیستم مبتنی بر آردوینو بسازید.
  • یک سرویس دیگر گوگل را به پروژه آردوینو خود بیافزایید.

آموزش های مشابه

Comments (6)

  • reza.esfandiari Reply

    ممنون بابت اموزش ولی یک سوال این کد ها رو داخل اردینو uno اپلود کردید؟ یعنی مستقیما میشه لایبرری های esp رو اظافه و از داخل اردینو esp رو برنامه نویسی کرد؟

    ژانویه 6, 2020 at 4:21 ب.ظ
    • سعید حسینی Reply

      بله
      بله این کار هم میشه

      فوریه 29, 2020 at 9:15 ق.ظ
  • زهرا Reply

    سلام وقتتون خوش ببخشی من کد تگ rfid رو میخوام برای فایربیس بفرستم نمیدونم مشکلم کجاس میشه راهنمایی کنین هیچ خطایی نمیده ولی داده رو ارسال نمیکنه

    //******************************main project********************
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    // Set these to run example.

    #define SS_PIN 4 //D2
    #define RST_PIN 5 //D1

    #define WIFI_SSID “lenovo”
    #define WIFI_PASSWORD “123456789”
    //#define WIFI_SSID “Best-link”
    //#define WIFI_PASSWORD “z@hr@09376352287”

    #define FIREBASE_HOST “mytest-eb604.firebaseio.com”
    #define FIREBASE_AUTH “8chomoSf5wVnaremuY9snXLiqwC4zhUll0mxTog7” //Password of your wifi network

    MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
    int statuss = 0;
    int out = 0;
    String uid = “”;

    void setup()
    {
    Serial.begin(9600); // Initiate a serial communication
    SPI.begin(); // Initiate SPI bus
    mfrc522.PCD_Init(); // Initiate MFRC522

    // 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);
    Firebase.setString(“data/statuse”,”null”);

    }
    void loop()
    {
    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent())
    {
    return;
    }
    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial())
    {
    return;
    }
    //Show UID on serial monitor
    Serial.println();
    Serial.print(” UID tag :”);
    String content= “”;
    byte letter;
    for (byte i = 0; i < mfrc522.uid.size; i++)
    {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
    }
    content.toUpperCase();
    Serial.println();
    uid = content.substring(1);
    Firebase.setString("data/statuse",uid);
    Firebase.setString("data",uid);
    Serial.println(uid);
    Serial.println(WiFi.localIP());
    delay(500);

    }

    ژانویه 5, 2021 at 12:03 ق.ظ
    • مهران ملکی Reply

      سلام. شرمنده بابت تاخیر در پاسخ
      تو صفحه ی serial monitor چی می نویسه بعد آپلود کد رو آردوینو؟

      ژانویه 9, 2021 at 9:14 ق.ظ
  • رضا Reply

    سلام اینکه فایربیس فیلتره مشکلی ایجاد نمیکنه؟!!

    سپتامبر 30, 2022 at 8:34 ب.ظ
    • مهران ملکی Reply

      سلام.
      چرا متاسفانه. با فیلتر شدن سایت فایبربیس این برنامه توانایی اجرا نداره.

      اکتبر 28, 2022 at 3:37 ب.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.