In einem ersten Artikel über den ESP32/ESP8266 haben wir beschrieben, wie sich auf diesen ein MicoPython Interpreter aufspielen lässt. Diesen Beitrag finden Sie hier.
In diesem Artikel möchten wir Ihnen nun ein erstes kleines Projekt aus dem Bereich des Amateurfunks vorstellen. Wir beschreiben den Bau eines Anzeigeinstrumentes für die Sonnenaktivität, um genau zu sein, für den Wert des Solaren Fluxes.
Der Wert wird dabei von einer Seite aus dem Internet gelesen und dann auf einem alten Analogvoltmeter angezeigt. Diesen und andere Werte zur Sonnenaktivität findet man unter: https://hamqsl.com/solarxml.php. Als weiteres Bauteil benötigt man lediglich einen ESP8266/ESP32 und natürlich einen WLAN-Zugang.
Zunächst beschreiben wir den Bau eines Gehäuses. Am Ende des Artikels folgt dann der Quellcode.
Nachfolgend der Quellcode. Der Quellcode beinhaltet die Möglichkeit sich an zwei unterschiedlichen Netzwerken anzumelden. Die Routine kann aber abgespeckt werden auf ein WLAN Netz.
Flux-Werte größer 160 sind nicht so häufig zu beobachten, daher wurde die Skala auf die Werte zwischen 60 und 160 begrenzt. Das erhöht die Lesbarkeit der Werte in diesem Korridor.
Durch die Kommentare im Quellcode sollte sich die Software selbst erklären.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import re import network import urequests from time import sleep from machine import Pin from machine import PWM frequenz = 1000 meter = PWM(Pin(5), frequenz) SSID_1 = 'your-ssid1' #SSID des Netzwerks 1 PASS_1 = 'your-password1' #Passwort des Netzwerks 1 SSID_2 = 'your-ssid-2' #SSID des Netzwerks 2 PASS_2 = 'your-password2' #Passwort des Netzwerks 2 for i in range(1023): # Einmal Vollausschlag und zurück um das Meßinstrument zu testen meter.duty(i) sleep(0.003) sleep(0.5) for i in range(1023): meter.duty(1023-i) sleep(0.003) def do_connect(): netz = network.WLAN(network.STA_IF) # WLAN-Objekt erzeugen if not netz.isconnected(): # prüfen ob Verbindung zum WLAN besteht print('connecting to network 1...') netz.active(True) # WLAN-Interface aktivieren netz.connect(SSID_1, PASS_1) # Verbindung mit dem WLAN herstellen for i in range(1,10): # 10 Versuche eine Verbindung zum Netz 1 herzustellen if not netz.isconnected(): netz.active(True) sleep(1) if not netz.isconnected(): # Ab hier dann die gleiche Prozedur wie oben, falls das erste Netz nicht erreicht wurde print('connecting to network 2...') netz.active(True) netz.connect(SSID_2, PASS_2) for j in range(1,10): if not netz.isconnected(): netz.active(True) sleep(1) print('network config:', netz.ifconfig()) # Ausgabe der Netzwerkkonfiguration while True: do_connect() rueckgabewert = urequests.get(url = 'https://hamqsl.com/solarxml.php') # Einlesen der kompletten Homepage inhalt = rueckgabewert.text Start = inhalt.find('<solarflux>') # Innerhalb der Homepage nach dem Stichwort "solarflux" suchen Ende = inhalt.find('</solarflux>') string_flux = inhalt[Start+11:Ende] # Auslesen des Zahlenwertes vom Solaren Flux Flux = int(string_flux) print(Flux) if Flux > 160: # Fluxwerte größer 160 werden nicht angezeigt Einschaltdauer = 1023 else: Einschaltdauer = int(1023 * (Flux-60)/(160-60)) meter.duty(Einschaltdauer) # Ausgabe des solaren Fluxes als PWM Signal auf das Anzeigeinstrument sleep(1800) # In einer halben Stunde Neustart und neuen Wert von Homepage laden |
Du muss angemeldet sein, um einen Kommentar zu veröffentlichen.