اكتسب مصطلح إنترنت الأشياء (IOT) صيتاً واسعاً في عالم التكنولوجيا، فقد غيّر أسلوبَ عملنا وحياتنا، فبفضل إنترنت الأشياء أصبح العالم الفيزيائي والرقمي مرتبطين ارتباطاً وثيقاً أكثر من أي وقت مضى.
أطلقت شركة Epressif Systems (شركة صينية مقرها في شنغهاي تعمل في مجال أنصاف النواقل) متحكماً صغيراً يدعم تقنية WIFI و حجمه صغير لا يتجاوز قبضة اليد يدعى ESP8266، و بسعر لا يتجاوز 3 دولار أمريكي.
يمكّننا هذا المتحكمُ الصغري التّحكم ومراقبة الأشياء من أيّ مكان في العالم، وهذا ما يجعله مناسباً لمشاريع إنترنت الأشياء.
وحدة ESP – 12E:
تتضمن لوحةُ التطوير المبنية الإصدارَ ESP – 12E شريحة ESP8266 التي تعتمد على المعالج الصغري Tensilica Xtensa® 32-bit LX106 RISC microprocessor الذي يعمل بسرعة تتراوح بين 80-160 MHZ ويدعم RTOS (نظام التشغيل في الزمن الحقيقي Real Time Operating System).
بالإضافة إلى ذاكرة RAM بحجم 128 كيلوبايت و ذاكرة من نوع flash بحجم 4 ميغابايت لتخزين الكود البرمجي والبيانات وهي مناسبة للكمية الكبيرة من الروابط التي تنشئها صفحات الويب وبيانات JSON/XML، وكل شيء نمرره بأجهزة تعمل في بيئة إنترنت الأشياء.
تحتوي ESP8266 على مرسل ومستقبلٍ للإشارة WIFI HT40 b/g/n 802.11 ، ولذلك هي ليست فقادرة على الاتصال بالشبكة فقط، والتفاعل مع الإنترنت بل تستطيع أيضاً إنشاء شبكة خاصة بها، وتسمح للأجهزة الأخرى بالاتصال مباشرة بها، وهذا ما يكسب لوحة ESP8266 NodeMCU مَزِيَّة المرونة وتعدد الاستخدام.
خصائص شريحة ESP-12E:
- معالج Tensilica Xtensa® 32-bit LX106.
- سرعة المعالج بين 80-160 MHZ.
- ذاكرة وصول عشوائي داخلية RAM:128KB .
- ذاكرة flash خارجية 4MB.
- شريحة WIFI تدعم المعايير b/g/n 11.
متطلبات التشغيل:
يتراوح جهد التشغيل لـ ESP8266 بين 3v- 3.3v، تحوي اللوحة منظمَ جهد LDO (منظم يعطي الخرج عند أقلّ فرق في الجهد بين الدخل والخرج Low Dropout) لإبقاء الجهد مستقراً عند 3.3v وتيار 600 ميلي أمبير الذي يجب أن يكون أكثرَ كفاية إذ ESP8266 تستهلك إلى حد 80mA خلال الإرسال الراديوي. يتوزع خرج المنظم على قطبين في جانبي اللوحة يشار إليهما بالرمز 3.3v، وهذه الأقطاب يمكن أن تستخدم كمصدر تغذية لمكونات وتجهيزات ملحقة باللوحة (حساسات… الخ).
متطلبات الطاقة:
- جهد تشغيل 5v-3.6v.
- منظم ضمن اللوحة يؤمن 3v – 600 mA.
- تيار التشغيل 80mA.
- استهلاك 20mA في وضع الخمول.
تشغيل ESP8266NodeMCU إما بتزويد اللوحة بتيار كهربائي عن طريق مأخذ USB، وإما في حال توفر مصدر تيار مستمر 5v، يمكن استخدام القطب VIN للتغذية استخداماً مباشراً لـ ESP8266 والمكونات الملحقة بها.
الملحقات وأقطاب الدخل والخرج:
إن ESP8266NodeMCU لديها 17 من أقطاب الدخل والخرج العامة GPIO على جانبي اللوحة
هذه الأقطاب يمكن أن تؤدي مهامَّ مختلفةً على وَفق للملحقات الموصولة بها:
- قناة (محوّل تشابهي رقمي) ADC – بدقة 10 bit.
- واجهة لبرتوكول النقل التّسلسلي غير المتزامن UART، تستخدم لحقن الكود البرمجي.
- أقطاب تدعم إشارة تعديل عرض النبضة PMW للتحكم بسرعة المحركات وإضاءة الديودات الباعثة للضوء LEDs.
- SPI، و صلة I2S – I2C لربط جميع أنواع الحساسات، والإضافات الأخرى.
- وصلة I2S تستخدم إذا أردت إضافة صوت.
هذا يعني أن قطب GPIO واحد يمكن أن يعمل كـ SPI/PMW/UART.
الأزرار والمؤشرات الضوئية المتوضعة على اللوحة:
إن ESP8266NodeMCU تتميز بزرين، يعرف أحدهما بـ RST يوضع في أعلى الزاوية اليسرى من اللوحة، وهو زر إعادة التّشغيل، ويستخدم من أجل إعادة تشغيل الشريحة.
زر FLASH يوضع عند القاعدة وعلى الجهة اليسرى، ويستخدم عند تحديث البرنامج الداخلي firmware.
كما أن اللوحة يوجد عليها أيضاً مؤشرٌ ضوئي LED قابل للبرمجة، موصول بالقطب D0 إلى الوحة.
الاتصال التسلسلي:
تتضمن اللوحة شريحة CP2102 USB-to-UART من شركة Silicon Lab التي تحول إشارة USB إلى بيانات تسلسلية، وتسمح لحاسوبك أن يتصل بشريحة ESP8266.
أقطاب لوحة NodeMCU:
إن شريحة ESP8266NodeMCU تمتلك 30 قطباً تسمح بالاتصال بالأجهزة الخارجية الأخرى.
أقطاب التزود بالطاقة:
يوجد أربعة أقطاب خاصة بالتزود بالطاقة أحدها القطب Vin، وثلاثة أقطاب 3.3v، إن قطب Vin يمكن استخدامه مباشرة لتغذية ESP8266، والملحقات الأخرى. أما أقطاب 3.3v فهي خرج على اللوحة يمكن أن تُستخدم لتغذية الملحقات.
GND:
قطب التأريض لشريحة ESP8266 NodeMCU
أقطاب I2C:
تستخدم لربطِ كلِّ أنواع الحساسات، والملحقات الأخرى في مشروعك يعمل البروتوكول على وَفق مبدأ السيد – التابع، كما أن وظيفة I2C يمكن تحديدها برمجيّاً، تردد العمل هو 100KHZ في حدّه الأقصى نلاحظ أن تردد I2C السيد(Master) أعلى من I2C تردد التابع.
المداخل والمخارج العامة GPIO:
إن ESP8266NodeMCU تمتلك 17 قطباً GPIO قد تعمل بمهمات كثيرة، مثل: I2C – I2S – UART – PMW التحكم الشبكيّ IR، وضوء LED، وأزرار مبرمجة. يمكن جعل أيِّ منفذ موصول لمقاومة خفض pull-down أو رفع pull-up أو ممانعة مرتفع high impedance.
إذا أُرِيدَ تهيئتها لتكون أقطاب دخل، يمكن تحديد عملها فيما إذا كانت تعمل على وَفق جبهة الإشارة edge-trigger أو على وَفق مستوى الإشارة level-trigger لتوليد مقاطعة لوحدة المعالجة المركزية.
المحول التشابهي الرقمي ADC:
تحتوي اللوحة على محوّلِ تشابهٍ رقمي بدقة 10 bit يمكن لهذا القطب تنفيذ مهتمين وهما اختبارُ مصدر جهد التغذية للقطب VDD3P3 واختبارُ جهد الدخل للقطب TOUT مع العلم أنه لا يمكن تنفيذه في نفس الوقت.
أقطاب البرتوكول UART:
تحتوي NodeMCU على وصلتي UART (UART0 و UART1) تؤمنان اتصالاً غيرَ متزامن (RS232 and RS485) بسرعة نقل تصل إلى Mbps 4.5 . الأقطاب التالية (TXD0, RXD0, RST0, CTS0) تستخدم مع UART0 الذي يتميز بقدرته على التّحكم في تدفق المعطيات. من جهة أخرى UART1 يستخدم القطب (TXD1) لذا يستخدم للإرسال فقط وعادة ما يستخدم لعمليات الإظهار.
أقطاب البرتوكول SPI:
تتميز ESP8266 بـ قطبين SPI (SPI و HSPI) يعمل على وَفق مبدأ السيد – التابع.
تمنحنا هذه الأقطاب من الميزات العامة التالية:
- أربعة أنماطٍ زمنية لصيغة النقل عبر برتوكول SPI
- سرعة نقل حتى 80 ميغاهرتزًا وقيم من.
- تعمل على وَفق مبدأ (FIFO) الوارد أوّلاً يصدر أوّلاً.
أقطاب SDIO:
تمثل واجهة رقمية للتعامل مع كروت الذاكرة SD Card إذ يدعم الأنماط التالية
(4-bit 25 MHz SDIO v1.1 , 4-bit 50 MHz SDIO v2.0)
أقطاب PMW:
تحتوي اللوحة على أربعة أقطاب تدعم إشارة تعديل عرض النبضة (PMW) إذ يمكن أن نولد هذه الإشارة برمجيّاً لتستخدم من أجل قيادة المحركات أوالديودات الباعثة للضوء LEDs، يتراوح مجال تردد (PMW) بين 100 هرتز حتى 1 كيلو هرتز.
أقطاب التحكم:
تُستخدم للتحكم في عمل ESP8266، مثل القطب EN وRST و WAKE.
- القطب (EN): تنتقل الـ ESP8266 إلى وضع العمل عندما يكون القطب EN موصولاً إلى 5 فولت وعند وصلها إلى الأرضي تعمل بالحد الأدنى من القدرة.
- القطب (RST): يستخدم لإعادة تشغيل الشريحة.
- القطب (WAKE): يستخدم لتنشيط الشريحة من وضع الخمول (deep-sleep).
منصات تطوير ESP8266:
يوجد الكثير من المنصات التي تدعم برمجة شريحة ESP8266 مثلاً: منصة Espruino و Mongoose OS، وهو نظامُ تشغيلٍ لإنترنت الأشياء (موصى به من شركة ESPRESSIF و Google)، أو استخدام برمجيات تطوير من شركة ESPRESSIF أو أيّ منصة أخرى.
لحسن الحظ، مجتمع مطورين ESP8266 اتجهوا لإنشاء إضافة إلى بيئة تطوير أردوينو Arduino
إذا كنت قد بدأت للتو العملَ مع ESP8266 فهذه هي البيئة التي ننصح لك البدء بها.
إن الإضافة ESP8266 لـ Arduino بنيت من قبل إيفان غروخوتكوف Ivan Grokhotkov.
زُر: ESP8266 Arduino GitHub repository لمعلومات أكثر.
تنصيب نواة ESP8266 على نظام Windows:
يجب الحصول على آخر نسخة Arduino IDE، وتحميلها على الحاسب.
نحتاج إلى تحديث قسم “مدير اللوحات” board manager باستخدام رابط URL. حيث نفتح Arduino IDE، و نذهب الى قائمة “ملف” File ثم نختار “التّفضيلات” Preferences ، و ثم نقوم بنسخ URL الموجود في الأسفل إلى المربع النّصي لخيار “روابط إضافية لمدير اللوحات” Additional Board Manager URLs
http://arduino.esp8266.com/stable/package_esp8266com_index.json
نضغط “موافق” ok ثم نبحث عن “مدير اللوحات” بالدخول على قائمة “أدوات” Tools ثم إلى “لوحات” Boards ثم نختار “مدير اللوحات” boards Manager، يجب أن تكون هناك خيارات عديدة بالإضافة إلى لوحات الأردوينو الأساسية ابحث عن ESP8266 ثم اضغط على “تنصيب” Install.
تجربة المثال البرمجي BLINK:
للتأكد توافق لوحة NodeMCU مع برنامج Arduino IDE سوف نختبر الكود البرمجي BLINK على لوحة الـ NodeMCU.
سوف نستخدم ضوء الليد LED الموجود على اللوحة في هذه التجرِبة، وكما أُشِيرَ سابقاً القطب D0 موصول إلى الليد الأزرق المتوضع على اللوحة.
قبل تحميل الكود البرمجي واختبار الليد علينا تأكد صحة اختيارنا للوحة.
لذا ندخل إلى IDE Arduino نختار “أدوات” ثم “لوحات” ثم نختار NodeMCU 0.9(ESP-12Module)
بعد ذلك نصل ESP8266NodeMCU باستخدام USB إلى الحاسوب، وعندها يعطي الحاسوب إشارة منفذ غير معرف كمثال قد يعطي com# على أجهزة تعمل بنظام Windows، لاختيار المنفذ؛ ندخل إلى IDE Arduino ونختار “أدوات” ثم “منافذ” Port ونختار com ونختار سرعة التحميل 115200.
تنبيه: عند الدخول إلى اللوحة، واختيار المنفذ الصحيح يجب الانتباه، وبدقة لاختيار المنفذ، وسرعة التّحميل، وعند الانتهاء جرب الشيفرة البرمجة التالية.
الكود البرمجي: التحميل من هنا
عند الانتهاء من التحميل، الليد سوف ينطفئ، ويضئ، وقد تحتاج إلى إعادة تشغيل اللوحة لعمل الشيفرة البرمجية.
المصدر: هنا
ترجمة: يوسف طلال حسن, مراجعة: علي العلي, تدقيق لغوي: محمد بابكر, تصميم: علي العلي, تحرير:قحطان غانم.