[DIY] Pilote automatique Opensource

Le Pypilot est un projet de pilote automatique développé par Sean d’Epagnier et disponible en open source ! La partie logicielle est téléchargeable gratuitement (https://github.com/pypilot), il fonctionne avec la distribution linux TinyPilot et s’intègre dans Openplotter, un système de navigation open source. Cette article a pour but de décrire le fonctionnement du pilote et comment nous avons installé l’électronique et les composants mécaniques associés sur notre bateau.  Préparez l’étain et les fers à souder, ça va chauffer !

I. Description des éléments de l'électronique

Diagramme haut niveau du fonctionnement du pilote

Le pilote automatique se compose d’une partie électronique et d’une partie mécanique. Grossièrement,  l’électronique mesure le cap à tenir et envoi des commandes à un vérin qui agit mécaniquement sur le système de direction. Plus besoin de barrer vous pouvez tranquillement traverser les océans sans vous fatiguer ! En pratique, c’est un peu plus compliqué que cela en a l’air,  voyons un peu dans le détail comment tout cela fonctionne.

La partie « hardware » électronique se compose de trois principaux composants :

  • Une Raspberry Pi (de préférence de type Pi zéro) sur laquelle sont installées les distributions Pypilot.
  • Une centrale inertielle ou IMU (Inertial motion unit)
  • Un contrôleur de type Arduino

La Raspberry est le “calculateur” du pilote, elle contient les logiciels permettant de réaliser les calculs afin de maintenir le cap de votre navire.

L’IMU mesure le cap magnétique et les mouvements du bateau (gite, roulis etc…) nécessaire au fonctionnement du pilote.  Il s’agit d’un circuit intégré connecté à la Raspberry.

Le contrôleur fait le lien entre le logiciel Pypilot et la partie unité de puissance (vérin + pompe hydraulique). Il s’agit d’un Arduino (https://www.arduino.cc/), c’est-à-dire une carte électronique programmable, sur lequel des capteurs peuvent être branchés et qui permet par exemple d’animer des systèmes mécaniques.

Il est connecté à la Raspberry via une connexion série bidirectionnelle. Dans un sens, le logiciel Pypilot demande au contrôleur Arduino d’agir sur le vérin hydraulique pour déplacer le safran, avec une intensité et une amplitude donnée. Dans l’autre sens, le contrôleur arduino renvoit au pypilot de nombreuses informations mesurées par des capteurs, comme l’angle du safran ou les paramètres du contrôleur (courant, voltage, température etc…).

 

Raspberry Pi zéro
Arduino

Un quatrième composant s’ajoute uniquement pour traduire les commandes du contrôleur vers le vérin, il s’agit d’un Pont en H.

Note : Sean d’Epagnier propose des cartes électroniques prêtes à l’emploi, elles comprennent l’Arduino, le contrôle par télécommande et la gestion des tension (carte de puissance). Dans le cas de notre installation, ces composants sont séparés en différentes unités et cet article détaille comment réaliser vous même ces composants.

a. Boitier Calculateur

Pour ce qui est de la partie calculateur, elle repose principalement sur un boitier composé de la Raspberry Pi zéro, l’IMU et des éléments de contrôle et d’affichage (écran, boutons, télécommande). Afin de réaliser l’intégration de ce boitier, ainsi que celui du contrôleur de puissance et de la télécommande de contrôle,  nous avons reçu l’aide de Jean de la chaine youtube Colibri. Voici un lien vers sa chaine et une vidéo sur l’intégration du pypilot : intégration pypilot par Colibri

Boitier Calculateur
  • La Raspberry est de type Pi zéro, c’est une version miniature de la Raspberry Pi standard, plus compacte, moins puissante mais suffisante pour le pilote, elle consomme moins d’énergie que les raspberry standards. Il vous faudra installer sur celle-ci la distribution TinyPilot pour faire fonctionner le pilote. Vous trouverez sur Github tous les fichiers et indications nécessaires à la configuration de la partie software (Tinypilot).
  • L’écran d’affichage est un écran LCD, c’est le même que celui du célèbre Nokia 3310 où certains d’entre nous auront passé des heures à jouer au jeu snake :). La connexion sur la Raspberry est réalisé via les pins de la carte (cf schéma ci-dessous). Pour réaliser la configuration logicielle entre la raspberry et l’écran LCD, vous pouvez vous référer à ce site :  e-tinkers
Ecran 5110 LCD
Connexion écran LCD / Raspberry
  • L’IMU est une carte électronique MPU9250. Il comprend 1 gyroscope 3 axes, 1 accéléromètre 3 axes et 1 magnétomètre 3 axes pour déterminer l’accélération, la vitesse angulaire et l’orientation du capteur. L’interface Pypilot sur le logiciel Openplotter permet sa configuration et sa calibration simplement. Pour ceux qui veulent le configurer par eux même,  ce type de capteur est largement utilisé dans de nombreuses applications de positionnement (smartphone, robotique, etc…) et plétores de ressoures sont disponible en ligne. La connexion avec la Raspberry suit le schéma ci-dessous :
  • Les boutons de contrôles sont des bouttons pressoirs connectés via les ports GPIO de la Raspberry. Référez vous à la partie Pypilot_HAT sur GitHub et à la chaine Colibri pour leur configuration : Pypilot_HAT
  • Un boitier auxilliaire permet un système de contrôle via une télécommande pour pouvoir contrôler le pilote depuis n’importe quel endroit du bateau. C’est un système disponible dans le commerce à l’origine dédié pour le contrôle d’un pont roulant, vous pouvez retrouver le lien dans la vidéo de Colibri citée plus haut.
Actionneur télécommande
Télécommande du pilote

b. Boitier Puissance

Arduino du pilote automatique dans son boitier étanche

Le boitier puissance est quant à lui composé de la carte Arduino et de l’électronique de gestion des tensions. La connexion avec la Raspberry est réalisée via les ports TX et RX de la Raspberry et de l’Arduino. 

Pour la configuration de l’Arduino, il vous faudra charger le programme motor.ino du projet Pypilot : motor.ino

Attention, l’Arduino fonctionnant en 3,3V, un pont diviseur de tension est nécessaire pour la connexion avec la Raspberry pi qui fonctionne elle en 5V. De même il vous faudra utiliser un Pont H pour avoir la tension adéquate sur votre moteur de vérin.

Vous pouvez visionner les très bonnes vidéos de la chaine youtube Ralph pour vous aider à réaliser ces circuits : vidéo gestion des tensions.

 

Pour des raisons pratiques, le boitier est placé proche du vérin sur lequel il agit. Cette zone étant humide voir mouillée  dans de grosses conditions de mer, la carte électronique est  dans un double boitier étanche (photo-ci dessus).

II) Partie mécanique : intégration de l'unité de puissance

