Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
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.