
🟢 كيفية إنشاء نظام إشارات مرور ذكي باستخدام ESP32 وSupabase – دليل شامل للمبتدئين والمحترفين
🟢 كيفية إنشاء نظام إشارات مرور ذكي باستخدام ESP32 وSupabase – دليل شامل للمبتدئين والمحترفين
في عصر المدن الذكية وأنظمة إنترنت الأشياء (IoT)، أصبح التحكم عن بُعد في الأجهزة الإلكترونية من الأمور الممكنة والبسيطة. في هذا المقال، سنقوم ببناء مشروع إشارات مرور ذكية باستخدام ESP32 وقاعدة بيانات Supabase، حيث يتم تحديث حالة الإشارة تلقائيًا عبر الإنترنت.
سيتضمن المشروع تحكمًا في 3 مصابيح (أحمر، أصفر، أخضر) مع إمكانية تحديث حالتهم من Supabase كل ثانيتين. هذا المشروع هو بوابتك لفهم:
كيفية استخدام ESP32 للاتصال بالإنترنت
قراءة البيانات من Supabase REST API
التعامل مع JSON وتحليل الاستجابة
ربط المشروع بالأنظمة السحابية
تحسين الأداء، الأمان، والموثوقية
🛠️ الأدوات المطلوبة
المكون | الوصف |
---|---|
ESP32 Dev Board | وحدة المعالجة الأساسية |
مصابيح LED (أحمر، أصفر، أخضر) | تمثيل إشارات المرور |
مقاومات 220Ω | لحماية المصابيح |
أسلاك توصيل | للربط بين ESP32 والمكونات |
اتصال WiFi | للوصول إلى قاعدة Supabase |
حساب في Supabase | لإنشاء جدول "traffic_lights" وتحديث القيم |
🌐 إعداد Supabase
ادخل على https://supabase.com وسجّل الدخول.
أنشئ مشروعًا جديدًا.
أنشئ جدولًا باسم traffic_lights
يحتوي على الأعمدة:
light_id
(نص – Primary Key)
current_state
(نص – "red", "yellow", "green")
updated_at
(تاريخ وتوقيت – يتم تحديثه تلقائيًا)
قم بإضافة صف جديد:
light_id | current_state | updated_at |
---|---|---|
ambulance_light_01 | red | 2025-06-16T00:00:00Z |
انسخ رابط API ومفتاح الـ API من تبويب Project Settings > API.
⚙️ شرح الكود بالتفصيل
1. استدعاء المكتبات
#include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h>
هذه المكتبات تُمكن ESP32 من الاتصال بالإنترنت، إرسال واستقبال طلبات HTTP، وتحليل البيانات بتنسيق JSON.
2. إعداد بيانات الاتصال
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* supabaseUrl = "https://xxx.supabase.co";
const char* supabaseKey = "YOUR_SUPABASE_API_KEY";
أدخل هنا بيانات شبكتك ومفاتيح Supabase الخاصة بك.
3. إعداد المصابيح
const int RED_LED = 12;
const int YELLOW_LED = 13;
const int GREEN_LED = 14;
هذه المنافذ هي GPIO Pins التي سيتم توصيل المصابيح بها.
4. توصيل الشبكة
void connectToWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
}
بمجرد تشغيل الشريحة، يتم الاتصال بشبكة الإنترنت تلقائيًا.
5. إرسال واستقبال البيانات من Supabase
String url = supabaseUrl + "/rest/v1/traffic_lights?light_id=eq.ambulance_light_01&select=current_state,updated_at";
http.begin(url);
http.addHeader("apikey", supabaseKey);
http.GET();
هذا هو طلب REST API لجلب الحالة من قاعدة البيانات.
6. تحليل JSON
DynamicJsonDocument doc(1024);
deserializeJson(doc, jsonResponse);
String state = doc[0]["current_state"];
يقوم ESP32 بتحليل استجابة Supabase وتحديد الإشارة الحالية.
7. تشغيل الإشارة المناسبة
if (state == "red") {
digitalWrite(RED_LED, HIGH);
}
else if (state == "yellow") {
digitalWrite(YELLOW_LED, HIGH);
}
else if (state == "green") {
digitalWrite(GREEN_LED, HIGH);
}
بناءً على البيانات التي وصلته، يُشغّل ESP32 المصباح الصحيح.
8. التحقق كل ثانيتين
if (millis() - lastCheck >= 2000) {
checkForUpdates();
lastCheck = millis();
}
يتم تحديث حالة الإشارة تلقائيًا كل 2 ثانية.
🧪 مثال على مخرجات Serial Monitor
✅ تم الاتصال بالواي فاي!
🔍 فحص التحديثات من Supabase...
🎯 الحالة الجديدة: green
🟢 تم تشغيل الضوء الأخضر - المنفذ 14
✨ انتهى وميض الطوارئ
📋 جدول مخطط التوصيل
منفذ ESP32 | وظيفة المصباح | اللون |
---|---|---|
GPIO 12 | إشارة التوقف | 🔴 أحمر |
GPIO 13 | تحذير/تبديل | 🟡 أصفر |
GPIO 14 | المرور مسموح | 🟢 أخضر |
💡 تحسينات مستقبلية للمشروع
فكرة التطوير | الفائدة |
---|---|
استخدام WebSocket | تحديث لحظي بدلاً من الفحص كل 2 ثانية |
إضافة شاشة OLED | عرض الحالة الحالية بدون الحاجة لفتح Serial Monitor |
نظام طوارئ يدوي | مفتاح خارجي لتجاوز النظام وتفعيل "ضوء أحمر دائمًا" |
استخدام بازل صوتي | إنذار صوتي عند تشغيل الإشارة الخضراء للطوارئ |
دعم MQTT أو Node-RED | ربط النظام بمنصة إدارة مركزية للمدن الذكية |
📦 المشروع في نقاط
خاصية | القيمة |
---|---|
المعالج | ESP32 |
الاتصال | WiFi |
قاعدة البيانات | Supabase |
واجهة برمجية | REST API + JSON |
نوع التحكم | سحابي / ذكي / تلقائي |
التحديث | كل 2 ثانية |
مستوى الخبرة المطلوب | مبتدئ إلى متوسط |
🔍 الكلمات المفتاحية (Keywords)
ESP32 Smart Traffic Light
ESP32 with Supabase
ESP32 JSON API Control
ESP32 IoT Projects
ESP32 REST API Tutorial
ESP32 LED Control via Internet
🏁 الخلاصة
ببساطة، هذا المشروع يُعد خطوة قوية نحو بناء أنظمة تحكم ذكية قائمة على ESP32. تعلمت من خلاله كيفية:
توصيل ESP32 بالإنترنت
التعامل مع Supabase REST API
استخدام ArduinoJson
التحكم في أجهزة حقيقية عن بُعد
سواء كنت مبتدئًا أو محترفًا، فمشروعك القادم في عالم ESP32 وIoT قد يبدأ من هنا.