Pypilot est un pilote automatique de bateau, open source, qui a été imaginé et conçu par Sean D'EPAGNIER
Sean est un inventeur génial qui a de grandes compétences en informatique, mathématiques, électronique et même ergonomie. Il navigue beaucoup depuis de nombreuses années sur un voilier dépourvu de moteur.
Sean trouvait trop d’inconvénients aux régulateurs d'allure mécaniques et rien de vraiment satisfaisant dans les solutions avec logiciel libre. Pour ces raisons, il a créé Pypilot pour offrir un pilote automatique performant, peu gourmand en électricité, auquel nous pouvons tous faire confiance et que nous pouvons étendre et modifier pour répondre à nos besoins.
Pypilot est un logiciel libre (GPLv3) et en tant que tel, vous pouvez lui faire confiance pour fonctionner comme prévu et pour une utilisation future sans restriction. Parce que la liberté de modification est garantie, les utilisateurs du monde entier ont continuellement contribué à des améliorations, même minimes, au bénéfice de tous les utilisateurs.
Sean D'EPAGNIER est toujours très présent sur le forum Pypilot. Pour des raisons personnelles, il n'a toujours le temps pour nous fabriquer les contrôleurs, calculateurs et HAT de la boutique Pypilot.
Bien que disposant de moyens professionnels pour concevoir et fabriquer de l'électronique, j'ai toujours préféré installer sur mon bateau ce que Sean proposait en boutique. A chaque évolution, j'ai eu du plaisir à découvrir et étudier ses dernières améliorations. J'avais commencé par lui acheter un contrôleur de moteur parce que c'est ce qu'il y a de plus difficile à faire à l'unité si on veut avoir un pilote fiable et robuste.
Pour continuer à être de plus en plus nombreux à utiliser Pypilot, nous vous proposons des calculateurs et contrôleurs robustes à prix juste ainsi que des informations pour vous aider à vous lancer. Nous écouterons vos suggestions et continuerons à améliorer ce qu’on fabrique.
Pourquoi le contrôleur moteur a une grande importance dans le projet pypilot de Sean ?
Sean a toujours essayé d'avoir un pilote économe en énergie électrique. Pour cela, il a utilisé des transistors MOSFET d'au moins 83A, et même deux ou quatre en parallèle pour les version 15 et 30A. Cela permet une très faible chute de tension par résistance interne et surtout évite le seuil de tension de 0.6 à 0.8V des transistors classiques utilisés sur certains drivers de moteur.
Avec un courant de 2A consommé par un vérin électrique Autohelm, la chute de tension des contrôleurs de Sean ou de Navitop est inférieure à 0.1V (contrôleur 7A) ou 0.07V (contrôleur 15A) ou 0.04V (contrôleur 30A).
A titre de comparaison , avec un contrôleur L298N dont les deux ponts en H sont en parallèle, la chute de tension dans le contrôleur (VCESat) est de 2.55V (typique) à 3.2V (max) avec un courant de 2A selon la datasheet du fabricant du circuit intégré L298N. L’utilisation de transistors classiques, dimensionnés pour fournir 1.5A ou 3A, explique cela. On a alors 5 à 6W de perte en chaleur dans le contrôleur ainsi que la surconsommation imposée par le moteur sous-alimenté en tension pour déplacer la barre.
Un contrôleur de moteur fabriqué à partir d'un pont en H IBT_2 avec des transistors MOSFET de 43 A maximum évite la chute de tension des transistors conventionnels. Cependant, les contrôleurs Navitop utilisent des assemblages de MOSFET nettement surdimensionnés, soit 90 A pour le contrôleur de 7 A, 168 A pour le contrôleur de 15 A et 336 A pour le contrôleur de 30 A. Cela permet de garantir de très faibles pertes électriques et très peu de déperdition en chaleur dans les contrôleurs Pypilot dont les transistors ne nécessitent pas de dissipateur thermique.
Utilisation recommandée de pypilot et du contrôleur de moteur
Les contrôleurs de moteur Pypilot doivent être associés à un calculateur de pilote automatique tel qu'un Raspberry Pi 0, 1, 2, 3 ou 5, connecté à une IMU, faisant tourner pypilot.
Pypilot a été conçu par Sean d'Epagnier pour consommer très peu d'énergie électrique et être pleinement opérationnel en l'installant sur un petit Raspberry Pi Zero W.
Consommation comparée en 12V des différents modèles de Raspberry Pi avec Pypilot :
Pypilot peut fonctionner en même temps que d'autres applications sur un gros Raspberry Pi. Il existe de superbes suites d'applications nautiques telles qu'OpenPlotter ou Bareboats Necessities (BBN) qui intègrent Pypilot parmi de très nombreuses applications. Si c'est instructif et intéressant, cela revient un peu à utiliser son ordinateur personnel en tant que pilote automatique du bateau, centrale de navigation et centrale domotique. En utilisant une carte SD comme drive du Raspberry Pi, on a beaucoup de risques d'endommager le système de fichiers et les applications si une coupure de courant survient au milieu d'une écriture, avant l'arrêt complet de toutes les applications. Installer un disque dur SSD permet d'éviter les problèmes. Mais avec ces suites, il reste encore le problème des mises à jour de certaines applications pouvant parfois empêcher le fonctionnement du pilote automatique.
Votre pilote automatique sera beaucoup plus fiable, robuste et économe en énergie si vous connectez directement le contrôleur et une IMU* à un petit raspberry PI Zero W ou Zero 2W avec le fichier image Tinypilot installé sur la carte mémoire micro SD du Pi Zéro.
Installation du calculateur pypilot sur un petit raspberry Pi Zero W dédié au pilote avec l'image tinypilot sur la carte SD
Tinypilot est un fichier image téléchargeable qui s'installe facilement sur une carte micro SD de 16 Go avec l'application « Raspberry Pi Imager ».
Il y a une image différente pour les Pi Zero W (double cœur) ou Pi Zero 2W (quadruple cœur). Voir les liens de téléchargement en haut de la page.
On a alors sur la carte SD, tous les fichiers Pypilot configurés pour un démarrage rapide en plus d'un système Linux Tinycore léger et robuste.
Ce système Linux allégé permet au Pi Zero de faire tourner automatiquement le pilote automatique Pypilot, son IMU, son écran LCD, son routeur Wi-Fi et son serveur web à la mise sous tension. Il ne fait rien d'autre.
Il est inutile d'ajouter un clavier ou de connecter un écran à la sortie HDMI du Pi Zero, car le système Linux allégé ne permet pas de les utiliser pour naviguer dans les pages graphiques de Pypilot.
Connecter un afficheur LCD JLX12864 au Pi Zero est cependant utile pour visualiser l'état du pilote (cap de la boussole, consigne, paramètres).
Pour des fonctionnalités graphiques plus étendues, vous devrez utiliser un autre appareil doté d'un navigateur web, connecté en Wi-Fi au Pi Zero et disposant de l'image Tinypilot sur sa carte SD. Vous pouvez également utiliser un autre Pi avec un système Linux complet permettant d'exécuter le plugin OpenCpn pypilot ou les scripts pypilot de contrôle (pypilot_control, pypilot_calibration, pypilot_scope).
Le script principal « pypilot », qui s'exécute automatiquement avec tinypilot sur le Pi connecté au contrôleur moteur, n'a évidemment plus besoin d'être exécuté sur d'autres appareils.
Après la mise sous tension, pypilot s'exécute entièrement depuis la RAM. Cela vous permet d'arrêter le pilote automatique avec l'interrupteur du tableau électrique du bateau, sans risquer d'endommager les fichiers sur la carte micro SD. De plus, en installant une image Tinypilot stable, vous avez la garantie que le système de fichiers installé a déjà été testé par de nombreux utilisateurs et restera intact jusqu'à l'installation d'une nouvelle version de l'image Tinypilot.
Même en cas de dysfonctionnement ou de problème avec le gros Raspberry Pi à tout faire du bateau, le pilote automatique installé sur le Pi Zero avec tinypilot fonctionnera toujours.
En choisissant un calculateur équipé d'un Pi Zero, d'un AtMega328P (arduino) supplémentaire et d'un récepteur 433MHz, le pilote peut même être contrôlé en plus par des télécommandes étanches 433MHz qu'on trouve facilement sur internet pour quelques euros.
Vous trouverez dans la documentation le schéma d'un calculateur simple que vous pouvez réaliser pour utiliser Tinypilot-Pypilot.
Si vous choisissez d'utiliser TinyPilot sur un Pi Zero, l'alimentation 5 V de ce dernier sera plus sûre et plus robuste si vous l'alimentez en 5V à partir du contrôleur de moteur avec un câble micro USB avec prise JST se raccordant aux contrôleurs 10 et 15A. Il suffit de raccorder la prise micro USB du câble à l'embase repérée "PWR IN" du Raspberry Pi Zero, ou même celle repérée "USB" si celle-ci n'est pas utilisée pour échanger des données NMEA0183. Les contrôleurs 30A ont des bornes de sortie 5V pour alimenter aussi le calculateur avec un Pi Zero W. Pour éviter les faux contacts qu'on a parfois avec les prises microUSB, il est possible d'alimenter directement le Pi Zero en 5V (+5V en pin 2 ou 4 et GND en pin 6).
Si vous trouvez le démarrage trop lent, notamment celui de l'interface de contrôle web, vous pouvez installer un Raspberry Pi Zero 2 W au lieu du Pi Zero. Mais, ce sera au prix d'une consommation électrique plus élevée (140 mA environ en 12V au lieu de 60 mA), sans que cela améliore le fonctionnement du pilote automatique. Il faut savoir qu'au démarrage de Pypilot, ce n'est que lorsque le pilote automatique est opérationnel que la la wifi et le serveur web sont démarrés, ce qui est judicieux.
*IMU (Inertial Mouvment Unit)
Tous les calculateurs Navitop intègrent tous les composants de l'IMU directement sur leur carte de circuits imprimé, soit un circuit intégré TDK ICM20948, son circuit d'alimentation 1,8 V et les circuits d'interface de bus I2C.
l'IMU est un capteur d'attitude, tel que ceux qu'on trouve dans les téléphones portables et les drones. On parle de capteur 9 axes car la puce intègre 3 magnétomètres, 3 accéléromètres et 3 gyromètres, soit 3 capteurs dans chacun des axes X, Y et Z. Pypilot utilise ces 9 capteurs pour calculer avec précision le cap magnétique, le roulis et le tangage avec une compensation magnétique en 3D permettant de rester précis, même à la gite par forte mer de travers.
Sean d'EPAGNIER, le concepteur de Pypilot, recommandait un module IMU à base de puce MPU9255 ou MPU9250. Ces modules de qualité et performances parfois très inégales étaient tous directement compatible avec le bus I2C 3.3V (3 fils) des Raspberry Pi. Depuis, pour obtenir une plus grande autonomie, les téléphones fonctionnent désormais en 1.8V. Les puces MPU9255 et MPU9250 deviennent rares. Elles sont de plus en plus remplacées par les puces ICM2948 avec un bus I2C 1.8V. Malheureusement, ce bus ne peut pas être connecté directement au bus I2C 3.3V des Raspberry Pi. La puce ICM20948 est pourtant de bien meilleure qualité et consomme moins d'énergie.
Il faut retenir que les modules ICM20948 avec seulement quelques composants, en plus de la puce ICM20948, ne peuvent pas être directement connectés au bus I2C d'un Raspberry Pi, même s'ils peuvent être alimentés en 3.3V ou 5V d'après le vendeur, ce qui est exact mais trompeur. La puce ICM20948 peut en effet être alimentée en 3.3V ou 5.5V, mais ce n'est pas le cas de son interface I2C qui a une alimentation distincte à la broche 8 du circuit intégré. Celle-ci ne doit pas être alimentée à plus de 1.95V d'après le fabricant TDK du circuit intégré. On trouve heureusement de plus en plus de modules ICM20948 directement compatibles avec les Pi et Arduino. Ils ne sont pas plus chers mais ont en plus un régulateur 1.8V pour alimenter l’interface I2C du circuit intégré ICM20948 ainsi que quelques composants supplémentaires pour adapter le bus I2C 1.8V de la puce ICM20948 au bus I2C du Raspberry Pi (3.3V) ou de l' Arduino (5V).
En électronique, dépasser les limites du fabricant peut bizarrement ne pas poser problème dans certaines conditions. Mais cela revient à accepter le risque d'un dysfonctionnement avec d'autres température ou tensions de fonctionnement. Il est donc prudent d'installer un module ICM20948 avec un bus I2C compatible avec celui du PI. Il y a par exemple les modules désignés ICM20948V2 ou ou GY-ICM20948V2 qui sont adapté au Pi.
Les contrôleurs de moteur Pypilot doivent être associés à un calculateur de pilote automatique tel qu'un Raspberry Pi 0, 1, 2, 3 ou 5, connecté à une IMU, faisant tourner pypilot.
Pypilot a été conçu par Sean d'Epagnier pour consommer très peu d'énergie électrique et être pleinement opérationnel en l'installant sur un petit Raspberry Pi Zero W.
Consommation comparée en 12V des différents modèles de Raspberry Pi avec Pypilot :
- Raspberry Pi Zero W : 60m
- RaspberryPi Zero 2W : 140mA
- Raspberry Pi 3 B : >200mA*
- Raspberry Pi 4B : >250 mA*
Pypilot peut fonctionner en même temps que d'autres applications sur un gros Raspberry Pi. Il existe de superbes suites d'applications nautiques telles qu'OpenPlotter ou Bareboats Necessities (BBN) qui intègrent Pypilot parmi de très nombreuses applications. Si c'est instructif et intéressant, cela revient un peu à utiliser son ordinateur personnel en tant que pilote automatique du bateau, centrale de navigation et centrale domotique. En utilisant une carte SD comme drive du Raspberry Pi, on a beaucoup de risques d'endommager le système de fichiers et les applications si une coupure de courant survient au milieu d'une écriture, avant l'arrêt complet de toutes les applications. Installer un disque dur SSD permet d'éviter les problèmes. Mais avec ces suites, il reste encore le problème des mises à jour de certaines applications pouvant parfois empêcher le fonctionnement du pilote automatique.
Votre pilote automatique sera beaucoup plus fiable, robuste et économe en énergie si vous connectez directement le contrôleur et une IMU* à un petit raspberry PI Zero W ou Zero 2W avec le fichier image Tinypilot installé sur la carte mémoire micro SD du Pi Zéro.
Installation du calculateur pypilot sur un petit raspberry Pi Zero W dédié au pilote avec l'image tinypilot sur la carte SD
Tinypilot est un fichier image téléchargeable qui s'installe facilement sur une carte micro SD de 16 Go avec l'application « Raspberry Pi Imager ».
Il y a une image différente pour les Pi Zero W (double cœur) ou Pi Zero 2W (quadruple cœur). Voir les liens de téléchargement en haut de la page.
On a alors sur la carte SD, tous les fichiers Pypilot configurés pour un démarrage rapide en plus d'un système Linux Tinycore léger et robuste.
Ce système Linux allégé permet au Pi Zero de faire tourner automatiquement le pilote automatique Pypilot, son IMU, son écran LCD, son routeur Wi-Fi et son serveur web à la mise sous tension. Il ne fait rien d'autre.
Il est inutile d'ajouter un clavier ou de connecter un écran à la sortie HDMI du Pi Zero, car le système Linux allégé ne permet pas de les utiliser pour naviguer dans les pages graphiques de Pypilot.
Connecter un afficheur LCD JLX12864 au Pi Zero est cependant utile pour visualiser l'état du pilote (cap de la boussole, consigne, paramètres).
Pour des fonctionnalités graphiques plus étendues, vous devrez utiliser un autre appareil doté d'un navigateur web, connecté en Wi-Fi au Pi Zero et disposant de l'image Tinypilot sur sa carte SD. Vous pouvez également utiliser un autre Pi avec un système Linux complet permettant d'exécuter le plugin OpenCpn pypilot ou les scripts pypilot de contrôle (pypilot_control, pypilot_calibration, pypilot_scope).
Le script principal « pypilot », qui s'exécute automatiquement avec tinypilot sur le Pi connecté au contrôleur moteur, n'a évidemment plus besoin d'être exécuté sur d'autres appareils.
Après la mise sous tension, pypilot s'exécute entièrement depuis la RAM. Cela vous permet d'arrêter le pilote automatique avec l'interrupteur du tableau électrique du bateau, sans risquer d'endommager les fichiers sur la carte micro SD. De plus, en installant une image Tinypilot stable, vous avez la garantie que le système de fichiers installé a déjà été testé par de nombreux utilisateurs et restera intact jusqu'à l'installation d'une nouvelle version de l'image Tinypilot.
Même en cas de dysfonctionnement ou de problème avec le gros Raspberry Pi à tout faire du bateau, le pilote automatique installé sur le Pi Zero avec tinypilot fonctionnera toujours.
En choisissant un calculateur équipé d'un Pi Zero, d'un AtMega328P (arduino) supplémentaire et d'un récepteur 433MHz, le pilote peut même être contrôlé en plus par des télécommandes étanches 433MHz qu'on trouve facilement sur internet pour quelques euros.
Vous trouverez dans la documentation le schéma d'un calculateur simple que vous pouvez réaliser pour utiliser Tinypilot-Pypilot.
Si vous choisissez d'utiliser TinyPilot sur un Pi Zero, l'alimentation 5 V de ce dernier sera plus sûre et plus robuste si vous l'alimentez en 5V à partir du contrôleur de moteur avec un câble micro USB avec prise JST se raccordant aux contrôleurs 10 et 15A. Il suffit de raccorder la prise micro USB du câble à l'embase repérée "PWR IN" du Raspberry Pi Zero, ou même celle repérée "USB" si celle-ci n'est pas utilisée pour échanger des données NMEA0183. Les contrôleurs 30A ont des bornes de sortie 5V pour alimenter aussi le calculateur avec un Pi Zero W. Pour éviter les faux contacts qu'on a parfois avec les prises microUSB, il est possible d'alimenter directement le Pi Zero en 5V (+5V en pin 2 ou 4 et GND en pin 6).
Si vous trouvez le démarrage trop lent, notamment celui de l'interface de contrôle web, vous pouvez installer un Raspberry Pi Zero 2 W au lieu du Pi Zero. Mais, ce sera au prix d'une consommation électrique plus élevée (140 mA environ en 12V au lieu de 60 mA), sans que cela améliore le fonctionnement du pilote automatique. Il faut savoir qu'au démarrage de Pypilot, ce n'est que lorsque le pilote automatique est opérationnel que la la wifi et le serveur web sont démarrés, ce qui est judicieux.
*IMU (Inertial Mouvment Unit)
Tous les calculateurs Navitop intègrent tous les composants de l'IMU directement sur leur carte de circuits imprimé, soit un circuit intégré TDK ICM20948, son circuit d'alimentation 1,8 V et les circuits d'interface de bus I2C.
l'IMU est un capteur d'attitude, tel que ceux qu'on trouve dans les téléphones portables et les drones. On parle de capteur 9 axes car la puce intègre 3 magnétomètres, 3 accéléromètres et 3 gyromètres, soit 3 capteurs dans chacun des axes X, Y et Z. Pypilot utilise ces 9 capteurs pour calculer avec précision le cap magnétique, le roulis et le tangage avec une compensation magnétique en 3D permettant de rester précis, même à la gite par forte mer de travers.
Sean d'EPAGNIER, le concepteur de Pypilot, recommandait un module IMU à base de puce MPU9255 ou MPU9250. Ces modules de qualité et performances parfois très inégales étaient tous directement compatible avec le bus I2C 3.3V (3 fils) des Raspberry Pi. Depuis, pour obtenir une plus grande autonomie, les téléphones fonctionnent désormais en 1.8V. Les puces MPU9255 et MPU9250 deviennent rares. Elles sont de plus en plus remplacées par les puces ICM2948 avec un bus I2C 1.8V. Malheureusement, ce bus ne peut pas être connecté directement au bus I2C 3.3V des Raspberry Pi. La puce ICM20948 est pourtant de bien meilleure qualité et consomme moins d'énergie.
Il faut retenir que les modules ICM20948 avec seulement quelques composants, en plus de la puce ICM20948, ne peuvent pas être directement connectés au bus I2C d'un Raspberry Pi, même s'ils peuvent être alimentés en 3.3V ou 5V d'après le vendeur, ce qui est exact mais trompeur. La puce ICM20948 peut en effet être alimentée en 3.3V ou 5.5V, mais ce n'est pas le cas de son interface I2C qui a une alimentation distincte à la broche 8 du circuit intégré. Celle-ci ne doit pas être alimentée à plus de 1.95V d'après le fabricant TDK du circuit intégré. On trouve heureusement de plus en plus de modules ICM20948 directement compatibles avec les Pi et Arduino. Ils ne sont pas plus chers mais ont en plus un régulateur 1.8V pour alimenter l’interface I2C du circuit intégré ICM20948 ainsi que quelques composants supplémentaires pour adapter le bus I2C 1.8V de la puce ICM20948 au bus I2C du Raspberry Pi (3.3V) ou de l' Arduino (5V).
En électronique, dépasser les limites du fabricant peut bizarrement ne pas poser problème dans certaines conditions. Mais cela revient à accepter le risque d'un dysfonctionnement avec d'autres température ou tensions de fonctionnement. Il est donc prudent d'installer un module ICM20948 avec un bus I2C compatible avec celui du PI. Il y a par exemple les modules désignés ICM20948V2 ou ou GY-ICM20948V2 qui sont adapté au Pi.
