Escuta de modos digitais com RTL-SDR + Gqrx + WSJT-X

No post Monitor de WSPR com raspberry pi + dongle RTL-SDR descrevi como receber sinais de WSPR em diversas frequências com um raspberry pi, em linux bash scripts.
Agora aqui, uma solução ainda mais eficaz com interface gráfico...

Descobri que é possível criar um stream de audio virtual através do Pulseaudio, e com este "fio" virtual de audio ligar o Gqrx, que funciona como receptor da RTL-SDR, ao WSJT-X onde nos é permitido ainda a escuta de outros modos digitais para além do WSPR…

Primeiro instalamos o Gqrx.
Siga as instruções seguintes, copiando e colando linha a linha numa janela terminal em linux,

A seguir escreva gqrx para iniciar a aplicação que, entretanto deve ter sido adicionado num dos menus do seu interface gráfico.

Agora corra o comando a seguir descrito, numa única linha, para adicionar o stream de audio,

Ligue o seu dispositivo SDR, eu utilizo a RTL-SDR, pois custa menos de 30€ e configure este device no Gqrx,

Para que funcione correctamente o output de audio deve ser configurado como Virtual_Sink, o nome que demos no nosso comando.

Configure agora o Gqrx para que possa receber instruções do WSJT-X da frequência a utilizar…
No menu "Tools - Remote control settings" verifique se existe, ou acrescente a porta 7356 para o endereço IPv4 127.0.0.1
Grave as alterações.

Instale agora o WSJT-X

Faça o download da página https://physics.princeton.edu/pulsar/K1JT/wsjtx.html para o seu sistema operativo. No meu caso o debian buster, actualmente na versão 2.5.4, wsjtx_2.5.4_armhf.deb

O WSJT-X foi adicionado ao menu. Corra-o e vamos às configurações…
No menu "File - Settings" seleccione o separador "Radio". Em "Rig:" escolha a opção "Hamlib NET rigctl"; em "Network Server" o endereço e a porta definidas no Gqrx, 127.0.0.1:7356.

Agora, no separador "Audio" escolha como input o stream virtual que anteriormente criámos "Virtual_Sink.monitor". No output é indiferente o que escolha, pois não vai fazer emissão.
Grave as suas configurações. É possível que o WSJT-X lhe dê alguma mensagem de erro, pois o Gqrx ainda não tem o serviço a correr.

No menu "Tools" do Gqrx inicie o serviço "Remote control"
Faça "play" e imediatamente deve ver na waterfall a recepção de sinais. Ajuste o volume Gain de modo a ter cerca de 50dB de input no WSJT-X.
No WSJT-X, escolha uma banda, por exemplo nos 30m ou 40m, o modo WSPR, inicie a recepção e deverá observar na waterfall de audio riscos verticais amarelo ou vermelho consoante a intensidade dos sinais. Aguarde pelo menos 2 minutos, para a recepção de WSPR, e o botão "Decode" acende-se em azul cian durante uns segundos até lhe aparecerem algumas estações na caixa de texto no topo.

Para aplicar permanentemente as definições no Pulseaudio, abra o ficheiro /etc/pulse/default.pa, avance até à última linha e acrescente as instruções a seguir numa única linha,

Se quiser contribuir para a rede mundial de WSPR, para estudo dos fenómenos de propagação e compreensão da MUF seleccione a opção "Upload spots" no WSJT-X.
A seguir pode configurar as bandas que gostaria de utilizar no botão "Schedule"

Referências:
https://www.onetransistor.eu/2017/10/virtual-audio-cable-in-linux-ubuntu.html
https://gqrx.dk/download/gqrx-sdr-for-the-raspberry-pi
https://dl1gkk.com/setup-raspberry-pi-for-ham-radio/

Fonte de alimentação comutada de baixo custo

À procura de uma solução portátil, de baixo custo e de pequenas dimensões para alimentar um IC-7300, IC-9700 ou qualquer outro rádio de 13,8V? Encontrei uma fonte comutada de 12V de tensão ajustável e 40A. Há vários modelos em lojas de eletrónica para 20 e mais amperes com valores a partir de 15€!

