Lora Radio Node

ATmega328 Lora Radio Node

Die Tage kam wieder mal das Bedürfnis auf, die schon lang umher liegenden, nicht genutze Lora Sensor Boards zum laufen zu bringen. In der Vergangenheit bin ich immer gescheitert da zwar der BME280 Sensor erkannt wurde, aber nur ein Datenpaket gesendet wurde. Oft war es auch so dass das Joining nicht funktioniert hat, obwohl der Gateway das Signal erkannt hatte und ein Joining Request abschickte. Es war echt verzwickt dieses Board zum laufen zu bringen. Klar hab ich die Pinbelegung des RFM95 im Arduino IDE eingetragen und verschiedene andere Dinge ausprobiert aber nie funktionierte es.

Die Boards sind wirklich sehr preisgünstig wenn diese in Asien bestellt werden. Da sind Preis von 10,00€ bis 15.00€ Euro fällig. Zusätzlich gibt es die Möglichkeit eine LS 14500 3.7 Volt Batterie zu nutzen. Ein Batteriefach ist auf den Board bereits vorhanden.

  • 2 * I2C Anschlüsse
  • 2 * Analog Port (A0 A1)
  • 2 * Digitale Port (D3 D4)
  • Betrieb 3.7 Volt – 12 Volt
  • RFM95 für 868MHz

Die Spannungsversorgung darf nur über den 2 poligen BY/S8 erfolgen
sonst besteht die Gefahr der Zerstörung.

Was wird benötigt :

  1. Lora Radio Node https://amzn.to/3cGzcyS (*)
  2. BME280 https://amzn.to/2ydoIIs (*)
  3. Verbindungskabel  https://amzn.to/2LAXVc6 (*)
  4. FDTI USB Serial Konverter https://amzn.to/2WEtQij (*)
Atmega328 Lora Node

Der Fehler lag vermutlich an mehreren Stellen. Zum einem an der fehlenden Drahtbrücke “D5 – DI01” und dem falschen PIN Mapping des RFM95 Modul. Es gibt noch viele andere Informationen im Netz, welche nicht funktionierten. Die folgende Konfiguration habe ich auf 3 Boards mit Erfolg getestet.  Dieser Artikel beschreibt die Konfiguration und Einrichtung die getestet ist und funktioniert.

const lmic_pinmap lmic_pins = {
  .nss  = 10,
  .rxtx = LMIC_UNUSED_PIN,
  .rst  = 9,
  .dio = {/*dio0*/ 2, /*dio1*/ 5, /*dio2*/ 6},
};

Hier in diesem Bild sehen wir die Drahtbrücke Rechts in Rot die gelötet werden muss, damit der Node funktioniert.

Als Sensor nutzen wir einen BME280 der Luftdruck, Temperatur und Luftfeuchtigkeit misst. Der Vorteil liegt darin , dass ein zweiter Sensor an den I2C Bus angeschlossen werden kann.

 
Lora Board I2C
#1 Stecker
BM280 Sensor
VCC 3V3 VIN
GND GND
SDA SDA
SCL SCL

 

Bitte Sensor so wie in der Tabelle angezeigt an einen der 4 poligen Steckpfosten anschließen.

Zur Einrichtung der TTN-Console bitte auf den unten stehenden Link klicken.

Einrichtung TTN Applikation und Sensor in der Konsole

Erstellen einer Applikation

Decoder für die TTN-Console :

/********************************************************************* 
* The TTN Payload function equal for all environment applications
**********************************************************************/
function Decoder(bytes, port) {
  var retValue =   { 
    bytes: bytes
  };
      
  retValue.node = bytes[0];
  retValue.battery = bytes[1] / 10.0;
  retValue.vcc = bytes[2] / 10.0;
  retValue.temperature = (((bytes[3] << 8) | bytes[4]) / 10.0) - 40.0;
  retValue.pressure = ((bytes[5] << 16) | (bytes[6] << 8) | bytes[7]); 
  retValue.humidity = ((bytes[8] << 8) | bytes[9]) / 10.0;
  return retValue; 
}

 

FDTI USB Converter
FTDI USB Converter

Zum Programmieren benötigen wir einen FTDI-USB Adapter, der dann mit dem Lora-Board wie folgt verbunden wird, siehe auch Rückseite der Platine des Nodes.

FTDI USB Adapter Lora Board
DTR DTR
RX TX0
TX RXI
VCC 3V3
CTS GND
GND GND

 

 

 

Dann starten wir Arduino IDE und laden uns den Code aus dem Git-Repository :
https://git.unixweb.net/jhummel/Radio-Lora-Node-Atmega328

Das “sensor-abp-ttn.ino” File anklicken und in die IDE importieren.
In der IDE das richtige Board auswählen als “Arduino Pro oder Pro Mini” für 3.3 Volt 8 MHz
NICHT 5 Volt benutzen, Node funktioniert nicht.

Bitte diese Bibliotheken in die Arduino IDE installieren: 

 

Achtung: Damit die Daten in deiner TTN-Console ankommen, müssen die 3 Parameter im Code angepasst werden. Suche die 3 Stellen in der Arduino IDE und ersetze diese aus der TTN-Console.

Werte aus der TTN-Console holen und dort eintragen:

static const PROGMEM u1_t NWKSKEY[16] = { ERSETZEN };
static const u1_t PROGMEM APPSKEY[16] = { ERSETZEN };
static const u4_t DEVADDR = { 0x2601XXXX };

Wenn die Vorbereitungen stimmen und alles richtig gemacht wurde, können wir ans Programmieren gehen. Nun den Arduino Sketch auf das Lora Node Board hochladen. Wenn alles Fehlerfrei hochgeladen wurde, sollten die ersten Daten in der TTN-Console

Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Weiterführende Infos gibt es hier unter Punkt 8 in der Datenschutzerklärung  https://blog.unixweb.de/datenschutzerklaerung/

Bei Fragen einfach die Kommentarfunktion nutzen.

Viel Spaß beim basteln wünscht , Joachim

2 Kommentare

    1. Hallo Stefan

      weil das Sketch darauf aufbaut mit “LowPower” Library und der Node sonst nicht mehr zurückkommt zur eingestellten Zeit.

      Grüße Joachim

Kommentar hinterlassen

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