Last Updated on 25. Januar 2021 by sfambach
Ich habe ein neues Spielzeug gefunden, den ESP32 mit on Board Display. Das Board ESP32 WiFi Lora 433 ähnelt mit seiner weißen Platine einwenig dem Atmel-Butterfly, ist aber nur halb so groß. Gerade wenn man mehr als nur eines dieser Boards betreiben möchte, liegt es mit rund 20€ gerade noch so im bezahlbaren Bereich.
Es passt gerade so auf ein Steckbrett, so dass an beiden Seiten noch ein Pin zur Beschaltung frei ist. Die Pins wurden in meinem Fall mitgeliefert und müssen selbst eingelötet werden.
Eine sehr puristische extener Antenne war auch mit im Packet. Da bei meiner fast sofort die Spitze abgefallen ist, habe ich sie durch ein robusteres Modell ersetzt.
Es gibt auch noch einen kleineren Bruder mit weniger starkem Netzwerk das ESP32 WiFi Kit 32.
Das Board besitzt ein Display zwei Knöpfen, einen USB Anschluss und einen Antenneanschluss. Auf der Rückseite befindet sich ein JST-PH 2Pin 1.25mm Anschluss für einen Akku.
Ansicht
3D Object
Überblick
Name | ESP23 Wifi Lora 433 | Arduino Nano 33 BLE |
---|---|---|
Anzahl/CPU | 1 / ESP 32 | 1 / 64 MHz Arm® Cortex-M4F (with FPU) |
Takt (MHz) | 240 | 64 |
Kerne | 2 | 1 |
Digital IOs / Pins | 36 / 28 | 14 |
Analog inputs | 18 | 8 |
Interrupt Pins | ? | 14 |
PWM | 16 | 14 |
SPI | 4 | 1 |
Flash Speicher | 1MB | |
SRam (KB) | 520 | 256KB |
EEPROM (KB) | 4 MB | – |
WiFi | Wide Range 802,11 b/g/N Bluetooth + Externe Antenne |
– |
Verschlüsselung | WEB / WPA2 / TKIP /AES | – |
Bluetooth | 4.1 | NINA-B306 Module Bluetooth® Low Energy 5.0 Module Bluetooth® 5 multiprotocol / Zigbee |
UART | 3 | 1 |
I2C | 2 | 1 |
Ethernet | – | – |
Video | 0.96 OLED display | – |
Sound | _ | – |
Sonstiges | – | LSM9DS1 (9 axis IMU) MPM3610 DC regulator NFC-A tag Nina B306 |
USB | 1 Micro CP2102 | 1 Micro |
Betriebsspannung [V] | 3,3 | 3,3 |
Eingangsspannung | 3,3 – 7 | 21 |
Strom (mA) / Standby (mA) | 30 | |
Größe l x b x h | 53 x 25 x 12 | 43,16 x 17,7 |
Gewicht [g] | ?? | 5 |
Pinning
Lora Pinout
ESP (GPIO) | SX1276 |
---|---|
5 | SCK |
19 | MISO |
27 | MOSI |
18 | CS |
14 | RESET |
15 | DIO0 |
13 | DIO1 |
12 | DIO2 |
Programmierung
Arduino GUI
Bibliotheken
Für das Display verwende ich die SSD1306 Bibliothek von Thingpulse:
https://github.com/ThingPulse/esp8266-oled-ssd1306
Programmierung
Die Programmierung ist wie bei allen Arduino basierten Projekten in c/c++ und folgt den allgemeinen Regeln. Es gibt keine mir bekannten Besonderheiten für den ESP, ausser vielleicht dass er sehr viel an Peripherie schon mit bringt.
Wichtig ist nur das richtige Board auszuwählen.
Mit folgenden Einstellungen hats bei mir geklappt:
Hier die offiziellen Werte, mit denen sollte es auch klappen:
Bitte dem Comport an den Eigenen anpassen.
1. Test – Beispielprogramm
Der erste Test ist immer ein Beispielprogramm aus dem Board-Paket. Eines auswählen compilieren und auf das Gerät schreiben.
2. Test – TCP Verbindung
Ich habe aus den Beispielen extrahiert was ich brauchte und mir ein kleines Program mit WiFi Verbindung und dem Display als Console geschrieben. Alle Funktionalität der Console habe ich in der Datei console.h als Klasse abgelegt. Aktuell sind nur die print und die prinln methoden jeweils mit Übergabeparameter String überschrieben.
Hier das Beispiel zum Downloaden:
Als Server auf dem PC verwende ich meine Java-Konsole.
So sieht es auf dem ESP32 aus ...
... und so auf der Java Konsole.
3. Test - WIFI Scan
Das folgende Porgramm scannt das Netzwerk in der Umgebung nach Accesspoints und gibt die SSID und die Sendestärke auf dem Bildschirm aus.
So sieht es auf dem Gerät aus:
Probleme
USB Fehler
Obwohl ich vorher den Treiber installiert hatte, wurde bei mir der ESP von Windows 10 nicht richtig erkannt, .
Das konnte ich über den Hardwaremanager korrigieren. Hier wird das fehlerhafte Gerät angezeigt. Über rechts Klick mit der Mouse und Treiber update habe ich nochmal den gedownloadeten Treiber ausgewählt. Danach ging es.
Netzwerkscan schlägt fehl
Es gibt wohl einen Bug in der Bibliothek, wenn der ESP nicht richtig initialisiert ist. Dies ist der Fall wenn vor dem Scan nicht die methode WiFi.begin() aufgerufen wird. Das Resultat ist, der Scan schlägt fehl oder bekommt nur sehr wenige SSIDs.
Die Lösung ist in der init Methode einmal WiFi.begin() aufzurufen.
Probleme mit der Netzwerkverbindung zur Java-Console
Die Java-Console ist auf Port 2021 eingestellt. Entweder im ESP Programm den Port auf 2021 umstellen, oder die Java-Console mit dem Port 2121 starten
Fazit
Das ESP32 WiFi Lora 433 Board ist klein und leicht zu programmieren. Das Display bietet ausreichend Platz für kurze Informationen. Der ESP32 ist deutlich schneller als sein älterer Bruder der ESP8266. Auch für diesen gibt es ein ähnliches Board "ESP8266 WIFI 0.91" Inch OLED", was jedoch deutlich billiger ist.
Verwandte Beiträge
Quellen
https://en.wikipedia.org/wiki/ESP32
https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series#instructions
https://www.heise.de/make/artikel/Grosser-Bruder-Espressif-ESP32-3256039.html
https://github.com/espressif/arduino-esp32/issues/758
https://www.hackerspace-ffm.de/wiki/index.php?title=Heltec_Wifi_LoRa_32#LoRa_Radio
Bin mit meinem Laptop (Windows 10 Home 32 Bit Version 2004) über Arduino 1.8.13 und USB mit einem neu gekauften Heltec LoRa 32 WiFi OLED verbunden. Auf der Anzeige werden die Netzwerknamen der empfangenen Netzwerke angezeigt. Ich wollte nun andere Programme von der Beispielliste ausprobieren, Aber keines von diesen funktioniert. Beim Compilieren treten keine Fehlermeldungen auf, beim Laden sehe ich den Ablauf am PC wie in der Anweisung beschrieben, dann am Schluss erscheint die Meldung:
Leaving….
Hard resetting.
Wenn ich jetzt die RST Taste betätige, passiert nichts.
Anschließend gehe ich ins Terminalprogramm betätige die RST-Taste nochmals und sehe, unter den vielen Meldungen wie Speicherbelegungen auch:
Guru Meditation Error: Core 0 panic’ed (abort) und CPU halted.
Das heißt, dass der Microprozessor Nachrichten melden kann, aber die geladenen Programme nicht abarbeitet.
Dieses Problem habe ich bei allen drei neu gekauften LoRa32.
Ich bitte um Hilfe.
Guten Abend Wolfgang,
musste erstmal meinen Heltec raussuchen der Beitrag ist ja schon etwas älter. Ich Habe es mit der Einstellung Heldtec 32 Lora compiliert und programmiert. Danach kam die Ausgabe auf dem Display.
Was ich im Beitrag vergessen hatte (Schande über mein Haupt) war die ssd1306 Lib. Diese ist von thingpulse, evtl. hast du da eine andere verwendet oder bist du noch nicht zu dem Beispiel gekommen?
Für mich sieht das auch so aus als könnte er das geflashte Programm nicht finden. Dies hatte ich meist wenn die Eistellungen in der arduino/platformio gui nicht zum Board passten.
Ich habe das Board Heltec Wifi Lora 32 gewählt (Ein screenshot befindet sich nun im Beitrag). Welche Einstellungen hast du verwendet?
Weiterhin habe ich gesehen, dass es eine neue Version des Heltec Lora Moduls gibt V2. Evtl. musst du diese wählen?
Auch wenn es vorkommt, glaube ich nicht dass die Module alle kaputt sind, bis jetzt hatte ich meist, selbst mit denen direkt auch China, Glück. (bestelle aber auch mindestens 2).
So als letztes würde mir das Flashen des Bootloaders noch einfallen.
Ich hatte auch mal ein Board das am Anfang dauernd exceptions geworfen hat, hier hatte ich mal testweise die Espressif IDF verwendet, danach ging es.
Um dich von der Einwandfreien Funktion zu Überzeugen kannst du auch mal die AT firmware versuchen, hätte es gerne getestet schaffe ich aber heute nicht mehr.
https://www.espressif.com/en/support/download/at
Anleitung:
https://docs.espressif.com/projects/esp-at/en/latest/Get_Started/Downloading_guide.html
Sonst funktierten die Borads meist problemlos.
Guß aus Hessen – Stefan
soweit fktn das bei mir auch. wenn ich aber etwas ins textfenster des java-fensters eingebe, passiert gar nichts. es wird auf dem display nichts angezeigt. dort steht fortlaufend „sending Data“.
mache ich was falsch? habe ein Heltec esp32 wifi kit 32.
vg hardy
Hallo Hardy,
vielen Dank für deinen Kommentar. Da es mehrere Gründe gibt, fange ich einfach mal am Anfang an, das Meiste wirst du sicherlich schon überprüft haben.
1. Steht die Verbindung zum WLAN
Überprüfe die folgenden Konstanten ob sie mit deinen WLAN Zugangsdaten übereinstimmen.
Hast du einen MAC filter auf deinem Router, dann müsste noch die MAC Adresses deines Knoten auf dem Router eigetragen werden.
Auf dem Display des ESP muss „WiFi connected“ + die IP Adresse erscheinen.
2. Verbindung zum Server (Java Terminal)
Die folgenden Variablen müssen mit der IP deines Rechners, auf dem das Terminal läuft übereinstimmen.
Das Java Terminal läuft in der Grundeinstellung auf Port 2021, am einfachsten änderst du das im ESP Programm, oder optional kannst du den Port beim Start des Terminal mitgeben. Bei erfolgreicher Verbindung vom ESP zum Terminal erscheint auf dem ESP „connection succided“ und auf dem Terminal sollte auch was stehen ;).
Dies sollten die Eckdaten zu einer funktinierenden Verbindung sein, ich vermute es liegt am Port? Ansonsten fällt mir nur noch die Firewall ein die eine Verbindung verhindern könnte.
Ich hoffe das hilft dir weiter, wenn nicht melde dich einfach nochmal mit ein paar zusätzlichen Infos.
Gruß
SF