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 :
- Lora Radio Node https://www.ebay.de/itm/274658991466
- BME280 https://amzn.to/2ydoIIs (*)
- Verbindungskabel https://amzn.to/2LAXVc6 (*)
- FDTI USB Serial Konverter https://amzn.to/2WEtQij (*)
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
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; }
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/unixweb/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:
- https://github.com/rocketscream/Low-Power
- https://github.com/ElectronicCats/CayenneLPP
- https://github.com/sparkfun/SparkFun_BME280_Arduino_Library
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
Alle Artikel auf dieser Seite sind mit einem 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
wieso hat das bei dir nur mit der Brücke geklappt?
Hallo Stefan
weil das Sketch darauf aufbaut mit „LowPower“ Library und der Node sonst nicht mehr zurückkommt zur eingestellten Zeit.
Grüße Joachim
Hallo Joachim.
habe doch ein kleines Problem, bekomme immer ein Fehler beim Kompilieren.
Da bekomme ich eine Fehlermeldung.
Der Sketch verwendet 36910 Bytes (120%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 2860 Bytes (139%) des dynamischen Speichers, -812 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Der Sketch ist zu groß; unter http://www.arduino.cc/en/Guide/Troubleshooting#size finden sich Hinweise, um die Größe zu verringern.
Fehler beim Kompilieren für das Board Arduino Pro or Pro Mini.
Das Board ist richtig gewällt und auf 3.3 Volt 8 Mhz gestellt.
Sollte eigentlich so sein wie in Ihrer Beschreibung.
Können Sie mir weiter helfen.
Hallo Marco
Was noch sein könnte dass Du den falschen Programmer nimmst , schau mal Tools -> Programmer
Was aber seltsam ist dass Du 36910 Bytes hast und nicht 28326 bytes siehe hier:
Sketch uses 28326 bytes (92%) of program storage space. Maximum is 30720 bytes.
Global variables use 1194 bytes (58%) of dynamic memory, leaving 854 bytes for local variables. Maximum is 2048 bytes.
————————–
Compilation complete.
Nimmst Du die LIBS die ich in meinen Artikel angezeigt sind oder nimmst Du eventuell eine andere LMIC.h als ich und zwar die IBM LMIC framework by IBM ?
Grüße Joachim
Hallo Joachim,
durch Deinen Beitrag bin ich auf das genannte Modul aufmerksam geworden, vielen Dank dafür! Beim Versuch, damit das nächste Lorawan-Gateway zu erreichen, sind mir drei Stolpersteine aufgefallen:
a. Wie schon Marco zuvor geschrieben hatte, war auch bei mir das Programm zu groß für den ATmega328 und konnte so nicht übertragen werden. Grund dafür scheint die Größe der aktuellen Libraries zu sein, speziell die ‚MCCI LoRaWAN LMIC library‘ – wenn die in der neuesten Version 3.3.0. verwendet wird, ist das Programm zu groß. Bei mir half das Zurückgehen auf die Version 2.3.2., damit gab es nur eine Warnung.
b. Bei der genannten Library muss in der Datei ‚lmic_project_config.h‘ unbedingt der Eintrag zur Verwendung der in Europa üblichen Frequenz (868MHz) aktiviert werden. Per Default steht hier 915MHz, da sind Aussendungen nicht erlaubt und kommen nicht beim Gateway an. Besonders beim Ausprobieren unterschiedlicher Libs wird hier immer wieder auf die falsche Frequenz zurückgestellt.
c. Die drei Parameter, die aus der TTN-Console übernommen werden müssen und in Deinen Sketch einzutragen sind (NWKSKEY, APPSKEY, DEVADDR) , müssen in der Version ‚MSB‘ verwendet werden. In der TTN-Console werden diese Daten unter dem Eintrag ‚Device Overview‘ angezeigt; am Beginn des jeweiligen Eintrages ist ein rechts/links-Pfeil vorhanden, mit dem zwischen LSB/MSB umgeschaltet werden kann. – Diese Einstellung hängt von der verwendeten LMIC-Lib ab, bei manchen Libs muss LSB verwendet werden.
Als Ergänzung Deiner ausgezeichneten Dokumentation helfen diese Hinweise vielleicht einem Gelegenheitsprogrammierer (wie mir) etwas, sich erfolgreich mit dem TTN zu verbinden. Spaß macht dieses Projekt allemal!
Beste Grüße, Jürgen
Hallo Joachim,
erstmal danke für die Antwort. Der Tipp von Jürgen, hatte mich nun zum Erfolg gebracht.
Das Zurückgehen zur 2.3.2. ‘MCCI LoRaWAN LMIC library’ ist bei mir der Punkt gewesen.
Nun macht das Board auch was es soll und Übermittelt seiner Wetterdaten an TTN.
Danke für die Lösung und für das Projekt.
Beste Grüße, Marco
Hallo Joachim,
vielen Dank für diese Homepage.
Ich bin seit ein paar Wochen auch Besitzer eines LoRa Radio Node v1.0 und versuche verzweifelt den Knoten mit dem TTS zu verbinden. Leider she ich keinerlei Anzeige in der TTS Cloud.
Hast Du ein simples „Hello World“ Programm für diesen Node, den Du mir oder sogar der Community hier zukommen lassen kannst? Dein Downloadlink funktioniert leider nicht.
Ich würde mich sehr freuen, 73 de Michael
Hallo Michael
war paar Tage unterwegs im Ausland und konnte nicht antworten.
Der Link zum Git habe ich korrigiert.
Probiere einfach mal den Code von dort, der sollte funktionieren.
Nur ein Hinweis in eigener Sache. Die Dinger sind inzwischen bei mir alle nach der Reihe kaputt geworden.
Werde diese Teile nicht mehr einsetzen oder kaufen. Ein klare Nicht-Empfehlung was die Hardware angeht.
Grüße Joachim