Projets:Lab:2020:PiHPSDR
Page référencée dans Passion : Radio Radios logicielles, transmissions numériques, expérimentations HF
Section "HermesLite v.2.0 et ses satellites"
Contents
Une console de pilotage de SDR pour la famille OpenHPSDR
A base de Raspberry Pi, cette console servira de terminal d'appoint (IHM) en opération mobile ou portable, et permet aux nouveaux venus dans le monde des radios logicielles de se faire à un mode opératoire "encore avec quelques boutons".
Par qui ?
L'idée est née des cerveaux de John Melton G0ORX pour la partie logicielle et du tandem Kjell Karlsen LA2NI/Laurence Baker G8NJJ pour ce qui concerne l'aspect "hardware". Projet dévoilé à l'occasion de la SDR Academy de Friedrichshafen en 2016 , puis mis à jour en 2018
Le circuit imprimé utilisé par l'équipe radio de l'Electrolab a été dessiné par Mathis Schmieder, DB9MAT, transposition issue des schémas open source fournis par les membres du groupe OpenHPSDR mentionnés plus avant.
Pour qui ?
- - Ce montage est abordable aux débutants possédant un bon fer à souder et quelques accessoires pour composants à montage de surface (flux, loupe ou binoculaire, pinces précelle, fil de brasure de 0,3mm, une panne de fer "aiguille" et une panne de fer "mahousse costaud", de la tresse à dessouder et... c'est à peu près tout.
- - Pour les opérateurs de stations mobiles ou portables en premier chef, eux qui ne veulent pas faire courir de risque à leur ordinateur portable coûteux et fragile
- - Pour les "vieux" radioamateurs qui ont encore besoin de tourner une molette et presser des boutons durant une période d'adaptation
- - Pour les groupes de contesteurs souhaitant travailler en "multi" -avec un transceiver home made, cela va sans dire.
- - Pour les radioclubs qui disposent de plusieurs SDR répartis sur un réseau local -généralement rangés en baie 19'- et souhaitant offrir accès à ces appareils sans nécessiter de présence physique dans la salle radio.
- - Pour toux ceux, de manière plus générale, qui doivent administrer un cluster de SDR
- - Pour toute personne cherchant à encastrer une "visu" dans un panneau de contrôle façon "centrale nucléaire"... c'est badass en diable
- - Pour ceux, enfin, qui considèrent le PiHPSDR comme un périphérique totalement inutile, donc absolument indispensable
- - Toute personne qui estime que le prix d'un raspi, de son écran, de quelques encodeurs et boutons et d'un logiciel open source ne justifie pas une facture de 700 dollars port non compris
Les ressources
L'Electrolab tient à disposition des personnes intéressées un pcb de 140x260 mm destinée à supporter un écran tactile "officiel", un Raspberry Pi (3, 3B, 3B+, 4), quelques boutons et encodeur et l'alimentation multitension du système (entrée générique 12V)
Un second pcb est à l'étude qui servira de "façade" à la console et n'aura strictement aucune fonction électronique spécifique. C'est une extension purement cosmétique, qui peut être remplacée par une plaque d'aluminium usinée/fraisée avec l'une des CNC Charly Robot ou travaillé à la lime et à la perceuse.
Le dépôt github héberge les schémas et routage pcb de la carte principale
La BOM interactive facilite la collecte des composants et guide pas à pas au montage de la carte
Le manuel utilisateur du contrôleur, édité par Apache Labs, facilite la prise en main du logiciel principal.
PiHPSDR, le logiciel de prise de contrôle à distance du SDR à l'origine de la conception de cette console. Le source du logiciel est disponible sur le dépot Github de John Melton
Ce n'est pas le seul client OpenHPSDR capable de tourner sur Raspberry Pi. Citons également
Quisk de James Alstrom N2ADR qui fonctionne merveilleusement bien avec le Hermes Lite V1 et V2. Les docs.html#Installation instructions d'installation ne nécessitent pas une connaissance approfondie de Linux
Le source Python est ouvert, et peut être récupéré sur le dépot Pypi.org
Sparks SDR est "closed source" mais non payant. C'est un programme développé pour l'environnement Windows et porté sous Linux. Le lobiciel est particulièrement bien adapté aux modes numériques multibandes, et intègre directement les décodeurs wspr, JT9-65 et FT8, et pourrait bien se voir adjoindre Codec2/FreeDV et l'émission-réception SSTV.
GNU Radio pour les plus courageux. Nécessite une cross-compilation. Ne pas perdre de vue que GRC est assez gourmand en ressources, le Raspberry n'est donc qu'une machine d'appoint, il ne faut pas s'attendre à des performances exceptionnelles.
GQRX devrait a priori également fonctionner, puisqu'il a été prouvé que ce client Linux léger tournait également en liaison avec une carte Red Pitaya et gateware Pavel Denim
Les composants spécifiques
Si la majorité des composants de ce montage relève du "tout venant" que l'on peut trouver en fond de tiroir, les contraintes mécaniques de cette réalisation font qu'il est difficile, voir impossible de construire la carte PiHPSDR sans recourir à des éléments aux dimensions précises
Ci-après, la liste de ces composants si particuliers, accompagnés de leur numéro de référence Mouser
- Les interrupteurs fugitifs à canon long 612-TL3301SPF260QG
- Les capuchons pour ces mêmes interrupteurs, format cylindrique, en gris clair, rouge et bland 612-1R-LGR , 612-1R-RD , 612-1RWHT
- Les réseaux résistifs si particuliers ... 652-CAT16-103J8LF
- Les encodeurs 688-EC11E183440C
- Le régulateur à découpage 926-LMZ22005TZX/NOPB à souder avec un fer à panne très large et forte inertie thermique
- "La" diode BAS16 771-BAS16J135 peut être remplacée par une "n'importe quoi" avec le même brochage SOT23, de la série BAT54 par exemple
- L'encodeur 400 points par pouce Avago est disponible à un prix très avantageux che un revendeur ebay Allemand, référence d'objet 312228416712 , nom du vendeur "electronic-componentsseller"
Pourquoi
PiHPSDR est une console de "compromis". Petite puissance de traitement, taille réduite, interface de commande plus développée que ce que l'on peut espérer d'un écran tactile, coût d'usage très réduit minimisant les risque de banqueroute personnelle en cas d'accident matériel, la console PiHPSDR est conçue pour
- - Les amateurs de station mobile "avec des boutons"
- - Les personnes qui recherchent une commande radio "pour le salon" plus pratique qu'un ordinateur portable
- - Les bricoleurs qui n'ont pas la place d'un écran-clavier sur leur atelier et qui veulent monitorer une ou plusieurs bandes durant une session de bricolage
Comment
Plumez énergiquement un Raspberry pi 3 ou de préférence 4.
Ajoutez délicatement un écran tactile "officiel". Son prix est un peu élevé, mais son système de fixation n'existe nulle part ailleurs
Incorporez progressivement une alimentation multitensions qui fournira au Pi un 5V idéal à partir de n'importe quelle source située entre 7 et 16V
Saupoudrez une bonne poignée de contacts fugitifs connectés au bus I2C du Raspberry. Il simplifieront certaines actions telles que la mise en marche/arrêt, le basculement émission/réception, la sélection des filtres, des bandes, des modes.
Disposez agréablement quelques encodeurs pour les réglages habituels : volume, fréquence etc. Le réglage de fréquence peut s’accommoder d'un 600 ou d'un 400 points par révolution
Soudez et vissez le tout sur un pcb unique qui servira de support mécanique et de liant au ingrédients ci-avant détaillés
Ajoutez une façade lisible
Burinez vivement le noyau et le logiciel selon les instructions qui suivront, servez chaud.
Guide de montage rapide
Principe de fonctionnement
Les transceivers de la famille OpenHPSDR utilisent une liaison Ethernet qui encapsule à la fois les paquets I/Q de chaque récepteur virtuel émis par le coeur du SDR, et un certain nombre de signaux de service destinés à commander des extensions matérielles, tantôt des commutations d'antennes, tantôt des filtres passe-bas ou passe-haut, tantôt un atténuateur ou un préampli...
C'est également par le biais de cette liaison ethernet que l'opérateur radio peut piloter les fonctions purement "signal" de la radio logiciel : nombre de récepteurs actifs, filtres numériques, type de démodulation locale, sélection de bande de fréquence, réglage de la fréquence, passage en émission, redirection logicielle avec des modulateurs/démodulateurs tiers -freeDV, télex, SSTV, ft9 etc.
Le Hermes Lite V2 est en grande partie compatible avec la première version de cet ensemble de protocoles (nommé, par le plus grand des hasards, "protocole 1").
A la mise sous tension du SDR, une négociation d'établit entre la radio et le terminal de contrôle et relie les deux appareils via une liaison tcp/ip. Le terminal en question est constitué d'un ordinateur monocarte (SBC, single board computer) de type Raspberry Pi (modèle 3 ou 4) et de son écran tactile 7 pouces.
Sur cet ordinateur s'exécute un logiciel client (conçu pour le noyau Linux du Raspberry) qui remplit à la fois toutes les fonctions de traitement radio (gestion des filtres logiciels et matériel, des fréquences, de la démodulation du signal etc) et la supervision d'une interface homme-machine simplifiée limitée à une vingtaine de boutons et 4 encodeurs rotatifs, dont un encodeur optique à haute résolution.
Les encodeurs rotatifs sont directement connectés sur les gpio du rapsberry. Les boutons, en revanche, sont chaînés sur un bus I2C, lequel dialogue avec le "master" qu'est le raspberry lui-même.
L'alimentation
Ce schéma est également disponible, en bien meilleure définition, sur le dépôt Github et au format pdf
La totalité de l'alimentation repose sur un circuit LMZ22005. C'est un circuit unique d'alimentation à découpage, qui accepte n'importe quelle tension en dessous de 20 V et qui délivre.... ce que l'on souhaite. Dans notre cas, le 5V destiné à alimenter le Raspberry Pi, l'écran et le circuit d'interface boutons/I2C.
Le démarrage du terminal PiHPSDR s'effectue par simple appui sur le bouton de mise sous tension SW1 qui met à la masse la gate de Q2, lequel transistor débloque à son tour le FET de puissance FDD6685 et ouvre le circuit vers le régulateur à découpage
La qualité des résistances utilisées dans le pont de réglage de tension (R9, R10, R11) est importante. Si possible, il faut employer des composants à 1%.
Le montage ne pose pas de problème majeur :
- Soudez en premier lieux le régulateur principal, le fet de puissance, puis les passifs (condensateurs, résistance, diode de protection... )
- Soudez les composants passifs périphériques.
- Branchez une alimentation 12 V sur le connecteur J1, mettez la carte sous tension en créant un court-circuit momentané sur les pastilles de l'emplacement SW1 -coté face du pcb, en haut, à droite. La diode D3 doit s’allumer.
- Avec un voltmètre, vérifiez que la tension sur J5 1 & 3 et J6 1 soit bien de 5V +/-2% quelle que soit la tension d'entrée, de 10 à 18V.
- Débranchez l'alimentation.
Le contrôleur I2C
Ce circuit sert d'interface entre les boutons-poussoir et le bus I2C du Raspberry Pi. Son schéma est disponible au format Kicad sur Github ainsi que sous forme de fichier pdf.
Il est vivement conseillé de souder les réseaux résistifs avant le circuit SOIC.
Une erreur de routage lors de la conception du pcb -qui sera corrigée dans la version 2.0- exige que l'on gratouille un plan de masse sur le coté du circuit intégré, et que l'on y soude une queue de composant qui court-circuite les trois broches d'adressage.
L'étape suivante se limite à installer les multiples condensateurs de filtrage et découplage, sans ordre particulier.
Les boutons et encodeurs et du SoC
La série de poussoirs est ensuite installée en prenant garde à bien respecter l'alignement des axes des boutons.
Dans un second temps, il faut souder les encodeurs mécaniques, puis, en dernier lieu, l'encodeur optique "VFO"
Sur la photo de droite, un Raspberry Pi 3B+ surmonté d'une carte son gigogne. La fixation sur le circuit imprimé PiHPSDR est assuré par des entretoises au pas M 2,5 ISO.
Le codeur optique ci-dessus est un 600 point par révolution, paradoxalement moins coûteux qu'un 400 ppt de fabrication US ou Européenne. En revanche, ce 400 ppt est nettement moins encombrant et conviendra bien mieux à un boitier plus "slim line"
le connecteur de liaison des gpio ne sera pas soudé tant que l'assemblage mécanique du Raspberry Pi ne sera pas parfaitement vissé. C'est le seul moyen de régler correctement la profondeur d'assise de ce connecteur de liaison, laquelle est dépendante de la longueur des entretoises utilisées. Dans les deux exemples ci-dessous, on remarque aisément que l'épaisseur du dissipateur de chaleur du Raspberry Pi 4 contraint à sur-élever le SoC par rapport au circuit principal. Cette élévation modifie également la découpe latérale du boitier donnant accès aux connecteurs USB et Ethernet.
Si l'on souhaite installer un Raspberry Pi 4 avec un dissipateur de chaleur, la visserie doit être au standard M 3 ISO. Le dissipateur de chaleur doit être modifié (alésé de part en part) pour faire en sorte que les vis puissent traverser toute la masse métallique et s'ancrer dans les trous prévus à cet effet sur le circuit imprimé principal.
Etape finale
Désinstallez le Raspberry Pi, nettoyez énergiquement la carte à l'alcool isopropyl pour éliminer toute trace de flux, puis lessivez le circuit au liquide vaisselle... pour éliminer les traces laissées par l'alcool. Rincez abondamment, prenez garde à ne pas noyer les poussoirs et les encodeurs
Cette étape achevée, il ne reste plus qu'à remonter le Raspberry Pi, et fixer l'écran après avoir délicatement démonté sa carte contrôleur pour faciliter l'insertion de l'ensemble.
Note importante : les 4 vis de fixation de l'écran ne doivent en aucun cas dépasser 3mm. Dans le cas contraire, l'extrémité de la vis viendrait briser l'écran au moment du serrage
Tirez deux fils de couleur du connecteur J6 (+5V/GND) et pour alimenter la carte contrôleur vidéo via son connecteur I2C
Ce n'est qu'une fois les vis de fixation de l'écran serrés et bloqués que l'on peut remettre les entretoises de fixation de la carte contrôleur vidéo, puis insérer le câble en nappe provenant du Raspberry.
Configuration logicielle rapide
Le noyau et client Pihpsdr
Les instructions d'installation et liens de téléchargement du noyau "Raspberry Pi Desktop" (anciennement Raspbian) sont disponibles sur les serveurs de Raspberry Pi . org
La version la plus récente du logiciel client PiHPSDR est à télécharger sur le dépôt Github de l'auteur.
Les instructions d'installation, quant à elles, sont disponibles au format pdf, également à télécharger sur le dépôt de l'auteur.
Configuration logicielle des E/S
- Mettez le Hermes Lite sous tension
- Reliez le Hermes Lite et la console PiHSDR avec un câble Ethernet, soit directement, soit via un routeur ou commutateur réseau.
Remarque liminaire
Les paramètres de réglages du bouton « Configure GPIO » (au lancement de PiHPSDR) varient en fonction de la version du logiciel. Ce qui fonctionne pour une V2 RC7 ne donnera rien sur une V2 RC15… lorsque cela n’occasionne pas un plantage magistral ou une désactivation des fonctions Bluetooth
Pour faciliter les choses, la documentation de Pihpsdr ne mentionne strictement rien à ce sujet, ce qui a contraint Nicolas F4EGX à triturer les méandres de la gestion des gpio et du bus I2C pour parvenir à une solution exploitable. Tout ce qui suit est le fruit de son travail… et ce n’était pas franchement évident.
Scan du bus i2c
Dans un premier temps, il est nécessaire de scanner en permanence le bus i2c pour « voir » quels sont les conséquences lorsque l’on appuie sur chacun des interrupteurs fugitifs.
Sans lancer PiHPSDR, ouvrez une fenêtre terminal et tapez l’ordre
i2cdetect -y 1
Cet ordre fournit l’adresse de base du décodeur i2c situé sur la carte principale de l’interface PiHPSDR. Par défaut, 0x20. Si ce n’est pas le cas, vérifiez le « patch » de soudure déterminant l’adressage du décodeur, les trois broche A0, A1 et A2 doivent être reliées à la masse.
Toujours dans cette fenêtre terminal, lancez l’ordre
watch -d -n 0.1 "i2cget -y 1 0x20 0x13; i2cget -y 1 0x20 0x12;"
Cette commande « boucle » toutes les 0,1 secondes l’examen des adresses I2C concernées. Le commutateur « -y » élimine le prompte de confirmation « yes/no »
A chaque pression d’un des boutons, l’adresse en question s’affiche sous la forme
* 0x ?? * 0x ?? * Avec ?? allant de 00 à FF
Chaque correspondance « bouton/adresse » doit être notée dans l’ordre. Ainsi, le bouton MOX est situé en 0x7f ;0xff, Tune en 0xbf ;0xff etc (ces exemples ne concernent que la version installée dans le prototype Electrolab et peut changer en fonction de la version logicielle)
En regard de chaque bouton, ajouter, dans une troisième colonne correspondante, le complément à FFFF du résultat obtenu, et dans une quatrième colonne l’appellation « logicielle » du bouton en question.
MOX, par défaut, est attribué au bouton SW2. Le complément de son adresse 0x7fff est égal à 8000 (FFFF -7FFF=8000).
Tune est attribué au bouton SW3, adresse BFFF, complément 4000,
Pure Signal est attribué à SW4, adresse DFFF, complément 2000
et ainsi de suite (voir tableau ci-dessous)
Cette corvée achevée, il ne reste plus qu’à lancer l’exécution de PiHPSDR, de sélectionner, dans le premier écran d’accueil, le bouton « Configure GPIO »
Cliquer sur l’onglet « I2C »
Puis entrer une à une les valeurs « complémentaires » correspondantes à chaque bouton désigné par son appellation « soft »
Achever l’opération en cliquant sur le bouton « Save »… sous peine d’avoir à recommencer la saisie au prochain démarrage
Scan des gpio
Note importante : les Raspberry Pi 4 ne sont pas reconnus par la commande « gpio readall » utilisée au fil de cette procédure. Une mise à niveau de cet outil est nécessaire avant d’entamer l’étape suivante (les possesseurs de modèles 3, 3B, 3B+ peuvent élider cette mise à jour)
La procédure est décrite dans le détail par notre confrère François, dans les colonnes de son magazine en ligne Framboise 3.14
Cette éventuelle mise à jour effectuée, taper l’ordre suivant dans une fenêtre terminal
watch -d -n 0.1 gpio readall
(encore une lecture cyclique effectuée toutes les 0,1 secondes)
La procédure est identique à celle employée pour déterminer les adresses des interrupteurs fugitifs. Il suffit de tourner un à un chaque encodeur et noter les deux adresses de la colonne « wPi » situées sur la ligne affichant un « clignotement » des valeurs de la colonne « V »
Dans l'exemple ci-dessus, l'encodeur E4 est activé, un strobe sur la gpio 11 est détecté
Noter ces valeurs pour chaque encodeur : VFO, E2, E3, E4 et E5.
Recommencez l’opération en actionnant l’interrupteur fugitif situé dans l’axe de chaque encodeur
Les valeurs relevées seront entrées une à une dans le tableau de configuration correspondant (Bouton « Configure GPIO », onglet « Encoders »)