Consulting Services
مقالاتلغة سي و متحكمات

تحويلة اتصال تسلسلي إلى واي فاي باستخدام ESP8266 أو ESP32

لنجعل البيانات السلكية تتطاير لاسلكياً في الهواء!

إن البرمجة والتنقيح debugging عبر الاتصال التسلسلي عبر بروتوكول UART من أحد الأشياء المهمّة بالنسبة لمطوري الإلكترونيات وحتى لآخرين مثل مهندسين التحقق من الجودة QA Engineer، لكن في ظروف معيّنة قد يكون من الصعب الوصول للدارة التي بحاجة برمجة أو تنقيح عبر الأسلاك. أذكر مرة في عملي السابق كيف قام مهندسين قسم التأكد من الجودة بتنفيذ دارة بسيطة تعمل على البلوتوث لنقل المعطيات الخارجة عبر المنفذ التسلسلي للجهاز لأنه مثبت داخل السيارة في مكان لا يمكن الوصول له بالأسلاك، وفي هذا المقال سوف نقوم بإرسال المعطيات عبر الهواء باستخدام الواي فاي.

 

تحويلة تسلسلي-واي فاي باستخدام 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.

والآن يتم تتبع التعليمات الموجودة في ملف تعليمات تنزيل البرنامج على الذاكرة لمعرفة العناوين تبعاً لحجم الذاكرة المتوفرة في الدارة.

nodemcu tool

من الممكن جعل أداة Flash download tool تتعرف على حجم الذاكرة وإعدادات أخرى من رسالة الإقلاع boot التي تطبعها دارة ESP8266 في كل إقلاع. بعد وصل الدارة وتشغيل البرنامج والكبس على زر start يحصل البرنامج على المعلومات المطلوبة.

esp download tool

بشكل بديل، من الممكن أيضاً قراءة الرسالة بشكل يدوي عبر وصل الدارة لواجهة serial console بسرعة 76600 baud.

esp8266 boot

بعد تحميل البرنامج بشكل ناجح سوف تظهر شبكة جديدة في شبكات الاتصال اللاسلكي.

بعد الاتصال بها ومن ثم النفاذ لعنوان الـIP التالي http://192.168.4.1 عبر المتصفح يجب مشاهدة صفحة الويب الرئيسية الآن.

 

التجهيز العتادي

 

لتجريب المشروع يجب تحقيق الوصل التالي: خط TX0 من ESP مع TX الجهاز وخط RX0 مع RX من الجهاز المراد إرسال المعلومات منه عبر الواي فاي. من أجل التجريب، هذا الجهاز هو عبارة عن تحويل USB-UART والمعلومات المرسلة والمستقبلة ستكون عبر برنامج PUTTY.

مصدر الصورة ElecFreaks

 

والآن لنشاهد بعض المعلومات المتطايرة في الهواء!

Esp-link tx

Esp-link rx

في النهاية أظن من المفيد إمضاء بعض الوقت الإضافي لاستكشاف باقي المزايا المهمة لهذا المشروع.

 

تحويلة تسلسلي-واي فاي باستخدام ESP8266 (أبسط)

 

قد يكون المطلوب أبسط من المشروع الضخم السابق. فقط التحويل دون وجود أي واجهات، ولهذا السبب قمتُ بتعديل كود بسيط مكتوب بلغة الأردوينو ويعمل على ESP32 (بسيط ومشروح في الجزء المتبقي من المقال) لكي يعمل على ESP8266 ويمكن تحميله من الموقع:

يمكن متابعة الشرح الموجود في بقية المقال واستخدام الكود الجديد وESP8266 حيث بالنفاذ المباشرة إلى عنوان IP و Port محدد باستخدام أحد برامج اتصال Telnet يمكن الوصول للبيانات التسلسلية.

تحويلة تسلسلي-واي فاي باستخدام ESP32

 

أحد المشاريه الموجودة على Github يقدم إمكانية التحويل التسلسلي-واي فاي للمنافذ التسلسلية الثلاثة الموجودة في ESP32. هذا المشروع مكتوب باستخدام بيئة الأردوينو ويدعم بأن تكون الـ ESP بنمط نقطة نفاذ Access point تقوم ببث شبكة باسم وكلمة سر محددة في الكود، أو بنمط station يتصل لنقطة نفاذ أخرى يتم تحديدها عبر الكود أيضاً. بكل الأحوال كل منفذ تسلسلي يمكن الوصول له عبر تحقيق الاتصال اللاسلكي عبر عنوان IP محدد ورقم Port.

ولنحضّر الآن البرمجيات والعتاديات لتجريب هذا المشروع!

 

التجهيز البرمجي

 

بما أن المشروع يستخدم الأردوينو مع نواة ESP32 فيجب تجهيز بيئة الأردوينو بنواة ESP32 core. إن التوثيق الرسمي من Espressif الشركة المصممة لـESP32 يحوي دليل تنصيب، ولكن الطريقة الأسهل والأسرع هي تحميل المستودع من Github وفك ضغط الملف ونقله للمسار التالي:

في “ويندوز” \Documents\Arduino\hardware\espressif\esp32 .
في “لينكس” مجلد “Sketchbook” يوجد عادة في /home/<اسم المستحدم>

الخطوة التالي هي بالحصول على المترجم وسلسلة الأدوات compilation tool-chain xtensa-esp32-elf وذلك بتنفيذ أحد الملفات get.exe أو get.py تبعاً لنوع نظام التشغيل.

ولتجريب كل ذلك معاً، يجب فتح برنامج Arduino IDE والتأكد أن النواة قد توفرت في Tools>boards menu

ESP32 Arduino core boards

كما يلزم أيضاً تجريب برمجة 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.

مصدر الصورة Aliexpress

وترتيب أرجل الدارة ووظائفها مجموعة في الصورة التالية:

esp32 pinmap

مصدر الصورة 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.

ESP32 putty serial

والصورة التالي لإعدادات الاتصال مع الدارة عبر الواي فاي باستخدام Telnet باستعمال عناوين الـIP التالية والـport تبعاً لرقم المنفذ المراد الاستماع له

  • 192.168.4.1:8880  / UART0
  • 192.168.4.1:8881  / UART1
  • 192.168.4.1:8882  / UART2

والآن لنستمتع قليلاً بنجاح التجربة!

wifi serial esp32

ملاحظة: يمكن للاتصال Telnet أن يتم مع هاتف ذكي باستخدام أحد تطبيقات Telnet client application مثل Termius أو أي برنامج آخر.

Telnet mobileمثال

للمزيد حول ESP32، يمكن قراءة سلسلة ” كل ما يتعلق بـESP32″.

Yahya Tawil

مؤسس عتاديات وأسعى لدعم المحتوى العربي عن النظم المضمنة في الويب العربي. خبرتي في مجال النظم المضمّنة تتركز في كتابة البرامج المضمنة وتصميم الدارات المطبوعة والمخططات وإنشاء المحتوى.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.

زر الذهاب إلى الأعلى