Le logiciel Tracker APRS LoRa de CD2RXU est un fork de celui de OE5BPA auquel il a rajouté des fonctionnalités d'autres forks. Il apporte plusieurs améliorations par rapport au logiciel d'origine, notamment : - un menu permettant de choisir entre plusieurs fonctions. - le choix entre différents indicatifs (et icones, par ex. TK5EP-9 voiture, TK5EP-7 piéton, etc...) - la capacité de visualiser la réception d'autres Trackers. - une diminution de la consommation par abaissement de la vitesse du CPU. - la compression des données transmises pour diminuer le temps de transmission d'où diminution de la consommation et du risque de perturbation. - réception de la météo locale - stockage/lecture/suppression des derniers messages reçus. - connexion Bluetooth via TNC et APRSDroid - signalisation par LED de messages reçus et passage en émission - notifications sonores par buzzer externe YL44 - module météo avec BME280 Pour profiter de certaines fonctionnalités, il faut utiliser également son logiciel iGate. Pour plus d'informations sur le logiciel d'origine, le principe de l'APRS et l'utilisation du logiciel Visual Studio Code, consulter mon article OE5BPA LoRa APRS |
Acronymes :
APRS : Automatic Packet Reporting System. Par déformation Automatic Positioning Reporting System
APRS-IS : Automatic Packet Reporting System-Internet Service, réseau d'interconnexion APRS au travers d'Internet.
LoRa : Long Range. Modulation à étalement de spectre de type Chirp spread spectrum
MQTT : Message Queuing Telemetry Transport est un protocole de messagerie publish-subscribe basé sur le protocole TCP/IP
OLED : Organic Light-Emitting Diode. Diode électroluminescente organique utilisée dans les afficheurs.
VSC : Visual Studio Code, éditeur de code.
WAN : Wide Access Network. Réseau étendu, en général désigne l'Internet.
Principe :
Les "tracker" sont utilisés pour transmettre leur position géographique en temps réel via radio en modulation LoRa sur la fréquence de 433,775 MHz.
Ils sont construits à l'aide de modules ESP32 LoRa qui comportent un émetteur/récepteur 433 MHz, un récepteur GPS, un module Wifi, un microcontrôleur et un afficheur OLED. Ils sont généralement installés à bord de véhicules ou en mode piéton.
Les "iGate" sont des systèmes qui reçoivent les trames envoyées sur 433,775 MHz par les Tracker et les injectent dans le réseau APRS via un accès Internet.
Ils sont construits avec des modules ESP32 LoRa presque identiques au Tracker, mais ne comportant pas de récepteur GPS qui n'est pas utile. Ils sont installés en fixe sur des points-hauts, ou en zone urbaine pour assurer une couverture la plus grande possible.
Les positions des Tracker et iGate sont alors visualisables par la communauté sur des cartes à l'aide d'un navigateur sur ordinateur ou PDA connecté au site aprs.fi ou aprs.radioamateur.tk par exemple.
Matériels utilisés :
Pour le Tracker, le module LILYGO TTGO T-beam v1.1 bande 433 MHz
Il embarque un processeur ESP32, un GPS NEO-6M, un afficheur OLED de 0,96 pouces, une émetteur/récepteur Lora, le WiFi et Bluetooth.
Pour l'iGate, on peut se contenter d'un module LILYGO TTGO T3 v1.1.6
Il embarque les mêmes choses que le T-beam, sauf le GPS qui n'est pas vraiment nécessaire pour une passerelle installée en fixe. Il est un peu moins cher, même si la tendance est à une réduction de la différence de prix. On pourra même choisir un modèle sans OLED puisqu'étant installé sur un site distant, il n'a pas d'utilité.
Préparation à l'installation :
Avant d'installer quoi que ce soit, s'assurer que le module fonctionne avec le logiciel installé lors de la livraison. (Affichage, GPS, etc...)
Cette vérification permet de lever un doute en cas de problème à venir et d'éviter de perdre du temps pendant la suite des opérations.
Relier le module ESP32 à l'ordinateur via un port USB.
Le gestionnaire de périphériques devrait reconnaître le port COM utilisé. Si ce n'est pas le cas, il faudra probablement installer le bon pilote USB en fonction des modules et du circuit d'interface utilisés. J'ai dû installer le pilote CH9102.
Les logiciels Tracker et iGate sont prévus pour être installés à l'aide de l'éditeur de code Visual Studio Code (VSC) et de l'extension PlatformIO.
Il faut donc préalablement avoir installé ces logiciels.
Cet article n'a pas pour but d'expliquer comment installer ces logiciels. Des tutos sont disponibles ailleurs.
Installation :
Le logiciel du Tracker est disponible ici :
https://github.com/richonguzman/LoRa_APRS_Tracker
Le logiciel de l'iGate est disponible ici :
https://github.com/richonguzman/LoRa_APRS_iGate
Télécharger le logiciel tracker :
Il faut ensuite décompacter l'archive ZIP et la placer à un endroit sur le disque dur de l'ordinateur.
Avec VSC il faut alors faire "Fichiers" + "Ouvrir un dossier" et choisir le dossier adéquat pour charger le logiciel voulu.
Configuration :
(Version du 10.08.2023)
Il faut commencer par éditer le fichier de configuration qui est dans le répertoire : /data/tracker_config.json
La partie concernant les indicatifs est dans le tableau "Beacons".
Chaque objet comporte une clé "callsign" = indicatif avec plusieurs autres clés qui sont les paramètres s'y reportant.
Ces paramètres permettent d'adapter l'envoi de la balise en fonction du type de balise (voiture, piéton, vélo).
Le clé "symbol" est à adapter en fonction du type de balise. ( "[" = piéton, ">" = voiture, "b" = vélo )
La partie smart beacon, permet d'ajuster automatiquement la fréquence d'envoi de la balise en fonction de la vitesse de déplacement du tracker.
Plus le véhicule va vite, plus la fréquence de transmission augmente.
Le premier objet indicatif doit être celui par défaut qui sera chargé au démarrage. (en attendant que l'auteur ajoute une option de mémorisation du choix de l'indicatif)
beacons | callsign | NOCALL-10 | Indicatif avec SSID de la balise, ex: TK5EP-9 |
symbol | > | Symbole de la balise. > = , voir tableau | |
overlay | / | Overlay pour les icônes, en relation avec "symbol" | |
comment | texte | Commentaire à envoyer, ne mettre que ce qui est nécessaire car cela rallonge les trames | |
smart_beacon | active | true | Activation du mode smart beacon qui permet d'envoyer des balises suivant le déplacement du tracker |
slowrate | 120 | en s, période lente | |
slowSpeed | 10 | en km/h | |
fastRate | 60 | en s, période rapide | |
fastSpeed | 70 | en km/h | |
minTXdist | 100 | en m, distance min. parcourue | |
minDeltaBeacon | 12 | en s, période min. d'émission de la balise. Aucune balise ne sera envoyée sous ce délai. | |
turnMinDeg | 10 | En degrés, changement de direction minimum | |
turnSlope | 80 | Avec turnMinDeg, détermine quand la balise doit être envoyée en cas de changement de direction. |
Les objets suivants "lora" et "other" sont relatifs à l'émission LoRa et aux paramètres généraux des balises.
Lora | frequency | 433775000 | Fréquence en kHz |
spreadingFactor | 12 | Spreading factor, facteur d'étalement | |
signalBandwidth | 125000 | Largeur de bande | |
codingRate4 | 5 | Nombre de bits transmis pour la correction d'erreur | |
power | 20 | Puissance en dBm. 20 dBm = 100 mW | |
other | showSymbolOnScreen | true | Affiche le symbole paramétré du tracker sur l'afficheur OLED en haut à droite |
sentCommentAfterXBeacons | 30 | Envoi du commentaire seulement après x balises | |
displayEcoMode | false | Activation de l'économiseur de batterie (arrêt écran) | |
displayTimeout | 30 | Délai en s avant extinction de l'écran | |
path | WIDE1-1 | Nombre de bonds que peut faire une balise, limite le nombre de digipeating | |
noneSmartBeaconrate | 15 | Délai de la balise par défaut si smart beacon désactivé | |
rememberStationTime | 30 | Délai de mémorisation des stations entendues (dans LISTENING> display) | |
maxDistanceToTracker | 30 | Non utilisé | |
standingUpdateTime | 15 | En min, intervalle de transmission de la balise sans mouvement du tracker | |
sendAltitude | true | true = activé. Envoi de l'altitude. | |
sendBatteryInfo | false | Envoi de l'envoi batterie dans le commentaire de la balise | |
bluetooth | true | active la fonction bluetooth et la connexion KISS ou TNC pour une communication avec un logiciel externe | |
disableGPS | false | désactive le GPS du tracker, à utiliser dans le cas d'une utilisation d'un logiciel externe comme APRSdroid | |
ptt_trigger | active | false | true = activé, false = désactivé pour commutation d'un PA externe par exemple |
io_pin | 4 | pin du module utilisée pour le PTT | |
preDelay | 0 | délai en ms avant PTT | |
postDelay | 0 | délai de retombée du PTT | |
reverse | false | PTT inversée | |
bme | active | false | activation d'un module BME280. false=non, true = oui |
sendtelemetry | false | envoi de la télémétrie | |
heightcorrection | 0 | correction d'altitude en m | |
notification | ledTX | false | connexion d'une LED externe pour indication TX |
ledTxPin | 13 | pin du module pour la LED TX | |
ledMessage | false | connexion d'une LED externe pour indication réception message | |
ledMessagePin | 12 | pin du module pour la LED RX | |
buzzerActive | false | connexion d'un buzzer externe type YL44 | |
buzzerPinTone | 33 | pin du module pour le buzzer | |
buzzerPinVcc | 25 | pin d'alimentation du buzzer | |
bootUpBeep | false | beep au démarrage ? | |
txBeep | false | beep lors émission ? | |
messageRxBeep | false | beep lors réception message LoRa? | |
stationBeep | false | beep lors réception d'une station LoRa (tracker ou iGate) | |
lowBatteryBeep | false | beep si batterie faible ? |
Une fois les paramètres modifiés à convenance, il faut compiler le logiciel.
- Choisir l'environnement en fonction du modèle du module TTGO en modifiant la ligne [1] (ttgo-t-beam-v1 pour les modules avec chip AXP192 ou v2 pour chip AXP2101)
- Choisir le port COM utilisé par le module TTGO [2]
- Lancer la compilation et le transfert avec [3]
Cette opération peut prendre du temps la 1ère fois qu'elle est exécutée, les librairies absentes étant téléchargées.
Si tout se passe bien, le message [4] devrait afficher SUCCESS dans la fenêtre terminal.
Il peut arriver que l'éditeur VSC ne détecte pas correctement le port série sur lequel est relié le module.
Dans ce cas, il peut être nécessaire d'ajouter un paramètre au fichier de configuration platformio.ini et de relancer la compilation.
Il reste enfin à transférer l'image du système de fichiers (filesystem) qui contient notamment les paramètres.
Si cette opération n'est pas effectuée, l'écran du tracker reste figé.
Problèmes possibles :
- Pas de communication avec le module : Changer le câble USB et vérifier si le port USB est bien détecté (voir ci-dessus)
On effectuera l'installation et le transfert du logiciel comme avec VSC. Il faudra ensuite réinstaller le logiciel Tracker.
- Malgré un transfert effectué avec succès, l'écran reste noir au démarrage du module : vérifier le câblage de l'écran OLed et effectuer une RAZ de la mémoire flash et refaire un chargement du logiciel et du filesystem.
- A la première utilisation, le GPS du Tracker peut prendre très longtemps pour faire un premier point GPS (jusqu'à 20 min). Si aucun fix n'est possible, il peut s'agir d'un problème consécutif à l'installation du logiciel précédemment installé qui bloque le dialogue avec le module GPS. Il faut alors faire une RAZ du GPS en suivant les informations de LilyGo :
https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series/tree/master/firmware/NMEA_Reset
Il semblerait que les dernières version du logiciel détecte ce manque de dialogue et affiche un message d'erreur demandant à effectuer une RAZ.
Utilisation :
Au démarrage, le logiciel attend que le GPS ait effectué un point GPS.
Si le voyant rouge en bas à droite du module clignote, c'est qu'au moins 3 satellites sont reçus et que l'heure a bien été détectée.
Pour que le module puisse envoyer la 1ère balise, il faut recevoir au moins 4 satellites.
Si ce premier point GPS ne s'effectue pas, il peut s'agir d'un problème d'antenne, d'un manque de dégagement ou d'un blocage du dialogue avec le module GPS.
Commencer par aller sur un terrain bien dégagé et attendre jusqu'à 20 min. Au delà, il faudra vérifier l'antenne et éventuellement effectué une RAZ comme indiqué dans mon article sur le tracker de OE5BPA.
Menu :
Le bouton central permet de naviguer entre plusieurs menus :
Menu 0
- 1 appui court : force la transmission de la balise APRS
- 1 appui long : choix de l'indicatif (suivant programmation du fichier de configuration)
- 2 appuis courts : passage au menu 1
Menu 1
- 1 appui court : visualise la mémoire des messages reçus
- 1 appui long : efface la mémoire des messages reçus
- 2 appuis courts : passage au menu 2
Menu 2
- 1 appui court : envoi une demande de donnée météo https://openweathermap.org/ (s'affiche au bout de quelques sec.)
- 1 appui long : Ecoute des autres trackers avec affichage distances et azimuts
- 2 appuis courts : passage au menu 3
Menu 3
- 1 appui court : rien pour le moment.
- 1 appui long : Activation du mode Ecomode (extinction écran)
- 2 appuis courts : retour en mode tracker
La fréquence d'envoi de la balise dépend de la vitesse de déplacement du module. Au delà d'un certain seuil, la fréquence augmente.
Ces paramètres se modifient dans la section "smartbeacon" du fichier de configuration.
A l'aide du menu, on peut choisir un indicatif différent et adapter les paramètres smartbeacon. Par exemple pour une voiture, un piéton avec des SSID différents ou un indicatif différent.
Le menu 2 permet d'envoyer une demande de rapport météo. Le module reçoit en retour un bulletin météo succinct.
Pour cette fonction, Il faut que l'iGate utilisé soit celui développé par CD2RXU.
Ecran principal :
Ligne 1 : L'indicatif et le symbole utilisés
Ligne 2 : Date et heure venant du récepteur GPS
Ligne 3 : Alternativement, coordonnées géographiques et QRA locator + nombre de satellites reçus
Ligne 4 : Altitude, vitesse et cap.
Ligne 5 : Dernière station APRS reçue
Ligne 6 : Etat de la charge de la batterie
Bluetooth :
Le tracker peut être utilisé en conjonction avec le logiciel APRSDroid (Android uniquement) via bluetooth et le protocole KISS.
Il sert alors de TNC et assure la connexion entre APRSDroid et le réseau APRS et remplace la connexion 3G.
Il transmet la position du GPS du PDA via le modem LoRa du tracker sur le réseau APRS-IS.
Dans l'autre sens, le tracker envoie les balises reçues en LoRa vers APRSDroid qui les affiche sur sa carte.
Il faut que le logiciel ait été compilé avec le paramètre "bluetooth : true"
Si on veut éviter que pendant l'utilisation d'APRSDroid le tracker envoie sa propre position, il faut mettre le paramètre "disableGPS : true".
Il faut ensuite appairer en Bluetooth le tracker au PDA.
Ensuite dans les préférences d'APRSDroid, il faut modifier les paramètres suivants:
- "Préférences de connexion / Protocole de connexion " : TNC(texte brut TNC2)
- "Préférences de connexion / Type de connexion" : Bluetooth SPP
- "Préférences de connexion / Module TNC bluetooth" : choisir le nom de votre tracker "LoRa Tracker xxxx" parmi les appareils appairés.
- "Paramètres de localisation / Source de la localisation " choisir le mode voulu. Smartbeaconing est le plus adapté en APRS. Manual pour faire un test sans réception GPS.
Démarrer la localisation sur APRSDroid.
Si la connexion est bien établie, le tracker devrait afficher l'icône bluetooth alternativement avec l'icône APRS en haut à droite sur l'afficheur OLED du tracker.
Faire un essai de transmission en cliquant sur "Envoyer sa position".
Vérifier dans le journal si tout va bien.
A noter que pour un rendement correct, il est conseillé d'utiliser des antennes plus performantes que celles fournies avec le module, aussi bien pour le réception GPS que pour la réception 433 MHz. Le rendement de ces antennes est mauvais du fait de leurs tailles.
Mes essais effectués avec le même module pour la réception des ballons sonde ont montré que le module rayonnait pas mal et perturbait la réception et qu'il fallait éloigner les antennes du module.
Liens :
Visual Studio Code
Pilote pour chip CH9102
Carte des iGate LoRa
aprs.fi
aprs.radioamateur.tk
Symboles des icones APRS
GPS reset ou LiLyGo