Aus Raspberry Pi Geek 04/2021

I2C-Workshop (Teil 34): Blitzsensor AS3935 (Seite 2)

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben