2023
HOME

LoRa und RadioLib - Senden und Empfangen ohne Lizenz | Sad-Ham
Logo ESP8266BASICMorsen mit SX1278
Die Mutter der Modulationsarten: Morsen bzw. CW mit dem ESP8266 oder RP Pi Pico.

Mit der RadioLib für die Arduino IDE ist es sehr einfach mit dem mitgelieferten Beispielen die klassischen Modulationsarten in den Äther zu senden. An dieser Stelle soll mit einem ESP8266 oder einem RP Pico etwas Text gesendet -, und per RTLSDR am PC mit FlDigi dekodiert und angezeigt werden.

Logo ESP8266BASIC

RadioLib und SX1278 mit Ausstrahlung von CW alias Mosre und Morse-Alphabet

Die Bibliothek verwendet die Anschlüsse eines Arduino als Voreinstellung, so dass diese Pinbelegung zunächst sorgfältig angepasst werden muss. Nachdem die Header angebracht sind, folgt der Aufbau auf einem Steckbrett.

Nach der Installation der RadioLib für die Arduino-IDE kann ein erster Test erfolgen.


ESP8266 und RP Pico mit Morse-Transmit-SSB


Diese Beschreibung geht davon aus, dass zuvor der RTTY-Betrieb getestet ist und funktioniert. Somit werden die Anpassungen der Bibliothek und die Pinbelegung hier nicht wiederholt.

Ein ESP8266 oder RP Pico soll mit der RadioLib Verwendung finden und das Beispiel Morse_Transmit_SSB aus dem Menü eine Morse-Signal erzeugen, welches mit einem SSB-tauglichen Empfänger und entsprechender Software oder dem Gehör dekodiert werden kann.

Unter Beispiele/RadioLib/Morse liegt der Sketch Morse_Transmit_SSB, der entsprechend der Hardware leicht angepasst wie folgt zum Ergebnis führt:

/*
   RadioLib Morse Transmit SSB Example

   This example sends Morse code message using
   SX1278's FSK modem. The signal is an unmodulated
   carrier wave, and may be demodulated in SSB mode.
   https://jgromes.github.io/RadioLib/
*/

#include <RadioLib.h>
//SX1278 radio = new Module(10, 2, 9, 3); //ARDUINO
//SX1278 radio = new Module(15, 4, 16, 0);//ESP8266
SX1278 radio = new Module(17, 13, 15, 14);//RP Pico(W)

MorseClient morse(&radio);

void setup() 
{ Serial.begin(9600);
  Serial.print(F("[SX1278] Initializing ... "));
  int state = radio.beginFSK();
  if(state == RADIOLIB_ERR_NONE) 
  { Serial.println(F("success!"));
  } 
  else 
  { Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }
  Serial.print(F("[Morse] Initializing ... "));
  state = morse.begin(433.0);
  if(state == RADIOLIB_ERR_NONE) 
  { Serial.println(F("success!"));
  } 
  else 
  { Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }
}

void loop() 
{ Serial.print(F("[Morse] Sending Morse data ... "));
  morse.startSignal();
  String aStr = "RP Pico W via SX1278 Ra02 in SSB CW on 433 MHz. ";
  morse.println(aStr);
  morse.print("C-String, ");
  morse.print(F("Flash String "));
  morse.print('c');
  morse.print(255, HEX);
  int i = 1000;
  morse.print(i);
  float f = -3.1415;
  morse.println(f, 3);
  Serial.println(F("done!"));
  delay(1000);
}

Mit entsprechendem SSB-Empfänger wie z. B. HDSDR oder SDR# und RTLSDR kann des Signal gehört und per Software FlDigi oder per Ohr dekodiert werden.


ESP8266 und RP Pico mit Morse-Transmit-AM


Um auch ohne SSB-Receiver die Ausstrahlungen des SX1278-Morse-Signals zu empfangen gibt es Billigstempfänger aus dem fernen Osten.

Mit Vcc = 3,3 V, Gnd und data zu einem Verstärker über einen Kondensator steht der Empfänger bereit, um alles zu empfangen was irgendwo bei 433 MHz sendet. Damit und dem RadioLib Morse_Transmit_AM ist kein SSB-Empfänger mehr notwendig.

Dabei sendet der Pico zusätzlich über GPIO05 PWM-Audio an den SX-DIO2-Pin für den Abschnitt AFSKClient audio(&radio, 5) im Sketch.

Der Data-Pin liefert ein NF-Signal, welches über einen Verstärker z. B. dem Mikro eines Smartphones mit Morse-Decoder zugeführt werden kann. Unter Beispiele/RadioLib/Morse liegt der Sketch Morse_Transmit_AM, der den Audio-Modus verwendet (gekürzt und angepasst):

/*
   RadioLib Morse Transmit AM Example

   This example sends Morse code message using
   SX1278's FSK modem. The signal is modulated
   as OOK, and may be demodulated in AM mode.
   https://jgromes.github.io/RadioLib/
*/

#include <RadioLib.h>

SX1278 radio = new Module(17, 13, 15, 14);  // RP PicoW

AFSKClient audio(&radio, 5);

MorseClient morse(&audio);

void setup() 
{ Serial.begin(9600);
  Serial.print(F("[SX1278] Initializing ... "));
  int state = radio.beginFSK();
  if(state == RADIOLIB_ERR_NONE)Serial.println(F("success!"));
  else 
  { Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }
  Serial.print(F("[Morse] Initializing ... "));
  state = morse.begin(440); //Tone in Hz, 20 wps
  if(state == RADIOLIB_ERR_NONE)Serial.println(F("success!"));
  else 
  { Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }
  Serial.print(F("[SX1278] Switching to OOK ... "));
  state = radio.setOOK(true);
  if(state == RADIOLIB_ERR_NONE) Serial.println(F("success!"));
  else 
  { Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }
}

void loop() 
{ Serial.print(F("[Morse] Sending Morse data ... "));
  morse.startSignal();
  String aStr = "Arduino String";
  morse.print(aStr);
  morse.print("C-String");
  morse.print(F("Flash String"));
  morse.print('c');
  morse.print(255, HEX);
  int i = 1000;
  morse.print(i);
  float f = -3.1415;
  morse.println(f, 3);
  Serial.println(F("done!"));
  delay(5000);
}

Benutzter Decoder: Android Morse Code Reader über eingebautes Mikrofon. Data mit C = 10 uF zur Masse, da Pfeifton 4,8 kHz oberhalb Morse. Als OOK gilt in diesem Zusammenhang Continuous Mode oder CW.


															

													


												

Software/Radio

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt