Skip to content

Landreau/robot-web-controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contrôleur Web pour Robot (Raspberry Pi + L293D)

Ce projet fournit une interface web (Flask) pour piloter un robot à deux moteurs DC via un L293D, en utilisant le Raspberry Pi.

Câblage (confirmé)

  • EN1 = GPIO4 (ATTENTION: désactiver l'interface 1-Wire si activée, voir plus bas)
  • IN1 = GPIO17
  • IN2 = GPIO22
  • IN3 = GPIO25
  • IN4 = GPIO23
  • EN2 = GPIO24

L293D:

  • Moteur droit: OUT1 (pin 3) = +, OUT2 (pin 6) = -
  • Moteur gauche: OUT4 (pin 14) = +, OUT3 (pin 11) = -
  • Vcc1 (pin 16) = 5V du Pi (logique)
  • Vcc2 (pin 8) = + alimentation moteurs (pack piles)
  • GND (pins 4, 5, 12, 13) = GND commun (Pi + pack piles)

Assure-toi que:

  • Le GND du pack piles et le GND du Raspberry Pi sont communs.
  • Ne jamais alimenter les moteurs directement depuis le 5V du Pi. Utilise Vcc2 (pin 8) du L293D avec une source séparée (ton pack piles).
  • Les moteurs induisent des pics: garde les fils courts, vérifie les connexions, et si possible ajoute un inter général côté pack piles.

Prérequis système

sudo apt update
sudo apt install -y python3-venv python3-pip

Si GPIO4 est utilisé (EN1), désactive 1-Wire (qui occupe GPIO4) dans raspi-config:

sudo raspi-config
# Interface Options -> 1-Wire -> Disable
sudo reboot

Installation

git clone <ton-repo-ou-copie> robot-web
cd robot-web

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Lancement (manuel)

source .venv/bin/activate
python app.py
# puis sur ton téléphone/PC: http://<ip_du_pi>:8000

Service systemd (auto au démarrage)

Crée le fichier service:

sudo tee /etc/systemd/system/robot-web.service >/dev/null <<'EOF'
[Unit]
Description=Robot Web Controller (Flask + Waitress)
After=network-online.target
Wants=network-online.target

[Service]
User=pi
WorkingDirectory=/home/pi/robot-web
Environment="PYTHONUNBUFFERED=1"
ExecStart=/home/pi/robot-web/.venv/bin/python /home/pi/robot-web/app.py
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

Active et démarre:

sudo systemctl daemon-reload
sudo systemctl enable robot-web
sudo systemctl start robot-web
sudo systemctl status robot-web

API

  • POST /api/move JSON: { "action": "forward|backward|left|right|curve_left|curve_right|stop", "speed": 0-100 }
  • POST /api/speed JSON: { "speed": 0-100 }
  • GET /api/health -> { "ok": true }

Exemple:

curl -X POST -H "Content-Type: application/json" \
  -d '{"action":"forward","speed":70}' \
  http://<ip_du_pi>:8000/api/move

Dépannage

  • Si rien ne se passe:
    • Vérifie GND commun Pi ↔ pack piles.
    • Vérifie que 1-Wire est désactivé si EN1=GPIO4.
    • Mesure la tension du pack piles sous charge (peut chuter).
    • Regarde les logs: journalctl -u robot-web -f.
  • Vibrations/bruit important:
    • Essaie de changer la fréquence PWM (PWM_FREQ dans app.py), valeurs courantes: 500, 1000, 2000 Hz.
  • Le Pi redémarre / se fige:
    • Les moteurs tirent trop de courant: séparés déjà via Vcc2, mais vérifie que le GND est commun et que les fils sont épais/courts. Ajoute éventuellement un condensateur (100µF–470µF) sur le pack piles.

Sécurité

  • Ta page n’a pas d’authentification. Sur réseau public, protège via un réseau isolé ou un reverse proxy avec auth.
  • Arrêt d’urgence: bouton STOP, relâchement des touches clavier, et arrêt automatique quand l’onglet perd le focus (mouseup/touchend) envoient stop.

Bon hack et dis-moi si tu veux ajouter:

  • Un joystick virtuel mobile
  • Un streaming vidéo (picamera2 + MJPEG)
  • Des modes d’asservissement (PID) ou capteurs (ultrasons) pour l’évitement d’obstacles.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors