
ما حدث هو ما ينتظره الجميع لفترة طويلة وما تحدثوا عنه كثيرًا - بدأت وحدات ESP32 الجديدة في البيع على نطاق واسع وذهبت إلى الناس. اليوم سنتحدث عن هذه الوحدات من وجهة نظر مستخدم غير محترف اعتاد على العمل مع Arduino وإنشاء مشاريع صغيرة لأتمتة المنزل أو لمجرد التسلية والدراسة الذاتية.
هل تعمل على الإطلاق؟ ما هو دعم هذه الوحدات في Arduino IDE؟ هل يستحق الأمر أن تدفع أكثر أم أنه من الأفضل أن تقتصر على ESP8266 المألوف بالفعل؟ سنحاول الإجابة على جميع هذه الأسئلة معًا ، وفي نهاية المقال سأقدم رابطًا للتجسيد الحقيقي لعمل ESP32 مع Arduino - توزيع الإصدار المجاني من
Arduino Mega Server لمنصة ESP32.
المواصفات
لن أتطرق إلى مواصفات ESP32 هنا بالتفصيل ، يمكنك العثور عليها بسهولة على الإنترنت: يرى كل مراجع أنه من واجبه إحضار ورقة مواصفات في بداية مراجعة ESP32. لا يمكنني إلا أن أقول أنها مثيرة للإعجاب ، وإذا تناولت الأمر بجدية وتفكير ، يمكنك قضاء أكثر من عام واحد في دراسة جميع إمكانات الوحدة وتجربتها.
دعونا نترك هذا للمهنيين (أو أولئك الذين يعتبرون أنفسهم على هذا النحو) ونركز على الجانب العملي للقضية ، ومفهومة ومتاحة لمجرد البشر.
سعر الإصدار
لنبدأ بالسعر. في الوقت الحالي ، تكلف وحدة ESP32 في المتاجر الصينية عبر الإنترنت 350 روبل و 500 في إصدار اللوحة مع تسخير وواجهة USB. هذا مقابل 100 و 160 روبل لوحدة ESP8266 ، على التوالي. كما ترى ، فإن الفرق أكثر من ثلاث مرات ، على الرغم من أن القيم المطلقة صغيرة ، يمكن لكل منها ، إذا رغبت ، أن تنفق 350-500 روبل على متحكم دقيق. للمقارنة ، يكلف Arduino Mega 2560 في نفس الصين 600 روبل ، وفي روسيا حوالي 1000 (بالإضافة إلى تكلفة Ethernet Shield).
يبقى فقط لمعرفة ما إذا كان الأمر يستحق الدفع ثلاث مرات أكثر من ESP8266 وماذا سنحصل عليه. (بالنظر إلى المستقبل ، سأقول ، في رأيي ، إنه يستحق ذلك بالتأكيد).
الدعم في Arduino IDE
من أجل القيام بشيء ما مع الوحدة ، يجب عليك أولاً الحصول على دعمها في Arduino IDE. في الوقت الحالي ، يكون دعم ESP32 في Arduino IDE عند المستوى الأولي ، ولكنه لائق جدًا وقابل للتطبيق. أولئك الذين يخشون من مواجهة صعوبات لا يمكن التغلب عليها هنا لا يمكنهم القلق - الوظائف الرئيسية تعمل بشكل جيد وعلى الأرجح لن تلاحظ أي فرق مقارنة بالعمل على وحدات تحكم أخرى.
الأمور أسوأ قليلاً مع برامج تشغيل الجهاز ، لكن هذه بالتأكيد ظاهرة مؤقتة. هذه الوحدة شائعة جدًا لدرجة أن دعم أي أجهزة طرفية سيظهر حتمًا في المستقبل القريب.
إضافة دعم ESP32 إلى Arduino IDE
الآن بعض المعلومات العملية حول تثبيت دعم ESP32 في Arduino IDE. الإنترنت مليء بالتعليمات حول هذا الموضوع ، يمكنك أيضًا العثور عليها بوفرة في ذلك. ألاحظ فقط أن جميع التعليمات مقسمة إلى "قديمة" ، حيث يتم ذكر Python و "جديدة" ، حيث يتم ذكر GIT. بطبيعة الحال ، تحتاج إلى الاسترشاد بأخرى جديدة.
من بين العديد من التعليمات ، يمكن استدعاء الأفضل (الغريب) التعليمات الرسمية من الشركة المصنعة للوحدة النمطية.
github.com/espressif/arduino-esp32الذي أوصي باستخدامه. التحذير الوحيد: GIT اختياري ، يمكنك ببساطة تنزيل حزمة التوزيع وفك ضغطها إلى الدليل المطلوب.
ملاحظة ينطبق كل ما يلي على التثبيت تحت Windows 7 64-bit ، نظرًا لأنني أجريت جميع التجارب عليه ، فقد تختلف المسارات في أنظمة التشغيل الأخرى عن تلك المشار إليها.يجب أن تكون ملفات التوزيع في المجلد
C:\Users\User\Documents\Arduino\hardware\espressif\esp32
حيث C: هو اسم محرك أقراص Windows الخاص بك ، والمستخدم هو اسم المستخدم في نظام التشغيل (قد يختلف كلاهما عن الاسم المحدد).
نقاط تثبيت غير واضحة لـ ESP32
يشكو العديد من المستخدمين من عدم وجود أي شيء يناسبهم ولا يظهر دعم ESP32 في Arduino IDE. إليك الشيء: نظرًا لأن برامج تشغيل ESP32 يتم تطويرها فقط ، فقد تم تغيير ترتيب موقع دلائل النظام بشكل طفيف. يجب تحديد مجلد موقع الرسومات في إعدادات Arduino IDE في المجلد
C:\Users\User\Documents\Arduino
(مع نفس التعديلات على محرك الأقراص واسم المستخدم) ، يجب وضع ملفات التوزيع داخل هذا المجلد على النحو الموصى به من قبل الشركة المصنعة. إذا لم تؤخذ هذه النقطة في الاعتبار ، فلن يظهر دعم ESP32 في IDE Arduino ولن يعمل شيء.
إصدارات Arduino IDE
غالبًا ما تسمع أن دعم ESP32 متوفر فقط في أحدث إصدارات Arduino IDE ، الأمر ليس كذلك - يعمل ESP32 بشكل جيد في الإصدارات السابقة ، على سبيل المثال ، تم تطوير توزيع Arduino Mega Server لـ ESP32 في الإصدار 1.6.5 r2.
فوائد ESP32
الآن دعونا نتحدث عن مزايا ESP32 على سابقتها ، ESP8266. لن أطيل في الحديث عن أشياء واضحة مثل طاقة المعالج وذاكرة الوصول العشوائي ، يمكنني فقط أن أقول أنك تحتاج إلى محاولة تحميل ESP32 بجد على مهام DIY والأتمتة المنزلية.
دبابيس
كان كعب أخيل لسلفه ، وحدة ESP8266 ، (ولا يزال) عددًا صغيرًا جدًا من الاستنتاجات. بعد العمل مع وحدات التحكم مثل Arduino Mega و Arduino Due مع عشرات دبابيسها الرقمية والتناظرية ، فإن العمل مع ESP8266 أمر محير: إن عدد GPIO هو حرفياً وهذا يحد بشكل كبير من استخدام هذه الوحدة في المشاريع الحقيقية.

