تحويلة اتصال تسلسلي إلى واي فاي باستخدام ESP8266 أو ESP32
لنجعل البيانات السلكية تتطاير لاسلكياً في الهواء!
تحويلة تسلسلي-واي فاي باستخدام ESP8266
واحد من أشهر المشاريع (التي ظهرت في مدونة Hackaday) والمصممة بشكل جيد هو مشروع esp-link بواسطة Jeelabs لتحويلة تسلسلي-واي فاي WiFi-UART bridge. بالوقع هذا المشروع أبعد من كونه فقط تحويلة فهو يقدم طريقة لتحقيق اتصال MQTT وأيضاً REST بين المتحكم الموصول مع الـESP8266 ليصل بالتالي المتحكم للإنترنت. أكثر من ذلك، يمكن أيضاً برمجة هذا المتحكم الموصول عبر الواي فاي. للمشروع esp-link واجهة ويب سهلة الاستخدام وعمليّة مخزّنة داخل الـESP ذاتها.
للقيام بالاختبار فإننا سنستخدم أحد الدارات التطويرية للـESP8266 وبشكل محدد أكثر NodeMCU.
التجهيز البرمجي
يجب في البداية تحميل النسخة المترجمة والمبنية images من المشروع من صفحة الإصدارات. إن الملف المضغوط (ملف بلاحقة .tgz موجود بجانب كلمة download المكتوبة بخط عريض) يجب أن يحوي 5 ملفات: blank.bin – boot_v1.x.bin – esp_init_data_default.bin – user1.bin – user2
عقب ذلك يجب وصل الدارة بعد تحميل أحد أدوات تنزيل الملفات على ذاكرة ESP8266 ومن هذه الأدوات: Flash download tool من شركة Espressif أو Nodemcu flasher.
والآن يتم تتبع التعليمات الموجودة في ملف تعليمات تنزيل البرنامج على الذاكرة لمعرفة العناوين تبعاً لحجم الذاكرة المتوفرة في الدارة.
من الممكن جعل أداة Flash download tool تتعرف على حجم الذاكرة وإعدادات أخرى من رسالة الإقلاع boot التي تطبعها دارة ESP8266 في كل إقلاع. بعد وصل الدارة وتشغيل البرنامج والكبس على زر start يحصل البرنامج على المعلومات المطلوبة.
بشكل بديل، من الممكن أيضاً قراءة الرسالة بشكل يدوي عبر وصل الدارة لواجهة serial console بسرعة 76600 baud.
بعد تحميل البرنامج بشكل ناجح سوف تظهر شبكة جديدة في شبكات الاتصال اللاسلكي.
بعد الاتصال بها ومن ثم النفاذ لعنوان الـIP التالي http://192.168.4.1 عبر المتصفح يجب مشاهدة صفحة الويب الرئيسية الآن.
التجهيز العتادي
لتجريب المشروع يجب تحقيق الوصل التالي: خط TX0 من ESP مع TX الجهاز وخط RX0 مع RX من الجهاز المراد إرسال المعلومات منه عبر الواي فاي. من أجل التجريب، هذا الجهاز هو عبارة عن تحويل USB-UART والمعلومات المرسلة والمستقبلة ستكون عبر برنامج PUTTY.
والآن لنشاهد بعض المعلومات المتطايرة في الهواء!
في النهاية أظن من المفيد إمضاء بعض الوقت الإضافي لاستكشاف باقي المزايا المهمة لهذا المشروع.
تحويلة تسلسلي-واي فاي باستخدام ESP8266 (أبسط)
قد يكون المطلوب أبسط من المشروع الضخم السابق. فقط التحويل دون وجود أي واجهات، ولهذا السبب قمتُ بتعديل كود بسيط مكتوب بلغة الأردوينو ويعمل على ESP32 (بسيط ومشروح في الجزء المتبقي من المقال) لكي يعمل على ESP8266 ويمكن تحميله من الموقع:
يمكن متابعة الشرح الموجود في بقية المقال واستخدام الكود الجديد وESP8266 حيث بالنفاذ المباشرة إلى عنوان IP و Port محدد باستخدام أحد برامج اتصال Telnet يمكن الوصول للبيانات التسلسلية.
تحويلة تسلسلي-واي فاي باستخدام ESP32
أحد المشاريه الموجودة على Github يقدم إمكانية التحويل التسلسلي-واي فاي للمنافذ التسلسلية الثلاثة الموجودة في ESP32. هذا المشروع مكتوب باستخدام بيئة الأردوينو ويدعم بأن تكون الـ ESP بنمط نقطة نفاذ Access point تقوم ببث شبكة باسم وكلمة سر محددة في الكود، أو بنمط station يتصل لنقطة نفاذ أخرى يتم تحديدها عبر الكود أيضاً. بكل الأحوال كل منفذ تسلسلي يمكن الوصول له عبر تحقيق الاتصال اللاسلكي عبر عنوان IP محدد ورقم Port.
ولنحضّر الآن البرمجيات والعتاديات لتجريب هذا المشروع!
التجهيز البرمجي
بما أن المشروع يستخدم الأردوينو مع نواة ESP32 فيجب تجهيز بيئة الأردوينو بنواة ESP32 core. إن التوثيق الرسمي من Espressif الشركة المصممة لـESP32 يحوي دليل تنصيب، ولكن الطريقة الأسهل والأسرع هي تحميل المستودع من Github وفك ضغط الملف ونقله للمسار التالي:
الخطوة التالي هي بالحصول على المترجم وسلسلة الأدوات compilation tool-chain xtensa-esp32-elf وذلك بتنفيذ أحد الملفات get.exe أو get.py تبعاً لنوع نظام التشغيل.
ولتجريب كل ذلك معاً، يجب فتح برنامج Arduino IDE والتأكد أن النواة قد توفرت في Tools>boards menu
كما يلزم أيضاً تجريب برمجة compilation برنامج بسيط ويمكن استخدام البرنامج التالي:
#define PIN_LED 1 // built_in void setup() { pinMode(PIN_LED, OUTPUT); } void loop() { digitalWrite(PIN_LED, HIGH); delay(1000); digitalWrite(PIN_LED, LOW); delay(1000); }
التجهيز العتادي
لـ ESP32 العديد من الدارات التطويرية المختلفة ومنها والمستخدمة في هذا المقال Goouuu-ESP32 Development Board.
وترتيب أرجل الدارة ووظائفها مجموعة في الصورة التالية:
مصدر الصورة Espressif Github Repo
لتجريب المشروع يجب تحقيق الوصل التالي: خط TX0 من ESP مع RX الجهاز وخط RX0 مع TX من الجهاز المراد إرسال المعلومات منه عبر الواي فاي. من أجل التجريب، هذا الجهاز هو عبارة عن تحويل USB-UART والمعلومات المرسلة والمستقبلة ستكون عبر برنامج PUTTY.
والآن، يجب تحميل الكود من المستودع في Github وتحميله لـESP32. ومن ثم الاختيار من القائمة Tools>boards>ESP Dev Module. يمكن تعديل الكثير من الإعدادات من الكود مثل نمط عمل الـESP كنقطة نفاذ أو station والكثير من الأشياء الأخرى. مثال على تعديل نمط العمل:
#define MODE_AP // phone connects directly to ESP //#define MODE_STA // ESP connects to WiFi router
إذا لم يتم إحداث أي تعديل في الكود فإن الملف الذي سيُحمل إلى الدارة سيجعلها تبث شبكة باسم “LK8000” وكلمة سر “Flightcomputer”. يتم الاتصال بالشبكة وفتح برنامج Putty (يجب فتح نسختين تنفيذيتين: واحدة لوصلة التحويل USB-Serial وواحدة لتحقيق اتصال عبر الواي فاي مع الدارة). في الصورة التالي إعداد الاتصال مع تحويلة USB-Serial.
والصورة التالي لإعدادات الاتصال مع الدارة عبر الواي فاي باستخدام Telnet باستعمال عناوين الـIP التالية والـport تبعاً لرقم المنفذ المراد الاستماع له
- 192.168.4.1:8880 / UART0
- 192.168.4.1:8881 / UART1
- 192.168.4.1:8882 / UART2
والآن لنستمتع قليلاً بنجاح التجربة!
مثال
للمزيد حول ESP32، يمكن قراءة سلسلة ” كل ما يتعلق بـESP32″.