sind schon seit Jahren eingerichtet.
Das Wind auch eine Bedrohung sein kann, haben wir bitter erfahren müssen.
Die Einrichtung einer externen kompletten Wetterstation dort, habe ich aus Stromverbrauchsgründen verworfen.
Hier bietet sich der sowieso laufende Raspberrypi (seit 5Jahren störungsfrei in Betrieb) an.
Ein Windsensor (im weiteren WS genannt) bietet sich als kleine Zusatzkomponente an.
https://www.amazon.de/Eltako-Windsensor ... windsensor
Vorteil: er braucht keine eigenen Stromversorgung, und lässt sich relativ leicht in das vorhandene System einbinden.
Dieser WS hat eine magnetische Achse, die bei jeder Umdrehung einen Reedkontakt schaltet. (Fotos klick zum Vergrößern)
Diese Impulse kann der PI zählen und in einem kleinen Skript auswerten.
Der WS hat 2 Anschlusskabel, es ist hier egal, welches wo angeschlossen wird.(keine Polung)
Ich habe mich für GPIO 5 entschieden (war noch frei) und das andere an Masse.
Anmerkung: Vorteilhaft ist es beim GPIO Port definierte Zustände herzustellen...also bei PullDown auf - Spannung, oder PullUp auf + Spannung mit z.B. einem 10k Widerstand.
Ich habe das mal hier im Versuchsaufbau mal weggelassen, (Beispiel auf der Skizze)
Ich habe im Netz verschiede Skripte in Python gefunden, und habe mal eins mit div. Änderungen übernommen...und es geht auf Anhieb.
- Code: Alles auswählen
import RPi.GPIO as GPIO
import time, math
pin = 5
count = 0
r_cm = 5.2
def calculate_speed(r_cm, time_sec):
global count
circ_cm = (2 * math.pi) * r_cm
rot = count / 2.0
dist_km = (circ_cm * rot) / 100000.0 # umwandeln in km
km_per_sec = dist_km / time_sec
km_per_hour = km_per_sec * 3600 # umwandeln in Entfernung/Stunde
return km_per_hour
def spin(channel):
global count
count += 1
print (count)
GPIO.setmode(GPIO.BCM) # GPIO als Nummer
GPIO.setup(pin, GPIO.IN, GPIO.PUD_UP)
GPIO.add_event_detect(pin, GPIO.FALLING, callback=spin)
interval = 5 # Messintervall Sek.
while True:
count = 0
time.sleep(interval)
print calculate_speed(r_cm,interval)
f = open("wind.txt", "w"); # als txt file schreiben
print f
value = calculate_speed(r_cm,interval)
myString = str(value)
f.write(myString + "\n")
im unteren Teil schreibe ich den erhaltenen Wert in eine Textdatei, der dann vom PI mit FTP auf den Webserver
hochgeladen werden soll, und auf der Webseite angezeigt wird.
Über die Genauigkeit kann ich noch nichts sagen....ich puste auf das Windrad

anpassen.
Die nächste Aufgabe wird sein, das sowohl Hardwaremäßig in mein vorhandenes Projekt einzubauen,
und die Software zu integrieren.
http://b04cam.dl3ndd.de/