As especificações dizem que estas fontes são protegidas contra sobrecargas, sobretensão e curto-circuito… no entanto há um pequeno senão - o ruído que provocam em HF.

Depois de uma análise ao esquema, um esquema idêntico a todos estes modelos, com diferentes componentes de acordo com a potência envolvida, foi fácil reparar que no circuito de baixa tensão a filtragem é pouco eficaz e resume-se a uma bobine, L1 e um condensador, C13 de 100nF.

De modo a filtrar qualquer componente de onda alternada de alta frequência e harmónicas geradas pela unidade de alta tensão com alguns KHz coloquei 2 condensadores de 100nF aos terminais 1 e 2 da bobine L1 e outro de 10nF em paralelo com o C13, à saída dos 12V.
Todo o ruído desapareceu e tornou possível a utilização destas fontes comutadas em equipamentos de HF tão sensíveis como o IC-7300. Apesar do valor de fontes de alimentação para estas finalidades ter vindo a reduzir, as fontes industriais custam 1/3 ou mesmo 1/4 do preço das principais marcas utilizadas em radio comunicações amadoras.

Mãos à obra

A ideia inicial era colocar um cabo de alimentação por dentro da fonte de modo a evitar o toque e electrocussão pela tensão da rede (~220V) aos terminais, onde vamos ligar a saída dos 13,8V.
Por isso abri um furo de 10mm e apliquei um passador de borracha para passar o cabo por dentro da fonte. Na ficha onde se fixam os cabos nos terminais, com o circuito impresso na mão, fiz um furo no plástico para que o fio pudesse ser ligado por dentro e mais tarde isolei estes terminais.

Identifiquei a bobine L1, e os pontos 1 e 2, e liguei os condensadores ao positivo comum. Coloquei outro condensador na saída dos 12V.

Voltei a montar a caixa e ajustei a fonte para os 13,8V no potenciómetro que se encontra num dos lados do conjunto de terminais. Este potenciómetro ajusta uns +-2V relativamente aos 12V com que a fonte vem regulada inicialmente.

Testes finais

Aplicando em paralelo uma carga de lâmpadas, por exemplo dos faróis da frente de automóveis, o que perfaz cerca de 15A a 20A a tensão de 13,8V não chega a oscilar 1mV!
Rádios ligados e até hoje sem problemas.

Referências
http://www.imajeenyus.com/electronics/20151028_smps_variable_voltage/index.shtml
http://www.imajeenyus.com/electronics/20151028_smps_variable_voltage/s-400-12_supply.pdf
https://mauser.pt/catalog/product_info.php?cPath=23_2630_723&products_id=035-0880

Sincronize a hora do seu Icom 7300

Hoje percebi que o relógio do Icom 7300 não mostrava a hora certa!
Ao contrário do IC-9700 que se liga a um servidor NTP, o 7300 não tem acesso à Internet e por isso não sincroniza o relógio.

O relógio nestes modelos permite não só saber a hora mas também registar QSO's em log, gravações de audio e contactos feitos em RTTY.

Uma rápida pesquisa mostrou-me que já existia solução! Um pequeno código em python que permite utilizar os comandos CAT de controlo remoto do rádio (CI-V/USB) descrita na secção 19 do manual avançado.

Este script de python está disponível no github, projecto de Kevin Loughin, KB9RLW, desde Junho de 2019.

Copie e edite as variáveis de baudrate e serialport. Se necessário instale as livrarias utilizadas por este pequeno script.

No meu raspberry pi, tenho uma pasta em /home/pi/bin que se encontra na variável $PATH, onde coloco todos os meus scripts. Substitua "pi" por "pi-star" se estiver a acompanhar o meu projecto all-in-one!

Como fazer

Recorde que, nestes posts, o caracter "$" não deve ser copiado e escrito na linha de comandos. Indica apenas que nos encontramos no modo de utilizador. "#" indica o modo de root.

Abra uma janela terminal e escreva os seguintes comandos, um de cada vez,

Agora copie e cole o código de https://github.com/loughkb/IC-7300-time-sync/blob/master/Set_IC7300_time.py
Grave, CTRL + s, e saia CTRL + x.

Atribua permissões de execução ao ficheiro,

