Dieses Projekt bietet eine moderne Firmware für Mikrocontroller -Boards mit einem RF95 -kompatiblen Funkmodul und einer seriellen Schnittstelle wie der Adafruit Feather M0 LORA -Gerät oder den Heltec OLED LORA 32 -Modulen. Auf verschiedenen ESP32 -basierten Boards optionale Funktionen wie OLED -Statusanzeige können GPS, BLE oder WLAN -Unterstützung aktiviert werden.
Die aktuelle Standardkonfiguration ist für das Gerät mit 868,1 MHz. Dies kann in src/modem.h mit der folgenden Zeile geändert werden: #define RF95_FREQ 868.1
Die folgenden Boards werden unterstützt:
Die empfohlene Möglichkeit zum Erstellen und Installieren der Radio -Firmware besteht darin, eine funktionierende Installation von Platformio (http://platformio.org/) auf Ihrem System zu haben.
Wichtig bearbeiten platformio.ini , um Ihre Zielplattform hinzuzufügen und die Funkstifte in den Build -Flags zu konfigurieren!
Installieren Sie auf Ihrem Gerät mit pio run -t upload -e heltec_wifi_lora_32_ble
Optional aktivieren Sie die Anzeigeunterstützung: pio run -t upload -e heltec_wifi_lora_32_display_ble
Derzeit kann jeder eine Verbindung zum BLE -Dienst herstellen, es ist alles Klartext. Ein Merkmal wird zum Senden von Befehlen veröffentlicht, und eine ist da, um die Ausgabe durch Benachrichtigungen zur Verfügung zu stellen.
Alle über Ble gesendeten Befehle müssen mit einem n beendet werden. Die Standardbetriebsmodus spaltet alles in 20 Byte -Stücke, was nach den BLE -Spezifikationen die maximale Paketgröße ist. Auf dem iPhone 8 & 11 konnten wir auch viel größere BLE -Pakete (> 100 Bytes) senden und empfangen. Daher kann man einen großen funky Ble-Frames -Modus über AT+BFB=1 aktivieren. Der Befehl wird auch ohne Ablauf n erkannt und macht auch optional n Dies ist besonders nützlich, da einige BLE -Debugging -Software wie LightBlue Explorer am Ende eines Schreibvorgangs keine Wagenrenditen oder Zeilenfuttermittel sendet.
Wenn eines der WLAN -Profile auf einem kompatiblen ESP -MCU installiert ist, kann das Gerät als Zugangspunkt fungieren. Die Anmeldeinformationen sind in platformio.ini konfiguriert und standardmäßig eingestellt auf: WIFI_SSID="rf95modem" und WIFI_PSK="rf95modemwifi" Dieser Zugriffspunkt akzeptiert bis zu 4 Clients nach Espresssif SDK und standardmäßig hat der IP 192.168.4.1 .
Es gibt zwei Möglichkeiten, mit dem Modem zu kommunizieren:
Das RF95Modem reagiert auf UDP -Broadcast -Pakete auf Port 1666 . Um die Ausgabe zu erhalten, wird ein einfacher UDP -Hörer bereitgestellt ( extras/udp_receiver.py ). Um Befehle an das Modem NetCat zu senden, ist ausreichend, z. B. echo "at+tx=414141" | ncat -u 192.168.4.255 1666
Stellen Sie einfach eine Verbindung zu 192.168.4.1 auf Port 1666 mit TCP her und verwenden Sie es wie eine serielle Verbindung, z. B. ncat 192.168.4.1 1666 .
Es wird nur eine Verbindung gleichzeitig unterstützt!
Einige Geräte wie TTGOS T-Beam enthalten auch einen GPS-Chip. Dies kann auch über die Modemfirmware über den AT+GPS -Befehl abgefragt werden. Das Erhalten einer Erstschloss für Ihre Position kann je nach ATenna, Position und GPS -Chip auf dem Gerät mehrere Minuten dauern. Da dies auch den Energieverbrauch erheblich erhöht (~ 50 mA), kann man ihn über AT+GPS=0 vorübergehend deaktivieren.
Die Standard -Seriengeschwindigkeit ist auf 115200 festgelegt ( src/main.cpp -Zeile 17 ).
Liste der Befehle:
AT+HELP Print this usage information.
AT+TX=<hexdata> Send binary data.
AT+RX=<0|1> Turn receiving on (1) or off (2).
AT+BFB=<0|1> Turn send Big Fine BLE-Frames on (1) or off (0).
AT+GPS Print GPS information.
AT+GPS=<0|1> Turn GPS power on (1) or off (0).
AT+FREQ=<freq> Changes the frequency.
AT+INFO Output status information.
AT+MODE=<NUM> Set modem config:
0 - medium range (default)
Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on.
1 - fast+short range
Bw = 500 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on.
2 - slow+long range
Bw = 31.25 kHz, Cr = 4/8, Sf = 512chips/symbol, CRC on.
3 - slow+long range
Bw = 125 kHz, Cr = 4/8, Sf = 4096chips/symbol, CRC on.
4 - slow+long range
Bw = 125 kHz, Cr = 4/5, Sf = 2048chips/symbol, CRC on.
Um die aktuelle Konfiguration zu erhalten, kann man AT+INFO verwenden
> AT+INFO
+STATUS:
firmware: 0.7.3
features: MCU BLE WIFI GPS
modem config: 0 | medium range
max pkt size: 251
frequency: 868.10
rx listener: 1
BFB: 0
GPS: 1
rx bad: 0
rx good: 0
tx good: 0
+OK
Aus dieser Ausgabe können Sie sehen, welche Funktionen in der Firmware zusammengestellt wurden und welche Version sie ist. Auch die aktuelle Modemkonfiguration und die ausgewählte Frequenz werden angezeigt.
Um die Frequenzen einzuschalten, können Sie den Befehl AT+FREQ verwenden.
> AT+FREQ=868.20
+FREQ: 868.20
Vorsicht: Jede Float -Nummer kann hier hinzugefügt werden, der Wert wird direkt an den LORA -Transceiver übergeben!
Das Ändern des vorkonfigurierten Modemmodus ist genauso einfach:
> AT+MODE=2
+OK
AT+TX=414141 sendet ein Paket mit AAA als Inhalt. Die maximale Paketgröße kann je nach Funkchip variieren.
AT+RX=1 Aktivieren Sie den Empfangshörer, Standard ist eingeschaltet.
Eingehende Daten werden automatisch an den seriellen Port geschrieben: +RX 3,414141,-15,8 -Ein Rahmen mit "AAA", da die Nutzlast mit RSSI von -15 und SNR von 8 empfangen wurde.
Wenn GPS aktiviert ist ( AT+GPS=1 ) und die Firmware auf einem GPS-fähigen Gerät wie dem TTGO-T-Beam ausgeführt wird, kann man den aktuellen Standort und die aktuelle Zeit problemlos abfragen. Ohne einen Propoer -GPS -Sperren werden alle zurückgegebenen Werte auf Null gesetzt.
> at+gps=1
+OK
> at+gps
Latitude : 0.00000
Longitude : 0.00000
Altitude : 0.00M
Satellites: 0
Time : 00:00:00
Date : 00.00.2000
Timestamp : 943920000
+OK
Es gibt einige Programmierbibliotheken von Drittanbietern, um die Integration von RF95Modem zu erleichtern.
Wenn Sie diesen Code in akademischen Veröffentlichungen verwenden, geben Sie bitte das folgende Papier an:
@INPROCEEDINGS{baumgaertner2018monitoring,
author={L. {Baumgärtner} and A. {Penning} and P. {Lampe} and B. {Richerzhagen} and R. {Steinmetz} and B. {Freisleben}},
booktitle={2018 IEEE Global Humanitarian Technology Conference (GHTC)},
title={Environmental Monitoring Using Low-Cost Hardware and Infrastructureless Wireless Communication},
year={2018},
pages={1-8},
doi={10.1109/GHTC.2018.8601883},
month={Oct},
}