MIRO ist eine offene Indoor-Roboterplattform. Teil 3 - Softwarekomponente: ESP8266

Bild

Wir beginnen mit der Zerlegung der Softwarekomponente der MIRO-Plattform. Mal sehen, wie man ARDUINO UNO mit ESP8266 für Firmware und drahtlose Kommunikation „kocht“.

Inhaltsverzeichnis: Teil 1 , Teil 2 , Teil 3 , Teil 4 , Teil 5 .

Ich wollte nicht, dass wir etwas für den ESP8266 entwickeln. Ich war mir sicher, dass es lange Zeit eine schlüsselfertige Lösung mit der Funktionalität gab, die ich brauchte. Und für MIRO war diese Funktionalität ganz einfach:

  1. Die Software muss über eine Webschnittstelle für die Netzwerkkonfiguration verfügen.
  2. Die Software sollte die drahtlose Firmware ATMEGA328 implementieren.
  3. Die Software muss über WiFi-UART-Bridge-Funktionen für das drahtlose Debuggen und Verwalten verfügen.

Bild Wahrscheinlich gibt es für die meisten dieser Funktionen den bekannten ESP-LINK . Und er ist wirklich mächtig. Wir haben es in mehreren anderen Projekten als Brücke zwischen verschiedenen Schnittstellen verwendet - sehr praktisch. Aber vor ein paar Monaten, als wir uns zusammensetzten, um uns eingehend mit diesem Thema zu befassen, stellte sich heraus, dass er ARDUINO UNO nicht blitzte. Überall schreiben sie, dass sie blinken, aber er blitzte nicht. Und in diesem Moment verstand ich nicht einmal tief, warum und was das Standardverfahren ist. Meine Kameraden und ich haben einfach einen virtuellen COM-Port auf dem Host unter einer bestimmten ESP-IP-Adresse konfiguriert, die Rücksetzzeile in ESP-LINK selbst angegeben und versucht, sie zu flashen. ATMEGA328 wurde erfolgreich zurückgesetzt, aber die Firmware wurde nicht überflutet. Darüber hinaus bietet das Netzwerk eine Reihe von Lektionen zum Organisieren solcher Firmware mit ESP-LINK. Aber wenn Sie ihre Ausgabe lesen, dann haben sie immer etwas da, das jemand nicht blinkt.

Enttäuscht suchte er nach Alternativen. Und ich fand es als Gabelung des ursprünglichen Arduino WiFi auf GitHub von einem Entwickler mit dem Spitznamen jandrassy.
Im Februar dieses Jahres gab es in README eine monströse Anweisung, alles von der Firmware bis zur Entwicklungsumgebung zu konfigurieren, aber jetzt wurde es stark vereinfacht. Trotzdem ist die Einrichtung der Umgebung noch ein wenig aufwendig. Die ARDUINO-Firmware ist jedoch perfekt. Es wird sowohl unter Windows als auch unter Linux überprüft (unter MacOS haben wir anscheinend noch nie etwas getestet - niemand in der unmittelbaren Umgebung des Projekts hat es).

Die Reihenfolge der Vorbereitung der Umgebung dort ist wie folgt:

  1. Laden Sie die dfu-Bibliothek von hier herunter und installieren Sie sie.
  2. Standardmäßig wird in dieser Bibliothek (in der Datei esp8266-serial-arduinouno-hacked.cpp) deklariert, dass die Reset-Leitung des ATMEGA328-Chips mit der GPIO5 ESP8266-Leitung verbunden ist. Für MIRO müssen Sie hier Änderungen vornehmen - wechseln Sie zu GPIO2.

Was genau zu ändern
Es war:

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; } 

Es wurde:

 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; } 


Der Autor von jandrassy gibt an, dass seine Implementierung nur mit dieser Konfiguration des Zielchips und des Bootloaders (ATMEGA328P mit Optiboot) funktioniert.

Ich bin sicher, dass es noch Lösungen gibt und möglicherweise sogar noch bessere. Wenn jemand die Arbeitsmöglichkeiten genau kennt, lass es mich wissen. Weil wir trotz der großen Menge an vorgefertigtem Code neben ESP-LINK auch 2 oder 3 Projekte getestet haben - sie haben nicht funktioniert. In einigen Fällen wurde die Firmware einmal durchlaufen, in einigen Fällen funktionierte sie überhaupt nicht.

Möglicherweise ist einer der Hauptvorteile der gefundenen Lösung die relativ kleine Codebasis des Projekts und die Tatsache, dass Firmware für Arduino Core entwickelt wird.

