ARDUINO FELD HELL ou
HELLSCHREIBER
O
que é ?
Um pouco mais sobre Feld Hell (ingles) ...

Imagem do display recebendo Feld
Hell, com o arduino "CQ CQ CQ DE PY2OHH".
Video deste
DECODIFICADOR no YOUTUBE
O Procurando na WEB achei o WA6PZB Dan em seu BLOG , no seu blog o Dan mostra como
receber o feld hell com o arduino.
Estudando o sketch eu modifiquei a parte do display para acertar com o
meu display TFT simples, que é barato e fácil de
programar. Meu display é de 128x160 pixels,
não é uma maravilha mas pelo preço de cerca
de 4U$ tem um desempenho muito bom.
Esquema :

No site do WA6PZP não aparece o esquema do adaptador de entrada
(link quebrado), então desenvolvemos um. Apesar de ter
trabalhado com audio diretamente na entrada do arduino, o resultado com
o LM567 se confirmou como melhor e sem o ruido, perde um pouco na
sensibilidade mas o reultado é bom.
Os valores dos capacitores no circuito do lm567 podem ser outros basta
procurar na WEB que existem varios exemplos do uso do LM567 como
conversor AD em sinais de CW.
Sketch :
// Seven Line Hellscriber Painter
// Software from WA6PZP adaptado por PY2OHH para o display
//TFT 128x160 com o ST7735. Com 160 pixels na horizontal
#include <TFT.h>
#include <SPI.h>
int analogPin = 5; // The audio input pin
int analogPot1 = 4; // Lower Limit Pot pin
int analogPot2 = 3; // Upper Limit Pot pin
int x, y, x2 = 0 ; // plotting varables
int sig = 0; // Audio signal varable
int pot1, pot2; // Analog pot values
int greendot, dot; // The Hellscrieber dot varables
int lower, upper; // Contrast mapped pot values
#define cs 10 // pinos do arduino para o display
#define dc 8
#define rst 9
TFT TFTscreen = TFT(cs, dc, rst);
void setup()
{
TFTscreen.begin();
TFTscreen.background(255, 0, 0);
}
void loop()
{
for (int y = 0; y < 159; y++)
{
for (int x = 14 + x2; x > 0 + x2; x--) // certo
// for (int x = 0 ; x = 14;
x++)// esta linha imprime os caracteres em espelho ou inverso
{
sig = analogRead(analogPin); // signal
input
pot1 = analogRead(analogPot1); //get
lower limit
pot2 = analogRead(analogPot2); //get
upper limit
lower = map(pot1, 0, 1023, 0, 511); //
map pot1 to lower range
upper = map(pot2, 0, 1023, 512, 1023);
// map pot2 to upper range
dot = map(sig, lower, upper, 0, 255); //
Signal mapped with a lower & upper limit for contrast
greendot = dot;
TFTscreen.stroke(0, greendot, 0);
TFTscreen.point(y, x);
TFTscreen.point(y , x + 13);
delayMicroseconds(3480L); // master time
delay for Hellschreiber
}
}
x2 = x2 + 32; // paint line offset with boundary to seperate
each line with black space
if (x2 > 114) x2 = 0;
}
Fotos da montagem :

Montagem tipo sandwich
Usamos soquetes para fixar os modulos e CIs

A montagem tem 4 potenciometros

Vista do arduino Nano e do LM567

PCB sen o arduino nano

Para uma montagem rapida uso jumpers.
Este Sketch imprime com 128 pixels na horizontal
// Seven Line Hellscriber Painter
// Software from WA6PZP adaptado por PY2OHH para o display
//TFT 128x160 com o ST7735. Com 128 pixels na horizontal
#include <TFT.h>
#include <SPI.h>
int analogPin = 5; // The audio input pin
int analogPot1 = 4; // Lower Limit Pot pin
int analogPot2 = 3; // Upper Limit Pot pin
int x, y, x2 ; // plotting varables
int sig = 0; // Audio signal varable
int pot1, pot2; // Analog pot values
int greendot, dot; // The Hellscrieber dot varables
int lower, upper; // Contrast mapped pot values
#define cs 10
#define dc 8
#define rst 9
TFT TFTscreen = TFT(cs, dc, rst);
void setup()
{
TFTscreen.begin();
TFTscreen.background(255, 0, 0);
}
void loop()
{
for (int y = 0; y < 127; y++)
{
for (int x = 131 - x2; x < 145 - x2; x++)
{
sig = analogRead(analogPin); // signal
input
pot1 = analogRead(analogPot1); //get
lower limit
pot2 = analogRead(analogPot2); //get
upper limit
lower = map(pot1, 0, 1023, 0, 511);
//map pot1 to lower range
upper = map(pot2, 0, 1023, 512, 1023);
//255 map pot2 to upper range
dot = map(sig, lower, upper, 0, 255);
//Signal mapped into 5 bits with a lower & upper limit for contrast
greendot = dot;
TFTscreen.stroke(0, greendot, 0);
TFTscreen.point(x, y);
TFTscreen.point(x + 13 , y);
delayMicroseconds(3480L); //master time
delay for Hellschreiber
}
}
x2 = x2 + 32; // era 35paint line offset with boundary to
seperate each line with black space
if (x2 > 140) x2 = 0;
}
Vamos escrever o programa de decodificação de CW neste
hardware, para um futuro projeto de receber CW e FELD HELL no mesmo
equipamento.
73 de py2ohh miguel