Recycler un vieux téléphone Android en balise QRSS ou WSPR avec ZL1BPU

Murray ZL1BPU est un fervent amateur des modes à très basse puissance QRSS depuis de très longues années. Il avait déjà écrit un programme permettant de transmettre depuis son PC des bandes son WAV générée par ChirpPix. Plusieurs versions améliorées…

Article balises WSPR à DDS pour CQ Magazine : codes sources

L’article que j’ai écrit pour CQ Magazine décrivant comment construire sa propre balise WSPR autonome avec DDS paraîtra le mois prochain. Afin d’alléger la pagination, les codes sources et autres documents volumineux sont publiés sur une page de ce blog.…

Ma pomme dans CQ Magazine de Décembre – Kits balise WSPR

Le numéro “Spéciale technique” de décembre de CQ Magazine contiendra un article que j’ai écrit à propos des micro-contrôleurs MSP430 et du LaunchPad de Texas Instruments. En fait j’ai proposé cet article il y a plus d’un an mais ils…

qs1r-multirelay source code

As promised, I released the source code of my program. Nothing exceptional, just some lines of code to dispatch the multiplexed IQ output of the receiver into 7 audio channels. For this, I used the qs1r framework from Phil (N8VB) and the Verilog part written by Alex (VE3NEA).

My prog needs few more features and bugs correction, but I already corrected a major bug about a buffer leak. The QS1R buffer and the audio buffer are not perfectly synchronised and moreover, the Window (MME) audio buffers jams sometimes and skips some data. Instead to try to compensate this with an adaptive buffer (which grow rapidly), I simply drop some frames 🙂

The source code & binary (version 0.1 alpha) can be downloaded here, or on my Github : http://github.com/Guenael

The audio relay could be modified to work directly with CwSkimmer. It’s not interesting for the Linux users, but the community that uses CwSkimmer to contribute to ReverseBeaconNetwork could spot CW QSO as usual, and in the same time, take some QRSS captures. The CWSL projet (OL5Q) allows to duplicate the data flow to another application (ex: HDSDR, an audio file recorder) and my qs1r-multirelay could be rewritten to read the shared memory. The RBN community is larger than the QRSS community and some hams could be interested to participate and share their receiver. Unfortunately, I have no feedback about multi-channels grabbers on the KnightsQrss mailing list and I won’t spend more time on this project. The source code is available, anyone can play with 🙂

qs1r receiver board

Grabber 7 bandes et programmation

Je sais pourquoi je n’aime pas la programmation, c’est toujours des prises de têtes sur fond de thread, mutex, références et ça fini à point d’heure… Je me suis encore torturé l’esprit, j’ai peu dormi, mais ça y est, j’ai gagné ! Mon dernier petit prog’ tourne au poil =)

J’ai écrit une application pour le qs1r, un récepteur SDR à conversion directe. Pour faire court, le programme relaye 7 réceptions différentes dans des câbles audio virtuels. Ceci permet de faire tourner derrière des programmes comme SpectrumLab, et ainsi générer des captures de waterfall QRSS.

Le gros du travail avait déjà été fait en amont par Alex (VE3NEA) qui à écrit le code Verilog pour le FPGA qui permet de downsampler 7 streams (cordic, décimation cic & filtrage). Lui-même à utilisé le framework open source de Phil (N8VB) qui à conçu et commercialisé le qs1r.

Le récepteur qs1r

Au passage, un gros merci à Alex, a qui j’avais demandé l’année passée de publier une partie de son code verilog. Depuis ce moment, je n’avais pas trouvé le temps de réaliser ces quelques lignes de code, mais j’ai enfin fini par m’y attaquer.

