Ich habe mich kürzlich mit jemandem unterhalten und es hat mich überrascht, dass sie eine Amateurfunklizenz hat. Ich nehme an, es hätte nicht so überraschend sein sollen. Schließlich ist das Erhalten einer Amateurfunklizenz ein ziemlich häufiger Übergangsritus im Leben eines Hardware-Hackers. Ich denke, es hat mich überrascht, weil sie es in unseren vergangenen Gesprächen nie erwähnt hatte, und als wir darüber sprachen, erfuhr ich warum. “Ich habe meine Lizenz bekommen, weil ich dachte, Amateurfunk würde Radios bauen”, sagte sie. “Aber es ist nicht.”

In vielerlei Hinsicht hat sie Recht mit dem Zustand des Amateurfunk. Es gab eine Zeit, in der das Bauen eigener Ausrüstung für das Hobby genauso zentral war wie das Ausstrahlen, und vielleicht noch mehr. Jetzt aber mit Radios so billig wie 30 Dollar und die Whiz-Bang-Ausrüstung, die es trivial einfach macht, über den Planeten zu gelangen und eigene Radios zu bauen, ist um einige Stufen gesunken. Aber Homebrewing ist alles andere als eine tote Kunst, und wie wir in dieser Folge von „The $ 50 Ham“ sehen werden, ist ein WSPR-Leuchtfeuer für die HF-Bands eine unterhaltsame, einfache und kostengünstige Möglichkeit für Homebrew-Neugierige Ein Vorgeschmack darauf, wie es ist, einen eigenen Sender zu bauen.

Ein minimalistischer Ansatz

Im die letzte $ 50 Ham RateIch habe darüber gesprochen, wie der Weak Signal Propagation Mode (WSPR) verwendet wird, um die Ausbreitungsbedingungen auf der ganzen Welt zu untersuchen. Das Konzept ist einfach: Ein Transceiver, der mit einem WSPR-Client-Programm wie dem eingebauten verbunden ist WSJT-X, lauscht auf die FSK-modulierten Signale, die von anderen Stationen übertragen werden. Die Signale mit niedriger Bitrate codieren eine minimale Nachricht – das Rufzeichen der Sendestation, den Standort des Maidenhead-Netzes und die Sendeleistung – in ein digitales Signal, dessen Senden fast zwei volle Minuten dauert. Die empfangende Station meldet die decodierte Nachricht dann an eine zentrale WSPR-Datenbank, die die Kontakte verfolgt und eine Karte der Pfade zwischen den Stationen anzeigen kann.

Auf der Empfangsseite liegt der größte Teil der Magie von WSPR in der Software, insbesondere in der digitalen Signalverarbeitung, die Daten aus dem oft schwachen und verschlechterten Signal zieht. Aber die sendende Seite ist eine andere Geschichte; Dort ist die Software, die zum Codieren der minimalen Nachricht benötigt wird, ziemlich einfach, so einfach, dass nicht viel mehr als ein Mikrocontroller benötigt wird, um die Arbeit zu erledigen. Alles, was benötigt wird, ist ein Oszillator, der in der Lage ist, ein Signal mit einer festen Frequenz zu erzeugen und diese Frequenz unter Softwaresteuerung zu variieren, um die Nachricht zu codieren.

Es gibt viele Möglichkeiten, dies zu tun, einschließlich Verwenden der GPIO-Pins eines Raspberry Pi, um das HF-Signal direkt zu erzeugen. In diesem Fall habe ich mich jedoch entschlossen, dem Beispiel vieler anderer Schinken zu folgen und ein Si5351-Taktgenerator-Breakout-Board und einen Arduino Nano zu verwenden. Die Taktgeneratorplatine verfügt über einen dreikanaligen PLL-gesteuerten Oszillator, der über I2C spricht und über eine gut unterstützte Bibliothek verfügt, sodass ein einfacher Oszillator für nahezu jedes Band einfach implementiert werden kann.

Ich habe mich entschlossen, mein WSPR-Leuchtfeuer für die 20-Meter-Band zu bauen, und zwar aus keinem anderen Grund als dem, dass ich bei Tageslicht immer Glück hatte, WSPR-Kontakte zu dieser Band zu knüpfen. Dann verbringe ich die meiste Zeit in meiner Hütte. Ich entschied auch, dass ich zumindest für meinen ersten Durchgang bei diesem Projekt alle Schnickschnack entfernen würde, die so einfach zu einem Arduino-Projekt hinzuzufügen sind. WSPR-Übertragungen müssen sorgfältig synchronisiert werden, um zu Beginn jeder geraden Minute zu beginnen. Viele dieser Projekte umfassen daher Ausarbeitungen wie einen GPS-Empfänger oder einen NTP-Client, um das Timing zu gewährleisten. Ich dachte, es wäre viel schneller und einfacher für mich, einfach auf die Uhr zu schauen und einen Knopf zu drücken, um den WSPR-Übertragungszyklus zur richtigen Zeit zu starten.

