ESP32 und Arduino

Bild

Was passierte, war, worauf alle so lange warteten und worüber sie so viel sprachen - die neuen ESP32-Module wurden weit verbreitet und gingen an die Leute. Heute werden wir über diese Module aus der Sicht eines unprofessionellen Benutzers sprechen, der es gewohnt ist, mit Arduino zu arbeiten und kleine Projekte für die Hausautomation oder einfach nur zum Spaß und zum Selbststudium zu erstellen.

Funktioniert es überhaupt? Was gibt es mit der Unterstützung dieser Module in der Arduino IDE? Lohnt es sich, mehr zu zahlen, oder ist es besser, sich auf den bereits bekannten ESP8266 zu beschränken? Wir werden versuchen, all diese Fragen gemeinsam zu beantworten, und am Ende des Artikels werde ich einen Link zur tatsächlichen Verkörperung der Arbeit von ESP32 mit Arduino geben - einer Distribution der kostenlosen Version von Arduino Mega Server für die ESP32-Plattform.

Technische Daten


Ich werde hier nicht im Detail auf die ESP32-Spezifikationen eingehen. Sie können sie leicht im Internet finden: Jeder Prüfer sieht es als seine Pflicht an, zu Beginn der ESP32-Prüfung ein Datenblatt mitzubringen. Ich kann nur sagen, dass sie beeindruckend sind. Wenn Sie die Angelegenheit ernsthaft und nachdenklich angehen, können Sie mehr als ein Jahr damit verbringen, alle Funktionen des Moduls zu studieren und damit zu experimentieren.

Überlassen wir dies den Fachleuten (oder denen, die sich selbst als solche betrachten) und konzentrieren uns auf die praktische Seite des Problems, die für den bloßen Sterblichen verständlich und zugänglich ist.

Ausgabepreis


Beginnen wir mit dem Preis. Derzeit kostet das ESP32-Modul in chinesischen Online-Shops 350 Rubel und 500 in der Version des Boards mit Kabelbaum und USB-Schnittstelle. Dies entspricht 100 bzw. 160 Rubel für das ESP8266-Modul. Wie Sie sehen können, beträgt der Unterschied mehr als das Dreifache, obwohl die absoluten Werte gering sind. Jeder kann es sich auf Wunsch leisten, 350 bis 500 Rubel für einen Mikrocontroller auszugeben. Zum Vergleich: Der Arduino Mega 2560 im selben China kostet 600 Rubel und in Russland etwa 1000 (zuzüglich der Kosten für Ethernet Shield).

Es bleibt nur herauszufinden, ob es sich lohnt, dreimal mehr als für den ESP8266 zu zahlen und was wir dafür bekommen werden. (Mit Blick auf die Zukunft werde ich sagen, dass es sich meiner Meinung nach definitiv lohnt.)

Unterstützung in Arduino IDE


Um etwas mit dem Modul zu tun, müssen Sie es zuerst in der Arduino IDE unterstützen. Derzeit ist die Unterstützung für ESP32 in der Arduino IDE am Anfang, aber recht anständig und funktionsfähig. Diejenigen, die Angst haben, hier auf unüberwindbare Schwierigkeiten zu stoßen, können sich keine Sorgen machen - die Grundfunktionen funktionieren einwandfrei und Sie werden höchstwahrscheinlich keinen Unterschied zur Arbeit mit anderen Controllern bemerken.

Bei Gerätetreibern ist es etwas schlimmer, aber dies ist sicherlich ein vorübergehendes Phänomen. Das Modul ist so beliebt, dass in naher Zukunft unweigerlich Unterstützung für Peripheriegeräte verfügbar sein wird.

Hinzufügen von ESP32-Unterstützung zur Arduino IDE


Nun einige praktische Informationen zur Installation der ESP32-Unterstützung in der Arduino IDE. Das Internet ist voll von Anweisungen zu diesem Thema, die Sie auch in Hülle und Fülle finden können. Ich stelle nur fest, dass alle Anweisungen in "alt" unterteilt sind, wo Python erwähnt wird, und "neu", wo GIT erwähnt wird. Natürlich müssen Sie sich von neuen leiten lassen.

Von den vielen Anweisungen kann die beste (seltsamerweise) die offizielle Anweisung des Herstellers des Moduls genannt werden.