e execute,

Aguarde até que o relógio do seu raspberry pi chegue a :00 e as horas no IC-7300 são sincronizadas.
Para o testar, altere previamente a hora do 7300 e corra o último comando. Ao minuto zero, eis que o rádio actualizou a hora!

Para que este sincronismo possa ser feito de forma automática e sempre que o 7300 está ligado, adicionei uma linha no meu crontab que chama este comando todas as horas. Em algum momento coincidirá o comando correr com o rádio ligado 🙂

Edite o seu crontab,

e cole as seguintes linhas no final do ficheiro,

Grave, CTRL + s, e saia CTRL + x.
Note que o linux é sensível a maiúsculas e minúsculas. Utilize pi ou pi-star de acordo com o seu user no raspberry pi.

Obrigado Kevin Loughin, KB9RLW!

Referências
https://github.com/loughkb/IC-7300-time-sync
https://youtu.be/GhuI-vrCBhs

NanoVNA Saver on the Raspberry Pi

NanoVNA console

Como utilizo o raspberry pi no meu shack como computador de comunicações, programação e para aplicações de eletrónica lembrei-me de procurar se existia alguma aplicação para ler os dados de um NanoVNC.

Aqui deixo o método para a instalação deste projecto…

Abra o terminal e na linha de comandos copie e cole cada uma das seguintes linhas,

Para testar e iniciar o programa, digite: python3 nanovna-saver.py

Se correu tudo bem, mova agora a pasta de instalação para outra directoria, no meu projecto pi-star, descrito ao longo deste blog fica como,

Agora adicione um atalho ao menu.
Crie um novo ficheiro fazendo,

E copie e cole o seguinte conteúdo corrigindo algum caminho de acordo com a sua instalação,

Grave e saia, CTRL+s seguido de CTRL+x

Ligue o cabo USB entre o raspberry pi e o NanoVNA. Ligue o seu NanoVNA e, na janela do NanoVNA, secção "Serial port control" deve aparecer de imediato uma porta /dev/ttyACM0 (S-A-A-2).
Prima o botão Connect to device e faça as suas medidas!…

Pode encontrar o modelo que experimentei aqui,
https://www.passion-radio.com/meter/saa2n-1076.html#/217-version-4_screen_10_1cm_with_n

Firmware TH-D74 V1.11

Firmware TH-D74 V1.11

Face aos pedidos do último firmware V1.11 para o Kenwood TH-D74E de colegas europeus deixo aqui para download.

De momento não encontro razões para que o firmware fosse retirado de download, possivelmente haveria algum bug grave!
Eu apenas dei conta que, com o APO activo (menu 921), nesta versão de firmware, por vezes o rádio reiniciava 2 ou 3 vezes cada vez que chegava ao tempo de power off…
Desconheço que implicações possa ter este problema! Use-o por sua conta e risco.

Referências:
https://www.kenwood.com/i/products/info/amateur/thd74_update_e.html

Imagens de SSTV enviadas pela ISS

Colecção de imagens transmitidas pela ISS entre 21/06/2021 e 27/06/2021 na frequência de 145,800MHz em FM, modo SSTV.

As condições e equipamento utilizado foram: um rádio Yaesu FT-817ND, antena vertical J-Pole, e um raspberry pi 4B com o programa QSSTV.

Na prática o exercício revelou-se interessante na compreensão de alguns fenómenos físicos envolvidos na recepção das imagens: o fading que levava o sinal de 9+ a 0 e de novo a 9+ por escassos décimos de segundo, imagino que, pela passagem de grandes massas de ar húmido, reflexões locais, etc... e, nesta frequência os +-3KHz de desvio por efeito doppler que pouco ou nada influenciava a recepção de uma boa imagem.

Algumas foram compostas e juntas para retirar ruído, com a excepção da imagem 3 que nunca cheguei a receber e que partilho a do colega DV2JB do expólio de https://www.spaceflightsoftware.com/ARISS_SSTV/ para completar esta colecção e mais tarde recordar...

De todas as órbitas da ISS no locator IM58gr, entre estas datas, falhei apenas 3. Foram ao todo 48 passagens! Ficam as estatísticas do número de imagens recebidas:

