Ajouter un bouton physique mob à opencpn


Amis marins,


Vous utilisez OpenCPN, ce merveilleux outil de navigation configurable à souhaits auquel ne manque
qu'un bouton pratique pour le 'Man Over Board'.
Il existe en effet un bouton sur le logiciel qui permet de lancer cette fonction (MOB), mais cela implique
que vous soyez devant votre écran, une souris à la main, ce qui n'est pas vraiment praticable dans la
réalité ! Il existe également un raccourci pour l'actionner, c'est le Contrôle Espace qui lui nécessite un
clavier branché.
Je me propose donc de vous fournir une recette pour brancher un bouton poussoir physique(à placer à
portée de main du barreur ou n'importe où vous le jugerez nécessaire).
La dernière version de OpenCPN tourne à merveille sur un raspberry PI 2 ou 3.
Les ports GPIO du raspberry serviront à interfacer le bouton et à lancer un script qui lancera sur
OpenCPN la fonction MOB.
Le bouton:
Il nous faut un bouton poussoir étanche et solide qui sera branché d'un côté sur le 3,3V du
raspberry et de l'autre au GPIO 17 (pin 11) par exemple. Le port GPIO 17(dans mon exemple) sera
configuré en Input et attendra de se trouver à l'état haut pour déclencher le script.


Le code de ce bouton sera programmé en python de la façon suivante :
mob,py,


import time
from RPi import GPIO
import os
b1=17
GPIO.setmode(GPIO.BCM)
GPIO.setup(b1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
time.sleep(0.5)
inputval = GPIO.input(b1)
if inputval>0:
os.system('sh /home/pi/Desktop/mob.sh')
break


Attention : si vous vous servez de Windows pour écrire ce script, il faudra le rendre compatible avec
linux en se servant de la commande dos2unix à télécharger sur le pi et en faisant dos2unix mob.py :

sudo apt-get install dos2unix
puis dos2unix mob.py


ce script en appelle un autre ('mob.sh') placé sur le bureau et qui fournira la commande Ctrl Espace.
Ce script bash fonctionne grâce à xdotool qu'il vous faudra installer sur le pi

sudo apt-get install xdotool

Le contenu de ce script est le suivant :

#!/bin/bash
WID=`xdotool search --name "OpenCPN 4.6.1" `//dans le cas ou votre version de OpenCPN
//serait la 4.6.1:à modifier si besoin !
xdotool windowfocus $WID
xdotool key ctrl+space
#le raccourci homme à la mer.


Il est facile de déclencher une sirène d'alarme en rajoutant à la fin du script sh la ligne
mpg123 /usr/share/opencpn/sounds/Alien_Siren.mp3
en supposant que vous ayez placé un fichier son mp3 de votre choix (Alien.Siren.mp3 dans cet exemple)

dans le dossier /usr/share/opencpn/sounds/, et relié la sortie son du raspberry à un haut parleur ou / et un
ampli BF.
Il n'y a plus qu'à lancer le script python (si tout fonctionne, définir dans /home/pi/.config/autostart un
fichier mob.desktop composé comme suit :


[Desktop Entry]
Type=Application
name=mob
Exec=sudo /usr/bin/python /home/pi/mob.py


Lancer OpenCPN en mode graphique.
Un appui sur le bouton devrait faire apparaître le MOB sur la carte et retentir l'alarme si elle a été
configurée !
Bonne navigation

 

Kinefou