logo wereldvanmachines          Start       Contact

audio uit GPIO

OpenCPN alarm via een harde beeper op een GPIO poort.

OpenCPN kan heel veel maar wat niet kan is een alarm geven over een poort.
Alarm gaat alleen via een audio bestand die afgespeeld wordt via de audio poort van de RPi.
Daar mag wel een goede versterker met boxen op aangesloten zijn want als je lekker aan het zeilen bent met de wind in je gezicht en klotsende golven dan hoor je niks meer.
De marifoon is al niet te verstaan laat staan een wav bestandje uit de Raspberry.

Het zou wel vreselijk makkelijk zijn als je bij een alarm ook een poortje kon activeren.
Aan dat poortje kan je dan de hele wereld knopen zoals een sirene of zwaailicht of wat dan ook.

Op zoek naar zo'n oplossing heb ik onderstaand scriptje gemaakt. Dit scriptje kijkt in de dev directory van de RPi of er een geluid device in gebruik is. Zolang dat zo is dan wordt in het scriptje de output poort geactiveerd. Aan dat poortje hangt een eenvoudige schakeling met een TIP120 en een 1k weerstandje die 12 volt op de uitgang zet. Aan de uitgang hangt een 12 volt beeper. Ruim voldoende om een teringherrie te maken.

Als de RPi een geluid geeft gaat de beeper af, elk geluid dus ook van muziek of clicks.
Om het alarm vanuit OpenCPN te activeren moet je in op het tabblad AIS Objecten een waarschuwingsgeluid instellen. Dat geluid kan ook het standaard geluid zijn, maakt niet uit.
Op het moment dat het AIS alarm geactiveerd wordt gaat gelijk de beeper tekeer.
Nu kan ik eindelijk het AIS alarmering gebruiken die ik ook kan horen zonder audio versterker ofzo.
Dit kleine schakelingetje in de boordcomputer verwerkt en voila een alarm op OpenCPN.

Hieronder het scriptje wat het geluid activeert en daarnaast het schemaatje van de schakeling die als switch fungeert. 12 volt mag ook de 5 volt zijn als je voorzichtig wil zijn maar dan ook een 5 volt beeper gebruiken die helaas wat minder hard zal zijn.
In mijn geval activeer ik in het script poortje GIO16 maar elk poortje is natuurlijk goed.
#!/usr/bin/env python3

# naam: /home/pi/audioalarm.py 

#bibliotheek
import time
import subprocess
import RPi.GPIO as GPIO

#Select GPIO mode
GPIO.setmode(GPIO.BCM)

#Set buzzer - gebruik pin GPIO16 als output
buzzer=16
GPIO.setup(buzzer,GPIO.OUT)

#loop
while True:
   #controleer of de pcmaudio device actief is
   output = subprocess.getoutput("lsof -w /dev/snd/pcm*")

   # indien actief dan buzzer lang-kort anders buzzer uit
   if(len(output) > 0):
      GPIO.output(buzzer,GPIO.HIGH)
      time.sleep(1)
      GPIO.output(buzzer,GPIO.LOW)
      time.sleep(0.05)
      GPIO.output(buzzer,GPIO.HIGH)
      time.sleep(0.75)
      GPIO.output(buzzer,GPIO.LOW)
      time.sleep(0.05)
   else : 
      GPIO.output(buzzer,GPIO.LOW)

   time.sleep(1)	


Opstartscript:
sudo nano /home/pi/.config/autostart/audioalarm.desktop

  [Desktop Entry]  
  Name=Start Audialarm 
  Comment=Start audioalarmtaak 
  Exec=/home/pi/audioalarm.py 
  Type=Application

Solozeiler deed het Webdesign en alle content is © auteursrechtelijk beschermd door "solozeiler.nl".