Actualização automática de programas escritos por John, G8BPQ

Este script para linux implementa algumas melhorias em relação ao post anterior e permite-lhe actualizar diversos programas que se encontrem na sua pasta local e disponíveis para download, por exemplo, na sua versão beta de G8BPQ. Guarda uma cópia das versões anteriores, na pasta versions, caso necessitemos de fazer o restauro e pára o linbpq. Se o linbpq estiver configurado como serviço deverá reiniciar logo após ser parado.

Neste exemplo utilizo um raspberry pi 4, que corre em simultâneo uma versão do pi-star MMDVM modificada e que utilizo como computador para modos digitais e IoT...

Copie e cole o código seguinte na pasta onde tem instalado os diversos programas BPQ. No meu caso em /usr/local/bin/linbpq/

Cole o seguinte código, ou faça o seu download se está a utilizar a página traduzida e leia atentamente as instruções comentadas no início do ficheiro.

Grave e saia. Se editou com o "nano" faça CTRL+s e em seguida CTRL+x, tudo em minúsculas.
Atribua permissões de execução ao ficheiro,

e, execute-o

Adiciona a seguinte linha em /etc/crontab, modificando o user e localização do seu script.

Para melhor compreender este assunto, consulte o meu post anterior...

Referências:
https://packet-radio.net/update-linbpq-with-up2bpq/

IoT com Sonoff em rede local

Finalmente encontrei uma razão para brincar com a Internet das coisas!

Pretendia ligar e desligar alguns rádios que não fazem sentido manterem-se ligados 24h por dia, por questões de consumo, e que fazem parte da minha estação digital de packet e ardop.

Assim, o rádio de HF em 20m está ligado apenas de dia e o de HF em 40m e 80m apenas à noite! Possibilitou-me ainda que o rádio da SatGate apenas se ligue na proximidade de satélites de packet e APRS…

O resultado desta brincadeira pode ser visto em tempo real na página Beacons e APRS de CT1EBQ.

Mas, um dos motivos por ainda não ter feito nada com a IoT era o facto de todos os dispositivos serem ligados e controlados a partir de um fornecedor externo que, querendo podem podem vir a ligar-me ou desligar-me equipamentos, registarem leituras de consumos e ambiente… isto não quero!

Às voltas com soluções para criar uma rede local da IoT dei com uns equipamentos a bom preço e que permitem o upgrade de diferentes firmwares sem ligação a outros fornecedores!

Os equipamentos que aqui descrevo são os Sonoff Dual R2 que permitem 2 interruptores à tensão da rede elétrica e, o Sonoff 4CH Pro R3 com 4 interruptores com relé de 2 estados e ligações normalmente abertas e fechadas, que podem ser utilizadas para qualquer tensão com uma corrente até 10A, por exemplo a 13,8V, aquela que me interessava para controlar os rádios.

O firmware foi escrito por Theo Arends que lhe deu o nome de Tasmota e, nesta data vai na versão 9.2

Há inúmeras maneiras de escrever este firmware nestes Sonoff. Através de um simples raspberry pi, um computador com Windows ou um Mac.
Descrevo a última e também a mais fácil…

Faça o download e instale o programa NodeMCU PyFlasher para OSX e da última versão de firmware Tasmota no seu idioma.

Vai precisar de um adaptador USB/RS-232 com tensões TLL de 3,3V e, de 4 fios com terminais fêmea/fêmea para ligar o adaptador ao header strip dos Sonoff.

Abra o seu Sonoff, no meu caso vou instalar este firmware em ambos, o Dual R2 e o CH4 Pro R3.
Solde um header strip de 4 ou 5 pinos conforme as figuras, a cada um deles,

NOTA: muito importante! Não alimente os Sonoff durante a programação! A corrente fornecida pelo adaptador USB/RS-232 é suficiente para o processo de carregamento do novo firmware!

Ligue os fios entre o adaptador USB/RS-232 e o Sonoff a programar... os fios RX e TX data trocam entre eles. Isto é, o RX no adaptador USB liga ao TX no Sonoff. O TX no adaptador liga ao RX no Sonoff.