github.com/espressif/arduino-esp32

Was ich empfehlen zu verwenden. Die einzige Einschränkung: GIT ist optional. Sie können das Distributionspaket einfach herunterladen und in das gewünschte Verzeichnis entpacken.

Hinweis Alle folgenden Punkte gelten für die Installation unter Windows 7 64-Bit, da ich alle Experimente damit durchgeführt habe. Unter anderen Betriebssystemen können die Pfade von den angegebenen abweichen.

Die Verteilungsdateien müssen sich im Ordner befinden

C:\Users\User\Documents\Arduino\hardware\espressif\esp32 

Dabei ist C: der Name Ihres Windows-Laufwerks und Benutzer der Name des Benutzers im Betriebssystem (beide können von den angegebenen abweichen).

Nicht offensichtliche Installationspunkte für ESP32


Viele Benutzer beschweren sich, dass für sie nichts funktioniert und die ESP32-Unterstützung in der Arduino IDE nicht angezeigt wird. Hier ist die Sache: Da die ESP32-Treiber nur entwickelt werden, wurde die Reihenfolge der Speicherorte der Systemverzeichnisse geringfügig geändert. Der Ordner für den Speicherort der Skizzen in den Arduino IDE-Einstellungen muss ein Ordner sein

 C:\Users\User\Documents\Arduino 

(mit den gleichen Änderungen an Laufwerk und Benutzername), und die Verteilungsdateien sollten sich in diesem Ordner befinden, wie vom Hersteller empfohlen. Wenn dieser Punkt nicht berücksichtigt wird, wird die Unterstützung für ESP32 in der Arduino IDE nicht angezeigt und es funktioniert nichts.

Arduino IDE-Versionen


Sie hören oft, dass die ESP32-Unterstützung nur in den neuesten Versionen der Arduino IDE verfügbar ist. Dies ist jedoch nicht der Fall. ESP32 funktioniert in früheren Versionen einwandfrei. Beispielsweise wurde die Arduino Mega Server-Distribution für ESP32 in Version 1.6.5 r2 entwickelt.

Vorteile von ESP32


Lassen Sie uns nun über die Vorteile von ESP32 gegenüber seinem Vorgänger ESP8266 sprechen. Ich werde mich nicht mit so offensichtlichen Dingen wie Prozessorleistung und RAM befassen. Ich kann nur sagen, dass Sie sich bemühen müssen, ESP32 vollständig für Heimwerker- und Hausautomationsaufgaben zu laden.

Stifte


Die Achillesferse seines Vorgängers, das ESP8266-Modul, war (und ist) eine äußerst kleine Anzahl von Schlussfolgerungen. Nach der Arbeit mit Controllern wie Arduino Mega und Arduino Due mit ihren Dutzenden von digitalen und analogen Pins ist die Arbeit mit dem ESP8266 verwirrend: Die GPIO-Anzahl ist buchstäblich eins, was die Verwendung dieses Moduls in realen Projekten stark einschränkt.

Bild

ESP32 ist, wenn auch nicht vollständig, weitgehend frei von diesem Nachteil. Die Anzahl der verfügbaren Pins wurde erheblich erhöht, und es sind auch viele analoge Eingänge erschienen. 13 Schlussfolgerungen können als völlig kostenlos und zugänglich bezeichnet werden.

 GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33 

Bei Bedarf können sie mit eingeschränkter Funktionalität hinzugefügt werden und funktionieren nur bei Eingaben

 GPIO 34, 35, 36, 39 

Wenn Sie einige Funktionen opfern und in bestimmten Projekten nicht Serial, SPI oder I2C verwenden, können Sie dieser Nummer 8 weitere Pins hinzufügen

 GPIO 1, 3, 5, 18, 19, 21, 22, 23 

Nun, es ist möglich, 6 weitere Pins zu verwenden, die für den internen Flash-Speicher ausgelegt sind (z. B. wenn Sie eine externe SD-Karte anschließen).

 GPIO 6, 7, 8, 9, 10, 11 

Wie Sie sehen, gibt es keinen Vergleich mit dem ESP8266 - das neue Modul sieht in Bezug auf die Anzahl der möglichen Verbindungen gut aus und ist in realen Projekten sehr wertvoll, in denen jeder Pin teuer ist.

Arbeitsgeschwindigkeit


