Au Radio-Club de Perpignan, Xavier F8BSY donne son retour d’expérience sur la réalisation d’un relais numérique multimode MMDVM à base d’une carte STM32F446 Nucleo.
Dans la sphère radioamateur, les relais numériques MMDVM multimodes deviennent monnaie courante…. après avoir parcouru la “toile” pour connaitre la tendance en matière de réalisation, j’ai eu une préférence pour la carte de développement à base de microcontrôleur Nucleo STM32F446.
Dans cet article, je vais vous faire vivre mon retour d’expérience concernant la réalisation d’un “cœur de relais numérique” MMDVM multimode (DStar, DMR, YSF, P25) à base de Nucleo STM32F446, je précise que je me suis inspiré largement des explications et savoir faire de F5UII Christian pour la partie MMDVM et STM32, de IK1WHN pour les correctifs apportés lors de la compilation du code, et de F1PTL Bruno concernant l’installation de MMDVMHost sur un Raspberry PI3. Pour finaliser ce relais, il ne manquera qu’à se procurer le coffret, le duplexeur, ainsi que 2 Postes radios Motorala type GM360.
Au niveau matériel, le cœur du relais MMDVM est composé de 3 cartes et d’un afficheur TFT Nextion de 2,4′ : (Les liens pointent vers les sites marchand des matériels)
- 1 Raspberry pi 3 Model B + Alim + CarteSD ( 57 € sur Amazon)
- 1 carte STM32F446RE Nucléo ( 16€ sur Farnell )
- 1 carte MMDVM pour STM32 ( 55 € en Kit sur ShopChip – Fabrication F5UII )
- 1 écran TFT Nextion 2,4′ ( 20€ sur Amazon)
Il faut compter environ un budget max de 150€ pour réaliser le cœur complet du relais, il est clair que ceux qui commanderont sur AliExpress pourront gagner quelques dizaines d’euros …. mais les délais de livraison sont souvent beaucoup plus long.
Le rendu final :
I- Montage de la carte MMDVM pour STM32
Allez ! …. un bon café… et c’est parti pour la réalisation de cette carte reçue en Kit.
La carte électronique MMDVM s’installera sur la carte STM32, elle sera l’interface des postes émetteurs et récepteurs, assurant ainsi les commutations et filtrages audio.
Afin de ne pas perdre de temps, j’ai d’abord inventorié puis classé tous les composants par famille, un outil indispensable à avoir à la station est un capacimètre pour mesurer les valeurs des condensateurs, de mon coté j’utilise un LC200A moins de 40€ sur le net.
Pour assurer des soudures de précision incluant les CMS, j’utilise un fer à souder Weller WS80 avec une panne LTS de 0,4mm, puis un JBC 30S avec une panne type R-05D pour la routine.
Après 2h00 de montage, voici le résultat ci-dessous, pas de difficultés majeures car les composants sont tous standards, sauf le quartz de 12Mhz, un petit CMS TCXO HCMOS qui demande une précision dans sa mise en place.
(Avant montage) (Après montage)
II- Programmation de la carte STM32F446
A ce niveau là, il faut assembler tête-bêche la carte MMDVM avec la carte Contrôleur STM32F446, bien faire attention sur cet assemblage … le connecteur de la carte MMDVM étant plus petit, il faut bien positionner la carte le plus en avant possible, laissant visible deux connecteurs de la carte contrôleur.
La mise en place du Firmware MMDVM dans la carte contrôleur STM32 nécessite une certaine méthodologie, 10 étapes à suivre scrupuleusement ! … allez c’est parti !
1 – Récupérez le programme source “MMDVM-master.zip” sur:
https://github.com/g4klx/MMDVM
2 –Dézippez le fichier récupéré “MMDVM-master.zip” dans un répertoire
3- Renommez ce répertoire en MMDVM
4- Ouvrir le fichier de configuration “Config.h”, avec l’utilitaire Notepad++ puis valider uniquement les 5 lignes suivantes dans le fichier, correspondant respectivement à la vitesse de l’oscillateur externe, la version de la carte de filtrage, le niveau du signal mesuré, et l’ouverture du port pour connecter l’écran TFT Nextion:
#define EXTERNAL_OSC 12288000
#define ARDUINO_MODE_PINS
#define STM32F4_NUCLEO_MORPHO_HEADER
#define SEND_RSSI_DATA
#define SERIAL_REPEATER
Ici pour télécharger le fichier configuré tout fait à glisser dans le répertoire MMDVM : Config.h
5 – Récupérez l’utilitaire de compilations ici : make.zip
Dézippez le contenu (3 fichiers) dans le répertoire MMDVM
6 – Récupérez la bibliothéque ST “STM32F4XX_Lib-master.zip” sur:
https://github.com/juribeparada/STM32F4XX_Lib
7 –Dézippez ce fichier dans un répertoire
8- Renommez ce répertoire en STM32F4XX_Lib
9– Copiez ce répertoire ainsi renommé dans le répertoire MMDVM
Vous devriez avoir un répertoire MMDVM à l’identique de celui-ci
A ce niveau là, nous avons récupéré tous les fichiers qui serviront à programmer le microcontrôleur STM32, il ne manquera plus qu’à récupérer le logiciel libre de compilation pour les architectures ARM, sur le site ici :
https://launchpad.net/gcc-arm-embedded/+download
L’exécutable sous Windows s’appelle:
gcc-arm-none-eabi-5_4-2016q3-20160926-win32.exe
10- Une petite vidéo explicative pour compiler l’ensemble afin de générer le fichier mmdvm_f4.hex
Dernière étape, le transfert du fichier mmdvm_f4.hex vers la carte contrôleur STM32, pour cela il faudra télécharger et installer le logiciel du constructeur ST Micro Electronics : STSW-LINK004
Branchez la carte contrôleur STM32 sur le Port USB de l’ordinateur, puis dans le menu sélectionner:
File -> Open File -> ….. ici aller chercher le fichier mmdvm_f4.hex
Target -> Program et Verify ….. et Start sur la boite de dialogue qui apparait
Si la programmation c’est bien passé, les leds P25 – YSF – DMR – DSTAR s’allument sous forme d’un petit chenillard, la led Power restant allumée et la Led Live clignotant lentement.
Une vidéo plus démonstrative :
Je reconnais que si vous êtes arrivés à me lire jusqu’à cette partie, c’est que vous souhaitez peut-être réaliser un relais MMDVM multimode, pas de grosses difficultés majeures dans la réalisation et la mise en service de la carte MMDVM de F5UII, ainsi que pour la programmation de la carte contrôleur STM32, il faudra juste être soigneux et organisé dans le montage des composants, tout en utilisant du matériel adapté pour les souder.
III- Installation de MMDVMHost sur un Raspberry Pi 3
La dernière étape consiste à installer MMDVMHost sur un Raspberry Pi3, ainsi que la mise en route de l’afficheur TFT Nextion 2,4′, celui-ci pourra être branché directement sur le port GPIO du Raspberry Pi ou bien sur le connecteur de la carte MMDVM.
Récupérez la version de “Raspbian Stretch Lite” sur :
https://www.raspberrypi.org/downloads/raspbian/
Je passe volontairement sur l’installation de cette distribution sur une carte MicroSD à l’attention du Raspberry Pi, il existe sur la toile plusieurs tutos expliquant comment mettre en œuvre les 2 logiciels SDFormatter et Win32DiskImager.
Attention ! il faudra activer le serveur SSH une fois le Raspberry Pi en route, afin de pouvoir utiliser à distance le logiciel Putty et administrer plus facilement le Raspberry Pi, ne vous faite pas avoir, par défaut le clavier est en QWERTY, et pour faire la lettre A de Raspberry tapez sur la lettre Q.
1 – S’authentifiez:
Login as: pi
password : raspberry
2 – Activez le serveur SSH :
sudo raspi-config
Sélectionnez la ligne 5, “Interfacing Options”
Sélectionnez “P2 SSH” puis valider par YES le fonctionnement du serveur
Sélectionnez “P6 Serial” puis valider par YES le fonctionnement de la connexion série (afficheur Nextion)
Quittez ensuite raspi-config
Le serveur est activé et le Serial Port aussi !
3 – Rebootez le Raspberry :
sudo reboot
Voila ! il ne reste plus qu’à installer sur votre ordinateur le logiciel Putty afin de pouvoir administrer à distance votre Raspberry Pi
4 – Toutes les commandes à lancer les unes après les autres pour installer MMDVMHost:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
sudo apt-get install screen
cd /opt
sudo git clone https://github.com/G4KLX/MMDVMHost
cd /opt/MMDVMHost/
sudo make
5 – Configuration du Fichier MMDVM.ini
sudo nano /opt/MMDVMHost/MMDVM.ini
En rouge les principales modifications à apporter au fichier MMDVM.ini pour un fonctionnement du relais….. la configuration est orientée pour le DMR.
[General]
Callsign=Fxxxx # L’indicatif de votre relais
Id=208xxx # Le CCS7 de votre relais
Timeout=600 # Modifier le timeout sur 600 secondes
Duplex=1
# ModeHang=10
RFModeHang=10
NetModeHang=3
Display=Nextion # Déclare la présence de l’écran Nextion
#Display=None
Daemon=0
[Info]
RXFrequency=430550000 # Fréquence de réception du relais
TXFrequency=439950000 # Fréquence d’émission du relais
Power=1
Latitude=0.0 # Latitude du relais
Longitude=0.0 # Longitude du relais
Height=0
Location=Perpignan # Localisation du relais
Description=Multi-Mode Repeater
URL=www.ref66.fr # Site Web pour des infos sur le relais
[Modem]
Port=/dev/ttyACM0 # Valider cette ligne en supprimant le dièse
# Port=/dev/ttyAMA0
#Port=\\.\COM3 # Invalider cette ligne en mettant le dièse devant
TXInvert=1
RXInvert=0
PTTInvert=0
TXDelay=100
RXOffset=0
TXOffset=0
DMRDelay=0
RXLevel=50 # Valeur par défaut du niveau de réception, à modifier plus tard avec MMDVMCal
TXLevel=50 # Valeur par défaut du niveau d’émission, à modifier plus tard avec MMDVMCal
RXDCOffset=0
TXDCOffset=0
RFLevel=100
# CWIdTXLevel=50
# D-StarTXLevel=50
# DMRTXLevel=50
# YSFTXLevel=50
# P25TXLevel=50
# NXDNTXLevel=50
RSSIMappingFile=RSSI.dat
Trace=0
Debug=0
[DMR Network]
Enable=1
Address=217.182.129.131 # Adresse IP du MASTER 2082 Français
Port=62031
Jitter=360
# Local=62032
Password=passw0rd # Mot de Passe du serveur, Attention chiffre “zéro” dans passw0rd
# Options=
Slot1=1
Slot2=1
# ModeHang=3
Debug=0
[Nextion]
#Port=modem # Fonctionnement de l’afficheur branché sur la Carte MMDVM
Port=/dev/ttyAMA0 # Fonctionnement de l’afficheur branché sur le GPIO du Raspberry Pi
#Port=/dev/ttyUSB0 # Fonctionnement de l’afficheur branché sur le port USB du Raspberry Pi
Brightness=50
DisplayClock=1
UTC=0
# Screen Layout: 0=G4KLX 2=ON7LDS
#ScreenLayout=2
IdleBrightness=20
Le branchement de l’afficheur est fonction de la configuration du fichier MMDVM.ini, la rubrique [Nexion] permet de configurer le Port sur lequel l’afficheur sera branché.
Ci-dessous le branchement sur le GPIO du Raspberry Pi.
Ensuite, inutile de refaire le monde, le document de Bruno F1PTL est très explicite, il suffit juste de suivre sa méthodologie de la Page 11 à la Page 17 !
Cela permettra à MMDVMHost de démarrer automatiquement lors de la mise en route du Raspberry Pi.
Les Rubriques à appliquer :
Modification du fichier CMDLINE.TXT
Modification du fichier CONFIG.TXT
Création du SERVICE
Création du TIMER
Prise en compte des nouveaux SERVICES
IV – Conclusion
Je n’ai pas abordé volontairement le coté réglage des tranceivers ni l’utilisation de MMDVMCal, car ce n’était pas l’objectif premier, la réalisation d’un relais MMDVM à base de Nucleo STM32 est un projet tout à fait intéressant que pourrait entreprendre une équipe d’un Radio-Club désireuse de se lancer dans l’aventure des modes numériques, ….. mêlant pratique du fer à souder, apprentissage et approche de linux, à travers ses lignes de commandes, ses compilations de code,… cette réalisation forte en matière de nouvelle technologie serait l’amorce pour un Radio-Club d’une approche vers la promotion du radioamateurisme, sujet vaste pouvant intéresser les jeunes à venir rejoindre nos rangs.
Source: F8BSY – F6KBR