Qui. Jan 23rd, 2025

Com o pixie deu vontade de aprender morse, mas como demora demasiado tempo, tive de arranjar uma solução enquanto não aprendo.

A solução passou pelo desenvolvimento do Morser, um pequeno projecto em Arduino que codifica em morse os que entra pela porta série do Arduino.

Material:

  • Arduino Mega
  • Modulo de Relé para Arduino.
  • Bateria
  • Pixie
  • Antena cana de pesca.
  • PC com programa terminal serie.

O Código para o arduino está no fundo desta página.

A antena foi ‘afinada’ para os 40m de uma forma muito tosca.

Valores da antena no nano vna

O Setup :

Testing Testing…

Testando com a mensagem :
“CQ CQ CQ CR7AWB operating ***** CQ CQ CQ CR7AWB operating ***** CQCQCQ” – Coloquei asteriscos pois não quero identificar o supervisor sem permissão.

E Funcionou ????

SIM !!! No reverse beacon os meus 0.4 W foram ouvidos na Austria.

Pixie de 0.4w a ser ouvido na Austria
O avião tá carote….

Por fim, o pixie, não deve ser alimentado com 12v pois no fim de minutos ele queimou…

Fumo de transístor…

Seja como for, morreu de forma gloriosa !

Codigo fonte para o arduino morser:

int ledPin = 13;
int ltime = 120;
int stime=40;

void keyer(String letra){
  size_t i = 0;
  while (letra[i] != '\0') {    
      Serial.print(letra[i]);
      //printf("%c", letra[i]);
      digitalWrite(ledPin, LOW);
      if (letra[i] == '-'){
           digitalWrite(ledPin, HIGH);
           delay(ltime);
           digitalWrite(ledPin, LOW);
           delay(stime);
      }
      if (letra[i] == '.'){
           digitalWrite(ledPin, HIGH);
           delay(stime);
           digitalWrite(ledPin, LOW);
           delay(stime);
      }
      if (letra[i] == '/'){
           Serial.println(' '); 
           digitalWrite(ledPin, LOW);
           delay(ltime);
      }
      i++;
  }
  Serial.print(' '); 
  delay(ltime);
}

int morse(char letra){
    switch (letra){
     case 'a':
       keyer(".-");
       break;
     case 'b':
       keyer("-...");
       break;
     case 'c':
       keyer("-.-.");
       break;
     case 'd':
       keyer("-..");
       break;
     case 'e':
       keyer(".");
       break;
     case 'f':
       keyer("..-.");
       break;
     case 'g':
       keyer("--.");
       break;
     case 'h':
       keyer("....");
       break;
     case 'i':
       keyer("..");
       break;
     case 'j':
       keyer(".---");
       break;
     case 'k':
       keyer("-.-");
       break;
     case 'l':
       keyer(".-..");
       break;
     case 'm':
       keyer("--");
       break;
     case 'n':
       keyer("-.");
       break;
     case 'o':
       keyer("---");
       break;
     case 'p':
       keyer(".--.");
       break;
     case 'q':
       keyer("--.-");
       break;
     case 'r':
       keyer(".-.");
       break;
     case 's':
       keyer("...");
       break;
     case 't':
       keyer("-");
       break;
     case 'u':
       keyer(".--");
       break;
     case 'v':
       keyer("...-");
       break;
     case 'w':
       keyer(".--");
       break;
     case 'x':
       keyer("-..-");
       break;
     case 'y':
       keyer("-.--");
       break;
     case 'z':
       keyer("--..");
       break;
     case '1':
       keyer(".----");
       break;
     case '2':
       keyer("..---");
       break;
     case '3':
       keyer("...--");
       break;
     case '4':
       keyer("....-");
       break;
     case '5':
       keyer(".....");
       break;
     case '6':
       keyer("-....");
       break;
     case '7':
       keyer("--...");
       break;
     case '8':
       keyer("---..");
       break;
     case '9':
       keyer("----.");
       break;
     case '0':
       keyer("-----");
       break;
     case '/':
       keyer("/");
       break;
     default:
             keyer("");
    }    
    //Serial.println( '\n>>>'); 
    return 0;
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  
    
  pinMode(ledPin, OUTPUT);

  Serial.print("Relay in pin ");
  Serial.println(ledPin);

  Serial.println("Ay Ay Es el muy poderoso morser !!");
  
}

void loop() {
    
    String letra = Serial.readString();
    size_t i = 0;
    i=0;
    while (letra[i] != '\0') {       
       morse(letra[i]);    
       i++;
    }
}

By AWB

Deixe um comentário