Ich habe bereits einen leistungsstarken Prozessor erwähnt, jetzt müssen ein paar Worte über die Geschwindigkeit des Netzwerkbetriebs gesagt werden. Ich finde es schwierig zu sagen, womit dies verbunden ist, möglicherweise mit einem leistungsstarken Prozessor, möglicherweise mit der Optimierung des Netzwerkstapels, aber das ESP32-Modul unter der Kontrolle des Arduino Mega Servers zeigte eine Rekordnetzwerkleistung.

Bild

Das Laden einer Seite mit umfangreichem CSS- und JavaScript-Code und einer Fülle von Grafiken dauert nur eine kleine Sekunde - schneller als bei jedem anderen getesteten Controller, einschließlich kabelgebundener Controller mit einer W5100- und W5500-Ethernet-Schnittstelle.

In Bezug auf den Arduino Mega Server werden dadurch alle Einschränkungen hinsichtlich der Verwendung von Grafiken und JavaScript-Bibliotheken in Größe und Anzahl aufgehoben.

Weitere Vorteile


ESP32 ist ein extrem High-Tech-Gerät. Nur eine trockene Auflistung der verfügbaren Funktionen kann mehr als eine Seite umfassen, und die Auflistung der Vorteile und Funktionen mit Kommentaren nimmt einen ganzen Band in Anspruch. Daher werde ich mich darauf beschränken, um den Artikel nicht zu überladen und einige Beispiele für die Arbeit mit ESP32-Code in der Arduino-Umgebung zu nennen.

Codebeispiele


Nichtflüchtiger Speicher


Dies ist, was wir das EEPROM für das Arduino Mega genannt haben. ESP32 hat diesen Speicher nicht als solchen, aber dieses Modul hat sein Analog und die entsprechende Bibliothek für die Arbeit damit. Dieser Speicher wird als "NVS" (Non-Volatile Storage) bezeichnet.

Für uns gibt es jedoch keinen Unterschied - Sie können die Werte auf die gleiche Weise speichern und nach dem Aus- und Einschalten des Controllers lesen.

Anwendungsbeispiel. Wir verbinden die Bibliothek:

 #include <Preferences.h> 

Erstellen Sie ein Prefs-Objekt

 Preferences prefs; 

Wir initialisieren das Repository mit dem Bezeichner "nvs":

 prefs.begin("nvs", false); 

false bezieht sich auf die Wahl des Lese- / Schreibmodus, in diesem Fall sowohl des Lese- als auch des Schreibmodus. Wir speichern das Byte unter dem Namen "addr":

 prefs.putUChar("addr", 65); 

Wir lesen das gespeicherte Byte:

 byte b = prefs.getUChar("addr", 0); 

Auf die gleiche Weise können Sie die Werte anderer Datentypen speichern und lesen. Löschen Sie nun den Speicher.

 prefs.remove("nvs"); 

Wenn Sie schauen, ist es noch einfacher als mit nichtflüchtigem Standard-EEPROM-Speicher auf Arduino-Controllern zu arbeiten.

AnalogWrite ()


Eine weitere Neuerung, die einen Anfänger verwirren kann, ist, dass die bekannte Funktion AnalogWrite () in ESP32 fehlt. Anfangs ist dies sehr ungewöhnlich, aber tatsächlich wird diese Funktion nur durch ihr funktionaleres Gegenstück ersetzt.

Betrachten Sie ein Beispiel. Beginnen wir mit dem Verbinden der entsprechenden Bibliothek, obwohl dies nicht im vollen Sinne des Wortes als Bibliothek bezeichnet werden kann, sondern eine spezialisierte Datei mit einer Beschreibung der erforderlichen Funktionen. Tatsache ist, dass nicht alle Funktionen direkt in der Arduino IDE vorhanden sind. Einige Funktionen sind in Dateien verfügbar, die sich im Verzeichnis befinden

 ...\Documents\Arduino\hardware\espressif\esp32\cores\esp32 

In diesem Fall interessiert uns die Datei für die Arbeit mit PWM und LEDs, die wir mit der folgenden Anweisung verbinden:

 #include "esp32-hal-ledc.h" 

Als nächstes müssen wir die Kanalnummer (0), die PWM-Frequenz (zum Beispiel 50 Hz) und die Auflösung (8 Bit) einstellen.

 ledcSetup(0, 50, 8); 

