🟢 كيفية إنشاء نظام إشارات مرور ذكي باستخدام ESP32 وSupabase – دليل شامل للمبتدئين والمحترفين

🟢 كيفية إنشاء نظام إشارات مرور ذكي باستخدام ESP32 وSupabase – دليل شامل للمبتدئين والمحترفين

1 reviews

🟢 كيفية إنشاء نظام إشارات مرور ذكي باستخدام 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_idcurrent_stateupdated_at
ambulance_light_01red2025-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 قد يبدأ من هنا.

comments ( 0 )
please login to be able to comment
article by
articles

106

followings

49

followings

13

similar articles