Le bateau est contrôlé à distance via une interface web hébergée par l’ESP32. L’utilisateur accède à cette interface via un navigateur (sur smartphone, tablette ou PC) pour commander les différentes actions :
- Contrôle de la direction du bateau via un servomoteur.
- Activation/désactivation de la pompe à eau via un module relais.
- Régulation de la vitesse du bateau si un moteur est ajouté.
L’ESP32 agit comme un point d’accès WiFi ou se connecte à un réseau existant, permettant la communication avec l’interface utilisateur.
1. Interface Web et Communication WiFi
L’ESP32 héberge un serveur web sur lequel est générée une interface utilisateur (HTML/CSS/JavaScript). Cette interface permet de :
- Contrôler la direction avec des boutons ou un joystick virtuel.
- Activer/désactiver la pompe à eau.
- Ajuster éventuellement la vitesse du bateau.
Lorsque l’utilisateur interagit avec l’interface, des requêtes HTTP sont envoyées à l’ESP32, qui exécute les commandes correspondantes.
2. Commande de la Direction (Servomoteur)
- L’ESP32 envoie un signal PWM (Pulse Width Modulation) au servomoteur.
- La largeur de l’impulsion détermine l’angle du gouvernail (ex : 90° pour aller tout droit, 45° à gauche, 135° à droite).
- La position du gouvernail est mise à jour en temps réel en fonction des commandes reçues via l’interface web.
3. Gestion de la Pompe à Eau via le Module Relais
- L’ESP32 contrôle l’état du relais via une sortie numérique.
- Lorsqu’un signal HIGH (1) est envoyé au relais, celui-ci active la pompe à eau.
- Lorsqu’un signal LOW (0) est envoyé, le relais coupe l’alimentation de la pompe.
- Cela permet d’allumer ou d’éteindre la pompe selon le besoin (remplissage ou vidange d’eau).
4. Mode de Connexion WiFi
- L’ESP32 se connecte à un réseau WiFi existant.
- L’utilisateur accède à l’interface via l’adresse IP attribuée par le routeur.
ESP32 :
Microcontrôleur WiFi pour gérer les commandes et l’interface web.
Servomoteur :
Assure l’orientation du gouvernail pour diriger le bateau.
Pompe à eau (5V) :
Contrôlée via un module relais pour gérer l’aspiration et l’éjection d’eau.
Module relais :
Permet de commuter la pompe à eau sous l’ordre de l’ESP32.
Batterie de 9V :
Alimente l’ensemble du système.
Module d'alimentation 3V/5V :
Assure une alimentation stable au servomoteur et à la pompe.
Pour le servomoteur on connecte :
- le fil jaune à la broche N°2 de la carte ESP32
- le fil rouge à la broche 5V du module de l’alimentation
- le fil noir à la broche GND de la carte ESP32.
Pour le relais on connecte :
- la broche (S) à la broche N°23 de la carte ESP32
- la broche(+) à la broche 3.3V de la carte ESP32
- la broche(-) à la broche GND de la carte ESP32
- la broche COM à la borne (+) de la pompe à eau
- On connecte la broche NO à la borne 5V du module d’alimentation
Pour la pompe à eau : On connecte la borne (-) à la broche GND de la carte ESP32.
Voici deux programmes Micropython qui permet de connecter la carte ESP32 au smartphone par l’intermédiaire du réseau wifi et de recevoir un message contenant l’ordre de commandement du bateau.
Vous devez installer la bibiliothèque servo pour le servomoteur.
boot.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# Complete project details at https://RandomNerdTutorials.com import machine try: import usocket as socket except: import socket from machine import Pin import network from servo import Servo import esp esp.osdebug(None) import gc gc.collect() ssid = '*************' # pour la connexion de la carte ESP32 au réseau wifi password = '*************' station = network.WLAN(network.STA_IF) station.active(True) station.connect(ssid, password) while station.isconnected() == False: pass print('Connection successful') print(station.ifconfig()) pompe = Pin(2, Pin.OUT) servo_pin = machine.Pin(23) my_servo = Servo(servo_pin) |
main.py :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# Complete project details at https://RandomNerdTutorials.com def web_page(): if pompe.value() == 1: gpio_state="ON" else: gpio_state="OFF" html = """<html><head> <title>ESP Web Server</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" href="data:,"> <style>html{font-family: Helvetica; display:inline-block; margin: 0px auto; text-align: center;} h1{color: #0F3376; padding: 2vh;}p{font-size: 1.5rem;}.button{display: inline-block; background-color: #e7bd3b; border: none; border-radius: 4px; color: white; padding: 16px 30px; text-decoration: none; font-size: 20px; margin: 2px; cursor: pointer;} .button2{background-color: red;}</style></head><body> <h1>ESP Web Server</h1> <p>GPIO state: <strong>""" + gpio_state + """</strong></p><p><a href="/?pompe=on"><button class="button">Avant</button></a></p> <table><tr><td><p><a href="/?pompe=gauche"><button class="button">Gauche</button></a></p></td><td><p><a href="/?pompe=off"><button class="button button2">Stop</button></a></p></td> <td><p><a href="/?pompe=droite"><button class="button">Droite</button></a></p></td> </tr></table></body></html>""" return html s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('', 80)) s.listen(5) while True: conn, addr = s.accept() print('Got a connection from %s' % str(addr)) request = conn.recv(1024) request = str(request) print('Content = %s' % request) pompe_on = request.find('/?pompe=on') pompe_off = request.find('/?pompe=off') pompe_droite = request.find('/?pompe=droite') pompe_gauche = request.find('/?pompe=gauche') if pompe_on == 6: print('LED ON') pompe.value(1) my_servo.write_angle(90) if pompe_off == 6: print('LED OFF') pompe.value(0) if pompe_droite == 6: print('LED ON') pompe.value(1) my_servo.write_angle(45) if pompe_gauche == 6: print('LED ON') pompe.value(1) my_servo.write_angle(135) response = web_page() conn.send('HTTP/1.1 200 OK\n') conn.send('Content-Type: text/html\n') conn.send('Connection: close\n\n') conn.sendall(response) conn.close() |
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info