ESP32 WiFi Lora 433

Last Updated on 18. Oktober 2026 by sfambachLink-Status: OK

Ich habe ein neues Spielzeug gefunden, den ESP32 mit On-Board-Display. Das Board ESP32 WiFi Lora 433 ähnelt mit seiner weißen Platine ein wenig 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 externe Antenne war auch mit im Paket. 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.Link-Status: OK

Das Board besitzt ein Display, zwei Knöpfe, einen USB Anschluss und einen Antennenanschluss. 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-1Link-Status: Unbekannt

Überblick

ESP32 WiFi LoRa 433
HerstellerHeltec
ProzessorESP 32
Kerne2
Takt240 MHz
Flash4 MB
SRAM520 KB
Digitale Pins34 / 28
Analoge Eingänge18
PWM-Pins16
UART3
SPI2
I²C2
WLAN2,4 GHz 802.11 b/g/n · WEP / TKIP / CCMP (AES)
Bluetooth4.2
USB1 Micro CP2102
Video0.96 OLED display
Betriebsspannung3,3 V
Eingangsspannung3,3 V-Pin 2,7-3,5 V · USB/5 V-Pin 4,7-6 V · Akku 3,3-4,2 V
Abmessungen51 x 25,5 x 10,6 mm

Pinning

WIFI_LoRa_32_DiagramLink-Status: OK

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-ssd1306Link-Status: OK

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, außer vielleicht, dass er sehr viel an Peripherie schon mitbringt.

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 den Comport an den eigenen anpassen.

1. Test – Beispielprogramm

Der erste Test ist immer ein Beispielprogramm aus dem Board-Paket. Eines auswählen, kompilieren und auf das Gerät schreiben.

2. Test – TCP Verbindung

Ich habe aus den Beispielen extrahiert, was ich brauchte, und mir ein kleines Programm 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 println Methoden jeweils mit Übergabeparameter String überschrieben.

Hier das Beispiel zum Downloaden:

Quellcode DisplayWifiTest.ino (GitHubLink-Status: OK)

/*
    This sketch sends data via HTTP GET requests to data.sparkfun.com service.

    You need to get streamId and privateKey at data.sparkfun.com and paste them
    below. Or just customize this script to talk to other HTTP servers.

    Modified by SteFam www.fambach.net

*/

#include <WiFi.h>
#include "console.h"


//OLED pins to ESP32 GPIOs via this connecthin:
//OLED_SDA -- GPIO4
//OLED_SCL -- GPIO15
//OLED_RST -- GPIO16

Console  console(0x3c, 4, 15);

const char* ssid     = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

const char* host = "192.168.1.21";
const int   port = 2121;

  // Use WiFiClient class to create TCP connections
  WiFiClient client;

void setup()
{
  Serial.begin(115200);
  delay(10);

  console.init();

  // We start by connecting to a WiFi network
  console.println("init network");
  WiFi.begin(ssid, password);
  console.println("Connecting to ");
  
 console.println(String(ssid));
  console.println("MAC: " + WiFi.macAddress());
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    console.print(".");
  }

  console.println("");
  console.println("WiFi connected ");
  console.println(WiFi.localIP().toString());

    console.print("connecting to ");
  console.println(host);
}

int value = 0;

void loop()
{

  if(!client.connected()){
    console.println("Open connection to:");
    console.println(String(host)+":"+String(port));
    if (!client.connect(host, port)) {
      console.println("connection failed");
      delay(1000);
      return;
    }
    console.println("connection succided");
    delay(1000);
  }

  console.println("sending Data");
  client.println("Hello, there I am");
  delay(5000);
  
}

Quellcode console.h (GitHubLink-Status: OK)

#ifndef CONSOLE_H
#define CONSOLE

/**
 * Simulates a console, deletes the first line when 
 * the screen is full and a second line is posted.
 * 
 * Created by SteFam www.Fambach.net
 * 
 */
#include <WiFi.h>
#include <Wire.h>  // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306.h" // alias for `#include "SSD1306Wire.h"`

class Console : public SSD1306Wire {


  public:

    Console(uint8_t _address, uint8_t _sda, uint8_t _scl, OLEDDISPLAY_GEOMETRY g = GEOMETRY_128_64): SSD1306Wire(_address, _sda, _scl, g) {
    }

    void init() {

      pinMode(16, OUTPUT);
      digitalWrite(16, LOW);    // set GPIO16 low to reset OLED
      delay(50);
      digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high

      // Initialising the UI will init the display too.
      SSD1306Wire::init();

      SSD1306Wire::flipScreenVertically();
      SSD1306Wire::setFont(ArialMT_Plain_10);

      // display.setTextSize(1);
      SSD1306Wire::setTextAlignment(TEXT_ALIGN_LEFT);
      SSD1306Wire::setLogBuffer(5, 30);
    }

    void println(String s) {
      SSD1306Wire::clear();
      SSD1306Wire::println(s);
      SSD1306Wire::drawLogBuffer(0, 0);
      SSD1306Wire::display();
    }

    void print(String s) {
      clear();
      SSD1306Wire::print(s);
      drawLogBuffer(0, 0);
      display();
    }
};
#endif

Als Server auf dem PC verwende ich meine Java-Konsole.

Java Socket Konsolen ServerLink-Status: OK

So sieht es auf dem ESP32 aus …

… und so auf der Java Konsole.

3. Test – WIFI Scan

Das folgende Programm scannt das Netzwerk in der Umgebung nach Accesspoints und gibt die SSID und die Sendestärke auf dem Bildschirm aus.

DisplaySSIDsLink-Status: OK

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 Rechtsklick 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 Link-Status: OKin 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

ESP WEB Serial BibliothekLink-Status: OK
CustomKeyboard BibliothekLink-Status: OK
ESP8266/32 WiFi ManagerLink-Status: OK
ESP01 – Relais PlatineLink-Status: OK
Zumo V1.2Link-Status: OK
ESP8266 RTOS SDKLink-Status: OK
Espressif IDF – GPIOsLink-Status: OK
Espressif IDF – TasksLink-Status: OK

Quellen

https://en.wikipedia.org/wiki/ESP32Link-Status: OK

http://esp32.net/Link-Status: OK

https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series#instructionsLink-Status: OK

https://www.heise.de/make/artikel/Grosser-Bruder-Espressif-ESP32-3256039.htmlLink-Status: Unbekannt

https://github.com/espressif/arduino-esp32/issues/758Link-Status: OK

HerstellerseiteLink-Status: Kaputt

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

DatumÄnderungAutor
18.10.2026TablePress-Tabelle durch Datenblock aus dem Modell ersetztsfambach
16.10.2026Beispielcode als Code-Block eingefügt (Einbettung über gist-it.appspot.com funktionierte nicht mehr)sfambach
08.10.2026Überschriften-Hierarchie korrigiert (H1→H2, Unterebenen eine Stufe tiefer)sfambach
04.10.2026Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatiksfambach
03.10.2026Log-Liste eingefügtsfambach
17.06.2018Beitrag erstelltsfambach
Logbuch

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

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