Funkwetteranzeige aus FA12/21

Funkwetteranzeige aus FA12/21

In der Zeitschrift Funkamateur 12/21 hat Thomas DO1ATM eine schöne Anwendung beschrieben, die Digitaltechnik mit Analogtechnik verbindet. Dabei liest und parst ein kleiner Microcontroller ESP8266 von der Internetseite hamqsl.com die aktuellen Funkwetterdaten zu Sonnenflecken, solarem Fluss, Röntgenstrahlung und Maxmimum Useable Frequency (MUF) und wandelt sie in einen Wert für ein pulsweitenmoduliertes Signal, das seinerseits über einen Transistor ein Analogvoltmeter ansteuert. Da das analoge Messgerät viel zu träge ist um dem schnellen Pulsen des Microcontrollers zu folgen integriert es die Pulsfolgen und zeigt so nur einen zeitlich gemittelten Wert an. Insofern eine sehr gelungene Symbiose aus moderner Technik und dem augenschmeichelnden Charme von früher.

Die Schaltung und das Programm für den ESP8266 hat Thomas dankenswerterweise für die Allgemeinheit zugänglich gemacht. So konnte schnell ein Probeaufbau auf dem Breadboard aufgebaut werden und die Funktionalität sichergestellt werden.

Als nächstes stand das Gehäuse an. Wir entschieden uns dafür, den Lasercutter im MGF-Lab anzuschmeißen und die Gehäuseteile aus 3mm Sperrholz zu lasern. Entworfen wurde das Gehäuse online mit makercase.com. Danach wurden die svg-Schnittdaten in die 3D-CAD Software Onshape importiert, was seit einem kürzlich durchgeführten Update glücklicherweise möglich ist. In Onshape wurden dann die Ausschnitte für die Anzeigeinstrumente und deren Verschraubungen designt. Da Onshape auch technische Zeichnungen der entworfenen Objekte ausgeben kann und man diese auch wieder als svg-Datei exportieren kann war das der für uns passende Weg.

Die Schnittdaten wurden dann in die K40-whisperer Software eingelesen und vom K40 Lasercutter wunderbar gelasert.

Tobias begutachtet das Laserergebnis

Danach konnten die Instrumente auch schon verschraubt werden und die Plusschiene sowie die noch nötigen Leitungen angeschraubt werden. Und schon wurde das gezinkte Gehäuse verleimt.

Unterdessen hat Tobias mit Hilfe der Software Lochmaster den Microcontroller, die Transisitoren und die Basiswiderstände auf einer Streifenrasterplatine verteilt und die noch nötigen Querverbindungen angelegt. Somit hatte er einen einfachen Plan für die Lötarbeiten, der den Erfolg garantierte.

Die Vorlage mit der Demoversion von Lochmaster erstellt

Die Lötarbeiten gelangen uns dann an einem halben Nachmittag. Leider haben wir entweder einen Kurzschluss nicht herauspiepsen können oder der ESP hatte schon einen Knacks weg, so dass wir ein Mikrocontrollerboard leider gehimmelt haben. Nach etwas Nachlötarbeiten hat dann aber das zweite Wemos D1 mini Board funktioniert.

Anschließend hat uns auch auch noch der Designfimmel gepackt und wir haben zwei Endkappen für das Gehäuse gedruckt. Entworfen wieder unter Onshape und dann auf unseren Ender3 im MGF-Lab gedruckt.

Bis auf die Skalen fertig. Oder doch noch eine Aluleiste zum Verschönern?

Zu guter Letzt stand uns aber noch ein riesiger Brocken an Recherche und Ausprobiererei bevor: da die Funkwetteranzeige ja Daten aus dem Internet visualisiert muss der ESP8266 ins schulische WLAN eingebunden werden. An sich wegen vieler vorhandener Bibliotheken keine große Sache, allerdings ist unser Schul-WLAN WPA2 Enterprise verschlüsselt, und Espressif, der Hersteller der Microcontroller, hat nie eine diesbezüglich vollständig funktionierende Bibliothek, die in die Arduino IDE eingebunden werden kann, veröffentlicht.

Eine Recherche im Netz ergab, dass viele Nutzer vor dem selben Problem wie wir standen und die meisten sind wegen mangelndem Erfolg einfach auf den ESP32, den Nachfolger des ESP9266 umgestiegen. Zwar klappt mit diesem Board und seinen zur Verfügung stehenden Bibliotheken das Einbinden meist völlig problemlos, unser Aufbau sollte aber mit dem ESP8266 laufen.

Nach viel Recherchearbeit und Ausprobiererei diverser Code-Schnipsel aus vielen Foren fanden wir dann einen github Eintrag von Matheus Garbelini, in dem er einen funktionierenden Sketch veröffentlichte. Dieser ließ sich problemlos auf unseren ESP8266 flashen und die Verbindung mit dem Radius-Server des Schul-WLANs stand! Also noch schnell die entsprechenden Passagen in den Code der Funkwetteranzeige kopiert bzw. die entsprechenden Stellen geändert und schon – klappte es plötzlich wieder nicht.