Abra o programa NodeMCU PyFlasher, seleccione a porta série, o ficheiro binário do firmware, o baud rate do RS232 deve ser 115200, escolha o modo de Flash - no meu caso ambos os chip são o ESP8285 e a opção escolhida deve ser "Dual Output (DOUT)", e apague todos os dados anteriores.

No Sonoff Dual R2 versão de 2020 coloque um jumper entre os pinos GND/BUTTON0

No Sonoff CH4 Pro R3 pressione e mantenha pressionado por 2 ou 3 segundos o primeiro botão S1 (IO0) ao ligar o adaptador USB ao computador (isto é, ao alimentar o circuito) que está ligado ao GPIO para actualização de firmware.

Faça Flash NodeMCU.

Se tudo estiver bem configurado irá ver na consola o processo de actualização a decorrer, identico para ambos,

Command: esptool.py --port /dev/cu.usbserial --baud 115200 --after no_reset write_flash --flash_mode dout 0x00000 /Users/ricardo/Downloads/tasmota-PT.bin --erase-all
esptool.py v2.6
Serial port /dev/cu.usbserial
Connecting….
Detecting chip type… ESP8266
Chip is ESP8285
Features: WiFi, Embedded Flash
MAC: d8:f5:5b:32:3d:62
Uploading stub…
Running stub…
Stub running…
Configuring flash size…
Auto-detected Flash size: 1MB
Erasing flash (this may take a while)…
Chip erase completed successfully in 5.1s
Compressed 602368 bytes to 429961…
Wrote 602368 bytes (429961 compressed) at 0x00000000 in 39.4 seconds (effective 122.5 kbit/s)…
Hash of data verified.
Leaving…
Staying in bootloader.
Firmware successfully flashed. Unplug/replug or reset device 
to switch back to normal boot mode.

Deslique o adaptador USB e todos os fios. Retire o jumper do Dual R2 se for o caso.
Ligue agora a alimentação ao seu Sonoff... apesar de aqui descrever a actualização para ambos os modelos, faça-o a um de cada vez.

Ligue agora o Sonoff que entrará em modo AP (access point). Pesquise redes wireless na proximidade, e encontrará uma rede com um nome idêntico a "tasmota_923D62-7522". Ligue-se a essa rede e após uns segundos abre-se uma janela no seu computador para configurar a rede wireless onde pretende que este Sonoff se ligue.

Assim que aplicadas as definições de rede neste Sonoff, com o serviço de DHCP activo no seu router, pesquise na sua rede novos endereços IP…
Ligue-se agora ao seu Sonoff através do web browser, digitando este endereço no URL.

Configure o modelo Sonoff, neste post o Dual R2 ou o CH4 Pro R3, grave, ele fará reboot não levando mais de 5 segundos e aparecerão 2 ou 4 botões para ligar e desligar os relés…

Use-os nas suas aplicações favoritas…

Ligar e desligar através de Raspberry Pi

Supondo que o endereço IP do seu Sonoff é 192.168.1.10

Através do crontab, adicione as seguintes linhas no ficheiro /etc/crontab

Directamente por linha de comandos,

Power1 indica neste caso o relé 1. Substitua este número por 1 ou 2 no modelo Dual R2 e por 1, 2, 3 ou 4 no CH4 Pro R3.
A opção "On" ou "Off" liga ou desliga o relé em causa, respectivamente.

Referências
https://esphome.io/devices/sonoff.html

Dual band J-Pole

Nunca comprei uma antena para o QTH ou para os dias de campo. As únicas que adquiri foram para uso móvel ou portátil, pelas suas características ou preço.
Além do custo destas antenas, tenho gosto em construir, em validar as leis da física e aprender com a experiência. E a satisfação, imagino, é como a de um pintor ou escultor quando terminam a sua obra...

Não inventei nada. Este artigo é fruto de pesquisas sobre antenas com ângulos de radiação baixos e fáceis de construir. A J-Pole é uma antena óptima para quando compramos um novo rádio de VHF ou UHF e dizemos - então e agora!?
Constrói-se numa tarde, depois de adquirido todo o material e ferramenta.