ESP32 ، إن لم يكن بالكامل ، خالي إلى حد كبير من هذا العيب. تم زيادة عدد الدبابيس المتاحة بشكل ملحوظ ، وظهرت أيضًا العديد من المدخلات التناظرية. يمكن استدعاء 13 استنتاجًا مجانيًا تمامًا ويمكن الوصول إليها للاستخدام.
GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33
إذا لزم الأمر ، يمكن إضافتها بوظائف محدودة والعمل فقط على الإدخال
GPIO 34, 35, 36, 39
إذا ضحت ببعض الميزات ولم تستخدم Serial أو SPI أو I2C في مشاريع محددة ، فيمكنك إضافة 8 دبابيس أخرى إلى هذا الرقم
GPIO 1, 3, 5, 18, 19, 21, 22, 23
حسنًا ، من الممكن استخدام 6 دبابيس أخرى مصممة للعمل مع ذاكرة فلاش داخلية (على سبيل المثال ، إذا قمت بتوصيل بطاقة SD خارجية)
GPIO 6, 7, 8, 9, 10, 11
كما ترى ، لا توجد مقارنة مع ESP8266 - تبدو الوحدة الجديدة جيدة تمامًا في عدد الاتصالات المحتملة وهي ذات قيمة كبيرة في المشاريع الحقيقية التي يكون فيها كل دبوس باهظًا.
سرعة العمل
لقد ذكرت بالفعل معالجًا قويًا ، والآن يجب أن نقول بضع كلمات عن سرعة تشغيل الشبكة. أجد صعوبة في تحديد ما يرتبط بهذا ، ربما مع معالج قوي ، ربما مع تحسين مكدس الشبكة ، ولكن وحدة ESP32 تحت سيطرة Arduino Mega Server أظهرت أداء قياسي للشبكة.

