Last Updated on 7. Dezember 2020 by sfambach
Hier ein Board der Liligo Familie mit dem neuen ESP32-S2. Über den ESP32-S2 habe ich bereits HIER berichtet. Es ist ein USB-C Board. Der ESP32 ist direkt aufgedampft. Das Board besitzt einen Anschalter und einen Lipoladeregler mit JST Anschluss. Für den JST Anschluss wurde ein Anschlusskabel mitgeliefert. Die Antenne ist nicht aufgedampft sonder besteht aus einem kleinen Metallgestell. Auch kann eine Externe Antenne angeschlossen werden. Es besitzt drei Taster und Mäuseklavier und einen SD-Karten Slot. Mehr hierzu später.
Verwendet Versionen
- ESP-IDF v4.3-dev-1901-g178b122c1
- VS-Code 1.50.1
- Version: 1.50.1
- Commit: d2e414d9e4239a252d1ab117bd7067f125afd80a
- Date: 2020-10-13T15:06:15.712Z
- Electron: 9.2.1
- Chrome: 83.0.4103.122
- Node.js: 12.14.1
- V8: 8.3.110.13-electron.0
- OS: Windows_NT x64 10.0.19041
- LilyGO ESP32_S2 20-6-18 V1.01
Fakten
- Das Board selbst ähnelt den Prototypen von Espressiv ESP32-S2-Saola-1 and ESP32-S2-Kaluga-1 und benötigt einen CH340 Driver USB Treiber.
Beschreibung | Wert |
---|---|
Flash | 4MB |
PSRAM | 8MB |
SRAM | 320kB |
Wifi | 2,4 GHz 802,11 b/g/n, 802,11 n |
Arbeitsspannung | 2,7V-3,6V |
Digital I/O Pins | 22 |
Analog Input Pins | 6 (VP, VN, 32, 33, 34, 35) |
Analog Output Pins | 2 (25, 26) |
Clock Speed(Max) | 240MHz |
Flash | 4M Bytes |
LED_BUILTIN | GPIO5 |
USB | Typ C CH340C |
Akku Anschluss für 3,7V Lipo | 2Pin 1,25mm |
Abmessungen l/b/h in mm | 65,21 / 25,95/5 |
Abmessung (Gemessen) l/b/h in mm | 66,82/ 25,92 /5,77 |
Gewicht | 7g |
Funktion | Pins |
---|---|
LED | GPIO 5 |
Akku Ladestand?(zu Prüfen) | GPIO 35? (A1_7) |
Anwendungsbereiche
- IOT
- Low Power konsumption
- TOF Indor-Ortung ?!?
- Handy Tool (OTG)
Ansichten
Analyse
Board Annotation
Schön es gibt eine „Doku“ von LILYGO
Dip Switch USB/OTG stellt USB von Normal auf OTG (USB On-The-Go) um, wie überraschend ;). Als OTG Gerät kann das Board zum Beispiel direkt am Handy betrieben werden.
Ich vermute mit Hilfe von Switch zwei kann man einen externen Oszillator/Takt am GPIO32/33 anschliessen. Dieser wird auch als Schaltuhr bezeichnet und sollte mit 32.768 kHz getaktet werden. Leider habe ich hierzu keine weiteren Informationen von Lilygo gefunden, denke aber dass sie mit denen von Espressis konform gehen:
Genauer betrachtet
Der ESP32-S2 Chip von Espressif . S2 ohne Zusatz bedeutet, kein eingebautes Flash, Arbeitstemperatur zwischen -40 und +85°C und Bauform QFN57 (7×7).
Externer PSRam
- 64 mBit = 8 MB
- Baufrom SOP8-150 mil
- Maximaler Takt 133 MHz
- Arbeitstempertur -40 bis 85°C
- Spannung 3.3V
40MHz Quarz zur Taktung des ESP
Usb-C Controller CH340.
USB-C Anschluss
25Q32BVSIG Flash Speicher
- Hersteller BoyaMicro
- 25Q = Spi Falsh Quad IO
- 32B = 32M-bit = 4MB
- Versorgungsspannung 2,7 -3,6V
- SS = Bauform 8-pin SOIC 208-mil
- I = Industieller Temperaturbereich von -40 bis 85°C
- G = Grüne Verpackung Rohs konform …
Laderegler für Lipo LTH7 (TP4054)
Linearer Spannungsregler Max 6V auf 3.3V/600mA
JST 1,5 x2 Anschluss
SMD Antennenanschluss. Dieser ist im Auslieferzutstand mit der internen Antenne verbunden. Will man den Anschluss verwenden muss der Widerstand links oben auf den Punkt rechs umgelötet werden. (von vertikal zu horizontal)
Mal Angeschlossen
Mal über die Console aufs Board geschaut ob da schon etwas läuft. Boudrate ist in dem Fall 115200. Es folgt ein Teil des Outputs.
Es handelt sich um ein programm vom Hersteller. https://github.com/Xinyuan-LilyGO/LilyGo-esp32s2-base/
Programmierung
Das Board kann aktuell nur mit dem Espressif Framework programmiert werden. Unterstützung wird dies aktuelle von zwei IDEs, Eclipse und VS-Code. Unter Eclipse habe ich das Framwork nicht zum Laufen gebracht, wenns bei euch geklappt hat lasst einen Kommentar bestenfalls mit Link zur ensprechenden Anleitung da.
Die Installation von VS-Code unter Windows hat mich mehrere Tage gekostet. Diese ist unter folgenden Link zu finden.
Wenn ihr keine IDE benötigt reicht das Espressif IDF und Python aus um code auf der Konsole zu kompilieren, das Vorgehen könnt ihr der folgenden Anleitung entnehmen.
Bibliotheken
Die Espressif IDF bietet ersmal alles was man braucht um den ESP32-S2 zu betreiben. Traber für Sensoren und sonstiges muss dann noch zuzätlich eingebungden werden
Testprojekt erstellen
Es sind viele Beispielprogramme in der IDF enthalten. Ich hätte gerne ein TOF Beispiel verwendet, da es eine der Neuerungen des ESP32-S2 ist. Leider ist die Funktionalität noch nicht implementiert, es wird erst in ein paar Wochen damit gerechnet. Wenn es neue Informationen gibt werde ich dazu einen eigenen Bericht verfassen.
Mit IDF und Konsole
Vorbereitung
- Konsole öffnen (cmd.exe) hier spielt sich alles ab.
- Ins Arbeisverzeichnis wechseln, bei mir „esp“ im Benutzerverzeichnis.
- Die Beispielprogramme befinden sich unter ..\esp-idf\examples\<Kategorie>\<Projektname>
- Mit xcopy ein Beispielprogramm kopieren
- Ins Verzeichnis wechseln
Weitergehts mit dem Bauen:
Zieplattform festlegen
idf.py set-target esp32s2
Konfigurieren
idf.py menuconfig
Menuconfig ist eine textbasierte Oberfläche. Navigiert wird über die Pfeiltasten auf der Tastatur. In ein Menü oder Konfigurationpunkt kann mit Enter gesprungen werde. Heraus kommt man mit Escape. Wird im Hauptmenü Escape gedrückt, wird das Programm beendet. Wurden vorher Änderungen vorgenommen wir zum Speichern aufgefordert. (Shift+S zum speichern und (Shift + Q zum beenden). Nachfolgend die Schritte und die entsprechenden Konsolen Screenshots dazu.
- Optional, Daten für das Board anpassen
- Beispielkonfiguration anpassen wichtig ist ssid / passwort und ap passwort im Menü Component config.
- Speichern
Hauptmenü Beispiel Konfiguration Beispielkonfiguration Angepasste Beispielkonfiguration Konsolen-Ein-/Ausgabe
Bauen
idf.py build
Dies kann beim ersten Mal mehrere Minuten dauern.
Sollte alles geklappt haben kann nun das Programm auf auf den ESP geflasht werden.
Flashen
Board an den PC anschliessen und den seriellen Port bestimmen (bei mir COM30)
idf.py -p COM30 flash
Monitoren
idf.py -p COM30 monitor
Gut es passiert was, spannend wirds aber erst mit zwei oder mehr Knoten. Beim einen den Knopf gedrückt beim anderen empfangen.
Wer keinen zweiten ESP32S2 hat kann auch einen „alten“ ESP32 verwenden, neues Ziel setzen (esp32) , menuconfig, build, flash ….
Mit VS-Code
Wie eine Beispielprogramm kopiert wird habe ich im Bericht zur VS Code Insatallation näher beschrieben, deshalb hier nur die Kurzfassung.
- F1 Taste für Befehle ausführen
- ESP-IDF eingeben – es werden alle Befehle aufgelistet
- Befehl ESP-IDF: Show ESP-IDF Examples Projects wählen
Auf der linke Seite kann das Beispielprogramm ausgewählt werden. Ich wähle hier mal, wie oben, das ip_internal_network projekt aus der Sparte mesh aus.
Noch ein Zielverzeichnis wählen:
So sieht das Projekt aus:
Zielplattform auswählen
- F1 Taste
- esp-idf eingeben
- ESP-IDF: Set Espressif device target wählen
Ich wähle die ESP32-S2 Umgebung
Die Verarbeitung dauert einen kleinen moment. Jetzt soll das Projekt kofiguriert werden. Im code selbst sind Platzhalter eingebaut, wie hier die CONFIG_MESH_ROUTE_TABLE_SIZE.
Diese werden auf der Console mit menuconfig in VS-Code mit dem Konfigurationstool eingestellt.
F1 -> esp-idf eingeben -> „Launch gui configuration tool“ auswählen
(ist auch über das Zahnrad links unten erreichbar)
In den Abschnitt Example Configuration wechseln und die Angaben zur SSID, Wlan Passwort und AP Passwort machen. Danach oben rechts Speichern.
Jetzt die Sourcen bauen – Zylinder unten links.
Serielle Schnittstelle auswählen wählen
Bei mir ist es COM30.
Programm auf den ESP schreiben. Dies kann bis zu einer halben Minute dauern.
Monitoren
Hiermit ist der bereits für die IDF beschriebene Prozess für das VS-Code abgeschlossen. Auch hier sei angemerkt, dass das Beispiel erst mit mehreren Knoten einen Sinn ergibt. Wer keine zwei S2 hat kann einen gewöhnlichen ESP verwenden. Framework Zielplattform auf ESP32 eingestellt und die ganze Prozedur von neuen beginnen. Leider muss auch die Konfiguration neu eingegeben werden.
Probleme
Probleme gab es hier keine, da das IDF Framework schon funktionierte. Sollte es mit VS-Code oder dem IDF Framework Problem geben bitte in den glinkten Beiträgen im Kapitel Probleme nachsehen.
Fazit
Mit funktionierenden IDF Framework ist die Programmierung des ESP32-S2 ein Kinderspiel. Es sind viele Beispielprogramme dabei und die Menükonfiguration mit den Platzhalten hat mich beeindruck.
Schade ist, dass die TOF und OTG Funktionalität noch nicht verfügbar sind diese Neuerungen wären sehr interessant gewesen. Ich werde diese dann in einem gesonderten Bericht behandeln.
Anfänglich fiel es mir schwer in den Code hinein zu finden. Wenn man die Einfachheit des Arduino Codes gewohnt ist sieht der Code der IDF um einiges komplexer aus. Mit einwenig Übung und ein paar Tutorials ist jedoch auch dies zu schaffen. Die ESP-IDF könnte eine wirkliche Alternative sein. Sie ist früher verfügbar und aktueller als die Portierungen.
Ausser, dass ich mehrere Tage für die richtige IDF Installation verbraucht habe, ergeben sich für mich, sieht man mal von dem geringern Stromverbrauch ab, keine essentiellen Vorteile durch den S2, noch nicht ;).
Wenn ihr auch eine Meinung habt, Verbesserungsvorschläge, Korrekturen usw. habt würde ich mich über einen konstruktiven Kommentar von euch freuen.
Verwandte Beiträge
- ESP32-S2 das Spiel mit der Mouse
- Espressif IDF – GPIOs
- Espressif IDF – Tasks
- Espressif IDF – Menuconfig
- Espressif IDF – Timer
- Espressif IDF – Lognachrichten
- Espressif IDF – Fehlerbehandlung
- Espressif IDF – Konsolenausgabe
- Espressif IDF – Projekt erstellen
- LilyGo ESP32-Oled
Quellen
Espressif IDF Support ESP32-S2
Espressif IDF EPS32-S2 Support Status