Nun war guter Rat erneut teuer, aber man ist ja selten mit seinen Computerproblemen im Netz allein. Wir beobachteten an der Funkwetteranzeige, dass der ESP8266 etwa alle 10 Sekunden neu bootete. Mit dem Beispielsketch von Matheus Garbelini tat er das seltsamerweise nicht. Ein genaues Durchforsten des Codes brachte zu Tage, dass wir versehentlich an zwei Stellen ein Serial.begin(115200); eingefügt hatten. Nach dem Ausbessern des Codes verbindet sich der ESP8266 problemlos mit dem Schul-WLAN.

Was jetzt noch fehlte war das Anbringen der passenden Skalen in den Anzeigeinstrumenten. Die Vorlagen von Thomas waren schnell ausgedruckt, die Deckel der Anzeigeinstrumente einfach zu entfernen und die zwei Schrauben der auf einem kleinen Blechstreifen aufgedruckte Originalskala leicht zu lösen. Dieses kleine Blech diente uns dann aus Schablone um mit dem Cuttermesser die neuen Skalen auszuschneiden.

Das Ausschneiden der neuen Skalen gelang mühelos

Doppelseitiges Klebeband fixiert die neuen Skalen auf den Blechen und seither ist unsere Funkwetteranzeige fertig und informiert uns über sich ändernde Bedingungen des Funkwetters.

Ganz fertig und alles läuft problemlos
Letzte Artikel von Wolfgang Lormes (Alle anzeigen)

4 Gedanken zu „Funkwetteranzeige aus FA12/21

  1. Freut mich wenn ihr Spaß daran hattet und habt. Bei mir steht das Teil seit einem Jahr im Wohnzimmer und erinnert daran mal wieder das Funkgerät anzuwerfen wenn die Anzahl Sonnenflecken und MuF steigen.
    73 de Do1ATM
    Tom

    1. Danke Tom für die Idee zu diesem Projekt und der Veröffentlichung der Dateien um Funkamateur!
      Vy 73 de Wolfgang DJ4QV

  2. Hallo Wolfgang,
    gut, dass bei dir die ProgationMeter_german_muf von DO1ATM so problemlos läuft. Bei mir steigt der Compiler immer aus und sagt mir: „no return statement in function returning non-void [-Werror=return-type]. Die geschieht in Zeile 228 bis 233 in der Funktion int Reboot() { .

    Da ich nicht unbedingt ein Weltmeister im Programmieren bin, kann ich den Fehler auch nicht richtig interpretieren. – Vielleicht kannst du du mir dabei helfen.
    73 de Wolfgang (DL5TP)

    1. Hallo Wolfgang,
      danke für Deine Nachfrage. Ich habe eben nochmal versucht den Code von Thomas zu kompilieren und siehe da, plötzlich habe ich mit dem selben Fehler zu kämpfen. Nach ein bisschen Suche und Probieren bin ich aber auf folgende Lösung gekommen, ich hoffe sie hilft Dir:
      – der erste Fehler kommt daher, dass der Compiler (seit einem Update?) meckert, dass wann immer in den Unterprogrammen zum Auslesen der Daten die Routine „Reboot()“ angesprungen wird, das Unterprogramm keinen Wert mehr zurückgeben kann, da kein return-Befehl mehr kommen kann. Also habe ich in SFIRequest nach dem Reboot(); (sinnfrei) ein return -2; eingefügt, ebenso in XRayRequest(), in SNRequest() und in MUFRequest(). Dadurch verschieben sich die Zeilennummer auf die ich jetzt gleich referenziere.
      – der zweite Fehler liegt an den als Escape-Characters interpretierten Zeichen ‚\>‘. Wenn Du Dir die zum Lesen der Daten aufgerufene Seite https://hamqsl.com/solarxml.php ansiehst, erkennst Du, dass das von Thomas in den Bemerkungen beschriebene Leerzeichen nach dem Datenwert nicht (mehr?) auftaucht. Also muss das Programm nur nach dem ‚<' suchen (Z.163, 177, 213) bzw. nach '/' in Zeile 226. - und zu guter Letzt habe ich den Rückgabetyp von int Reboot() in void Reboot() geändert. Mit diesen Änderungen kompiliert der Code bei mir wieder einwandfrei, ich hoffe bei Dir auch! Wenn Du noch Fragen hast, dann melde Dich einfach wieder, gerne hier oder über die DARC-email Adresse. Beste 73 de Wolfgang, DJ4QV

Schreibe einen Kommentar zu Wolfgang Lormes Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.