يستغرق تحميل صفحة تحتوي على كود CSS وجافا سكريبت كبير الحجم ووفرة من الرسومات ثانية واحدة فقط - أسرع من أي جهاز تحكم آخر تم اختباره ، بما في ذلك وحدات التحكم السلكية مع W5100 و W5500 واجهة إيثرنت.
فيما يتعلق بخادم Arduino Mega Server ، فإن هذا يزيل جميع القيود المفروضة على استخدام الرسومات وأية مكتبات JavaScript ، سواء من حيث الحجم أو العدد.
مزايا أخرى
ESP32 هو جهاز عالي التقنية للغاية ، فقط قائمة جافة بالميزات المتاحة يمكن أن تستغرق أكثر من صفحة واحدة ، وقائمة المزايا والميزات مع التعليقات ستأخذ حجمًا كاملاً. لذلك ، سأقتصر على ذلك ، حتى لا أزعج المقالة وأعطي بعض الأمثلة للعمل مع كود ESP32 في بيئة Arduino.
أمثلة التعليمات البرمجية
ذاكرة غير متطايرة
هذا ما كنا نسميه EEPROM لـ Arduino Mega. لا يحتوي ESP32 على هذه الذاكرة على هذا النحو ، ولكن هذه الوحدة لها نظيرتها ومكتبتها المقابلة للعمل معها. تسمى هذه الذاكرة "NVS" (التخزين غير المتطاير).
ولكن بالنسبة لنا ، لا يوجد فرق - يمكنك حفظ القيم بنفس الطريقة وقراءتها بعد إيقاف التشغيل ثم تشغيل وحدة التحكم.
مثال للاستخدام. نحن نربط المكتبة:
#include <Preferences.h>
إنشاء كائن بادئة
Preferences prefs;
نقوم بتهيئة المستودع بالمعرف ، على سبيل المثال ، "nvs":
prefs.begin("nvs", false);
يشير خطأ إلى اختيار وضع القراءة / الكتابة ، في هذه الحالة ، القراءة والكتابة. نحفظ البايت تحت اسم "addr":
prefs.putUChar("addr", 65);
نقرأ البايت المحفوظ:
byte b = prefs.getUChar("addr", 0);
بنفس الطريقة ، يمكنك حفظ وقراءة قيم أي أنواع بيانات أخرى. الآن احذف التخزين.
prefs.remove("nvs");
إذا نظرت ، فإنه أسهل من العمل مع ذاكرة EEPROM القياسية غير المتطايرة على وحدات تحكم Arduino.
تناظري ()
ابتكار آخر يمكن أن يخلط بين المستخدم المبتدئ هو أن وظيفة AnalogWrite () المألوفة مفقودة في ESP32. في البداية ، هذا أمر غير معتاد للغاية ، ولكن في الواقع ، يتم استبدال هذه الوظيفة فقط بنظيرها الأكثر وظيفية.
تأمل في مثال. لنبدأ بتوصيل المكتبة المقابلة ، على الرغم من أن هذا لا يمكن أن يسمى مكتبة بالمعنى الكامل للكلمة ، بل هو ملف متخصص يحتوي على وصف للوظائف الضرورية. والحقيقة هي أنه ليست كل الوظائف موجودة بشكل مباشر في Arduino IDE ، تتوفر بعض الوظائف في الملفات الموجودة في الدليل
...\Documents\Arduino\hardware\espressif\esp32\cores\esp32
في هذه الحالة ، نحن مهتمون بالملف للعمل مع PWM و LEDs ، والذي نربطه بالتعليمات التالية:
#include "esp32-hal-ledc.h"
بعد ذلك ، نحتاج إلى تعيين رقم القناة (0) ، وتردد PWM (على سبيل المثال ، 50 هرتز) والدقة (8 بت).
ledcSetup(0, 50, 8);
يمكن تعيين أرقام القنوات في النطاق من 0 إلى 15 ، والدقة من 1 إلى 16 بت. إذا حددت دقة 8 بت ، فسيكون نطاق البيانات الذي يتحكم في PWM في النطاق من 0 إلى 255.
بعد ذلك ، نحتاج إلى ربط قناتنا (0) ببعض دبوس GPIO ، في هذه الحالة ، دبوس 22:
ledcAttachPin(22, 0);
ويجب ألا تنسى تكوين دبوس 22 للإخراج بالطريقة المعتادة.
pinMode(22, OUTPUT);
هذا كل شيء ، الآن يمكننا التحكم ، على سبيل المثال ، في سطوع LED ، مشيرًا فقط إلى رقم القناة وقيمة PWM (السطوع) من النطاق من 0 إلى 255.
ledcWrite(0, 50);
أمثلة رمز ESP32 أخرى
توزيع Arduino Mega Server ، الرابط الذي سأعطيه في نهاية المقالة ، باستثناء نظام يعمل بكامل طاقته ، عبارة عن مجموعة شاملة من التعليمات البرمجية المنظمة التي تم اختبارها والتحقق منها للعمل على وحدة ESP32. يمكنك استخدامه كبرنامج تعليمي لإدخال موضوع البرمجة تحت ESP32.
استقرار العمل
أكد خادم Arduino Mega Server لـ ESP8266 وقت التشغيل لعدة أشهر ويظهر عملية مستقرة تمامًا وليس لدي أي سبب للاعتقاد بأن وحدة ESP32 قد تواجه أي مشاكل في الاستقرار. على الأقل طوال الوقت الذي قمت فيه بإنشاء توزيع AMS لـ ESP32 ، لم ألاحظ فشلًا واحدًا أو إعادة تشغيل غير مصرح بها للوحدة النمطية. كل شيء يعمل بشكل واضح للغاية ويمكن التنبؤ به.
خادم اردوينو ميجا ل ESP32
هذا ممثل آخر لنظام AMS البيئي ، والذي يتضمن وحدات التحكم واللوحات Arduino Mega و Due و 101 و M0 و AMS Home و ESP8266 و Sonoff و ESP32 و OLIMEX ESP32-EVB ، إلخ. بفضل المعالج القوي وتشغيل الشبكة السريع لوحدة ESP32 ، تحتوي واجهة Arduino Mega Server على وفرة من الرسومات والنصوص ، وهذا لا يؤثر على سرعته على الإطلاق - يتم تحميل الصفحة على الفور تقريبًا.

