Voilà, voilà…
Maintenant que le CSM est vraiment fini et après quelques mois à faire de la théorie (rapport et soutenance,✅, voir mes précédents posts), je peux me remettre à la technique. Pour commencer, j’ai commandé de nouvelles pièces, notamment pour la réalisation du ballast. Cependant, il leur faut quelques semaines pour me livrer, alors je me demande comment m’occuper pendant ce temps là ? Pas de soucis, j’ai une ‘To Do List’ longue comme le bras, avec quelques micro-chantiers pour améliorer le projet.
Mise à jour de la télécommande !
En effet, j’utilise une boite à chaussure, avec deux joysticks. Elle manque quelque peu de fonctionnalités, même si elle ne manque pas de charme. En fouillant dans les tiroirs, je retrouve le gamepad d’une vieille PS2. Bon, il est un peu vieux et a pas mal souffert pendant les parties enflammées de Tekken ou de Soul Calibur, alors les boutons sont un peu durs de la feuille maintenant. Il faut un peu insister sur la Croix et le Carré pour qu’ils soient détectés… On remercie Steve de Tekken 4, pour son enchaînement de crochets / uppercut.
Avec une Arduino, on peut faire des merveilles. Et avec la communauté Arduino et l’esprit ‘Open Source’, on peut faire des miracles. Une rapide recherche sur le net, je trouve comment faire les branchement, qui ne semblent pas trop sorciers.
J’ai même trouvé une librairie toute prête, qui s’appelle intelligemment PS2X_lib.h : en gros, je n’ai plus qu’à brancher, charger la librairie dans le programme et le tour est joué. Euh… est ce vraiment aussi simple ? On teste tout de suite !
Bah non, forcément, ça marche pas du premier coup. La librairie dit qu’il faut brancher le gamepad avec du 3.3V. En réalité, ça dépend de la marque : pour moi il faut du 5V. Ensuite, il faut ‘réhausser’ le signal qui vient du gamepad, en installant une résistance (10 k Ohms) entre la connection ‘Data’ et le +5V de l’Arduino. Et là ? Youpi, ça marche comme sur des roulettes.
Une commande qui a de la gueule, avec plein de fonctionnalités (2 joysticks analogiques, 1 croix directionnelle et pas moins de 10 boutons !) pour pas un euro dépensé : bon plan.
Indicateur du niveau de batterie
Cette fonctionnalité n’est pas du luxe : en effet, si une batterie du sous marin tombe en dessous de son niveau minimum, cela présente plusieurs risques. Tout d’abord, la perte de l’engin, qui ne serait donc plus capable d’alimenter ses moteurs pour se propulser ou sa pompe de ballast pour remonter. Mais aussi, la destruction de la batterie LiPo, qui n’aime pas être déchargée en dessous de son niveau critique (3.7V par élément !). En dessous de ce seuil critique, il y a de fortes chances que la batterie soit irrécupérable et même, qu’elle prenne feu. Sympa, un incendie dans un sous-marin, c’est rarement une bonne nouvelle.
Donc, l’idée générale c’est de connecter la batterie à un pont diviseur de tension (pour ramener les 8.4V à pleine charge à 4.2V, soit un facteur 0.5) et de se brancher à un pin Analogique de l’Arduino. On va comparer la tension qui est lue par l’entrée Analogique à la tension de référence de la carte (5V), en prenant 0 = 0V et 1024 = 5V.
Ensuite, une petite formule nous donne une approximation de la tension délivrée par la batterie :
Vbatterie = (Mesure * 5V/1024) / (0.5)
Par exemple, si je lis une valeur de 800, cela équivaut à une tension délivrée de :
Vbatterie = (800*5/1024)/(0.5) = 7.81V.
En comparant cette valeur au tableau ci-dessous, on obtient une approximation de la charge restante de la batterie, en fonction du nombre d’éléments. Pour ma part, c’est une batterie à 2 éléments, donc 7.81V ~ 80% de charge :
Ce qui nous intéresse, c’est la valeur de la mesure qui indique que la batterie est dans sa zone critique
Vcritique = 7.4V -> Mesure critique = 757
Si on s’approche de cette valeur, c’est le signe qu’il faut faire surface et rentrer au port… Je concocte un petit script pour que le sous marin remonte automatiquement dans ce cas, quelles que soient les instructions reçues.
Conception d’un bras robotique
A terme, ce robot aura besoin d’interagir avec son environnement : saisir un objet, tourner une vanne, poncer une coque, faire un selfie… Il lui faudra donc un bras et une main. En plus, avec le gamepad PS2 opérationnel, je peux facilement contrôler un grand nombre de degrés de libertés. Je reconnais, j’ai des choses plus urgents à faire avant. Mais… c’est trop cool !
Alors, sur internet, on trouve un peu de tout : des bras imprimés en 3D avec 7 voire 9 servos, des bouts de cartons fixés à la colle chaude avec 3 servos… Je me décide pour une version intermédiaire : du carton et du plasticard vissé/collé à la cyano avec 6 servos. Dans l’idée, je souhaite obtenir quelque chose comme ça :
En à peine 2 heures, je bricole l’embase avec un servo pour la rotation sur l’axe vertical, une base qui supporte un second servo pour la rotation du bras. Je modifie le code qui m’a servi pour le test du gamepad PS2 et je traduis les données du joystick en instructions brutes pour les servos. C’était presque facile !
Prochaine étape : je rajoute l’avant bras, le poignet et une pince. Je modifie le code de contrôle pour que le bras garde la dernière position en mémoire et que les instructions du joysticks soient relatives. Je pense même en faire une news à part entière, avant de me ‘plonger’ dans la réalisation du ballast !
A très bientôt !