Projets:Lab:2020:PiHPSDR

From Electrolab
Jump to: navigation, search

Page référencée dans Passion : Radio Radios logicielles, transmissions numériques, expérimentations HF

Section "HermesLite v.2.0 et ses satellites"

PiHPSDR est une console informatique minimaliste qui se connecte par un câble réseau à toute radio logicielle conforme au standard OpenHPSDR (Hermes Lite, Red Pitaya, Odyssey, Anan, HiQSDR...)
réalisation d'un des prototypes avec quelques boutons, capuchons, façade réalisée en circuit imprimé rétroéclairé et poignées latérales en impression 3D






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 blanc 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 chez 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

Alim 2.png



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... )
La véritable difficulté de ce montage réside dans la montée en température de la semelle du régulateur à découpage. Pré-étamez la semelle de ce composant et le pad du circuit imprimé avec une très légère couche de brasure. Soudez ensuite les pattes du circuit intégré sans tenter de souder la semelle. Une fois le composant parfaitement aligné et maintenu, glissez une panne "tournevis" de grande taille (très forte inertie thermique)entre la semelle et le pcb, en ajoutant préalablement du flux. Appuyez sur le corps du circuit intégré avec un outil -attention, le corps du composant peut être très chaud- pour assurer le contact thermique, tout en ajoutant de la brasure. Lorsque le métal est bien liquide, retirez le fer, plaquez la semelle sur le support et maintenez là ainsi quelques seconde le temps que la soudure refroidisse. Le surplus de soudure doit déborder, le corps du circuit intégré doit être parfaitement plaqué sur le circuit imprimé (cliquez sur la photo pour agrandir)


  • 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.
Le test de l'alimentation doit être effectué avant de souder le moindre autre composant (Raspberry, interface I2C... (cliquez sur la photo pour agrandir)


  • 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.

(cliquez sur la photo pour agrandir)
(cliquez sur la photo pour agrandir)


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.

(cliquez sur la photo pour agrandir)
(cliquez sur la photo pour agrandir)


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"

(cliquez sur la photo pour agrandir)


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.

(cliquez sur la photo pour agrandir)
(cliquez sur la photo pour agrandir)


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.

(cliquez sur la photo pour agrandir)


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
(cliquez sur la photo pour agrandir)


Tirez deux fils de couleur du connecteur J6 (+5V/GND) et pour alimenter la carte contrôleur vidéo via son connecteur I2C

(cliquez sur la photo pour agrandir)


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.

(cliquez sur la photo pour agrandir)


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
(cliquez sur la photo pour agrandir)



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;"
(cliquez sur la photo pour agrandir)


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)

(cliquez sur la photo pour agrandir)



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 »

(cliquez sur la photo pour agrandir)


Cliquer sur l’onglet « I2C »

Puis entrer une à une les valeurs « complémentaires » correspondantes à chaque bouton désigné par son appellation « soft »

(cliquez sur la photo pour agrandir)


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 »

(cliquez sur la photo pour agrandir)


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

(cliquez sur la photo pour agrandir)


Les valeurs relevées seront entrées une à une dans le tableau de configuration correspondant (Bouton « Configure GPIO », onglet « Encoders »)

(cliquez sur la photo pour agrandir)