Intro
Après les ressources mis en ligne pour monter son relais numérique full duplex MMDVM à base d’Arduino et de Nucleo STM32F4, voici venant le temps de vous expliquer comment monter un point d’accès (Hotspot) MMDVM “fait maison” à base de quelques éléments simples :
- Une carte “STM32Duino” à base de CPU STM32F103 , que l’on va programmer avec MMDVM (firmware)
- Une platine RF émetteur / récepteur UHF RF7021SE (ADF7021) fournissant quelques milliwatts HF
- un simple circuit PCB qui permet de réaliser l’interconnexion du STM32F103 et de la partie RF
- et toujours le Raspberry Pi (pour héberger MMDVMHost).
- Pour les besoins du chargement du firmware, un adaptateur USB Série TTL
Cet article a pour but de vous guider étape par étape, pour vous permettre de réaliser le montage de la partie physique puis de la configuration logicielle. Nous allons compléter l’installation avec un logiciel conviviale de gestion de connexion réseau Wifi (RaspAp).
Synoptique MMDVM HotSpot
La carte d’interface
Cette carte est un PCB qui a pour objectif de réaliser simplement les liaisons entre le microcontrôleur STM32F103 et l’émetteur UHF ADF7021. De façon accessoire, il y a été implanté des LED pour permettre d’indiquer le fonctionnement (Mode actif, émission…) et autres connecteurs pour éventuellement ajouter un écran . Cela n’est pas essentiel pour le fonctionnement. Je n’ai donc personnellement rien soudé sur la carte sauf le connecteur P4 qui permettra de charger le firmware (signaux HOST_RX et HOST_TX). Je n’ai que mis en place les deux modules (STM32 et ADF7021).
Toutes les ressources pour réaliser ce PCB sont disponibles sur le GitHub de DB4PLE (Pour logiciel Kicad). Vous pouvez également le télécharger directement ici.
Remplacement de l’oscillateur sur ADF7021
Vous pourrez vous procurez la platine 433 Mhz ADF7021 par exemple sur aliexpress.
Sur la platine ADF7021, nous devons remplacer le TCXO en place par une autre modèle dont la fréquence est 14.7456 MHz. Vous trouverez ce TCXO aux mêmes dimensions que l’original (3.2 mm x 2.5 mm) sous la référence ECS-TXO-3225-147.4-TR (Disponible chez Mouser par exemple).
Cette opération est délicate mais peut se réaliser avec un fer à souder équipé d’une panne fine, et une pincette. De la patience et précision vous aideront…
Compilation et chargement du firmware MMDVM
C’est la platine STM32F103 qui va recevoir le firmware. L’installation doit pouvoir se réaliser avec Windows, mais quelques complications subits pour l’installation des pilotes, je vous propose de réaliser la compilation et le chargement du firmware depuis votre Raspberry Pi. Mettez ce dernier sous-tension, raccordez-le au réseau (RJ45 dans un premier temps)
Le firmware à charger est MMDVM HS qui est dédié au HotSpot
- Lien de téléchargement de la dernière version sur GitHub
- Backup local MMDVM_HS 2017-08-27 2beb3d7.zip
Nous chargeons à partir de la console ouverte à distance sur le Raspberry Pi (j’utilise Putty.exe comme expliqué sur Raspbian France).
Connectez-vous à votre Raspberry Pi.
Téléchargement de MMDVM HS
Tout d’abord, installons quelques prérequis.
- Une mise à jour des ressources d’installation
sudo apt-get update
Get:1 http://mirrordirector.raspbian.org jessie InRelease [14.9 kB] Get:2 http://archive.raspberrypi.org jessie InRelease [22.9 kB] Get:3 http://mirrordirector.raspbian.org jessie/main armhf Packages [9,535 kB] ... ... Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en Fetched 9,702 kB in 1min 24s (115 kB/s) Reading package lists... Done
- Et installation de modules
sudo apt-get install gcc-arm-none-eabi gdb-arm-none-eabi libstdc++-arm-none-eabi-newlib libnewlib-arm-none-eabi
Confirmer par Yes
Reading package lists... Done Building dependency tree Reading state information... Done gcc-arm-none-eabi is already the newest version. libnewlib-arm-none-eabi is already the newest version. libnewlib-arm-none-eabi set to manually installed. libstdc++-arm-none-eabi-newlib is already the newest version. libstdc++-arm-none-eabi-newlib set to manually installed. The following NEW packages will be installed: gdb-arm-none-eabi 0 upgraded, 1 newly installed, 0 to remove and 84 not upgraded. Need to get 1,621 kB of archives. After this operation, 5,075 kB of additional disk space will be used. Do you want to continue? [Y/n] Get:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main gdb-arm-none-eabi armhf 7.7.1+dfsg-3+6 [1,621 kB] Fetched 1,621 kB in 20s (80.7 kB/s) Selecting previously unselected package gdb-arm-none-eabi. (Reading database ... 34460 files and directories currently installed.) Preparing to unpack .../gdb-arm-none-eabi_7.7.1+dfsg-3+6_armhf.deb ... Unpacking gdb-arm-none-eabi (7.7.1+dfsg-3+6) ... Processing triggers for man-db (2.7.0.2-5) ... Setting up gdb-arm-none-eabi (7.7.1+dfsg-3+6) ...
- Et installation de git pour télécharger directement les sources GitHub
sudo apt install git
- Dans le répertoire /opt
cd /opt
- Téléchargement à proprement dit de MMDVM HS
sudo git clone https://github.com/juribeparada/MMDVM_HS
- Téléchargement de la bibliothèque STM32F103
cd MMDVM_HS/ sudo git clone https://github.com/juribeparada/STM32F10X_Lib
Compilation et chargement du firmware
Vérifions tout d’abord que le fichier de configuration valide toutes les fonctions nécessaires au HotSpot.
sudo nano /opt/MMDVM_HS/Config.h
La configuration pas défaut correspond normalement à notre besoin. Voici le fichier attendu.
#if !defined(CONFIG_H) #define CONFIG_H // Select one board (STM32F103 based boards) // 1) ZUMspot USB and ZUMspot RPi: // #define PI_HAT_7021_REV_03 // 2) ZUMspot Libre Kit or board with modified RF7021SE and Blue Pill STM32F103: #define ADF7021_CARRIER_BOARD // Enable ADF7021 support: #define ENABLE_ADF7021 // Enable full duplex support with dual ADF7021: // #define DUPLEX // TCXO of the ADF7021 // For 14.7456 MHz: #define ADF7021_14_7456 // For 12.2880 MHz: // #define ADF7021_12_2880 // Host communication selection: // #define STM32_USART1_HOST #define STM32_USB_HOST // Enable mode detection: #define ENABLE_SCAN_MODE // Send RSSI value: // #define SEND_RSSI_DATA // Enable Nextion LCD serial port repeater on USART2 (ZUMspot Libre Kit and ZUMspot RPi): #define SERIAL_REPEATER // Enable Nextion LCD serial port repeater on USART1 (Do not use with STM32_USART1_HOST enabled): // #define SERIAL_REPEATER_USART1 // Enable P25 Wide modulation: // #define ENABLE_P25_WIDE // Disable mode LEDs blink during scan mode: // #define QUIET_MODE_LEDS #endif
Lançons à présent la compilation de MMDVM HS avec bootloader (option bl )
cd /opt/MMDVM_HS sudo make clean sudo make bl
La compilation doit se terminer en indiquant que les fichiers outp.hex et outp.bin ont été générés.
Pour charger le firmware, nous utilisons un adaptateur RS232 TTL USB. Lorsqu’il est branché sur un port USB du Raspberry Pi, un port /dev/ttyUSB0 doit apparaître (ls /dev/tty* )
Pour charger le firmware et le bootloader sur le STM32F103, nous devons déplacer un des deux cavaliers (le BOOT0, positionné en haut, coté des broches B11, B10, B1) en position 1 (vers la droite).
Le cavalier BOOT0 est positionné sur 1
Lancer la commande de chargement.
sudo make serial-bl devser=/dev/ttyUSB0
Remettons le cavalier BOOT0 en position 0 (les deux cavaliers sont donc en position 0, à gauche). Redémarrer le STM32F103 avec un appui court sur le bouton RESET (à coté des cavaliers). La LED rouge du STM32 se met à clignoter (rapidement puis lentement).
Mise à jour du firmware
Si vous souhaitez mettre à jour ultérieurement le firmware, vous n’aurez plus besoin de l’interface USB, ni de devoir positionner le cavalier BOOT0 à 1. En effet, le bootloader étant déja en place, la mise à jour se réalise directement via la liaison USB du STM32F103 au Raspberry Pi, celle que nous allons utiliser pour le fonctionnement du HotSpot. Il s’agit du port série /dev/ACM0
Dans ce cas de figure, pour faire la mise à jour, voici les commandes, BOOT0 en 0 et via la liaison USB.
cd /opt/MMDVM_HS sudo make clean sudo make bl sudo make dfu devser=/dev/ttyACM0
A présent le firmware est chargé. Occupons nous de la configuration du Raspberry Pi sur lequel nous installons le logiciel MMDVMHost. Voyons l’étape MMDVMHost à présent, nous serons bientôt sur l’air et le réseau.
Installation et configuration MMDVMHost
Installation
Nous téléchargeons MMDVMHost.
cd /opt/ sudo git clone https://github.com/G4KLX/MMDVMHost cd MMDVMHost sudo make
Configuration du fichier MMDVM.ini
Les modifications du fichier de configuration concernent :
- votre indicatif bien-sûr (Callsign)
- le hotspot est simplex (Duplex=0)
- les fréquences simplex (TX et RX)
- le modem MMDVM est connecté au Raspberry Pi sur /dev/ACM0
- en DMR, votre identifiant ID
- le serveur DMR (Master) connecté
sudo nano /opt/MMDVMHost/MMDVM.ini
[General] Callsign = Y0URCALL Duplex=0 [Info] RXFrequency=435000000 TXFrequency=435000000 Power=1 Latitude=47.7 Longitude=7.7 Height=0 Location=Mulhouse Description=MMDVM Homebrew HotSpot URL=https://www.f5uii.net [Log] # Logging levels, 0=No logging DisplayLevel=1 FileLevel=1 FilePath=/ FileRoot=MMDVM [Modem] Port=/dev/ttyACM0 #Port=\\.\COM3 TXInvert=1 RXInvert=0 [D-Star] Enable=0 [DMR] Enable=1 Beacons=1 Id=2080000 ColorCode=1 [System Fusion] Enable=0 [P25] Enable=0 [D-Star Network] Enable=0
Concernant le DMR, la configuration du serveur Brandmeister est celui du Master FR. Vous trouvez ces informations en ligne https://wiki.brandmeister.network/index.php/France
[DMR Network] Enable=1 Address=217.182.129.131 Port=62031 Jitter=300 # Local=62032 Password=passw0rd # Options= Slot1=1 Slot2=1 Debug=0 [System Fusion Network] Enable=0 [P25 Network] Enable=0
Vous pouvez bien-sûr paramétrer d’autres modes (D-Star, Fusion, P25) votre HotSpot sera multimode.
Sauvegarder vos modifications en quittant l’éditeur par CTRL-X puis Yes
Calibration
Si vous connaissez les relais MMDVM, vous savez ce qu’est cette phase de réglage de l’émission. Dans le cas de notre HotSpot, point de calibration nécessaire. L’émission du module ADF7021 sera d’emblée correcte.
Premier test de bon fonctionnement
Nous voilà prêt à lancer la commande de lancement de MMDVMHost qui devra mettre en fonctionnement notre HotSpot.
sudo /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini
Sur la page de démarrage vous verrez rappelé les paramètres du Modem.
Modem Parameters I: 2017-09-17 10:58:11.541 Port: /dev/ttyACM0 I: 2017-09-17 10:58:11.541 RX Invert: no I: 2017-09-17 10:58:11.541 TX Invert: yes I: 2017-09-17 10:58:11.541 PTT Invert: no I: 2017-09-17 10:58:11.541 TX Delay: 100ms I: 2017-09-17 10:58:11.541 RX Offset: 0Hz I: 2017-09-17 10:58:11.541 TX Offset: 0Hz I: 2017-09-17 10:58:11.541 DMR Delay: 0 (0.0ms) I: 2017-09-17 10:58:11.541 RX Level: 50.0% I: 2017-09-17 10:58:11.541 CW Id TX Level: 50.0% I: 2017-09-17 10:58:11.541 D-Star TX Level: 50.0% I: 2017-09-17 10:58:11.541 DMR TX Level: 50.0% I: 2017-09-17 10:58:11.541 YSF TX Level: 50.0% I: 2017-09-17 10:58:11.541 P25 TX Level: 50.0% I: 2017-09-17 10:58:11.541 RX Frequency: 435000000Hz (435000000Hz) I: 2017-09-17 10:58:11.541 TX Frequency: 435000000Hz (435000000Hz) M: 2017-09-17 10:58:11.542 Opening the MMDVM
Après la ligne Opening the MMDVM , le firmware du STM32F103 est lu et vous indique quelle est sa version.
I: 2017-09-17 10:58:13.553 MMDVM protocol version: 1, description: ZUMspot ADF7021 v1.0.1 20170826 (DStar/DMR/YSF/P25) GitID #2beb3d7
Votre HotSpot est prêt vous retransmettre…
Pour ma part, mon HotSpot me sert uniquement en DMR, j’ai ajouté des canaux dédiés à la fréquence de mon Hotspot sur mon poste DMR (un Retevis RT3 équivalent de TYT MD380).
Le poste sur la fréquence simplex 435 MHz
Pour finir l’installation, je vous invite à suivre l’article spécifiquement consacré au démarrage automatique de MMDVMHost.
Par ailleurs pour vous aider à vérifier le bon fonctionnement du HotSpot, vous pourriez comme moi ajouter le logiciel de suivi du fonctionnement Dashboard de DG9VH. Pour ma part je l’ai installé dans un sous répertoire /var/www/html/MMDVM/ de façon à y accéder depuis l’adresse http://HotSpot.lan/MMDVM/ tout simplement.
Son HotSpot en connexion sans fils
Raspberry Pi zéro avec Wifi
En partage votre connexion internet mobile 3G ou 4G en wifi, vous connecterez votre HotSpot alimenté sur un accumulateur USB. Vous serez complètement mobile…
Installation de RaspAp
Je vais vous présenter comment installer puis comment utiliser cet outil qui vous facilitera l’usage du Wifi sur votre Raspberry Pi.
Installation
Nous allons dans un premier temps spécifier un nom machine (hostname) pour qu’on puisse aisément identier notre hotspot sur réseau et y accéder sans connaitre l’adresse IP du Raspberry Pi.
sudo raspi-config
Choisir le menu 8 Advanced options puis A2 Hostname
Saisir par exemple “HotSpot”.
Quitter le menu puis redémarrer le Raspberry Pi par la commande sudo reboot .
Lançons l’installation de Rasp-WebGui par cette ligne de commande.
wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap
L’adresse IP du réseau wifi wlan0 est statique (10.3.141.1). Nous allons modifié cela pour que l’adresse soit dynamique.
sudo nano /etc/dhcpcd.conf
Modifier la partie basse du fichier de configuration, comme suit.
# RaspAP-WebGui wireless configuration interface wlan0 inet dhcp #static ip_address=10.3.141.1/24 #static routers=10.3.141.1 #static domain_name_server=8.8.8.8 8.8.4.4
Utilisation de RaspAp
Depuis votre smartphone ou PC raccordé sur le même réseau que le HotSpot, dans votre navigateur lancer http://HotSpot.lan/
Vous devez alors rentrer le mot de passe par défaut: admin / secret
Vous arrivez sur la page d’accueil du logiciel.
Dans un premier temps, le menu Configure DHCP vous permet de configurer les plages d’adresses IP dynamiques correspondantes à vos réseaux (lan, wlan0).
Sur la page de Configuration client, c’est ici que vous pouvez renseigner les mots de passes de vos points d’accès Wifi. Lors de vos déplacements, c’est là que vous enregistrerez les mots de passes de point d’accès wifi.
Si vous avez un smartphone mobile avec abonnement internet, c’est également là que vous verrez apparaître le nom de votre connexion partagée. Vous y indiquerez le mot de passe Wifi pour que votre point d’accès puisse se connecter via votre smartphone à internet.
La double flèche indique le point d’accès utilisé (ici WifiR2).
Vous voilà prêt pour être QRV sur votre réseau numérique radioamateur favoris. Les équipements que je vous emporterez partout sont donc:
- un boitier Raspberry Pi 3
- un boitier avec le STM32F103 et le module UHF
- un bloc d’alimentation 5V (ou accumulateur USB 5V)
- un smartphone pour partagé ma connexion internet
- un émetteur récepteur numérique (pour ma part, un Retevis RT3, mode DMR)
Le Hotspot avec son Raspberry Pi 3
Le point d’accès MMDVM, le Raspberry Pi, la batterie et le poste DMR
Globalement, le prix d’un tel Hotspot est plutôt bas puiqu’il tourne autour de 75 EUR, Raspberry Pi, et carte SD comprise.
Et le futur c’est quoi ?
Certains ont cherché à réduire encore plus l’encombrement de tout cela. Voyez ce circuit dessiné par Mathis DB9MAT qui est une platine regroupant le module UHF, la CPU STM32F103, et qui s’enfiche directement sur le plus petit des Raspberry Pi, le Pi zéro W. Cela s’appelle le MMDVM HS HAT (Hardware Attached on Top).
MMDVM_HS Pi HAT (DB9MAT)
Les ressources de Mathis sont en ligne sur GitHub. Mais là cela pourrait peut-être faire l’objet d’un autre article sur mon blog….
N’hésitez pas à déposer vos questions et commentaires ci-dessous. J’y réponds bien sûr volontiers.