Introduction (mise à jour le 26/12/15)
C’est mon premier jamais tentative de construire un robot web contrôlée avec construit en mode autonome. Le projet a commencé comme un Arduino Nano basé robot évitement de collision construit pour inspirer les élèves du primaire et de développer un intérêt pour l’informatique et l’électronique.
Dans un premier temps le robot est un robot d’évitement de collision simple auxquels j’ai ensuite ajouté un Pi de framboise. Attaché à la Pi est un détecteur de mouvement PIR et un Logitech C270 webcam, tous montés sur le dessus. J’ai mis sur pied un programme de petit python en utilisant fswebcam pour prendre des photos à l’aide de la came de Web chaque fois que le détecteur de mouvement PIR détecté un mouvement qui a été tout le temps que le robot se déplaçait. Les images fixes ont été plus tard remplacés par un flux vidéo en direct, réalisé à l’aide d’un programme de python appelé MJPG-Streamer.
Après beaucoup de recherches la Pi a été connecté à la Nano sur une interface de série (2 fils) d’i2c pour servir une Page Web qui pourrait être utilisé pour envoyer et recevoir des commandes pour contrôler le mouvement du robot et de visualiser le flux vidéo.
C’est toujours un travail en cours et est loin d’être terminé, mais j’ai pensé qu’il était temps que j’ai créé un blog sur la construction. Si je reçois de temps à une date ultérieure, que je vais faire une étape par étape, dans le même temps, n’hésitez pas à me poser des questions et si je peux je vais vous aider.
Liste des pièces :
1. raspberry Pi modèle B
2. Logitech C270 webcam
3. Arduino Nano AT-Mega328P (copie chinoise)
4. capteur PIR (redondant dans la dernière version)
5. EasyAcc 10000mAh USB Battery Pack (pour alimenter le Raspberry Pi)
6. LiPo 7.4V batterie Rechargeable
7. WiFi Dongle
8. HC-SR04 Module de capteur à ultrasons
9. L298N double « H » Bridge Motor Driver Board
10. 9g Servo Micro
10. perspex châssis (avec 2 moteurs à courant continu et roulette)
11. renards biscuit et étain montre G Shock
12. mâle/mâle et le mâle/femelle Cables de démarrage
13. sans soudure Breadboard
La Build
Au début, comme j’ai mentionné ci-dessus, le robot a commencé dans la vie en raison de la nécessité de construire un robot d’évitement de collision pour un club de robotique de l’école. L’idée était d’identifier les pièces assez bon marchés pour rendre l’immeuble d’un robot abordable aux membres du club qui se trouvaient à Y5 et Y6 à l’école primaire au cours de laquelle je m’entraîne actuellement. Le robot initial était fondé sur un Arduino Nano AT-Mega328P, à minimiser les coûts. Il a également incorporé un Kit châssis Perspex qui comprenait 2 x moteurs à courant continu et une roue de roulette. Détection de collision a été créée à l’aide d’un capteur à ultrason et un double pont H moteur pilote utilisé pour commander les moteurs. Puissance, initialement assuré par 1 pile de 9v x PP3 (aucune recherche faite sur les piles et la tension requise à ce stade).
Ce plan initial prévoyait que le capteur à ultrasons être monté sur le 9g Servo Micro toutefois le choix de batterie faible et non documenté s’est avérée insuffisant pour tout piloter avec le servo attaché.
Avec le servo omis le robot a fonctionné admirablement et s’est avéré pour être un favori et est resté à la version acheté et construit par les enfants.
Exigences d’alimentation
Comme indiqué plus haut le robot a été initialement alimenté par une batterie de 9v PP3. Cela allait bien pour alimenter juste les moteurs et les capteurs à ultrasons, cependant, pour cette version du robot puisse avoir un capteur ultrasonique monté sur un rotatif servo il aurait besoin d’une meilleure alimentation. Après des recherches sur les exigences de puissance sur nous allons faire des Robots, j’ai m’a conseillé d’abandonner le PP3 9v (qui soit dit en passant sont conçus pour les consommations de très faible puissance comme les détecteurs de fumée) et opter pour piles AA, préférence rechargeables avec autour d’une cote de 2000mAh. On m’a dit d’utiliser 6 comme AA rechargeable sortie autour de 1,2 v au lieu de 1, 5V sortie par le type non rechargeable.
Une autre option qui m’a dit de poursuivre a été d’utiliser des piles au Lithium polymère (LiPo), couramment utilisées parmi la Fraternité de la robotique. Alors que les piles sont à un prix raisonnable (environ £11 pour un Pack de cellule 2 - 7.4V) vous sera également nécessaire un chargeur équilibre qui coûtent cher. C’est une dépense initiale élevée mais un coût unique.
En fin de compte, j’ai acheté un 7.4V (Turnigy) Accu LiPo :
http://www.hobbyking.com/hobbyking/Store/__9172__T...
Et un chargeur de B6ACBalance Imax :
http://www.hobbyking.com/hobbyking/Store/__58285 __...
Il est également recommandé que vous obtenez une LiPo charger le sac qui est feu preuve, ces batteries sont assez fiable mais si on est endommagé et qu’il est facturé qu’ils peuvent s’apparenter à la lumière un feu d’artifice dans votre maison !
Pour utiliser cette batterie avec ce chargeur, j’ai eu à souder sur un connecteur différent sur l’extrémité de la pile.
Détails de la façon dont la batterie est connectée est traité ci-dessous.
Le Raspberry Pi est alimenté à l’aide d’un bloc d’alimentation Rechargeable USB, dans mon cas que j’ai utilisé un EasyAcc 10000mAh pack qui, s’il est totalement chargé en dernier pour les âges (pas une unité technique de mesure, mais vous avez ma dérive).
Mise à niveau de châssis
Pour lui donner un corps et de changer l’aspect visuel du robot, j’ai monté une boîte de conserve de renards biscuit sur le dessus du châssis perspex et logés tous l’électronique à l’intérieur de celui-ci. Le capteur ultrasonique a été monté à l’intérieur d’une boîte de conserve qui est venu avec une nouvelle Casio G Shock. L’étain a été coupé en utilisant un mélange d’étain cisailles, ciseaux et un couteau Stanley, une fois coupe faites attention car les bords sont rasoir, j’ai poncé les mais aussi eux recouverts de ruban PVC.
Microprocesseurs
Au moment de l’écriture, ce robot a deux microprocesseurs, un Pi de framboise et un Arduino Nano. L’Arduino Nano alimente les moteurs à courant continu et le capteur à ultrasons et le RPi fournit le WiFi / contrôle Web, exécute une caméra web et a la capacité d’encore améliorer / développer ce robot.
Le Nano et le RPi sont connectés à l’aide d’une connexion à deux fils d’ic2, le Nano est configuré comme un périphérique esclave et l’IPD est le maître. À l’aide de la Nano de conduire les moteurs et les capteurs de cette façon évite ligoté les broches GPIO Pis qui assure une évolutivité.
En tant que débutant, mise en place de l’i2c a pris beaucoup de recherche et même si ça marche il faut encore peaufiner la motricité.
Electronics
Le x 2 moteurs à courant continu sont connectés à un L298N H Bridge Motor Driver carte, ces cartes permettent le contrôle des moteurs à courant continu de les chasser avant et en arrière. Le L298 est également livré avec un régulateur de tension de 5v à bord. Le L298 est une option peu coûteuse mais souffre d’une chute de tension importante alors assurez-vous que votre batterie n’est plus assez grand.
La batterie est connectée à la L298 via un simple unique pôle unique jeter (SPST) interrupteur marche / arrêt. Le L298 puis fournit une alimentation de 5v pour le montage d’essai sans soudure qui alimente à son tour à la sonde ultrasonique de HC-SR04, le 9g Servo Micro sur lequel le capteur est monté et l’Arduino Nano.
Comment ça marche
L’IPD est configuré avec accès à distance et une fois mis sous tension j’ouvrir une session à l’aide de SSH (Secure Shell) et démarrer le programme Python qui agit comme le programme maître i2c pour contrôler l’Arduino. Depuis le programme Python qu'est un script bash exécute qui démarre un autre programme Python pour servir une Page Web à l’aide de WebIOPi un programme Python pour le contrôle Web, cela demande aussi un autre programme Python, mjpg-streamer qui allume la webcam et les cadres de mjpg de ruisseaux qui sont affichées sur les pages web servi par WebIOPi. La page web que j’ai créé contient un simple panneau de commande avec boutons marqués avant, arrière, gauche, droite et Stop. J’ai aussi ajouté quelques boutons pour mettre le servo monté sur la tête.
Lorsque le robot est allumé le Nano se déclenche et commence à écouter les commandes venant via l’interface i2c de la Pi (lorsqu’une touche est pressée sur le panneau de contrôle de page web). J’ai également installé un « Mode autonome » qui attend qu’une période de temps spécifiée et si aucune commande n’est reçu le robot démarre auto naviguer autour de son environnement.
Le Code
Il existe trois programmes associés à ce projet, HTML, Python et croquis.
Le fichier HTML est la page web servi par le chercheur principal à l’aide de WebIOpi, le code Python démarre le programme maître i2c, commence WebIOPi et appelle mjpg-streamer pour diffuser le flux vidéo. Le code de l’esquisse est transféré à l’Arduino à mis en place comme un esclave et vous attendent et commandes d’action a reçu de la Pi ainsi que de fournissent le mode autonome.
YouTube
Voici un lien vers une petite vidéo YouTube du robot en action (mode autonome uniquement), il ne s’est écrasé peu de temps mais j’ai ceux édité:-)
Questions d’actualité
Au moment de cette mise à jour il y a deux problèmes avec la version actuelle :
1. mouvement (surtout à gauche et à droite). Le contrôle via l’interface web doit poursuivre les travaux, en cliquant sur un bouton de commande sur le panneau de contrôle de page web (un .html événement de souris appuyée) provoque au robot de se déplacer, il y a trop de retard entre l’envoi de la commande de stop (la souris un événement lorsque l’utilisateur relâche le bouton de la souris) et le robot s’arrêtant la commande actuelle. Alors que ce n’est pas particulièrement visible lors du déplacement vers l’avant et en arrière, quand en tournant le robot se met environ 270 degrés chaque fois qui rend très bien contrôler impossible. Plus de travail requis ?
2. Mode autonome. Mode autonome intervient après environ une minute d’inactivité cependant lorsque l’utilisateur essaie de prendre le contrôle à nouveau plutôt que cessant de mode autonome, elle exerce ce qui entraîne une lutte entre l’utilisateur et les robots AI pour contrôle!! Probablement un simple Difficulté cependant une nouvelle fois plus de travail requis.
J’ai installation un compte GitHub pour héberger le code mais je n’ai jamais utilisé Git Hub avant donc je me bats pour travailler tout ça dès que je fais je vais poster le lien vers le code divers utilisé dans ce projet.
J’espère que vous aimez ce blog / projet et si vous avez besoin d’aide avec elle s’il vous plaît n’hésitez pas à laisser un commentaire ou me trouver sur les LMR.