Kanalnummern können im Bereich von 0 bis 15 und die Auflösung von 1 bis 16 Bit eingestellt werden. Wenn Sie eine Auflösung von 8 Bit auswählen, liegt der Datenbereich, der die PWM steuert, im Bereich von 0 bis 255.

Als nächstes müssen wir unseren Kanal (0) an einen GPIO-Pin binden, in diesem Fall an Pin 22:

 ledcAttachPin(22, 0); 

Und Sie dürfen nicht vergessen, den 22. Pin wie gewohnt am Ausgang zu konfigurieren.

 pinMode(22, OUTPUT); 

Jetzt können wir zum Beispiel die Helligkeit der LED steuern und nur die Kanalnummer und den PWM-Wert (Helligkeit) im Bereich von 0 bis 255 anzeigen.

 ledcWrite(0, 50); 

Andere ESP32-Codebeispiele


Die Arduino Mega Server-Distribution, auf die ich am Ende des Artikels mit Ausnahme eines voll funktionsfähigen Systems verweisen werde, ist eine umfangreiche Sammlung von strukturiertem Code, der für den Betrieb auf dem ESP32-Modul getestet und verifiziert wurde. Sie können es als Lernprogramm verwenden, um das Thema Programmierung unter ESP32 aufzurufen.

Arbeitsstabilität


Arduino Mega Server für ESP8266 hat eine Betriebszeit von mehreren Monaten bestätigt und zeigt einen absolut stabilen Betrieb. Ich habe keinen Grund zu der Annahme, dass das ESP32-Modul Stabilitätsprobleme aufweist. Zumindest während der gesamten Zeit, in der ich die AMS-Distribution für ESP32 erstellt habe, habe ich keinen einzigen Fehler oder nicht autorisierten Neustart des Moduls festgestellt. Alles funktioniert sehr klar und vorhersehbar.

Arduino Mega Server für ESP32


Dies ist ein weiterer Vertreter des AMS-Ökosystems, zu dem Controller und Karten Arduino Mega, Due, 101, M0, AMS Home, ESP8266, Sonoff, ESP32, OLIMEX ESP32-EVB usw. gehören. Dank des leistungsstarken Prozessors und des schnellen Netzwerkbetriebs des ESP32-Moduls Die Arduino Mega Server-Oberfläche enthält eine Fülle von Grafiken und Skripten. Dies wirkt sich überhaupt nicht auf die Geschwindigkeit aus. Die Seite wird fast sofort geladen.

Bild

Alles funktioniert stabil und vorhersehbar, es wurden keine Fehler oder unangemessenes Verhalten des Systems oder Moduls festgestellt. Unten finden Sie das AMS-Download-Protokoll, in dem Sie einige Details zum System finden.

Bild

Die vom eingebauten Temperatursensor gemessene Temperatur des Moduls reicht von 50 Grad Celsius beim Start bis zu 55 Grad während des Betriebs. Während des Betriebs beträgt die Stromaufnahme des Moduls ca. 130 mA.

Perspektiven


Sie müssen kein spezieller Experte sein, um vorherzusagen, dass jetzt, wie Pilze nach dem Regen, Boards auf ESP32 in verschiedenen Formaten und mit verschiedenen Funktionen erscheinen. Hier ist eines der ersten Anzeichen von OLIMEX ESP32-EVB , einem sehr interessanten Board, für das in naher Zukunft ein spezielles Distributionskit Arduino Mega Server veröffentlicht wird.

Bild

Fazit


Das ist alles, was ich über das neue ESP32-Modul und seine Arbeit mit Arduino sagen kann. Er hinterlässt äußerst positive Eindrücke, zumindest war es für mich sehr angenehm und interessant, mit ihm zu arbeiten. Das Fehlen von Bibliotheken zur Unterstützung von Sensoren und Peripheriegeräten beeinträchtigt das Bild ein wenig, aber dies ist ein vorübergehendes Phänomen, und bald wird alles in Ordnung sein.

Sie können das Arduino Mega Server-Distributionskit für ESP32 auf der Download- Seite der offiziellen Website herunterladen. In Kürze wird dort die entsprechende Dokumentation angezeigt. Sie können vorerst die Kurzanweisungen aus der Datei readme.txt im Distributionskit verwenden.

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


All Articles