ارسال داده از ESP32 به دیتابیس Firebase Realtime

در این راهنما از صفر تا صد اتصال یک برد ESP32 به Firebase Realtime Database را انجام می دهیم و متن ارسالی از Serial Monitor را به صورت زنده در پایگاه داده ذخیره می کنیم. برای این کار فقط به دو اعتبارنامه نیاز دارید: آدرس Realtime Database و Web API Key. هیچ نیازی به راه اندازی سرور، ماشین مجازی، API Gateway یا دیتابیس جداگانه نیست. کتابخانه ای که استفاده می کنیم Firebase ESP Client از Mobizt است که به شکل فعال نگهداری می شود و برای ESP32 بسیار پایدار و مناسب است.
مرجع سریع پیشنیازهای اتصال ESP32 به Firebase
| نیازمندی | محل یافتن | کاربرد |
|---|---|---|
| Database URL | Realtime Database > تب Data | اتصال ESP32 به نمونه صحیح RTDB |
| Web API Key | Settings > General > Web App | احراز هویت ESP32 در Firebase |
| Anonymous Authentication | Authentication > Sign-in method | اجازه اتصال ESP32 بدون نام کاربری و رمز عبور |
| Security Rules (read/write: true) | Realtime Database > تب Rules | اجازه نوشتن و خواندن داده توسط ESP32 |
| کتابخانه Firebase_ESP_Client | Arduino IDE Library Manager (توسط Mobizt) | مدیریت ارتباطات Firebase در کد |
ایجاد Realtime Database در Firebase
در این بخش پروژه Firebase را می سازیم، پایگاه داده Realtime Database ایجاد می کنیم، قوانین امنیتی را برای تست تنظیم می کنیم و احراز هویت Anonymous را فعال می کنیم. همچنین Database URL و Web API Key را برای استفاده در کد ESP32 برمی داریم.
![{'placeholder': '[[IMAGE_1]]', 'alt': 'صفحه خوشامد کنسول Firebase پس از ورود کاربر'}](/wp-content/uploads/2026/09/1-2.jpg)
ساخت پروژه جدید در کنسول Firebase
پس از ورود به حساب کاربری، وارد کنسول Firebase شوید و یک پروژه جدید بسازید. نام پروژه را مشخص کنید و مراحل ایجاد را کامل کنید. فعال کردن گزینه های Join Google Developer Program و Enable Google Analytics اختیاری است و برای این پروژه ضرورتی ندارد.
![{'placeholder': '[[IMAGE_2]]', 'alt': 'ایجاد پروژه جدید در کنسول Firebase با گزینه های لازم'}](/wp-content/uploads/2026/09/2-2.jpg)
![{'placeholder': '[[IMAGE_3]]', 'alt': 'داشبورد پروژه جدید Firebase پس از ساخت موفق'}](/wp-content/uploads/2026/09/3-2.jpg)
ایجاد RTDB و تنظیم قوانین اولیه
از منوی سمت چپ به مسیر Database & Storage > Realtime Database بروید و Create Database را بزنید. یک منطقه دلخواه انتخاب کنید. در مرحله قوانین امنیتی، گزینه Start in locked mode را انتخاب کنید تا در ابتدا خواندن و نوشتن مسدود باشد. پس از ایجاد، به تب Rules بروید و برای تست مقدار read و write را از false به true تغییر دهید و Publish را بزنید. با این کار ESP32 می تواند برای مرحله آزمایش به پایگاه داده بخواند و بنویسد.
![{'placeholder': '[[IMAGE_4]]', 'alt': 'فرآیند ایجاد Realtime Database و انتخاب Locked mode'}](/wp-content/uploads/2026/09/4-1.jpg)
دریافت Database URL
در تب Data، آدرس Database URL در بالای صفحه نمایش داده می شود. همین آدرس را در کد ESP32 استفاده می کنیم. آن را کپی کنید تا بعدا در قسمت تنظیمات کد جایگذاری شود.
![{'placeholder': '[[IMAGE_5]]', 'alt': 'نمای تب Data و نمایش Database URL در بالای صفحه'}](/wp-content/uploads/2026/09/5-1.jpg)
فعال سازی Anonymous Authentication
برای جلوگیری از خطاهای احراز هویت، از منوی کناری به مسیر Security > Authentication > Get started بروید. در فهرست Sign-in methods گزینه Anonymous را فعال کنید و ذخیره کنید. با این کار ESP32 بدون نام کاربری و رمز عبور می تواند احراز هویت را کامل کند.
![{'placeholder': '[[IMAGE_6]]', 'alt': 'فعال سازی Anonymous در بخش Authentication کنسول'}](/wp-content/uploads/2026/09/6-1.jpg)
دریافت Web API Key
به Settings > General بروید، کمی پایین بیایید و یک Web App بسازید، نامی برای آن انتخاب کنید و Register App را بزنید. نیازی به ادامه مراحل نیست و می توانید پنجره را ببندید. در همان صفحه، Web API Key را در قطعه کد نمایش داده شده مشاهده می کنید. این مقدار را کپی کنید تا در کد ESP32 قرار دهید.
![{'placeholder': '[[IMAGE_7]]', 'alt': 'دریافت Web API Key از Settings General وب اپ Firebase'}](/wp-content/uploads/2026/09/7-1.jpg)
سخت افزار و اتصال ESP32
یک برد ESP32 Dev Module با کابل داده USB به لپ تاپ متصل شده است. هر برد ESP32 مناسب است؛ فقط نوع برد و پورت صحیح را در Arduino IDE انتخاب کنید. در این تمرین مداری اضافه وجود ندارد و کافی است کد را آپلود کنید. در پروژه های پیچیده تر ممکن است به طراحی PCB سفارشی هم نیاز شود.
![{'placeholder': '[[IMAGE_8]]', 'alt': 'اتصال برد ESP32 Dev به لپ تاپ با کابل داده USB'}](/wp-content/uploads/2026/09/8-1.jpg)
کد ESP32 برای Firebase (کتابخانه Firebase ESP Client)
پیش از هر چیز، کتابخانه Firebase_ESP_Client را از Library Manager نصب کنید و مطمئن شوید نسخه مربوط به Mobizt را افزوده اید. در ادامه بخش های مهم کد را مرور می کنیم.
![{'placeholder': '[[IMAGE_9]]', 'alt': 'نصب کتابخانه Firebase ESP Client در Arduino IDE'}](/wp-content/uploads/2026/09/9.jpg)
کتابخانه ها و فایل های هدر
#include <WiFi.h> #include <Firebase_ESP_Client.h> #include "addons/TokenHelper.h" #include "addons/RTDBHelper.h"
فایل های TokenHelper.h و RTDBHelper.h همراه کتابخانه هستند و برای مدیریت توکن و اشکال زدایی RTDB استفاده می شوند.
تنظیم API Key و Database URL
#define WIFI_SSID "your_ssid" #define WIFI_PASSWORD "your_password" #define API_KEY "your_api_key" #define DATABASE_URL "your_database_url" FirebaseData fbdo; FirebaseAuth auth; FirebaseConfig config;
مقادیر SSID، Password، API Key و Database URL را با اطلاعات واقعی پروژه خود جایگزین کنید.
تابع setup() و آماده سازی اتصال
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
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();
config.api_key = API_KEY;
config.database_url = DATABASE_URL;
if (Firebase.signUp(&config, &auth, "", "")) {
Serial.println("Firebase SignUp Successok");
} else {
Serial.printf("%s\n", config.signer.signupError.message.c_str());
}
config.token_status_callback = tokenStatusCallback;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
Serial.println("--- Setup Complete ---");
Serial.println("Type something in the Serial Monitor and press Enter:");
}
در setup ابتدا به WiFi وصل می شویم، مقادیر API Key و Database URL در ساختار config قرار می گیرد، ثبت نام ناشناس انجام می شود و سپس با Firebase.begin سیستم راه اندازی می شود. همچنین callback وضعیت توکن تنظیم شده تا انقضا و نوسازی توکن به درستی مدیریت شود.
تابع loop() و ارسال داده به RTDB
void loop() {
if (Firebase.ready() && Serial.available() > 0) {
String inputData = Serial.readStringUntil('\n');
inputData.trim();
if (inputData.length() > 0) {
Serial.print("Sending to Firebase: ");
Serial.println(inputData);
if (Firebase.RTDB.setString(&fbdo, "/serialData/message", inputData)) {
Serial.println("Data sent successfully!");
Serial.println("Path: " + fbdo.dataPath());
Serial.println("Type: " + fbdo.dataType());
} else {
Serial.print("Failed to send data. Reason: ");
Serial.println(fbdo.errorReason());
}
Serial.println("-------------------------------------");
}
}
}
در loop وقتی کتابخانه آماده است و داده ای در Serial موجود باشد، متن خوانده شده به مسیر “/serialData/message” در Realtime Database ارسال می شود. در صورت موفقیت پیام تایید در Serial Monitor چاپ می شود، و در غیر این صورت علت خطا نمایش داده می شود.
آزمون اتصال و استریم داده
پس از آپلود موفق کد، تب Data در RTDB را باز نگه دارید تا داده را به صورت زنده ببینید. در Serial Monitor یک متن تایپ کنید و کلید Enter را بزنید. در صورت صحیح بودن تنظیمات، مقدار ارسالی بلافاصله در مسیر مشخص شده پایگاه داده ظاهر می شود.
![{'placeholder': '[[IMAGE_10]]', 'alt': 'نمونه وارد کردن متن در Serial Monitor برای ارسال'}](/wp-content/uploads/2026/09/10-1.jpg)
![{'placeholder': '[[IMAGE_11]]', 'alt': 'به روز شدن مسیر serialData در Realtime Database'}](/wp-content/uploads/2026/09/11.jpg)
جمع بندی
با استفاده از کتابخانه Firebase ESP Client و فعال کردن Anonymous Authentication، اتصال ESP32 به Firebase Realtime Database بسیار سریع و ساده انجام می شود. کافی است Database URL و Web API Key را در کد قرار دهید، قوانین را برای تست باز کنید و ارسال داده را بررسی کنید. از این ساختار می توانید برای ارسال داده سنسورها، وضعیت عملگرها یا هر متن دلخواه استفاده کنید و در صورت نیاز، در یک وب اپ سفارشی نمایش دهید.
عیب یابی خطاهای رایج
| مشکل | علت محتمل | راه حل |
|---|---|---|
| عدم آپلود کد / خطای Upload | برد ESP32 وارد حالت فلش نمی شود یا کابل داده مشکل دارد | هنگام نمایش “Connecting…” در Serial Monitor دکمه BOOT را نگه دارید؛ اتصال کابل داده را بررسی کنید |
| Token error: code 400, INVALID_EMAIL / bad request | Anonymous Authentication در کنسول Firebase غیرفعال است | به Authentication > Sign-in method بروید، Anonymous را Enabled کنید و ذخیره کنید |
| Failed to send data. Reason: Permission denied | قوانین امنیتی Realtime Database مانع نوشتن می شود | در RTDB > تب Rules برای تست، هر دو مقدار .read و .write را true بگذارید |
مخزن GitHub پروژه
نمونه کدها و پروژه های مبتنی بر ESP32 و Firebase در یک مخزن واحد گردآوری شده اند. این مجموعه شامل مثال های اتصال به Realtime Database و پیاده سازی احراز هویت است و مرجع عملی خوبی برای ساخت اپلیکیشن های ابری مبتنی بر ESP32 محسوب می شود.
پرسش های متداول
1. تفاوت Locked Mode و Test Mode چیست؟
در Test Mode دسترسی خواندن و نوشتن بدون محدودیت برای همه تا 30 روز باز است و پس از آن باید قوانین مناسب تنظیم شود. در Locked Mode از ابتدا دسترسی ها به صورت دستی داده می شود.
2. وقتی قوانین دیتابیس را true می گذارم، چرا باید Anonymous Authentication را هم فعال کنم؟
حتما باید فعال باشد. ESP32 ابتدا باید فرآیند لاگین را کامل کند. اگر Anonymous در کنسول غیرفعال باشد، گوگل دست دهی اولیه را مسدود می کند و داده منتقل نمی شود.
3. می توان چند برد ESP32 را به یک دیتابیس Firebase متصل کرد؟
بله، می توانید چند ESP32 داشته باشید که هر کدام در مسیرهای متفاوت دیتابیس بخوانند یا بنویسند.











