ESP32 WiFi Lora 433

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

https://grabcad.com/library/heltec-wifi-kit-32-1

Ü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

WIFI_LoRa_32_Diagram

Lora Pinout

ESP (GPIO)SX1276
5SCK
19MISO
27MOSI
18CS
14RESET
15DIO0
13DIO1
12DIO2

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.

DisplaySSIDs

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

http://esp32.net/

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

Herstellerseite

https://www.hackerspace-ffm.de/wiki/index.php?title=Heltec_Wifi_LoRa_32#LoRa_Radio

4 Gedanken zu „ESP32 WiFi Lora 433

  1. 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.

    1. 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

  2. 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

    1. 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.

      const char* ssid = „NODE_GROUND“;
      const char* password = „IAmAMeshNetworkPassword“;

      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.

      const char* host = „192.168.1.21“;
      const int port = 2121;

      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

Schreibe einen Kommentar zu hardy Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert