Aide pour programmer un robot avec un pi-zero

Bonjour,

J’ai fait un robot avec :
- un rpi zero
- 1 servo 360 pour le déplacement
- 1 servo standart pour la direction
- 1 camera

Le streming fonctionne en utilisant les commandes suivantes :
** envoyer à partir du rpi zero :
raspivid -n -t 0 -w 640 -h 480 -vf -hf -cd MJPEG -l -o tcp://0.0.0.0:1234
** recevoir sur un rpi 3b:
cvlc tcp/MJPEG://192.168.0.11:1234

En python je peux commander les servos, je commente ou décommente au besoin :

#*********************
# deplacement.py
#*********************

import RPi.GPIO as GPIO
import time

servoPIN = 12
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPIN, GPIO.OUT)

p = GPIO.PWM(servoPIN, 50) # GPIO 17 for PWM with 50Hz
p.start(2.5) # Initialization
try:
  while True:
# 2=arrière rapide:5.5=arrière lent:7=neutre:8 avance lente:12.5=avance rapide
#    p.ChangeDutyCycle(7) # neutre
#    time.sleep(0.5)
#    p.ChangeDutyCycle(5.5) # arrière lente : 5.5 maximum
#    time.sleep(0.5)
    p.ChangeDutyCycle(8) # avance lent : 8 minimum
    time.sleep(0.5)
#    p.ChangeDutyCycle(2) # arrière rapide : 2 minimum
#    time.sleep(0.5)
#    p.ChangeDutyCycle(12.5) # avance rapide : 12.5 maximum
#    time.sleep(0.5)

except KeyboardInterrupt:
  p.stop()
  GPIO.cleanup()

que j'appel avec un fichier sh :
#*********************
#deplacement.sh
#*********************
#!/bin/bash
python3 deplacement.py

avec la librairie gpio pour avancer ça me donne :

********************
*** avancer.sh ***
********************
#!/bin/bash
#avancer
gpio -g mode 12 pwm
gpio pwm-ms
gpio pwmc 192
gpio pwmr 2000
gpio -g pwm 12 200

En faisant la même chose sur le pin18 (la direction), je peux tourner.
Je cherche le moyen de diriger mon robot avec une manette de jeu
à partir d’un raspberry 3b en ayant le streaming vidéo, mais je ne sais pas
comment faire.
J’aurais préféré en C mais en python tant que ça
fonctionne. Quelqu’un peut-il m’aider ? Au besoin je fournis mon ip
public et l’ip du rpi zero si quelqu’un veut essayer.

merci
antoine

supprimé (lu trop vite)

hello,

parmi d’autres il y a ce module python pour décoder les joysticks USB : evdev · PyPI

1 « J'aime »

Salut,
Je me suis permis d’éditer ton message pour une meilleure lisibilité du texte et du code.
Ça peut aider pour avoir de l’aide :wink:
++

Trop complexe, documentation illisible, une usine à gaz.

Merci:
le code est maintenant lisible;
il manque une idée du type de joystick qu’il veut installer:

C’est une manette de jeu thrustmaster usb, presque exactement celle-là :
thrustmaster

voici le schéma de mon projet :
manette de jeu sur rpi 3b :

  • commande du robot
  • réception du streaming

<= wifi freebox =>

robot avec caméra sur rpi zero :

  • envoi du flux vidéo
  • réception des commandes

Salut @Ton_Io ,

Je laisse @dbrion06 et @bof répondre à ce fil du fait de leurs compétences dans le domaine (et tous les autres volontaires évidemment)

J’interviens juste en aparté.
Tu ne pourrais pas générer ton propre réseau wifi avec le Rpi en HotSpot pour « jouer » n’importe où ?

J’ai un Rpi qui reste à l’heure avec un module RTC et n’est pas sur le Réseau, mais diffuse son propre réseau privé.
Depuis mon PC linux connecté au Net en filaire, je peux surfer mais tout en étant connecté au wifi du Rpi et ainsi le piloter (SSH, serveur Web dans le Rpi, VNC, …)

++

Merci pour la réponse mais je n’ai aucun souci de réseau, juste pour programmer le gpio du robot et le commander avec une manette de jeu a partir d’un autre rpi, en c si possible, sinon en python.

Votre problème, c’est que votre manette de jeux est « très » chère -20 E$ chez amazon - et retirée du catalogue d e Gros Bill: vous ne pouvez pas espèrer trouver du code gratosse et simple développé par des passionnés -préfèrent jouer- .
Les liens que je vous avais donné -sans les voir testés- sont deux fois moins chers pour le materiel -et le logiciel est développé sérieusement.

@bof:
Merci d’avoir stimulé ma curiosité jusqu’à trouver https://projetsdiy.fr/librairie-python-evdev-linux-raspberry-pi-gamepad-projets-diy-servomoteur-jeux/ (facile à comprendre…)