O artigo original, de Jeffrey Bail, NT1K está muito bem explicado, apenas acrescento aqui algumas modificações e medidas métricas. Por exemplo, Jeffrey utiliza varão de alumínio que torna a antena mais pesada, eu utilizo tubo de alumínio de 9mm de diametro, 2 deles roscado por dentro, que apertam nos parafusos de fixação à cantoneira, e o elemento irradiante roscado por fora, que aperta no adaptador da SO-239 com rosca de 3/8". Deste modo melhora-se o peso e a resistência da antena ao vento.
Sempre que possível utilizem material em alumínio ou inox e no final, pintem a antena e toda a estrutura.

Mãos à obra

Eis como construir uma antena J-Pole para 2m e 70 cm para o seu QTH, casa de férias ou caravana.
Já fiz umas 5 e aqui vos deixo as medidas e métodos para a sua construção prática.

A vantagem de uma J-Pole relativamente ao dipolo é o angulo de saída na ordem dos 20º, melhorado apenas pelas Slim Jim com 8º ou por antenas Colineares.
A J-Pole é também uma excelente antena para comunicações satélite. Um bom compromisso entre ganho e ângulo de radiação.

A sua construção física é muito interessante e fácil. O elemento de maior comprimento liga a toda a extrutura metálica de suporte - mastro ou torre, comportando-se muito bem na descarga da ionização do ar à terra.

A largura de banda é influenciada pelo diametro do tubo: em VHF é superior a 5 MHz e em UHF superior a 10 MHz, que cobrem toda a largura das bandas de amador nestas frequências.

Utilize de preferência tubo de alumínio bruto, não anodizado. O comprimento dos tubos aqui referidos são para alumínio bruto, com coeficiente de velocidade de ~0,95.

Material:
1 (A) tubo de alumínio de 490mm (radiante)
1 (B) tubo de alumínio 165mm (elemento UHF)
1 (C) tudo de alumínio 1480mm (elemento VHF)
1 fixação para PL-259 fêmea isolada com espaçadores para elemento radiante
1 cantoneira de alumínio ou aço inox com 150mm x 25mm x 25mm
2 parafusos de 70mm M7 inox ou zincados
2 porcas para parafuso M7 inox ou zincadas
3 tampas de 9-10mm para tapar as extremidades superiores dos tubos
1 braçadeira em U para fixação da antena com o diâmetro necessário ao mastro que utilizar

Ferramenta:
cançonete 3/8"
macho para M7

Corte os 3 tubos com as medidas referidas no material a utilizar. Pode prescindir do tubo de UHF ou VHF se pretender apenas construir a antena mono banda.

Faça a furação na cantoneira de acordo com o desenho. A distância entre os elmentos verticais não é crítica e depende da relação distância dos elementos da antena e o diametro dos tubos.

Comece por aparafusar o conjunto parafusos M7 com as respectivas porcas, para os elementos antena B e C.

Abra rosca interior nestes tubos, B e C, com o comprimento do parafuso M7, desde a porca à sua extremidade. O alumínio é muito "guloso", são necessários movimentos como meia ou uma volta a fazer rosca, no sentido dos ponteiros do relógio, e 2 voltas a retirar material em sentido contrário. A seguir recupera as 2 voltas e dar mais uma, novamente 2 voltas em sentido contrário… e por aí fora até conseguir roscar o interior do tubo até ao comprimento do parafuso.

O tubo A é roscado por fora, com o cançonete apenas o tamanho necessário para apertar até ao fundo do conjunto adaptador/isolador que termina na PL-259.

Com cola de silicone aplicar as pequenas tampas com o cuidado de retirar o ar para que a tampa não salte enquanto a cola seca completamente. Em alternativa coloque apenas cola nas extremidades dos tubos de forma a selar a entrada de humidade.

Como acabamento final pintei todo o conjunto com tinta plástica sem base de carbono, de modo a não alterar as características do alumínio, já que, recorde, a radio frequência circula no exterior do condutor, isto é, do tubo da antena.

Referências:
https://www.wimo.com/en/30016
https://m0ukd.com/calculators/slim-jim-and-j-pole-calculator/
https://nt1k.com/open-stub-j-pole-project-completed-many-times/