كل شيء يعمل بشكل مستقر ويمكن التنبؤ به ، ولم يتم الكشف عن أي أعطال أو سلوك غير مناسب للنظام أو الوحدة النمطية. فيما يلي سجل تنزيل AMS ، الذي يمكنك من خلاله معرفة بعض التفاصيل حول النظام.

تتراوح درجة حرارة الوحدة ، المقاسة بواسطة مستشعر درجة الحرارة المدمج ، من 50 درجة مئوية عند بدء التشغيل إلى 55 درجة أثناء التشغيل. أثناء التشغيل ، يبلغ الاستهلاك الحالي للوحدة حوالي 130 مللي أمبير.
الآفاق
لست بحاجة إلى أن تكون خبيرًا خاصًا لتوقع أنه الآن ، مثل الفطر بعد المطر ، ستبدأ الألواح على ESP32 بتنسيقات مختلفة وبوظائف مختلفة في الظهور. فيما يلي واحدة من أولى علامات OLIMEX
ESP32-EVB ، وهي لوحة مثيرة للاهتمام للغاية سيتم إصدار مجموعة توزيع متخصصة Arduino Mega Server لها في المستقبل القريب.

الخلاصة
هذا ، في الواقع ، كل ما يمكنني قوله عن وحدة ESP32 الجديدة وعملها مع Arduino. يترك انطباعات إيجابية للغاية ، على الأقل كان من الممتع والممتع لي أن أعمل معه. إن عدم وجود مكتبات لدعم أجهزة الاستشعار والأجهزة الطرفية يفسد الصورة قليلاً ، لكن هذه ظاهرة مؤقتة وقريبًا سيكون كل شيء على ما يرام مع ذلك.
يمكنك تنزيل مجموعة توزيع Arduino Mega Server لـ ESP32 على صفحة
التنزيل الخاصة بالموقع الرسمي ، وستظهر قريبًا الوثائق ذات الصلة ، ويمكنك الآن استخدام الإرشادات الموجزة من ملف readme.txt الموجود في مجموعة التوزيع.