Partagez

Suivez moi

Twitter

Google+

LinkedIn

RaspiDuinoRover - (Encore) un rover à base de Raspberry Pi et Arduino et piloté par iPhone

RaspiDuinoRover est un projet de rover basé sur un Raspberry Pi (et son module caméra) et un Arduino Uno, et contrôlé par iPhone (ou iPad, ou iPod Touch).

 

Architecture

RaspiDuinoRover est constitué de trois parties principales :

  • Un Raspberry Pi qui reçoit les commandes d'un périphérique distant à travers une connexion TCP, et qui transmettra ces commandes à un Arduino Uno par l'intermédiaire d'une connexion I2C. Cette même connexion TCP est utilisée pour renvoyer à la télécommande les données obtenues de l'Arduino Uno concernant la position des servos d'orientation du module caméra, le statut du module d'éclairage de la caméra, et la consommation en courant des moteurs. Le Raspberry Pi fourni aussi un flux vidéo MJPEG provenant de son module caméra.
  • Un Arduino Uno qui reçoit les commandes depuis le Raspberry Pi via une connexion I2C, et en fonction de ces dernières, actionne les moteurs du rover (avec l'aide d'un Arduini Motor Shield), positionne les servos du module caméra, et allume ou éteint le module d'éclairage de la caméra. De plus, il récupère de manière régulière les informations au sujet de la position des servos, le statut du module d'éclairage de la caméra, et la consommation en courant des moteurs, et les renvois au Raspberry Pi à la demande.
  • Un périphérique iOS qui sert de télécommande pour le rover. Il se connecte au Raspberry Pi via une connexion TCP, et affiche son flux vidéo MJPEG.

Diagramme de connexion
Diagramme de connexion (cliquer pour agrandir)

La base du rover est faite d'un chassis à chenille Dagu Rover 5. Le module caméra du Raspberry Pi est monté sur un support pan/tilt à servos, et un système d'éclairage constitué de trois LED blanches est ajouté afin de pouvoir utiliser la caméra dans le noir. Il est possible de remplacer le module caméra par un module NoIR et les LED blanches par des LED infrarouge si vous avez besoin ou voulez un éclairage discret.

Les servos, le Raspberry Pi, l'Arduino Uno et le l'éclairage de la caméra sont alimentés par une ligne 5V générale. Cette alimentation 5V peut être fournie par un adaptateur secteur (prévoir au moins 2A), tandis que les moteurs du chassis possèdent leur propre source de courant. Il reste possible de faire une alimentation commune à tous les éléments y compris les moteurs du chassis, mais cette page ne couvrira pas ce sujet.

Pré-requis

Pour construire RaspiDuinoRover, vous avez besoin des éléments suivants:

  • Un Raspberry Pi.
  • Un module caméra pour Raspberry Pi.
  • Un Arduno Uno R3.
  • Un Arduino Motor Shield R3.
  • Les éléments listés dans le fichier « bill_of_materials.ods ».
  • Côté serveur :
    • Python. Sous Raspbian : les packages « python », « python-dev ».
    • Bibliothèque SMBus. Sous Raspbian : le package « python-smbus ».
    • Bibliothèque Twisted. Sous Raspbian : le package « python-twisted ».
    • MJPEG Streamer (mais pas la version de Raspbian, voir plus bas).
    • (optionnel) une version plus récente de raspimjpeg, voir plus bas.
  • Côté iPhone :
    • Un iPhone (ou iPad, ou iPod Touch) avec iOS 7
    • XCode 5.0.x

Pour vous aider sur le montage, vous pouvez vous référer aux fichiers suivants :

  • RaspiDuinoRover.fzz: le montage global, à ouvrir avec Fritzing (http://fritzing.org/).
  • CameraLighting.fzz: détails pour le support du module caméra avec éclairage, à ouvrir avec Fritzing.
  • PowerRail.fzz: détails pour l'alimentation commune.

Montage sur breadboard et schémas

Montage sur breadboard
Montage sur breadboard (cliquer pour agrandir)

Schémas
Schémas (cliquer pour agrandir)

Utilisation de RaspiDuinoRover (serveur)

Vous devez d'abord uploader le sketch « Arduino/Arduino.uno » sur votre Arduino Uno et construire le montage.

Important: N'oubliez pas de couper le jumper « Vin » à l'arrière du shield.

Vous devez ensuite installer MJPEG Streamer, en suivant ces instructions (étapes 1 à 6).

Si vous le souhaitez, vous pouvez installer une version plus récente de raspimjpeg même si un binaire fonctionnel est fourni (dans le dossier « ./RaspberryPi/bin/ »).

Modifiez ensuite le fichier « ./RaspberryPi/config.py » selon vos besoins.

Quand vous avez terminé, vous pouvez lancer RaspiDuinoRover avec la commande « ./RaspberryPi/raspiduinorover.sh start » en tant qu'utilisateur root. Pour l'arrêter, toujours en utilisateur root, lancez la commande « ./RaspberryPi/raspiduinorover.sh stop ».

Ce script de démarrage lance le serveur RaspiDuinoRover.

Le streaming est lancé quand un utilisateur se connecte (jetez un œil au script « ./RaspberryPi/bin/stream.sh ») et est stoppé quand le dernier utilisateur se déconnecte.

Utilisation de RaspiDuinoRemote (iPhone)

Ouvrez le projet XCode puis compilez le et installez le sur votre iDevice. Si vous n'avez pas de compte développeur iOS Apple, vous pouvez utiliser RaspiDuinoRemote avec le simulateur iOS.

Quand l'application est lancée, saisissez le nom d'hôte (ou l'adresse IP) de votre Raspberry Pi, le port (par défaut 8000, sauf si changé dans le fichier « config.py) et l'URL du stream MJPEG (si vous utilisez MJPEG Streamer, ça devrait être « http://<ip_raspberrypi>:8080/?action=stream ». Puis appuyez sur le bouton « Connect ».

Téléchargement

Toutes les sources et schémas du projet sont disponibles sur GitHub.

Télécharger sur GitHub

RaspiDuinoRover en action


Travail en cours


Avec le chassis à chenilles

Quelques photos de RaspiDuinoRover

Détails du module caméra
Détails du module caméra (cliquer pour agrandir)

Travail en cours
Travail en cours (cliquer pour agrandir)

Travail en cours - Validation du comportement global - Manque le support pour le matériel
Travail en cours - Validation du comportement global - Manque le support pour le matériel (cliquer pour agrandir)

Travail en cours - Quasiment terminé - De gauche à droite : Raspberry Pi, alimentation commune, Arduino + Arduino Motor Shield
Travail en cours - Quasiment terminé - De gauche à droite : Raspberry Pi, alimentation commune, Arduino + Arduino Motor Shield (cliquer pour agrandir)

Télécommande iOS
Télécommande iOS (cliquer pour agrandir)

Support batterie imprimé en 3D
Support batterie imprimé en 3D (cliquer pour agrandir)

Battery Power Board
Battery Power Board, utilisée pour fournir +5V à l'alimentation commune et +8V au motor shield (cliquer pour agrandir)



comments powered by Disqus