MIRO عبارة عن منصة روبوت داخلية مفتوحة. الجزء 3 - مكون البرنامج: ESP8266

صورة

نبدأ في تفكيك مكون البرنامج في منصة MIRO. دعونا نرى كيفية "طهي" ARDUINO UNO باستخدام ESP8266 للبرامج الثابتة والاتصالات اللاسلكية.

جدول المحتويات: الجزء 1 ، الجزء 2 ، الجزء 3 ، الجزء 4 ، الجزء 5 .

لا أريدنا أن نطور أي شيء ل ESP8266. كنت متأكدًا من وجود حل جاهز لفترة طويلة مع الوظيفة التي احتاجها. وبالنسبة إلى MIRO ، كانت هذه الوظيفة بسيطة جدًا:

  1. يجب أن يكون للبرنامج واجهة ويب لتكوين الشبكة ؛
  2. يجب أن يقوم البرنامج بتنفيذ البرامج الثابتة اللاسلكية ATMEGA328 ؛
  3. يجب أن يشتمل البرنامج على وظيفة جسر WiFi-UART لتصحيح الأخطاء اللاسلكية وإدارتها.

صورة ربما ، بالنسبة لمعظم هذه الوظائف ، هناك ESP-LINK المعروف. وهو قوي حقًا. استخدمناها في العديد من المشاريع الأخرى كجسر بين واجهات مختلفة - مريحة للغاية. لكن قبل بضعة أشهر ، عندما جلسنا للتعامل عن كثب مع هذه المسألة ، اتضح أنه لم يلمع ARDUINO UNO. في كل مكان يكتبون أنهم تومض ، لكنه لم يلمع. وفي تلك اللحظة لم أفهم تمامًا لماذا وما هو الإجراء القياسي. لقد قمت أنا وأصدقائي بإعداد منفذ COM ظاهري على المضيف على عنوان IP خاص بـ ESP ، في ESP-LINK نفسه أشار إلى خط إعادة التعيين وحاول وميضه. تمت إعادة تعيين ATMEGA328 بنجاح ، لكن البرامج الثابتة لم تغمرها المياه. علاوة على ذلك ، فإن الشبكة لديها مجموعة من الدروس حول تنظيم مثل هذه البرامج الثابتة مع ESP-LINK. ولكن إذا قرأت مشكلتهم ، فسيكون لديهم دائمًا شيء لا يوميضه أحد.

بخيبة أمل ، بدأ في البحث عن بدائل. ووجدتها كشوكة لشبكة Arduino WiFi الأصلية على GitHub من مطور يحمل الاسم المستعار jandrassy.
مرة أخرى في شهر فبراير من ذلك العام ، كانت هناك تعليمات وحشية في README لتكوين كل شيء من البرامج الثابتة إلى بيئة التطوير ، ولكن الآن تم تبسيطها إلى حد كبير. ومع ذلك ، لا يزال الأمر يتطلب بعض الجهد لإنشاء البيئة. ومع ذلك ، فإن البرامج الثابتة ARDUINO مثالية. يتم فحصه من نظامي التشغيل Windows و Linux (يبدو أننا لم نختبر أي شيء على الإطلاق في نظام التشغيل MacOS - لا يوجد أحد في البيئة المباشرة للمشروع لديه).

ترتيب إعداد البيئة هناك كما يلي:

  1. قم بتنزيل وتثبيت مكتبة dfu من هنا ؛
  2. بشكل افتراضي ، في هذه المكتبة (في ملف esp8266-serial-arduinouno-hacked.cpp) ، تم إعلان أن خط إعادة تعيين رقاقة ATMEGA328 متصل بخط GPIO5 ESP8266. بالنسبة إلى MIRO ، يلزمك إجراء تغييرات هنا - التغيير إلى GPIO2.

ما بالضبط للتغيير
كان:

esp8266_serial_arduinouno_hacked_target_reset(struct dfu_interface *iface) { pinMode(5, OUTPUT); digitalWrite(5, 0); delay(1); digitalWrite(5, 1); delay(200); return 0; } 

أصبح:

 esp8266_serial_arduinouno_hacked_target_reset(struct dfu_interface *iface) { pinMode(2, OUTPUT); digitalWrite(2, 0); delay(1); digitalWrite(2, 1); delay(200); return 0; } 


يشير مؤلف jandrassy إلى أن تنفيذه يعمل فقط مع هذا التكوين للرقاقة المستهدفة ومحمل الإقلاع (ATMEGA328P مع Optiboot).

أنا متأكد من أنه لا تزال هناك حلول وربما أفضل منها. إذا كان هناك من يعرف بالتأكيد خيارات العمل ، فأخبرني بذلك. لأنه على الرغم من الكم الكبير من الشفرة الجاهزة ، بالإضافة إلى ESP-LINK ، قمنا أيضًا باختبار مشروعين أو 3 مشاريع - لم تنجح. في بعض الحالات ، مرت البرامج الثابتة مرة واحدة ، وفي بعض الحالات لم تنجح على الإطلاق.

ربما واحدة من المزايا الرئيسية للحل وجدت هي قاعدة رمز صغيرة نسبيا للمشروع وحقيقة أنه تم تطوير البرامج الثابتة ل Arduino Core.

ما لم يكن في مشروع jandrassy هو جسر WiFi-UART اللاسلكي. بالفعل في البرامج الثابتة الأصلية لـ Arduino.org WiFi Link ، تم قطع صفحة بها نافذة طرفية ، مما يتيح للمتصفح العمل مع شريحة UART ATMEGA328. تماما مثل هذا يمكن القيام به في ESP-LINK. وإذا انتقلنا إلى المنشورات الأولى حول Arduino UNO WiFi (على سبيل المثال ، هنا ) ، فمن الواضح أنه في الإصدارات الأولى من البرنامج الثابت ، يكون كل من النافذة وبند القائمة المقابل ("WiFi Console"). وحتى في الإصدار 1.0.0 في الأرشيف ، يكمن ملف console.js (الذي تم تنفيذه للتو في هذه الصفحة) ، ولكنه في الواقع لا يشارك في الخادم بأي شكل من الأشكال (قمنا بفحصه). لماذا ولماذا نشروها غير واضح.

اضطررت لإنهاء شيء ما. يوجد الآن خادم آخر في البرنامج الثابت - TELNET على المنفذ الواضح 23 ، والذي يعمل به العديد من البرامج الطرفية دون مشاكل.

ومع ذلك ، في الوقت الحالي ، ولكي يعمل كل شيء ، اضطررت إلى إزالة الجزء المسؤول عن البرامج الثابتة اللاسلكية لـ ESP من كود jandrassy. في المتطلبات الأولية ، لم يكن لدي هذه الوظيفة ، حسناً. ومع ذلك ، إذا كان بإمكان القراء في التعليقات أن يخبروني بإيجابية ما إذا كان من الممكن في أحد البرامج الثابتة تنفيذ إمكانية وجود برنامج لاسلكي لاسلكي لكل من ESP8266 نفسه و MCU "خارجي" (في هذه الحالة ، ATMEGA328) ، فسأفكر في إعادة هذه الميزة إلى البرامج الثابتة ESP. بالفعل في إعداد المقال ، بشكل غير مباشر ، رأيت تأكيدًا لهذا في مشروع الكنديين هذا. لكن لم تحقق.

في غضون ذلك ، يتم وميض ESP بشكل حصري عبر الأسلاك ، لكن ARDUINO لديه القدرة على كل من البرامج الثابتة اللاسلكية واتصالات TELNET عبر جسر WiFi-UART. وأنها مريحة جدا! يتحقق هدفي.

حسنًا ، في المشروع ، كما في المشروع الأصلي ، هناك واجهة ويب للإعدادات (الصور قابلة للنقر).





قمنا بتغيير ملفات CSS لأنماط واجهة WEB لمشروعنا وقدمنا ​​"عكاز" صغير - الآن ESP في وضع AP + STA. تم إنشاء هذا العكاز لاستبعاد إمكانية تحويل ESP إلى وضع "STA فقط" ، حيث يفقد المستخدم القدرة على تكوين الروبوت عند نقله في شبكة جديدة - حيث لا يستطيع الروبوت الاتصال بالشبكة الجديدة ، ولكن لا يوجد وصول خارجي إما - لا بد لي من تعيد تحميل ملفات ESP. في وضع AP + STA ، يمكن للمستخدم دائمًا الاتصال بنقطة الوصول الخاصة بالروبوت وتكوين الاتصال بشبكة WiFi الجديدة.

حول كيفية فلاش ESP8266 مع هذا "الوحش". بشكل عام ، بالنسبة للوحدة النمطية التعسفية على شريحة ESP8266 ، يكون الترتيب كما يلي:

  1. قم بتشغيل اللوحة (الاتصال بـ USB) ؛
  2. تعيين المعلمات متنها كما في الشكل.

    صورة

    من المهم جدًا تحديد "v1.4 High Bandwidth" - إذا قمت بتحديد "v2" ، فبعد البرامج الثابتة ، لا يمكن الاتصال بلوحة التحكم عن طريق WiFi (نقطة الوصول مرئية ، لكن إجراء الاتصال لا يعمل - من يعرف ما يرتبط به هذا - اكتب في التعليقات).
  3. حدد منفذًا (في المثال في لقطة الشاشة - COM3).
  4. تشغيل البرامج الثابتة. أثناء إجراء تحميل اللوحة ، يتم مسح ذاكرة المتحكم أولاً ، ثم يتم محو البرامج الثابتة.
  5. بعد الانتهاء من إجراء البرنامج الثابت ، تحتاج إلى إعادة تعيين اللوحة باستخدام زر إعادة الضبط.
  6. حدد Arduino IDE ESP8266 Sketch Data Upload من القائمة وقم بتنزيل SPIFFS.
  7. إعادة تعيين المجلس.

بالنسبة للتهيئة باستخدام "اللوحة المعدلة" UNO + WiFi (انظر الجزء الأول ) ، يصبح كل شيء أكثر تعقيدًا قليلاً بسبب ميزات الأجهزة الموجودة في اللوحة ، والتي يصعب التحقيق فيها بشكل مريح نظرًا لوجود عدد كبير من الأخطاء في المستند باستخدام مخطط الدائرة. لقد كتبنا إرشادات أكثر تفصيلاً في ملف "دليل تحميل البرامج الثابتة MIRO ESP Firmware" الخاص بالمستودع - إذا كنت تتصرف بصرامة ، فإن البرنامج الثابت يمرر 100 من 100.

نأتي إلى جزء مثير للاهتمام للغاية - مكون برنامج MIRO المخصص لـ ATMEGA328. هناك المزيد من العمل والمساحة لمناقشة الحلول المختلفة ، أيضًا.

شكرا لكم جميعا!

Source: https://habr.com/ru/post/ar473368/


All Articles