Un peu plus techniquement, j’utilise le framework QT avec GCC. La compilation est faite pour le moment pour Windows, mais le code est facilement portable sur Linux ou Mac (merci QT ! 🙂

Actuellement, je teste la stabilité du programme sur une semaine et ceci pour 3 bandes. Ensuite, après quelques petits correctifs (méthode push plutôt que pull, nettoyage du code et commentaire, etc…) je mettrais le source sur mon github ainsi qu’une release pour les binaires.

Voici un petit aperçu : (initialement 40m, 30m et 20m, mais les fréquences changent en fonction des demandes)

Dans les possibles évolutions, le programme pourrait être modifié pour fonctionner derrière CwSkimmer et sortir en plus des spots CW, des captures QRSS. Comme la communauté Skimmer/ReverseBeaconNetwork est assez peuplée et que le qs1r est largement utilisé, ceci pourrait donner un coup de boost aux activités QRSS.

Par ailleurs, le soft QRSS VD (de Scott, AJ4VD) pourrait être modifié pour accepter directement les données du qs1r sans passer par des câbles audio virtuels (VAC pour Windows, Jack pour Linux).

L’interface de configuration

Pour terminer, un rappel de la page du grabber installé à Foulab (VA2LTF). Pour le moment, je laisse tourner 3 bandes, et prochainement, plein pot sur 7 bandes 🙂

Multiband QRSS grabber

Update : Je l’ai passé en 7 bandes, ça fait plaisir à voir sur une seule page 🙂

Fabrication d’un MEPT

Dernièrement, je m’étais amusé avec des montages 3D. C’est bien, simple et rigolo, mais j’ai vite compris le revers de la médaille. Loin du plan de masse, avec des fils qui font des détours dans tous les sens, je me suis vite retrouvé avec des inductances parasites et des signaux indésirables, avec pour conséquence une petite dérive hasardeuse de mon oscillateur (toute relative puisqu’elle n’excédait pas +/- 8Hz).

Donc on enlève tout et on recommence, cette fois-ci à plat ! Et ça donne ceci :

L’oscillateur, l’étage de sortie et le filtre qui arrive sur une dummy load (autre image ici)

A noter qu’entre temps, le montage à bien évolué. L’oscillateur de type Colpitt s’est vu doté d’un étage de sortie basé sur un PNP 3906. Pour une grande partie des MEPT, l’étage de sortie est constitué d’un MOSTFET comme un BS170 ou un 2N7000. C’est tout à fait adapté (haute impédance d’entrée et faible en sortie), mais je voulais juste tenter quelque chose de différent. Un PNP monté en émetteur commun devrait pouvoir faire le même travail, et un 3906 peut monter jusqu’à 200mA, ce qui est largement suffisant pour les 250mW de sortie que je visais.

La modulation FSK est faite avec une diode électroluminescente, très bonne idée que j’avais repérée il y a quelque temps sur le site de Hans (G0UPL). Un petit microcontrôleur devrait piloter tout ceci bientôt.

Voilà le schéma pour les curieux :

 

Schéma de la partie centrale de mon petit MEPT

 J’ai ensuite modifié le zinzin pour pouvoir en faire un WSPR autonome. L’astuce n’est pas bien compliquée, il faut juste balancer une séquence de 162 symboles sur deux minutes environ (pour le détail du protocole, voir la doc. de K1JT). Il n’y a que 4 états avec WSPR et 2 bits suffisent donc. Une échelle de résistance 2R-R fonctionne donc à merveille pour un simple petit DAC. Côté réalisation, voici ce que cela donne :

 

 La dernière version de la platine, avec les 2 boutons à l’arrière pour piloter les deux états FSK.

Ça marche au poil pour la modulation 2 bits, mais il faudra attendre une autre version pour arriver sur les logs de WSPRnet car mon cristal est axé sur 7MHz et non sur 7.038. Qu’à cela ne tienne, j’ai du 10.140MHz, j’irais donc prochainement sur la bande des 30m 🙂

Coté qualité du signal, pas de surprise à l’oscillo (normal vu le filtre 7 pôles).

Peu informatif par rapport à un analyseur spectral, mais permet néanmoins de voir que les tension de sorties sont correctes

La stabilité me chagrine un peu par contre. Il est stable à +/-1 Hz, ce qui est déjà pas mal, mais limite pour du WSPR ou comme osc. de référence pour des fréquences plus hautes. Je vais encore regarder du côté du découplage du 1er transistor (3904) car ce n’est pas impossible que ces mini-fluctuations proviennent de charges parasites. Voici une capture d’écran du grabber :

 

Grabbeur QRSS axé sur la fréquence du MEPT

Un de ces prochains week-end, VA2LTF devrait donc arriver sur le 40m. Allumer vos grabber QRSS :p

Jeu des différences : L’OM attentif aura remarqué une erreur flagrante sur les photos (par rapport au schéma). Cette erreur n’a cependant pas d’influence sur le bon fonctionnement du MEPT. Le premier qui la reporte aura droit à 1 bon point 🙂