Ce projet fournit un micrologiciel de modem pour les cartes de microcontrôleur avec un module radio compatible RF95 et une interface série telle que le périphérique Adafruit Feather M0 LORA ou les modules Heltec Oled Lora 32. Sur diverses cartes basées sur ESP32, des fonctionnalités facultatives telles que l'affichage d'état OLED, le GPS, la prise en charge BLE ou WiFi peuvent être activés.
La configuration par défaut actuelle est destinée à un périphérique avec 868,1 MHz. Cela peut être modifié dans src/modem.h avec la ligne suivante: #define RF95_FREQ 868.1
Les conseils suivants sont pris en charge:
Le moyen recommandé de construire et d'installer le firmware radio est d'avoir une installation de travail de plateforme (http://platformrio.org/) sur votre système.
IMPORTANT EDIT platformio.ini pour ajouter votre plate-forme cible et configurer les broches radio dans les drapeaux de construction!
Installez sur votre appareil à l'aide de pio run -t upload -e heltec_wifi_lora_32_ble
Activer éventuellement la prise en charge de l'affichage: pio run -t upload -e heltec_wifi_lora_32_display_ble
Actuellement, n'importe qui peut se connecter au service BLE, tout est en texte clair. Une caractéristique est publiée pour l'envoi de commandes et une est là pour rendre la sortie disponible via des notifications.
Toutes les commandes envoyées via BLE doivent être résiliées avec un n . Le mode de fonctionnement par défaut est tout divise en morceaux de 20 octets, qui - selon les spécifications BLE - est la taille maximale des paquets. Sur l'iPhone 8 et 11, nous avons également pu envoyer et recevoir des paquets BLE beaucoup plus grands (> 100 bytes). Par conséquent, on peut activer le mode Ble Funky Ble-Frame via AT+BFB=1 . La commande est reconnue même sans suivre n et rend également n facultatif. Ceci est particulièrement utile car certains logiciels de débogage BLE tels que LightBlue Explorer n'envoient pas de retours de transport ou de flux de ligne à la fin d'une opération d'écriture.
Si l'un des profils WiFi est installé sur un ESP MCU compatible, l'appareil peut servir de point d'accès. Les informations d'identification sont configurées dans platformio.ini et sont par défaut définies sur: WIFI_SSID="rf95modem" et WIFI_PSK="rf95modemwifi" Ce point d'accès accepte jusqu'à 4 clients selon EspressIF SDK et par défaut a l'IP 192.168.4.1 .
Il existe deux façons de communiquer avec le modem:
Le RF95Modem répond aux paquets de diffusion UDP au port 1666 . Pour recevoir la sortie, un écouteur UDP simple est fourni ( extras/udp_receiver.py ). Pour l'envoi de commandes au modem netcat est suffisant, par exemple echo "at+tx=414141" | ncat -u 192.168.4.255 1666
Connectez-vous simplement à 192.168.4.1 sur le port 1666 à l'aide de TCP et utilisez-le comme une connexion série, par exemple ncat 192.168.4.1 1666 .
Une seule connexion à la fois est prise en charge!
Certains appareils tels que le faisceau T TTGOS comprennent également une puce GPS. Cela peut également être interrogé via le micrologiciel du modem via la commande AT+GPS . Obtenir un verrou initial pour votre position peut prendre plusieurs minutes en fonction de votre atenna, de votre position et de la puce GPS sur l'appareil. Comme cela augmente également considérablement la consommation d'énergie (~ 50 mA), on peut le désactiver temporairement via AT+GPS=0 .
La vitesse de série par défaut est définie sur 115200 ( src/main.cpp Line 17 ).
Liste des commandes:
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.
Pour obtenir la configuration actuelle que l'on peut utiliser AT+INFO
> 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
À partir de cette sortie, vous pouvez voir quelles fonctionnalités sont compilées dans le firmware et quelle est sa version. La configuration du modem actuel et la fréquence sélectionnée sont également affichées.
Pour modifier les fréquences, peut utiliser la commande AT+FREQ .
> AT+FREQ=868.20
+FREQ: 868.20
Attention: tout numéro de flotteur peut être ajouté ici, la valeur est directement transmise à l'émetteur-récepteur LORA!
La modification du mode moderne préconfiguré est tout aussi simple:
> AT+MODE=2
+OK
AT+TX=414141 envoie un paquet avec AAA en tant que contenu. La taille maximale des paquets peut varier en fonction de la puce radio.
AT+RX=1 Activer l'écoute de réception, la valeur par défaut est activée.
Les données entrantes sont automatiquement écrites dans le port série: +RX 3,414141,-15,8 - Un cadre avec "AAA" car la charge utile a été reçue avec RSSI de -15 et SNR de 8.
Si le GPS est activé ( AT+GPS=1 ) et que le firmware s'exécute sur un périphérique compatible GPS tel que le faisceau T TTGO, on peut facilement interroger l'emplacement et l'heure actuels. Sans un verrouillage GPS de l'oppoer, toutes les valeurs renvoyées sont définies sur zéro.
> 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
Il existe quelques bibliothèques de programmation tierces pour faciliter l'intégration de RF95Modem.
Si vous utilisez ce code dans des publications académiques, veuillez citer le document suivant:
@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},
}