Was nicht im Jandrassy-Projekt enthalten war, war die drahtlose WiFi-UART-Brücke. Bereits in der ursprünglichen Arduino.org WiFi Link-Firmware wurde eine Seite mit einem Terminalfenster geschnitten, sodass über den Browser mit dem UART-Chip ATMEGA328 gearbeitet werden kann. Genau so kann es in ESP-LINK gemacht werden. Und wenn wir uns den ersten Veröffentlichungen über Arduino UNO WiFi zuwenden (zum Beispiel hier ), ist klar, dass in den ersten Versionen der Firmware sowohl das Fenster als auch der entsprechende Menüpunkt („WiFi Console“) vorhanden sind. Und selbst in Release 1.0.0 im Archiv liegt die Datei console.js (sie hat gerade diese Seite implementiert), aber tatsächlich ist sie in keiner Weise am Server beteiligt (wir haben sie überprüft). Warum und warum sie es ausgesägt haben, ist nicht klar.

Ich musste etwas beenden. Jetzt gibt es einen anderen Server in der Firmware - TELNET am offensichtlichen Port 23, mit dem viele Terminalprogramme problemlos funktionieren.

Im Moment musste ich jedoch den Teil, der für die drahtlose Firmware des ESP selbst verantwortlich ist, aus dem Jandrassy-Code entfernen, damit alles funktioniert. In den anfänglichen Anforderungen hatte ich diese Funktionalität nicht, also okay. Wenn mir die Leser in den Kommentaren jedoch bejahend sagen können, ob es in einer Firmware möglich ist, die Möglichkeit einer drahtlosen Firmware sowohl des ESP8266 selbst als auch der „externen“ MCU (in diesem Fall ATMEGA328) zu implementieren, werde ich darüber nachdenken, diese Funktion an die ESP-Firmware zurückzugeben. Bereits bei der Vorbereitung des Artikels habe ich indirekt eine Bestätigung dafür in diesem Entwurf der Kanadier gesehen. Aber nicht überprüft.

In der Zwischenzeit wird ESP ausschließlich über Kabel geflasht, aber ARDUINO kann sowohl drahtlose Firmware als auch TELNET über eine WiFi-UART-Brücke kommunizieren. Und es ist sehr praktisch! Mein Ziel ist erreicht.

Nun, im Projekt gibt es wie im Original eine WEB-Oberfläche für Einstellungen (Bilder sind anklickbar).





Wir haben die CSS-Dateien der WEB-Interface-Stile für unser Projekt geändert und eine kleine „Krücke“ eingeführt - jetzt befindet sich ESP immer im AP + STA-Modus. Diese Krücke wurde hergestellt, um die Möglichkeit auszuschließen, das ESP in den Modus „Nur STA“ zu schalten. Bei der Übertragung des Roboters in ein anderes Subnetz verliert der Benutzer die Möglichkeit, den Roboter in einem neuen Netzwerk zu konfigurieren. Der Roboter kann keine Verbindung zum neuen Netzwerk herstellen, es besteht jedoch auch kein externer Zugriff - Ich muss das ESP neu starten. Im AP + STA-Modus kann der Benutzer jederzeit eine Verbindung zum Zugangspunkt des Roboters herstellen und die Verbindung zum neuen WiFi-Netzwerk konfigurieren.

Informationen zum Flashen von ESP8266 mit diesem "Monster". Im Allgemeinen lautet die Reihenfolge für ein beliebiges Modul auf einem ESP8266-Chip wie folgt:

  1. Schalten Sie die Karte ein (verbinden Sie sich mit USB);
  2. Stellen Sie die Kartenparameter wie in der Abbildung ein.

    Bild

    Es ist sehr wichtig, "v1.4 Höhere Bandbreite" auszuwählen. Wenn Sie "v2" auswählen, ist es nach der Firmware nicht möglich, eine Verbindung zur Karte über WLAN herzustellen (der Zugangspunkt ist sichtbar, aber der Verbindungsvorgang funktioniert nicht - wer weiß, womit dies verbunden ist - schreiben Sie in die Kommentare).
  3. Wählen Sie einen Port (im Beispiel im Screenshot - COM3).
  4. Führen Sie die Firmware aus. Während des Ladevorgangs der Karte wird zuerst der Speicher des Mikrocontrollers und dann die Firmware gelöscht.
  5. Nach Abschluss des Firmware-Vorgangs müssen Sie die Karte mit der Reset-Taste zurücksetzen.
  6. Wählen Sie im Menü Arduino IDE ESP8266 Sketch Data Upload aus und laden Sie SPIFFS herunter.
  7. Setzen Sie die Karte zurück.

Bei der Konfiguration mit unserer „modifizierten Karte“ UNO + WiFi (siehe erster Teil ) ist alles aufgrund der Hardwarefunktionen der Karte etwas komplizierter, was aufgrund der großen Anzahl von Fehlern im Dokument mit dem Schaltplan schwierig zu untersuchen ist. Wir haben detailliertere Anweisungen in die Datei „MIRO ESP Firmware Upload Manual“ des Repositorys geschrieben. Wenn Sie streng danach handeln, wird die Firmware 100 von 100 übergeben.

Wir kommen zu einem sehr interessanten Teil - der MIRO-Softwarekomponente, die ATMEGA328 zugewiesen ist. Es gibt auch mehr Arbeit und Raum für die Diskussion verschiedener Lösungen.

Danke an alle!

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


All Articles