L’unité de puissance correspond dans notre cas à un vérin hydraulique linéaire. Il s’agit d’un vérin “Lecomble & Schmitt” de type 40st16 ce qui correspond aux caractéristiques de notre voilier : 41 pieds et 8 tonnes de déplacement lège.

Une vis M20 rectifiée au tour et boulonné au secteur de barre assure la liaison avec la chape du vérin hydraulique via une rotule. Le mouvement de translation du vérin induit une rotation du volant de barre et donc un déplacement angulaire du safran.

Le vérin est installé dans le coffre arrière tribord et repose sur un support composite en fibre de lin stratifié sur la coque du bateau. Cette liaison rigide permet d’éviter tout jeu dans le système et le meilleur contrôle possible de la trajectoire du bateau. Afin de protéger l’ensemble vérin/pompe hydraulique, nous avons construit une boite en contreplaqué autour de ces derniers pour les isoler du reste du coffre (risque de chute d’objets, eau etc…)

Une pièce en bois a également été rajouté afin de créer des butées mécaniques pour éviter d’endommager le vérin par un coup de barre trop franc ou un bug logiciel.

 

Vérin hydraulique relié au système de barre par une liaison rotule

III) Interfaçage avec le pilote automatique

Avec la configuration initiale le pilote communique avec l’utilisateur via :

  •  Tablette ou smartphone. La Pi zéro génère un hot spot wifi via le Tinypilot
  •  Télécommande
  •  Boutons sur le boitier calculateur

Vous pouvez également contrôler celui-ci via votre ordinateur de bord en utilisant la connexion wifi générée par le Tinypilot. Dans notre cas nous avons une configuration Openplotter avec le pluggin pypilot installé sur OpenCpn. Cela permet d’accéder aux différents outils de configuration et de contrôle du pilote sur OpenCpn ce qui est très pratique en navigation ! Lien du pluggin : pluggin

IV) Bilan

Notre Pypilot ne nous a jamais fait faux bons après plus de 20 000 miles parcourus ! En traversée c’est lui qui barre le bateau 90% du temps, on peut vraiment parler d’un cinquième équipier !

En plus d’être sécuritaire, la possibilité d’avoir de multiples moyens de contrôle (tablette, boutons, télécommande etc…) est un avantage certains selon les modes de navigation. 

En terme d’installation, nous craignions au premier abord  que celle-ci soit chronophage, mais finalement le Pypilot n’est pas si long à installer et à prendre en main pour un coût défiant toute concurrence ! (cf annexe ci-dessous)

A  noter tout de même un point noir dans notre installation, c’est la difficulté de savoir rapidement si le pilote est activé ou non quand on est à la barre, ce qui nous a parfois jouer des tours dans les moments musclés (départ au loffe, manoeuvres d’affalage du spi etc…). L’ajout d’un écran extérieur ou d’une simple LED au tableau de bord serait une bonne piste d’amélioration.

En conclusion, nous ne regrettons pas du tout notre choix et conseillons à tout le monde d’utiliser ce formidable outil open source ! Merci Sean 🙂

Annexe : Détail du coût de l'installation

Composant
Prix (€)
Raspberry Pi zéro
17
IMU
11,80
Arduino Nano
14,80
Vérin hydraulique Lecomble et schmit (occasion)
800
Divers composants (boutons, écran, pont H etc...)
50
Total
893,7

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *