RRFTracker_Spotnik
Suivi temps réel de l'activité du réseau RRF (Réseau des Répéteurs Francophones) pour Spotnik. Une video du fonctionnement est visible sur Youtube ;)
Présentation
Cette version du RRFTracker et une évolution d'un premier projet réalisé mi novembre 2018 à partir d'un Nodemcu ESP8266 et d'un écran LCD 16x2.
Il permet de suivre en temps réel l'activité du réseau RRF (Réseau des Répéteurs Francophones), mais également du FON (French Open Networks), en utilisant un Raspberry Pi 3 ou un Orange Pi Zero et un écran OLED type SH1106 ou SSD1306 piloté par I2C. Ces écrans ont un QSJ de moins de 5€. C'était une des contraintes de mon cahier des charges. À noter que vous pouvez les trouver à moins de 3€ sur des boutiques chinoises, si vous acceptez de patienter 30 à 60 jours pour la livraison.
Pour le moment, cette version du RRFTracker prend en charge 3 tailles d'écrans OLED et 2 résolutions.
- 1.30" en 128 x 64
- 0.96" en 128 x 64
- 0.91" en 128 x 32
Ce dispositif peut donc être associé sans (trop de) difficulté à un Spotnik Gamma, Delta, etc. afin de profiter d'un minimum de remontée d'informations, à l'image des Hotspots MMDVM type ZUMspot, Jumbo SPOT, etc. si precieux aux porteurs de casques de chantier... j'ai nommé les DMRistes ;)
En complément, à noter l'existence du projet Spotnik2hmi, porté par F8ASB (Juan), F5SWB (Dimitri) et F0DEI (Toufik) et basé sur l'utilisation d'un écran type Nextion. Du fait des caractéristiques beaucoup plus évoluées de ce type d'écrans tactiles, ce projet offre plus de possibilités, notamment en terme d'interactivité (changement de salon, etc.). Je ne peux que vous encourager à le tester, si le QSJ d'un écran Nextion ne vous fait pas peur.
Principe de fonctionnement
Ecran 128 x 32
Au repos, si aucune station n'est en émission, le RRFTracker affichera,
- l'indicatif des 2 derniers noeuds étant passés en émission,
- l'heure du dernier passage en émission.
Si un QSO est en cours, le RRFTracker affichera,
- l'indicatif des 2 derniers noeuds étant passés en émission,
- l'indicatif du noeud en cours d'émission.
Enfin, en haut à droite de l'écran, le RRFTraker affiche alternativement l'heure courante et le salon.
Ecran 128 x 64
En complément des informations visibles sur un écran 128 x 32, si votre écran dispose d'une résolution 128 x 64 pixels, des informations supplémentaires seront disponibles.
Sur la ligne centrale, au milieu de l'écran, on dispose,
- du nombre de passages en émission sur la journée (depuis 00h00),
- du temps depuis lequel fonctionne le RRFTracker (uptime),
- du nombre de passages en émission depuis l'allumage du RRFTracker,
- de l'indicatif du noeud le plus actif avec le nombre de passages en émission,
- du nombre de noeuds actifs.
En bas de l'écran, on retrouve l'histogramme du trafic dans la journée, heure par heure.
Alternativement, si aucune station n'est en émission, le RRFTracker affichera différents écrans complémentaires:
- l'historique des 5 derniers noeuds étant passés en émission ainsi que l'horodatage,
- l'historique des 5 noeuds les plus actifs ainsi que le nombre de passages en émission,
- l'état du Spotnik: architecture, uptime, charge et fréquence du CPU, température, adresse IP, occupation mémoire et disque.
Enfin, si une station passe en émission, en lieu et place de l'histogramme du trafic, une jauge affichant le temps de parole s'affichera, par tranche de 30 secondes.
À noter qu'à minuit, le nombre de passages en émission sur la journée, l'historique des 5 noeuds les plus actifs, ainsi que l'histogramme sont réinitialisés (à zéro).
Post installation sur Spotnik 1.9
Installation de paquets complémentaires
En partant de la version 1.9 de Spotnik, commencez par cloner ce projet dans le répertoire /opt. Donc, depuis une connexion SSH, lancez les commandes suivantes:
cd /opt
Puis,
git clone https://github.com/armel/RRFTracker_Spotnik.git
Il faut également procéder à l'installation de quelques paquets complémentaires. Toujours depuis une connexion SSH, lancez les commandes suivantes:
sudo apt-get install i2c-tools libi2c-dev python-smbus python-pip python-dev python-imaging
sudo apt-get install libfreetype6-dev libjpeg-dev build-essential
sudo pip install --upgrade setuptools
sudo -H pip install --upgrade luma.oled
Enfin, si ce n'est pas déjà fait, il reste à activer le support du protocole I2C afin de pouvoir dialoguer avec l'écran OLED. Ce sera l'étape la plus compliquée...
Activation du support I2C sur Raspberry Pi
Utilisez l'utilitaire raspi-config
. Une fois lancé,
- option 5 - Interfacing Options
- sous option P5 - I2C
- répondez oui ;)
Activation du support I2C sur Orange Pi Zero
C'est un peu plus compliqué ;) Vous allez devoir éditer le fichier /boot/script.fex
. Ligne 147, changer la ligne twi_used = 0
par twi_used = 1
.
Puis exécutez la commande fex2bin /boot/script.fex /boot/script.bin
et enfin rebootez...
Vérification
Pour finir et vérifier que tout est pret, une fois l'écran connecté (voir schéma), exécutez la commande suivante:
i2cdetect -y 0
Cette commande devrait retourner quelque chose comme:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Votre écran est bien raccordé. Et il utilise le port 0 et l'adresse 3c. Si la commande n'a pas fonctionné, essayez:
i2cdetect -y 1
Lancement
Le script RRFTracker.py
peut recevoir des arguments au lancement afin d'affiner les paramètres. Par exemple,
root@spotnik:/opt/RRFTracker_Spotnik# python RRFTracker.py -h
Usage: RRFTracker.py [options ...]
--help this help
I2C settings:
--i2c-port set i2c port (default = 0)
--i2c-address set i2c address (default = 0x3C)
Display settings:
--display set display (default = sh1106, choose between [sh1106, ssd1306])
--display-width set display width (default = 128)
--display-height set display height (default = 64)
Room settings:
--room ROOM set room (default = RRF, choose between [RRF, TEC, FON])
WGS84 settings:
--latitude set latitude (default=48.8483808, format WGS84)
--longitude set longitude (default=2.2704347, format WGS84)
Log settings:
--log enable log
88 & 73 from F4HWN Armel
Par défaut, sans argument, le RRFTracker va démarrer avec les paramètres suivants,
- i2c port = 0
- i2c address = 0x3C
- display = sh1106
- display width = 128
- display height = 64
- room = RRF
- latitude = 48.8483808
- longitude = 2.2704347
À noter que latitude et longitude sont à paramétrer au format WGS84 (degrés décimaux).
Cela revient à lancer le RRFTracker avec les arguments suivants,
python /opt/RRFTracker_Spotnik/RRFTracker.py --i2c-port 0 --i2c-address 0x3C --display sh1106 --display-width 128 --display-height 64 --room RRF --latitude 48.8483808 --longitude 2.2704347
Il est donc possible de modifier les paramètres, notamment en fonction de ce que vous retournera la commande i2cdetect
décrite ci dessus.
Par exemple, avec les paramètres suivants,
- i2c port = 1
- i2c address = 0x3C
- display = ssd1306
- display width = 128
- display height = 64
- room = TEC
Il vous suffira de lancer le RRFTracker avec les arguments suivants,
python /opt/RRFTracker_Spotnik/RRFTracker.py --i2c-port 1 --display ssd1306 --room TEC
Notez qu'il n'est pas nécessaire de préciser l'i2c-address, le display-width et display-height puisque ce sont déjà les valeurs par défaut. Idem pour la latitude et la longitude, qui par défaut sont les miennes...
Et si vous voulez le laisser tourner en tache de fond, utilisez la commande nohup
et l'esperluette ;) Par exemple,
nohup python /opt/RRFTracker_Spotnik/RRFTracker.py --i2c-port 1 --display ssd1306 --room TEC &
Et voilà ;)
Liste des composants
Voici la liste des composants dont vous aurez besoin:
- 1 Raspberry Pi 3 ou 1 Orange Pi Zero
- 1 écran OLED 128 x 64 (1.30" ou 0.96") ou 128 x 32 (0.91"), type SH1106 ou SSD1306
- 4 cables Dupont femelle / femelle
Il est possible d'adapter ce projet à d'autres platines et d'autres écrans. Ne pas hésitez à me contacter pour avis si vous le souhaitez ;)