LoRa Chat - ESP32 mit OLED auf 433 MHz

Häufig wurden wir gefragt, was kann man denn mit dem LoRa überhaupt machen?

Kann mit den 433 MHz Funk - Sende und Empfänger Modul kommuniziert werden?

Hier gleich die Antwort: NEIN, die 433 MHz Module senden Analog. LoRa ist ein digitales verfahren. Ein Beispiel zum Verständniss, ein FM Radio (433 MHz Modul) kann keinen DAB-Radiosender (LoRa) empfangen oder umgekehrt.

Aber nun zu einem Beispiel für LoRa, wir bauen unseren eigenen LoRa Chat!

Was brauchen dazu nur mindestens 2 LoRa Module oder einen Freund in der Nachbarschaft, dann benötigt jeder jeweils nur 1 Modul.

NodeMCU ESP32 mit OLED Display 433Mhz LoRa

 Wenn die Antenne aufgesteckt wurde, die Pin-Leisten müssen nicht angelötet werden, kann das Programmieren auch schon losgehen.

Auf deinem Computer müssen die entsprechenden Bibliotheken installiert sein, sollte das nicht der Fall sein, schau dir das eBook dazu an.

 

Die Funktionen des Sketch sind einfach erklärt:

Auf dem Display und über die Serielle Schnittstelle werden der empfangene Text ausgegeben. Oben Links wird dazu RX: angezeigt und rechts in der Ecke die Empfangsstärke (RSSI in dbm).

Beim Senden von Texten wird nur TX: und der entsprechende Text angezeigt.

Das Senden von Text geschieht über die Serielle Schnittstelle. Jeder Text der im Serial Monitor eingegeben wird, wird direkt über LoRa gesendet.

Die Sende und Empfangsfrequenz in unserem Beispielprogramm ist 433,175 MHz. Diese Frequenz liegt innerhalb des in Deutschland freigegebenen ISM-Frequenzband. Bitte beachte die entsprechenden Regionalen Regelungen und setze dich mit dem Frequenznutzungsplan der Bundesnetzagentur (für Deutschland) auseinander.

Die Baudrate der Seriellen Schnittstelle beträgt 115200.

 

So sieht das dann auf den Modulen aus:

 

Aber hier nun zum Sketch:

 

#include <SPI.h>
#include <LoRa.h>
#include "SSD1306.h"
#include<Arduino.h>

SSD1306  display(0x3c, 4, 15);

#define SS      18
#define RST     14
#define DI0     26
#define BAND    433175000

int counter = 0;

void setup() {
  pinMode(25,OUTPUT); 
  
  pinMode(16,OUTPUT);
  digitalWrite(16, LOW);
  delay(50); 
  digitalWrite(16, HIGH);
  
  Serial.begin(115200);
  while (!Serial); 
  display.init();
  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_10);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  
  display.drawString(5,5,"LoRa TRX");
  display.display();
  
  SPI.begin(5,19,27,18);
  LoRa.setPins(SS,RST,DI0);
  Serial.println("LoRa TRX");
  if (!LoRa.begin(BAND)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  Serial.println("LoRa Initial OK!");
  display.drawString(5,20,"LoRa Initializing OK!");
  display.display();
  delay(2000);
}

void loop() {
  int packetSize = LoRa.parsePacket();
  if (packetSize) {

    Serial.print("RX: ");
    display.clear();
    display.setFont(ArialMT_Plain_10);
    display.drawString(0, 0, "RX: ");
    display.display();

    while (LoRa.available()) {
    String data = LoRa.readString();
    Serial.println(data);
    display.drawString(0,18, data.substring(0, 20));
    display.drawString(0,29, data.substring(20, 40));
    display.drawString(0,40, data.substring(40, 60));
    display.display();
    }
    
    //Serial.print(" mit RSSI ");
    //Serial.println(LoRa.packetRssi());
    //display.drawString(20, 45, "RSSI:  ");
    display.drawString(90, 0, (String)LoRa.packetRssi());
    display.display();
    
  }


char data[100];
 int incount = 0;
 if ( Serial.available() )
 {
   while (Serial.available()) {
   data[incount++] = Serial.read();      
   }
   data[incount] = '\0';
   Serial.print("TX: ");
   Serial.println(data);


display.clear();
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "TX: ");
display.drawString(0,18, data);
display.display();

 LoRa.beginPacket();
 LoRa.print(data);
 LoRa.print("  ");
 LoRa.endPacket();
   }
}

 Wir wünschen dir viel Spass beim Nachbauen und viele schöne Chatstunden.

Natürlich kannst du den Sender auch für andere Zwecke verwenden, z.B. für Temperaturübertragung...

Lass uns von deinem Einsatz wissen und erzähle uns deine Erlebnisse.

Letzter Artikel Uno R3 als Webserver mit Ethernet Shield

Kommentar

Waldemar Cichon - August 31, 2018

Hallo,

vielen Dank für die vielen interessanten Artikel. Jedoch ist bei dem im Eingang ein grober Schnitzer versteckt.

433 MHz-Module senden schon digital. Dazu gibt es ja die Empfangs- und Sendeteile für den Arduino. Teils wird das Versendete sogar entsprechend mit einer Sicherkeheitsebene versehen – so genannten Rolling Codes. So funktionieren die Kfz-Fernbedienungen der vorletzten Generation, Fernbedienungen für Garagentore aber auch Rollo-Bedieneinheiten.

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe