Sie starten das Programm mit der Eingabe python test.py auf der Kommandozeile.
Listing 2
test.py
from RPi_AS3935 import RPi_AS3935
import RPi.GPIO as GPIO
import time
from datetime import datetime
GPIO.setmode(GPIO.BCM)
as3935 = RPi_AS3935(address=0x03, bus=1)
# as3935.reset()
as3935.calibrate(tun_cap=0x0d)
time.sleep(0.05)
as3935.set_indoors(True)
as3935.set_noise_floor
as3935.set_min_strikes(1)
def irq(channel):
time.sleep(0.05)
global as3935
irqReason = as3935.get_interrupt()
if irqReason == 0x01:
print("Zu viel Rauschen")
as3935.raise_noise_floor()
elif irqReason == 0x04:
print("Stoerung erkannt")
as3935.set_mask_disturber(True)
elif irqReason == 0x08:
now = datetime.now()
distance = as3935.get_distance()
if 0 < distance < 63:
now = datetime.utcnow()
ts = now.strftime("%Y-%m-%d %H:%M:%S.%f")
outstring = str(ts)+":"+str(distance)+":\n"
print(outstring)
f.write(outstring)
f.flush
print("Abstand = " + str(distance) + " km at %s ") % now.strftime("%H:%M:%S.%f")[:-3],now.strftime("%Y-%m-%d")
GPIO.setup(17, GPIO.IN)
GPIO.add_event_detect(17, GPIO.RISING, callback=irq)
try:
f=open('Logfile.log','a')
while 1:
time.sleep(1.0)
except KeyboardInterrupt:
print("Abgebrochen\n")
finally:
GPIO.cleanup()
f.close()
Tests
Da der Sensor nur auf echte Gewitter reagiert, gestaltete sich der Test unseres Programms etwas schwierig. Für einen schnellen Test, ob das Programm prinzipiell arbeitet, versuchen Sie, mit dem Lichtschalter in Ihrem Büro einen kleinen Lichtbogen zu erzeugen. Das hören Sie am Knistern im Schalter, wenn Sie ihn nur leicht drücken.
Diesen Mini-Blitz erkennt der Sensor zwar nicht als Gewitter, aber immerhin als Störung. So sehen Sie zumindest, ob der Interrupt richtig auslöst und das Programm eine Ausgabe erzeugt. Der Trick klappt allerdings nur einmal, weil das Programm die Störungsunterdrückung des Sensors direkt aktiviert. Bei einem richtigen Gewitter sieht die Ausgabe des Programms so aus wie in Listing 3.
Listing 3
Ausgabe des Testprogramms
Abstand = 10 km at 15:54:35.668 2020-08-11 2020-08-11 15:54:38.853750:10: Abstand = 10 km at 15:54:38.853 2020-08-11 2020-08-11 15:54:39.320334:10: Abstand = 10 km at 15:54:45.135 2020-08-11 2020-08-11 15:55:06.538971:8: Abstand = 8 km at 15:55:06.538 2020-08-11 2020-08-11 15:55:07.982248:5: Abstand = 5 km at 15:55:07.982 2020-08-11 2020-08-11 15:55:19.245407:5: Abstand = 5 km at 15:55:29.831 2020-08-11 2020-08-11 15:55:33.990692:5:
Fazit
Der wirklich interessante Sensor AS3935 eignet sich vorzüglich als Erweiterung zur Blitzerkennung für eine selbst gebaute Wetterstation. Wenn Sie ihn nur einmal testen möchten, sollten Sie auf die Jahreszeit achten: Ist gerade keine Gewittersaison, dauert es zuweilen sehr lange, bis sich ein Eintrag in der Protokolldatei findet. (tle)
Der Autor
Martin Mohr hegt seit früher Jugend eine Vorliebe für alles, was blinkt. Eine Ausbildung zum Elektroniker verstärkte das noch. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte die alte Liebe zur Elektronik wieder.
Infos
- Datenblatt AS3935: https://www.darc.de/fileadmin/_migrated/content_uploads/Gewitterdetektor_IC_von_AMS_AS3935__Datenblatt.pdf
- AS3935-Experimentierboard: https://de.aliexpress.com/item/32898552048.html
- BLIDS: https://new.siemens.com/global/de/produkte/services/blids.html
- I2C-Workshop (Teil 32): Martin Mohr, “Spürnase”, RPG 08/2020, S. 74, https://www.raspi-geek.de/44468
- Python-Bibliothek: https://github.com/pcfens/RaspberryPi-AS3935





