EP2 : le tube étanche du ROV Rinkin

Épisode n°2 : le tube étanche

Cette épisode présente la partie la plus importante du prototype du ROV, le tube étanche. Le tube étanche est constitué d’un tube PVC de 100 mm de diamètre, d’un bouchon avant et un bouchon arrière. Ce tube va contenir toute l’électronique, la batterie et la caméra.

ROV modélisation

Le bouchon avant

Le bouchon avant est réalisé en impression 3D avec du plastique PETG. Il est constitué d’un plexiglas transparent de 5 mm d’épaisseur fixé via 8 vis M3 et un join torique permet l’étanchéité. Le plexiglas transparent va permettre à la camera de filmer l’extérieur.

Bouchon avant

Le bouchon arrière

Le bouchon arrière est aussi réalisé en impression 3D avec du plastique PETG. Il est constitué de 2 joints toriques pour l’étanchéité.

Le bouchon arrière avec les 2 joins torique (sans les fils pour les turbines)

Le bouchon arrière rempli de résine avec les fils pour les 5 turbines :

Impressions 3D des bouchons

Les bouchons sont imprimés avec un taux de remplissage de 100% :

Après l’impression des bouchons, ils sont remplis et peints de résine époxy pour les rendre étanches.

Assemblage des bouchons

Voici une photo de l’assemblage des 2 bouchons sur le tube PVC :

 

Fin du deuxième épisode

EP1 : Présentation du ROV Rinkin

Épisode n°1

Voici la présentation d’un projet R&D en cours chez Mace Robotics, un ROV d’exploration appelé Rinkin.

ROV = (remotely operated underwater vehicle)

Ce ROV est un sous-marin Open Source réalisé avec un tube PVC, des turbines et des pièces en impression 3D.

Objectifs

  • Projet Open Source (hardware + Software)
  • Profondeur : 10 m maximum pour la version 0.1
  • Exploration des fonts marin & collecte de données

Mécanique

Modélisation du ROV avec ces 5 turbines :

  • 2 turbines pour avancer et reculer
  • 3 turbines pour la gestion de la profondeur et du tangage
  • Une camera est installé à l’avant du ROV (bouchon avant)
  • A chaque extrémité du tube PVC, il y a 2 bouchons pour gérer l’étanchéité du tube.
  • Ces 2 bouchons sont imprimés en PETG et peint avec de l’époxy

Électronique

Voici l’architecture électronique du ROV :

  • Un joystick de jeu permet de contrôler les mouvements du ROV (avancer, reculer, tangage, plonger, …). Ce joystick est relié par une liaison USB à un PC.
  • Le PC est relié au ROV via une liaison par fibre optique
  • La carte Raspberry Pi reçoit les commandes du PC, envoie les données vidéo et gère la communication avec le microcontrôleur Pico.
  • Une centrale inertielle est reliée via un bus i2c à la carte Raspberry Pi. Cette IMU permet de connaître l’orientation du ROV sur les 3 axes.
  • Le microcontrôleur Raspberry Pi Pico gère les commandes des 5 turbines via les ESC (Electronic speed controller)
  • La batterie 3S est constituée d’accumulateurs 18650.

Fin du premier épisode

Tuto : gestion d’une manette en Python

Un petit tutoriel en langage Python pour gérer une manette de jeu :

-> Ce code gère uniquement les touches directionnelles

import pygame  # Importation de la bibliothèque Pygame pour gérer une manette
from time import sleep
import sys

# Initialisation de Pygame pour préparer à l'utilisation de ses modules.
pygame.init()

# Compte le nombre de manettes connectées à l'ordinateur.
joystick_count = pygame.joystick.get_count()

# Vérification si aucun joystick n'est détecté
if joystick_count == 0:
print("Erreur, pas de joystick détecté !") # Affiche un message d'erreur si aucun joystick n'est connecté.
pygame.quit() # Arrête Pygame proprement.
sys.exit() # Quitte le programme.

else:
# Si un joystick est détecté, initialisation de celui-ci.
joystick = pygame.joystick.Joystick(0) # Récupère le premier joystick (index 0).
joystick.init() # Initialise le joystick pour pouvoir l'utiliser.

# Récupération du nombre de "hat switches" (poignées de contrôle directionnelles, souvent utilisées pour la direction).
hats = joystick.get_numhats()

# Fonction pour traiter les mouvements de la "hat switch" (direction du joystick)
def getHat(number):
# Si le "hat" n'est pas en position (0,0), il a été déplacé
if joystick.get_hat(number) != (0, 0):

# Si le mouvement sur l'axe Y du "hat" est vers le haut
if joystick.get_hat(number)[1] == 1:
print("Avancer") # Afficher "Avancer" lorsque le mouvement est vers le haut.

# Si le mouvement sur l'axe Y du "hat" est vers le bas
if joystick.get_hat(number)[1] == -1:
print("reculer") # Afficher "reculer" lorsque le mouvement est vers le bas.

# Si le mouvement sur l'axe X du "hat" est vers la droite
if joystick.get_hat(number)[0] == 1:
print("tourner à droite") # Afficher "tourner à droite" lorsque le mouvement est vers la droite.

# Si le mouvement sur l'axe X du "hat" est vers la gauche
if joystick.get_hat(number)[0] == -1:
print("tourner à gauche") # Afficher "tourner à gauche" lorsque le mouvement est vers la gauche.


# Boucle principale du programme
while True:
for event in pygame.event.get(): # Écoute tous les événements (comme les mouvements du joystick).
if event.type == pygame.QUIT: # Si l'utilisateur ferme la fenêtre
pygame.quit() # Arrête Pygame proprement.
sys.exit() # Quitte le programme.

# Si le joystick a des hats (directionnels)
if hats != 0:
for i in range(hats): # Parcours chaque hat
getHat(i) # Appelle la fonction getHat pour traiter les mouvements de chaque hat.

sleep(0.1) # Petite pause pour réduire l'utilisation du processeur.

 

Réparation d’une carte électronique de chaudière SIEMENS

Réparation d’une carte électronique de chaudière de référence RVS21.831/127 :

  • Problème sur la commande d’une relais
  • Entrée : 230VAC

Le commande en puissance des bobines des cinq relais est réalisé par le composant MC1413 :

  • Vérifier l’alimentation +5V du microcontrôleur
  • Vérifier le clignotement de la led verte
  • Vérifier l’alimentation +12V des deux MC1413

Nicolas