Zu diesem Zweck suchte ich nach „minimalen WSPR-Sendern“ und fand eine Reihe von Designs, die für mich funktionieren würden, einschließlich Dieses hier von Peter B. Marks. Er hat den Code aus den Beispielen von Jason Milldrum (NT7S) in seiner hervorragenden Etherkit-Bibliothek für den Si5351 angepasst – wir alle leihen uns gegenseitig aus. Meine einzige Ergänzung zum Code ist die Unterstützung einer Taste zum Starten des Senders. Der Code nimmt einfach mein Rufzeichen, das Gitterquadrat und die Sendeleistung, codiert es in eine WSPR-Nachricht und weist den Si5351 an, die Folge von vier verschiedenen FSK-Tönen zu senden, aus denen die 162 Symbole lange Nachricht besteht.

/ * * Minimales WSPR-Beacon mit Si5351Arduino-Bibliothek * * Basierend auf Code: * Copyright (C) 2015 – 2016 Jason Milldrum * * * Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU weitergeben und / oder ändern * Allgemeine öffentliche Lizenz, wie von * der Free Software Foundation, entweder Version 3 der Lizenz, oder * (nach Ihrer Wahl) einer späteren Version veröffentlicht. * * Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich sein wird, * aber OHNE JEGLICHE GARANTIE; ohne auch nur die implizite Garantie von * MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Informationen finden Sie in der * GNU General Public License. * * Sie sollten zusammen mit diesem Programm eine Kopie der GNU General Public License * erhalten haben. Wenn nicht, siehe * https://gist.github.com/NT7S/2b5555aa28622c1b3fcbc4d7c74ad926. * / #include “Arduino.h” #include “si5351.h” #include “Wire.h” #define TONE_SPACING 146 // ~ 1,46 Hz #define WSPR_CTC 10672 // CTC-Wert für WSPR #define SYMBOL_COUNT WSPR_SYMBOL_COUNT #define CORRECTION 94 // Experimentell bestimmt – Teile pro Milliarde? #define INPUT_PIN 7 // Drucktaste #define TX_LED_PIN 13 Si5351 si5351; JTEncode jtencode; vorzeichenlose lange Frequenz = 14097100UL; // Frequenz-Char-Anruf senden[7] = “N7DPM”; // Rufzeichen char loc[5] = “DN17”; // Gitterquadrat uint8_t dbm = 10; // Sendeleistung uint8_t tx_buffer[SYMBOL_COUNT];; int val = 0; // Globale Variablen, die in flüchtigen ISRs verwendet werden bool continue = false; // Timer-Interrupt-Vektor. Dies schaltet die Variable um, die wir verwenden, um // jede Ausgabespalte zu steuern, um ein genaues Timing sicherzustellen. Wird immer dann aufgerufen, wenn // Timer1 die unten in setup () festgelegte Anzahl erreicht. ISR (TIMER1_COMPA_vect) {continue = true; // Serial.println (“Timer ausgelöst”); } // Durchlaufe die Zeichenfolge und übertrage jeweils ein Zeichen. void encode () {uint8_t i; Serial.println (“encode ()”); jtencode.wspr_encode (call, loc, dbm, tx_buffer); // Den Ton auf 0 zurücksetzen und den Ausgang einschalten si5351.set_clock_pwr (SI5351_CLK0, 1); digitalWrite (TX_LED_PIN, HIGH); // Jetzt mache den Rest der Nachricht für (i = 0; i Das Signal bereinigen

Wie jeder gute Schinken habe ich meinen winzigen Sender getestet, bevor ich ihn auf Sendung brachte. Die einfache Scheinlast Ich habe es zu Beginn dieser Serie wieder aufgebaut, da ich es direkt an den SMA-Anschluss auf der Breakout-Platine anschließen konnte. Ich habe mein Oszilloskop an den Ausgang angeschlossen und den Code ausgelöst. Der Si5351 soll eine Rechteckwelle erzeugen; Am Ende sah es eher wie eine Sägezahnwelle aus, aber in beiden Fällen war das Signal mit Harmonischen beladen und musste vor dem Ausstrahlen gereinigt werden.

Oberschwingungen vom Si5351 entfernen. Gelbe Spur ist die rohe Ausgabe vom Entwicklungsbrett; Die grüne Kurve wird vom Tiefpassfilter ausgegeben.

Glücklicherweise sind Tiefpassfilter, die sich um diese wichtige spektrale Hygiene kümmern, ziemlich einfach. Sie können sie kaufen, aber hier dreht sich alles um Homebrewing, also habe ich a Charlie Morris (ZL2CTM) Video zum Filterdesign, ging seine Mathematik durch und fand Werte für die Kondensatoren und Induktivitäten, die für einen Filter benötigt werden, der alles über etwa 14,2 MHz abschneidet. ich benutzte dieser Toroidrechner Um herauszufinden, wie die Spulen aufgewickelt werden, wurde alles auf ein Stück Leiterplatte gelötet, in das Pads geschnitten wurden ein billiges Plug-Cutter-Bit von Harbor Freightund testete es mit meinem NanoSA-Spektrumanalysator.

Nachdem ich noch nie einen solchen Filter gebaut hatte, war ich überrascht, wie gut er die Harmonischen aufräumte. Die Wellenform auf dem Oszilloskop war eine schöne, glatte Sinuswelle, und der Spektrumanalysator zeigte eine deutliche Abnahme der Harmonischen. Die zweite Harmonische, die bei 42 MHz weit im UKW-Band liegt, wurde um 35 dBm gedämpft. Das ist genau die Art von Falschheit, die ein verantwortungsbewusster Schinken nicht herumspucken möchte, also bin ich froh, dass ich den Filter gebaut habe.

Si5351 Spektrum vor…

… Und nach dem Tiefpassfilter

On the Air – Art von

Sieht nicht nach einem Sender aus, aber ich bin in der Luft.

Als ich sicher war, dass mein kleiner Sender ein sauberes Signal ausgibt, überprüfte ich, ob es ein Signal ausgibt, das sowohl auf der Frequenz als auch ordnungsgemäß codiert ist. Die Si5351-Entwicklungsplatine ist nicht gerade eine Signalquelle in Laborqualität – obwohl sie die eingestellte Frequenz ziemlich gut hält, kann sie die programmierte Frequenz ausgeben oder nicht. Daher muss die Karte kalibriert werden. Dies ist normalerweise eine einfache Sache, bei der ein Korrekturfaktor im Code angepasst wird, während der Ausgang eines Frequenzzählers überwacht wird. Leider gibt es in meiner winzigen Testsuite noch keinen „NanoFrequencyCounter“, also musste ich kreativ werden.

Mein Ansatz war es, mein HF-Rig auf die gewünschte Frequenz des WSPR-Senders einzustellen – 14.097100 MHz – und die Frequenz des Senders langsam anzupassen, während ich in eine Scheinlast sende. Dies erzeugt eine hörbare Schwebungsfrequenz, die so gut wie verschwindet, wenn die beiden Frequenzen übereinstimmen. Ich war nicht in der Lage, die Schwebungsfrequenz vollständig zu eliminieren, aber ich habe es auf ein paar Hertz gebracht, was ich für nah genug hielt.

Als nächstes suchte ich nach einem decodierbaren Signal, indem ich WSJT-X startete und auf mein HF-Rig „sendete“. Selbst wenn die Dummy-Last angeschlossen war, erhielt ich ein sehr starkes Signal auf dem Wasserfall-Display und konnte das FSK-modulierte Signal deutlich sehen. Und ich war sehr erfreut zu sehen, dass WSJT-X meine Nachricht sauber entschlüsselt hat.

Mein eigenes Signal dekodieren, um sicherzustellen, dass alles funktioniert. Die Reichweite betrug nur wenige Meter und die Leistung betrug nur 13 mW, aber es hat funktioniert!

Besseres Glück beim nächsten Mal

Ermutigt durch diese Erfolge und in dem Wissen, dass viele Menschen transkontinentale WSPR-Kontakte mit weniger Leistung als die 13 mW geknüpft haben, die mein kleines Leuchtfeuer auslöste, versuchte ich, wirklich auf Sendung zu gehen. Ich schloss das Leuchtfeuer an meine endgespeiste Halbwellenantenne an und drückte zum festgelegten Zeitpunkt den Sendeknopf. Leider konnte ich keine andere Station dazu bringen, mein Signal zu dekodieren. Ich habe es in der letzten Woche Dutzende, vielleicht Hunderte Male versucht, aber ich scheine nicht durchzukommen.

Ich weiß, dass mein Signal richtig codiert ist und ich weiß, dass ich auf Frequenz bin, daher bin ich mir ziemlich sicher, dass das Problem entweder meine Antenne oder mein Signal mit geringer Leistung ist. Angesichts der Natur dieser Serie bin ich eher geneigt, Letzteres mit einem einfachen Leistungsverstärkeraufbau anzusprechen. Dafür habe ich ein paar Designs im Sinn und ich habe einige Teile bestellt, also werden wir uns das in der nächsten Folge ansehen und sehen, ob ich diesen besonderen Erfolg freischalten kann.