Dies ist eine alte Version des Dokuments!


ESP32 mit 868 MHz LoRa Modul

Gefunden habe ich dieses kompakte Mikrocontroller Modul mit ESP32, OLED Display und LoRa Funkmodul auf AliExpress. Ein solches Board kostet zum derzeitigen Stand (Dezember 2017) gerade mal 13 EUR, also gleich mal her damit ;-). Der Suchbegriff für das Modul ist „TTGO LORA32 868/915 Mhz SX1276 ESP32 Oled-display Bluetooth WIFI Lora“, aber „ESP32 LoRa“ sollte auch reichen. Ich habe das Modul unter anderem auch unter der Bezeichnung „Heltec WiFi LoRa 32“ gefunden. Gibt also mal wieder mehrere Varianten. Die Dokumentation ist mal wieder eher schlecht und der Quellcode im Angebot wurde automatisiert ins Deutsche übersetzt, sodass er komplett unbrauchbar ist. Aber das ist ja nur ein Grund mehr, das hier ein wenig zu dokumentieren.

Technische Daten

  • Espressif ESP32 Mikrocontroller (ARM Dual-Core, Bluetooth LE, WiFi)
  • Semtech SX1276 LoRa Transceiver
  • 0.96„ OLED Display (blau)
  • CP2102 USB-UART Konverter
  • Eingangsspannung 3.3V bis zu 7V

Treiber

Das Module meldet sich unter Windows unter dem Namen „CP2102 USB to UART Bridge Controller“. Leider wird aber nicht automatisch ein Treiber für das Gerät gefunden, sodass der serielle Port zum Programmieren des Mikrocontroller nicht sofort zur Verfügung steht. Abhilfe schaffen die Treiber von Silicon Labs - dem Hersteller des USB→UART Konverters und die gibt es hier:

Pinout

PlatformIO

Will man das Board unter PlatformIO nutzen, so legt man einfach ein neues Projekt an und wählt dort „Heltec WiFi LoRa 32 (Heltec Automation)“ als „Board“ bei der Initialisierung eines neuen Projektes aus. Beim SDK wähle ich meist „Arduino“ - ist für mich einfacher, aber natürlich könnt ihr auch direkt „ESP-IDF“ verwenden.

OLED Display ansteuern

Um das eingebaute OLED Display anzusteuern, wird die allseits bekannte „u8g2“ Bibliothek verwendet. Mit

pio lib install u8g2

im PlatformIO Terminal, wird die entsprechende Bibliothek installiert.

Jetzt einfach noch den folgenden Sketch reinkopieren und schon sieht man das „Hello World!“ Beispiel der Bibliothek auf dem Display des Moduls:

1 main.cpp
#include <Arduino.h>
#include <U8x8lib.h>
 
#define OLED_SCL 15   // GPIO 15
#define OLED_SDA  4   // GPIO  4
#define OLED_RST 16   // GPIO 16
 
// define the display type that we use
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ OLED_SCL, /* data=*/ OLED_SDA, /* reset=*/ OLED_RST);
 
void setup() {
    // set up the display
    u8x8.begin();
    u8x8.setPowerSave(0);
}
 
void loop() {
    // Yay... a "Hello World!"
    u8x8.setFont(u8x8_font_chroma48medium8_r);
    u8x8.drawString(0,0,"Hello World!");
    delay(2000);
}

TTN mit ABP

Nachdem das Display ja schon läuft, ist es an der Zeit das Modul mit dem TTN zu verbinden. Ich habe für mein momentan zum Testen genutztes Single-Channel-Gateway erstmal nur ABP zur Anmeldung am Netzwerk verwendet. Da ich kein Fan von den Single-Channel-Gateways bin, werde ich aber einen Sketch zu OTAA noch nachreichen.

thethingsnetwork/esp32_mit_868_mhz_lora_modul.1513981362.txt.gz · Zuletzt geändert: 2017/12/22 23:22 von octoate
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0