Aller au contenu

Raspberry Pi : fabriquons des trucs!


Messages recommandés

Faire un robot simple mais extensible avec le Raspberry Pi

Aujourd'hui, nous étudierons les pièces qui nous seront nécessaires à la fabrication d'un robot simple, basé sur un Raspberry pi, tel que R.Cerda, que je vous avais

présenté dans un précédent post.

Pour un robot simple, il faut:

  1. un système de propulsion;
  2. De quoi transformer la rotation des moteurs en mouvement horizontal;
  3. un circuit de commande;
  4. un système fournissant l'alimentation électrique;
  5. éventuellement des capteurs.

Voyons donc ce qu'il faut en faisant "pas cher" (sachant que tout sera réutilisable).

Mais avant de commencer, voici un post ou l'on peut voir le résultat d'un robot simple, et autonome, commandé par le Raspberry Pi.

1-Le système de propulsion : motorisation

On part sur un robot à conduite différentielle, c'est à dire disposant de deux moteurs. Pour avancer, les deux moteurs tournent dans le sens A, pour reculer ils tournent dans le sens B, et pour tourner on fait les deux tourner en sens inverse. On peut ainsi avancer, reculer, tourner à droite, et tourner à gauche.

En bref, il faut donc deux moteurs, ou tout autre système capable de tourner dans un sens ou dans l'autre. On a donc plusieurs solutions :

  • La récupération : les lecteurs CD/DVD possèdent chacun un petit moteur DC qui permet d'ouvrir/fermer le chariot, et ce moteur à une petite boite de vitesse. Mon premier robot, R.Berion, utilisait ce genre de systèmes. Il faut toutefois bidouiller un peu, mais c'est une solution qui permet de faire de la récup.
  • Des moteurs DC avec boite de vitesse : c'est une option durable et économique, ce genre de moteurs vaut environ 5$ pièce, donc on s'en sort pour 10$ sans compter les roues.
  • Des servomoteurs à rotation continue : on peut trouver des servomoteurs pouvant tourner à l'infini dans un sens ou dans l'autre. C'est la solution la plus chère, mais c'est extrêmement facile à contrôler, et on élimine le besoin d'avoir un circuit de commande supplémentaire. En revanche, chaque servo vaut environ 14$ sur Adafruit (soit une dépense nécéssaire de 28$), et ces servos ne peuvent pas servir à des usages classiques de servomoteurs, pour orienter un bidule quelconque, puisqu'on a plus d'informations sur l'angle ou est tourné le servo. Ils sont difficilement recyclables pour d'autres projets. D'autre part, on a finalement peu de contrôle sur chaque moteur, car on peut en gros les faire tourner dans un sens, dans l'autre, ou les stopper, mais pas trop contrôler leur vitesse de rotation (ou alors plus difficilement). En outre, il faut faire attention au sens de branchement, sous peine de les brûler. En revanche, ils ont pas mal de couple.

La solution de la récup est intéressante, le problème est donc de pouvoir fixer des roues dessus. Dans mon cas, j'ai trouvé un bout de plastique sur lequel je pouvais visser les roues de mes servos (dont j'avais grillé un des deux, et du coup avec un seul servo on ne peut pas trop avancer ^^). En revanche, comme c'est de la récup, rien n'interdit de coller un vieux CD sur l'axe de rotation pour faire la roue...

Et on peut ajouter un élastique sur le contour du CD pour faire un pneu et avoir un peu d'adhérence.

La solution des moteurs DC est ma préférée, car elle est économique, et pour le prix d'un servo, on a 3 moteurs DC, ce qui permet d'en avoir un de rechange par exemple, mais on peut facilement décider d'en prendre 4 ou 6 pour faire un véhicule à 4 ou 6 roues motrices. De plus, pour ces moteurs, il existe une très grande variété de roues et chenilles adaptées, et le système fait qu'on peut facilement changer les roues. Ces moteurs intègrent une boite de vitesse réductrice avec un rapport X:1, ce qui signifie que quand le moteur fait X tours, l'axe de la roue en fait 1. C'est très important, car sans cela, le couple serait trop faible,et le robot n'avancerait pas. Plus le rapport réducteur est important, moins les roues tourneront vite (et donc plus le robot sera lent), mais plus il aura de couple, et sera capable

d'emporter une charge importante/de continuer à avancer malgré des obstacles. Il existe des moteurs avec boite de vitesse metallique, mais c'est plus cher, au moins 15$ pour les plus petits (par contre, ils sont fatalement plus solides). Je conseillerais des "pololu plastic gearmotors" On en trouve principalement en 120:1 et 180:1. Prenez ceux qui ont le "3mm D-Shaft", il s'agit de l'axe du rotor, qui fait 3mm de diamètre, en forme de D. Prenez ceux qui ont l'axe en métal, ce sera plus solide. L'intérêt c'est qu'on a besoin de rien d'autre pour fixer les roues, et qu'en plus les roues s'enfoncent sur cet axe sans outil, et restent solidement en place. Et en plus il existe une très grande variété de roues adaptées à ces modèles. Je n'ai pas regardé pour les axes de 2mm, ni ceux en plastique. Et en plus, si plus tard vous décidez d'upgrader avec des "micro metal gearmotors", les roues seront compatibles. Pour moi l'idée c'est d'essayer de faire que tous mes robots puissent partager des éléments, ça rend la logistique plus facile :)

Au passage, ces moteurs sont disponibles sur alpha-crucis.com :

Notez que sur pololu, il y a également le moteur 180:1 avec corps "droit".

Pour le choix du site, pololu a pas mal de bidules "robotique". En revanche, ils n'ont pas beaucoup d'autres catégories. Sur pololu, j'ai commandé uniquement mes moteurs et roues. Toutefois, Alpha-Crucis a les moteurs de pololu, leurs roues, mais également tout plein d'autres items. De plus, c'est un site français, qui vous expédie par colissimo, pour 5€ de FDP, et gratuitement au delà de 250€. Bien sur, pour les DOM, ça n'a rien à voir, mais ça reste modéré, avec 30€ de FDP pour une commande d'environ 250€, et je crois bien qu'ils m'ont décompté la TVA, ce qui revient au même (en Guadeloupe on est pas censés payer la TVA "normale", mais la douane peut prélever une taxe à l'arrivée. Toutefois, par colissimo et sur des montants de cet ordre, il ne le font presque jamais. En plus pour des composants électroniques, ça fait une facture avec des dizaines de références à petit coût, le douanier n'aura pas envie de lire tout ça pour calculer les taxes :dd: ). Bref, j'ai commandé chez eux hier, et ils m'ont l'air vraiment bien, ça risque d'être mon second site apres Adafruit ;) Seul défaut, les fiches ne sont pas toujours complètes, mais le catalogue est énorme (ils ont AUSSI des trucs d'Adafruit!)

Enfin bref, ça fait 3.77€ par moteur sur Alpha-Crucis, ou 5.49$ par moteur chez Pololu. Il en faut au moins 2, donc ça fait 7.54€ pour les moteurs, ou 10.98$ sur pololu. Prenez en bien deux ayant le même rapport réducteur :dd: . Le "droit" ou "coudé", c'est à vous de voir. Le droit est plus long, mais moins large, le coudé c'est le contraire. Dans tous les cas, ça ne change pas grand chose, juste peut être l'organisation de l'espace. Moi j'en ai pris de chaque, mais j'aime bien les droits, parcequ'on peut facilement les coller sur le bord du châssis du robot sans avoir a découper le dit châssis. Mais on peut aussi fixer les coudés sous le châssis, sans faire de découpe... Bref, c'est un choix à faire ;)

2-Transformer la rotation des moteurs en mouvement du robot : transmettre la puissance à la "route".

Maintenant que nous avons des moteurs, il faut transmettre la puissance à la "route", pour faire bouger le robot. On a deux solutions simples :

  • Deux roues, qui seront accompagnées d'une troisième roue omnidirectionnelle (en fait, une bille dans un logement) qui servira de troisième point de contact -le nom anglais c'est "ball caster"-;
  • Des chenilles, qui sont auto-suffisantes.

Pourquoi choisir l'un ou l'autre? Les roues ont l'avantage d'être disponibles en de multiples dimensions, de 2-3cm de diamètre à presque 10. On en trouve des larges, des étroites, avec divers designs. Plus la roue sera grande, plus le robot ira vite. En revanche, le couple disponible sera moins important, puisque la distance à l'axe sera supérieure (le couple est exprimé en g-cm. Si votre moteur à un couple de 1kg-cm, il pourra faire tourner une charge de 1kg à 1cm, 500g à 2cm, etc.) Pour ma part, j'ai pris des roues de 4,6 et 9cm. Plus la roue est petite, plus le bas du robot sera proche du sol, et donc plus les obstacles pourront le bloquer. L'avantage de la roue est donc de pouvoir l'adapter au terrain visé, et pouvoir ainsi ajuster la vitesse/le couple du robot. L’inconvénient, c'est qu'il faut un troisième point de contact, le "ball caster". Et le ball caster franchit bien moins facilement les obstacles que les roues. Cependant, plus le Ball caster est gros, plus ça sera facile.

En face, les chenilles sont disponibles souvent en diverses longueurs, mais pas tellement pour des diamètres de roues différents. En revanche, la chenille est "tout terrain", et il ne faut rien d'autre que le kit de chenilles. Donc sur une surface irrégulière, et même avec des obstacles, la chenille pourra mieux se débrouiller. Elle devrait passer sans problème par dessus un gros câble d'alimentation de PC au sol, la ou la bille du ball caster pourrait rester bloquée. Et s'il s'agit d'aller sur du bitume, de la terre, ou autre, le Ball caster ne passera tout simplement pas. En revanche, la chenille sera sans doute plus lente, du fait du faible diamètre des roues d'entrainement de la chenille. De plus le système de chenille provoque une résistance, et réduit le couple disponible/augmente la puissance consommée pour un couple donné. Par contre la stabilité devrait être impeccable, et il n'y a presque aucun risque de se retrouver coincé.

Notez toutefois qu'avec 4 roues motrices, on évite la nécessite du Ball caster et on peut aller un peu partout, et franchir beaucoup d'obstacles avec de grandes roues. On peut également avoir 4 roues, dont deux motrices. Idéalement il faudrait que les roues non motrices puissent tourner, mais ça peut parfaitement fonctionner même si elles sont fixes.

En bref : en appartement, sur des surfaces relativement régulières, les roues et le ball caster seront plus efficaces, iront plus vite, et gaspilleront moins d'énergie que les chenilles. En revanche, celles ci sont plus adaptées au terrains difficiles, et peuvent franchir des obstacles divers facilement. De plus , si on a le kit de chenilles, il n'est pas nécéssaire d'acheter autre chose, et on a une surface de contact importante avec le sol pour transmettre la puissance, mais également une grande stabilité de ce fait. On risque peu de patiner, glisser, déraper... Sans compter le look "cool" des chenilles :D

Donc, au choix :

Sachant qu'un seul kit est nécessaire, et contient les deux chenilles avec tout l'équipement qui va avec (les "roues" de 35mm d'entrainement et libres, les axes, etc), cela fait environ 9 ou 10€ selon la longueur souhaitée. Pour ma part, je pense qu'il faudrait idéalement que la chenille soit aussi longue ou un peu plus longue que le robot. Ainsi, la partie avant de la chenille peut entrer en contact avec l'obstacle, levant le robot, et permettant le franchissement. Si le bord du robot est devant la chenille, le bord pourra se coincer contre l'obstacle, et le robot ne pourra pas avancer.

OU BIEN

  • n'importe quelle paire de roues de cette section (donc pas les "idler sprockets", elles n'ont pas la fixation pour l'axe de moteur. Au mieux, ça peut faire des roues libres, si vous prenez également deux roues du même diamètre avec la fixation moteur, qui seront entrainées par les deux moteurs. Dans ce cas, vous aurez 4 roues dont 2 motrices, inutle de prendre le ball caster) . Les roues sont vendues par paire, inutile d'en acheter 2 fois :)
  • n'importe quel ball caster de cette section (ou n'importe quel bal caster tout court!), sachant que les plus gros franchissent mieux les obstacles. Je penche pour les 1/2 pouce a 1 pouce.

Cela fait donc 7 à 10$ pour les roues selon la taille (une paire), plus 3 a 7$ pour le ball caster, soit 10 a 17$ pour une configuration complète de roues sur pololu.

Chez alpha-crucis, il faudra de la même façon prendre n'importe quel ball caster (roulette, en français, en fait!) de cette section, pour 2 à 6€;

et l'une de ces paires de roues :

De manière générale, les "Pololu wheels". Vérifiez qu'il y a le trou en "D" pour l'axe du moteur, de 3mm.

ça revient donc de 7 à 13.5€ pour les roues et la roulette. Les roues sont également vendues par paire. Pour le choix de la couleur, une couleur claire peut servir

à réfléchir un faisceau, ce qui pourra servir à faire un détecteur permettant de mesurer la rotation de la roue. Toutefois on peut aussi utiliser un faisceau de part

et d'autre qui sera interrompu par les montants de la roue s'il y en a... En pratique, on peut sans doute adapter n'importe quoi à n'importe quel système.

La couleur des roues peut également servir à reconnaitre les robots, ou si on a des roues de couleur différentes, à déterminer de quel coté on voit le robot

(dans une optique "computer vision", ou un algo analyserait avec openCV le flux d'une webcam, et pourrait identifier le sens dans lequel le robot se trouve par ex.

Mais on peut aussi mettre un autocollant différent de chaque coté, ou n'importe quoi d'autre.)

Si vous optez pour les servomoteurs à rotation continue, il faudra donc également prendre une roulette (n'importe laquelle ira), ou alors des roues libres.

3-Le circuit de commande, et des puces additionnelles facultatives

Nous avons des moteurs, des roues/chenilles adaptées, maintenant il faut commander tout cela. Pour appliquer l'algorithme de conduite différentielle, il faut un circuit capable

de faire tourner les moteurs dans un sens ou dans l'autre à volonté. Nous allons utiliser pour cela des circuits implémentant des ponts en H. On utilisera donc deux puces L293D

pour commander nos moteurs. Pourquoi deux? chaque puce L293D est donnée pour 600mA par canal. Les moteurs que nous avons sélectionné consomment jusqu'à 800mA

s'ils sont bloqués. En mettant les deux L293D en parallèle, on double la puissance disponible, avec du coup 1200mA par canal. On peut aussi prendre un seul L293D, et espérer

qu'il tienne le coup en cas de blocage des moteurs. ça devrait marcher, mais ce n'est pas un comportement garanti. Notez qu'en refroidissant les puces (un petit rad sur la puce)

on peut augmenter la puissance disponible, donc on peut également se contenter d'une puce mieux refroidie. Pour ma part, j'ai pris 2 puces pour avoir plus de puissance disponible,

et les puces étant peu chères, j'ai trouvé plus simple d'en prendre 2.

Il y a déjà un tutoriel sur l'utilisation de la puce L293D pour commander un ou deux moteurs avec le Raspberry Pi. La seule différence est qu'ici nous mettrons les deux puces en parallèle. EN pratique, le câblage sera le même, sauf qu'on ajoutera une seconde puce en connectant les pattes correspondantes des deux puces entre elles. Mais on verra cet aspect plus tard.

Si vous avez choisi les servomoteurs, ces puces ne sont pas nécessaires.

En pratique, il faudra donc :

Il existe aussi les puces SN754410 pour 2€ pièce sur Alpha-Crucis (ou 3$ sur pololu), qui sont compatibles broche à broche avec les LM293D (on peut donc utiliser exactement le même câblage d'après pololu). Dans la doc, je lis 1A de courant en sortie. Cependant, je ne parviens toujours pas à comprendre si c'est 1A au total, ou 1A par canal. Si c’est 1A par canal, alors cette puce permet de remplacer les deux L293D dans notre montage, si c'est 1A au total, elle n'a aucun intérêt par rapport aux L293D. J'en ai pris 3, mais je ne les ai pas encore testées. Vous pouvez tenter, si vous comprenez mieux la doc que moi, faites moi signe. j'écrirai à Pololu pour leur demander. Sinon dans le doute, les L293D, je peux vous confirmer qu'elles fonctionneront pour le circuit, pour les avoir testées sur 3 prototypes de robots. Mais si vous commandez chez pololu, seule la SN754410 est disponible, et du coup je vous conseille d'en prendre au moins 2 pour être sur (deux en parallèle, et pourquoi pas une troisième au cas ou, en stock).

Dans tous les cas, le schéma de câblage sera le même.

Ajouter des GPIO au Raspberry Pi (optionnel, mais pratique, facile, et peu coûteux)

Sur le schéma que je vous fournirai dans un premier temps il y aura également une puce MCP23017, qui permet d'ajouter 16GPIO (je ferai un second schéma simplifié sans cette puce). Il est possible de se passer de cette puce, le souci c'est que les puces de contrôle des moteurs utilisent 5 à 6 GPIO sur les 17 du Pi. Avec le MCP23017, on utilise 2GPIO spécifiques, qui restent de plus utilisables par d'autres puces, et on ajoute ainsi 16GPIO protégés, pouvant qui plus est fournir plus de courant que les GPIO normaux. Cette puce ne coûte pas très cher, puisque le MCP23017 est à 2.88€ sur Alpha-Crucis. Si cette puce est trop grosse,

mais que vous voulez quand même utiliser ce principe (ajouter des GPIO protégés), il est possible d'utiliser un MCP3008, qui coute 1.95$ sur Adafruit et ajoute 8GPIO et moins de pattes.

Nous avons un tutoriel sur le forum sur l'ajout de GPIO au Raspberry Pi en utilisant le MCP23017 ou le MCP23008.

Ajouter un circuit convertisseur analogique-numérique pour lire des capteurs analogiques (optionnel, mais très pratique, simple et économique)

De même, sur le schéma d'un robot de base, je vais utiliser une puce MCP3008, qui permet d'ajouter 8 entrées analogiques au Raspberry Pi. Cette puce n'est pas nécessaire,

et on peut faire un robot télécommandé/contrôlé à distance/utilisant une webcam pour se déplacer, de sorte que le robot n'aura pas de capteurs analogiques à lire.

Toutefois, je recommande fortement cette puce, car le MCP3008 est à 3.22€ sur Alpha-Crucis, et pourrait permettre d'ajouter une grande variété de systèmes extrêmement utiles. Par exemple,

un capteur de distance pour détecter automatiquement les obstacles, mais aussi un capteur infrarouge orienté vers le sol devant le robot, qui permettrait de détecter les trous

pour éviter de tomber dedans, ce qui peut être utile même en contrôle manuel. On peut imaginer toutes sortes de capteurs qui permettraient au robot de s'adapter automatiquement

à diverses situations, ou même tout simplement un capteur de courant pour que le robot puisse mesurer sa consommation, on peut utiliser la puce pour mesurer la tension

des batteries et estimer l'autonomie restante, ou encore utiliser des capteurs divers pour mesurer le nombre de rotations des roues, un accéléromètre, gyroscope ou autres

pour avoir des infos sur le déplacement du robot... Bref, une puce très utile, rajoutant donc 8 entrées analogiques, en échange de 4GPIO.

Il y a un tutoriel sur la façon de connecter un MCP3008 au Raspberry pi pour lire des valeurs analogiques, et d'autres tutoriels montrant comment connecter des capteurs dessus (luminosité, température, distance, ...)

4-L'alimentation électrique de l'ensemble

Maintenant, il faut alimenter le Raspberry Pi, mais également les moteurs. Pour cela, il faudra une source électrique de 5V, stable, pour le Raspberry Pi, et

une source de 5 ou 6V non régulée pour les moteurs. On aura besoin d'une puissance de 700mA au minimum pour le Pi, et 800mA au maximum par moteur,

soit 1600mA au maximum pour les moteurs. Il nous faut donc une source capable de débiter 2300mA ou plus. Avec des piles AA rechargeables, il nous en faudrait 5

de 2300mAh ou plus. avec des piles non rechargeables, 4 suffiront. Si on alimente tout avec des piles rechargeables, il faudra un régulateur de tension pour le Raspberry Pi.

La meilleure option que j'ai pu trouver jusqu'ici, c'est le régulateur S7V7F5 de chez pololu, qui vaut 4.95$, et est une petite merveille. Il peut fournir du 5V à partir de tensions

allant de 2.7 à 11.8V. Si il fournit une tension supérieure à la tension d'entrée, il peut fournir 500mA. Si il baisse la tension, il fournit 1000mA. Il est réellement minuscule,

et ne consomme rien (0.1mA) quand il ne fait rien. Son efficacité énergétique est de 90%, ce qui veut dire qu'il ne gaspille que 10% de l’énergie fournie pour la conversion.

Dans le même style, chez Alpha-Crucis, il n'y a malheureusement que le D15V35F5S3, pour 10€. Il est bien plus cher, et ne peut réguler la tension qu'à la baisse, mais a toujours une

efficacité de 90%. Il est un peu plus gros, mais en échange peut fournir jusqu'à 3.5A. On peut donc imaginer s'en servir pour réguler une batterie plus grosse et plus puissante,

et fournir 5V au pi, aux moteurs et à tout autre système 5V.

Une autre solution, très économique, mais peu efficace, est d'utiliser un simple régulateur linéaire, comme le 7805, à 1.2€ sur Alpha-Curcis, très simple a utiliser, mais nécessitant une tension d'entrée plus importante (7V au moins) et gaspillant une partie plus importante de l'énergie, puisque la différence de tension entre l'entrée et la sortie est consommée avec le même courant que ce celui qui est consommé en sortie. Donc à 1A, pour une entrée de 7V, on consomme 2W pour la régulation, et cette énergie est gaspillée en chaleur. La puissance utile disponible est donc de 5W, ce qui fait qu'on gaspille 40% de l'énergie.

On peut également utiliser une source 5V et se passer des régulateurs, comme nous le verrons plus bas.

Il faudra alors un endroit ou mettre les batteries, par exemple:

Il existe une dernière solution, c'est d'avoir une batterie régulée 5V, telle que celle ci sur Alpha-Crucis, pour 22€. Elle peut fournir 5V avec 2A en sortie, ce qui sera assez pour à la fois

alimenter le pi et les moteurs dans la plupart des cas. Il manque 10% de puissance, mais ça devrait passer. J'en ai commandé 2, je ferai l'essai. Toujours en utilisant cette batterie, il est

également possible d'ajouter une trappe de 4 Batteries AA pour l'alimentation des moteurs (non régulée), et d'alimenter le Pi avec la batterie 5V régulée. Dans les deux cas, on se passe

du régulateur de tension. L'utilisation d'un pack de 4 Batteries AA permet de séparer les deux sources d'alimentations, et c'est en théorie mieux. L'intérêt de la batterie régulée, c'est

qu'elle utilise des batteries au lithium qui sont plus légères à capacité égale. On gagne donc sur la masse du robot, et on peut sans doute démonter la batterie pour enlever le panneau solaire, et

la coque pour réduire la taille si on veut. Attention toutefois au batteries, celles au Lithium étant fragiles et dangereuses quand on les malmène.

Il y a un post décrivant un montage utilisant des batteries AA et un régulateur de tension pour alimenter un Raspberry Pi autonome, ainsi que des tests d'autonomie.

5-Les capteurs

On peut se passer de capteurs, et télécommander le robot. On peut également utiliser une webcam pour analyser les images et se déplacer ainsi (plus complexe, il faut maitriser openCV ou autres librairies de vision informatique)

Il est cependant possible d'ajouter des capteurs simples, tels que des capteurs de distance en infrarouge, ou à ultrasons, pour détecter les obstacles Le cout sera de 10 ou 20€.

On peut également utiliser des poutons poussoirs pour faire des capteurs de contact. n'importe quel bouton poussoir fera l'affaire, mais certains sont plus adaptés, tels que ceux ci :

Avec deux de ces switches, on peut détecter de quel coté se trouve l'obstacle, et ainsi éviter les obstacles. Pour ces switches, on a pas besoin d'utiliser le convertisseur analogique, uniquement des entrées numériques.

On peut ensuite ajouter de nombreux autres capteurs, par exemple pour détecter les trous, avec un capteur infrarouge à faible portée, un accéléromètre, un gyroscope pour le guidage inertiel, etc...

On peut également trouver des capteurs purement numériques, dont certains utilisent par exemple le protocole I2C pour communiquer. Dans ce cas, on utilisera pas le MCP3008.

Voici au passage un petit récapitulatif sur les divers capteurs les plus courants.

Il y a également un tutoriel sur la lecture d'un bouton poussoir (pour les microswitches), et un autre tutoriel sur l'utilisation d'un capteur de distance ultrasonique ou infrarouge.

Récapitulatif

En fin de compte, voici des "packs" mis a jour, récapitulant le matériel nécéssaire.

Il nous faut bien sur un Raspberry Pi, des jumper wire, une breadboard, une carte SD avec Raspbian (ou autre) dessus, et le câble d'alimentation. Je ne reviendrai pas

la dessus, si vous en êtes à faire un robot, c'est que vous avez déjà probablement ces composants et sans doute déjà essayé divers montages. Passons donc maintenant

aux éléments spécifiques au robot.

Robot de base, avec moteurs DC et chenilles

Il nous faudra donc :

Ces composants sont les composants minimaux pour faire ce robot à chenille. En l'état, il n'aura pas de capteurs, et ne pourra donc être que télécommandé.

On a donc un total de 44€ au maximum si l'on compte les batteries AA. Une autre solution est de remplacer le circuit d'alimentation, la boite à batteries et

les piles rechargeables par une batterie portable USB, ce qui revient à 22€, soit un total d'exactement 44€.

Robot de base, avec moteurs DC et roues+roulette

On conserve le même matériel que pour le précédent, sauf qu'on remplace les chenilles par des roues et une roulette :

Du coup on passe a 42€.

On peut utiliser de plus grandes roues :

Pour cette variante, le prix reste à 44€.

Options

Voyons maintenant quelques options intéressantes, qui seront utilisées pour le prochain tutoriel :

  • Le MCP3008 pour lire les valeurs de capteurs analogiques, +3.22€
  • Le MCP23017 pour ajouter 16GPIO protégés, + 2.88€

Ces deux puces extrêmement utiles augmenteront la facture de 6.1€, ce qui nous fait un total de 50€.

On peut enfin ajouter des capteurs :

On ajoute donc 22.5€ ou 12.5€ pour un grand total de 72.5€ au maximum (62.5€ en infrarouge, 52.5€ avec juste les capteurs de contact).

A partir de là, vous avez tout le matériel nécessaire à la construction d'un robot (plus ou moins autonome selon les capteurs), et pour chaque élément utilisé, il y a un tutoriel dans ce fil de discussion (consultez la liste des tutoriels dans ce post). Je vais toutefois faire d'autres tutoriels, spécifiques, reprenant dans les grandes lignes ce qu'il faut faire pour monter ce robot, le programmer, et l'améliorer.

Dans un prochain post, je partirai sur une config "classique" parmi le matériel présenté, et je mettrai les schémas, et les instructions d'assemblage.

Edit :

Voici le lien vers le tutoriel sur l'explication du principe de fonctionnement, et les schémas/instructions de montage.

Voici également le lien vers les instructions sur la construction physique, l'assemblage du robot, la construction d'un châssis simple, etc.

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 321
  • Créé
  • Dernière réponse

Merci pour ces premiers conseils, je reviendrais sans doute vers toi pour d'autres :)

Je ne vais pas commencer ce mois ci (déjà fait pas mal d'achat de matos, capteurs, etc ...) mais je vais me préparer ma liste pour le mois prochain, histoire de pouvoir commencer à préparer mon idée.

Pour polulu, j'avais regardé, les frais de port était un peu cher ! Mais bon, quand on a pas le choix.

L'idée de ce premier robot, c'est vraiment de prendre en main les premiers concept de la robotique pour ensuite partir sur un truc un peu plus gros. Donc ce que tu me proposes cadre bien :)

Je vais suivre tes conseils pour les motors DC, ça m'a l'air plutôt correct en effet. Je vais partir sur les 120 (qui, si j'ai bien compris ton explication), vont plus vite que les 150 mais ont moins de couple, c'ets bien ça ?

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ces premiers conseils, je reviendrais sans doute vers toi pour d'autres :)

Je ne vais pas commencer ce mois ci (déjà fait pas mal d'achat de matos, capteurs, etc ...) mais je vais me préparer ma liste pour le mois prochain, histoire de pouvoir commencer à préparer mon idée.

Pour polulu, j'avais regardé, les frais de port était un peu cher ! Mais bon, quand on a pas le choix.

L'idée de ce premier robot, c'est vraiment de prendre en main les premiers concept de la robotique pour ensuite partir sur un truc un peu plus gros. Donc ce que tu me proposes cadre bien :)

Je vais suivre tes conseils pour les motors DC, ça m'a l'air plutôt correct en effet. Je vais partir sur les 120 (qui, si j'ai bien compris ton explication), vont plus vite que les 150 mais ont moins de couple, c'ets bien ça ?

En effet, les 120 seront plus rapides. La perte de couple existe, mais pour un robot léger, je pense que ça ne sera pas très grave. Sur

.

Ce n'est pas le plus rapide des robots. Avec de plus grandes roues, ce sera sans doute plus rapide, et je testerai également les 120:1 (j'en ai). Mais je pencherais plus pour ceux la, à l'heure actuelle. Les carreaux au sol font 30cm. On peut voir que la roulette de mon robot est trop petite et se coince parfois dans la rainure du carrelage.

Au passage, pololu n'est pas le plus économique en FDP, mais je te conseille Alpha-Crucis, pour lequel les FDP sont a 6€, et qui possède l'intégralité des pièces nécessaires (ils vendent les bidules de pololu et d'autres choses).

Enfin, dernier point, tu as répondu avant que j'aie fini le post, je continue à le compléter, donc le reste des indications sera présent. A la fin de mon post, j'aurai dressé une liste de tout le matériel nécessaire, et je pense que ça peut faire 30 à 50€, FDP inclus, sachant que tu as déjà le raspberry. Bien sur, ce sera sans capteurs, mais avec la possibilité d'en ajouter de toutes sortes.

Lien vers le commentaire
Partager sur d’autres sites

Enfin, dernier point, tu as répondu avant que j'aie fini le post, je continue à le compléter, donc le reste des indications sera présent. A la fin de mon post, j'aurai dressé une liste de tout le matériel nécessaire, et je pense que ça peut faire 30 à 50€, FDP inclus, sachant que tu as déjà le raspberry. Bien sur, ce sera sans capteurs, mais avec la possibilité d'en ajouter de toutes sortes.

oui oui, je continue à suivre ta réponse de prés !

Ne t'en fais pas.

C'est une bible que tu me prépares là, héhé !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

Très bonne initiative ce topic, et en français en plus !

Quel plaisir de voir la communauté Raspberry Pi s’agrandir a vu d’œil !

Etant un grand passionné de celui-ci depuis sa sortie, je ne peux que vous rejoindre et partager avec vous mes recherches et mon projet d’hexapode à base de Rpi.

Tout est dispo ici : http://www.syris.fr

Bonne visite et à très bientôt sur ce topic.

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous! désolé pour le délai de réponse, mais parfois la thèse peut m'engloutir dans un trou noir pendant une durée indéterminée :)

Pour me rattraper, je prépare la suite du tuto sur le robot simple :)

Enfin, dernier point, tu as répondu avant que j'aie fini le post, je continue à le compléter, donc le reste des indications sera présent. A la fin de mon post, j'aurai dressé une liste de tout le matériel nécessaire, et je pense que ça peut faire 30 à 50€, FDP inclus, sachant que tu as déjà le raspberry. Bien sur, ce sera sans capteurs, mais avec la possibilité d'en ajouter de toutes sortes.

oui oui, je continue à suivre ta réponse de prés !

Ne t'en fais pas.

C'est une bible que tu me prépares là, héhé !

La suite approche, j'ai fini les schémas (ça a pas été simple, le schéma n'est pas si complexe, mais j'ai essayé de faire en sorte qu'il soit lisible, et que les fils ne se croisent pas... Et puis je suis nul en schemas, édition graphique et consorts ^^)

Hello

Juste un petit mot en passant :

Je ne sait pas si ce lien à été donné, mais il est très intéressant pour ceux qui s’intéressent a l'embarqué et notamment au Pi (mais pas que :p )

http://www.blaess.fr...y/raspberry-pi/

Effectivement, c'est un lien intéressant, avec des infos de très haut niveau dedans :)

Bonjour à tous,

Très bonne initiative ce topic, et en français en plus !

Quel plaisir de voir la communauté Raspberry Pi s’agrandir a vu d’œil !

Etant un grand passionné de celui-ci depuis sa sortie, je ne peux que vous rejoindre et partager avec vous mes recherches et mon projet d’hexapode à base de Rpi.

Tout est dispo ici : http://www.syris.fr

Bonne visite et à très bientôt sur ce topic.

C'est un sacré projet que tu as là! Et le châssis à l'air super classe! C'est sans doute plus long de concevoir des pièces aussi précises, bien designées, mais tu dois y gagner énormément de temps par rapport à une construction "à l'arrache" ^^

J'espère un jour pouvoir également me faire un/des robots marcheurs ;)

AU fait, merci pour les liens :)

Il faudrait également que je mette une section "liens externes" dans ce sujet ^^ Mais bon, c'est un gros boulot, je voudrais au moins finir les tutos robot de base avant!

Je reçois ENFIN ma commande de chez Kubii demain ! Bon apparemment ils ont perdu mon colis entre temps, ça arrive et très bonne réactivité de leur part en tout cas.

J'ai attaque de pouvoir commencer à décortiquer la bête :)

Chouette :) Du coup, quels projets pour le moment?

Lien vers le commentaire
Partager sur d’autres sites

Pour le moment, me faire à gestion par SSH et à Linux car je n'ai pour faire simple, jamais utilisé linux de ma vie :D

Par la suite, je vais tenter de sortir un NAS pour accédez à distance à ma Freebox, et ensuite, voir pour créer une interface pour faire un "car-media", mais çà, c'est pas pour tout de suite :D

Lien vers le commentaire
Partager sur d’autres sites

Petite Mise à jour (avec quelques photos) :

La mécanique avance : http://www.syris.fr/index.php/hexapode/hexapode-raspberry-le-chassis-2/

L'électronique également : http://www.syris.fr/index.php/hexapode/hexapod-raspberry-electronique/

Yaug : Je ferai un point sur les dépenses un peu plus tard, mais pas tout de suite, je veux pas me faire peur en ce moment :)

Lien vers le commentaire
Partager sur d’autres sites

Montage d'un robot Raspberry Pi de type R.Cerda

Aujourd'hui, nous allons poursuivre le tutoriel de construction d'un robot simple basé sur un Raspberry Pi, de type R.Cerda. Nous allons voir le principe du robot, avant de voir le schéma électronique.

Nous reprenons donc les pièces dont nous avons parlé de le précédent tutoriel, sur le choix des pièces et expliquant leur utilité pour faire un robot de ce type.

Pour ce modèle, nous partons sur un robot à deux moteurs (roues ou chenilles, le montage électronique est le même!

Pour cet exemple, le robot sera représenté avec des chenilles, mais le principe est valable pour 2 roues motrices et deux roues libres,

deux roues motrices et une roulette, ou des chenilles. L'important est que les roues motrices doivent être entraînées par des moteurs DC.)

Principe de fonctionnement

Voyons maintenant le principe de fonctionnement général. Pour cela, voici un schéma fonctionnel :

robot1.png

Le Raspberry et l'alimentation

Nous avons donc un Raspberry Pi, modèle A ou B. L'alimentation électrique provient d'une source 5V régulée depuis 5 Batteries AA.

Cela nous permet d'avoir entre 5 et 6V (selon la charge des batteries) pour le moteur, et 5V pour le Raspberry Pi. Il est bien sur possible

d'utiliser deux sources séparées, ou toute autre configuration compatible avec vos moteurs.

Le MCP23017 : plus de GPIO.

Le Raspberry Pi est connecté à un MCP23017 via le bus I2C, et rajoute 16GPIO. Cela nous permet de prévoir large, et de pouvoir étendre les capacités du robot.

On pourra ainsi, par exemple, ajouter des bumpers (boutons poussoirs) pour détecter les collisions. Comme nous avons 16 GPIO, on peut donc

en mettre une bonne quantité, d'autant que ces capteurs sont peu chers.

La commande des moteurs : les L293D

Deux puces L293D sont branchées en parallèle, et connectées à 5 ou 6 broches du MCP23017 (dans le schéma, je connecterai à 6 broches. Cela

permet de pouvoir faire fonctionner séparément un moteur ou l'autre. De base, ce n'est pas utile, et on peut commander l'activation des deux moteurs

avec un seul GPIO, et simplifier légèrement la programmation. Toutefois, utiliser deux GPIO nous permettra de programmer plus précisément les déplacements,

la rotation, et par exemple ajuster la vitesse de chaque roue indépendamment.).

Les L293D sont connectés via 4 fils aux deux moteurs, et les commanderont par ce biais. Au passage, les batteries sont connectées directement

aux L293D (sans régulation donc) pour fournir le +Vmotor, la tension qui sera appliquée aux moteurs.

Lecture de capteurs analogiques : MCP3008.

Le MCP3008 est connecté au Raspberry par le bus SPI, et permet d'ajouter 8 entrées analogiques. Nous pourrons donc lire les valeurs de 8 capteurs analogiques

de cette façon. En pratique, pour ce modèle, nous utiliserons un capteur ultrasonique Maxbotix (cela fonctionne avec d'autres capteurs ultrasoniques), mais

il est possible d'utiliser un capteur de distance infrarouge avec le même montage, et un code source sensiblement similaire.

Le capteur de distance sera utilisé pour détecter les obstacles. SI toutefois vous décidez d'utiliser uniquement des bumpers pour la détection de contact, le MCP3008

n'est plus nécessaire.

Schéma électronique du robot

Voyons maintenant le schéma électronique du robot, décrivant le câblage à réaliser pour faire fonctionner notre robot:

rcerdac.png

Si vous suivez ce câblage, vous disposerez d'un robot fonctionnel. Une seule chose n'est pas présente sur ce schéma : la méthode utilisée pour mettre les deux L293D en parallèle.

Pour cela, il suffit de connecter la patte 1 de la puce A avec la patte 1 de la puce B, et ainsi de suite pour les 15 autres pattes. C'est assez simple à faire avec du jumper wire.

Cela permet de cumuler la puissance disponible pour les deux puces.

Il est à noter qu'il s'agit d'UN schéma de câblage possible, mais on peut utiliser n'importe lesquels des GPIO du MCP23017. J'ai utilisé ceux que vous voyez sur le schéma afin de faire en sorte que celui ci soit

le plus lisible possible, en minimisant les croisements.

Je ne détaillerai pas outre mesure les câblages, car il s'agit simplement d'une synthèse de précédents tutoriels :

Voici également le lien vers les instructions sur la construction physique, l'assemblage du robot, la construction d'un châssis simple, etc.

Dans un tutoriel ultérieur, nous verrons enfin l'aspect programmation du robot.

Lien vers le commentaire
Partager sur d’autres sites

Pour le moment, me faire à gestion par SSH et à Linux car je n'ai pour faire simple, jamais utilisé linux de ma vie :D

Par la suite, je vais tenter de sortir un NAS pour accédez à distance à ma Freebox, et ensuite, voir pour créer une interface pour faire un "car-media", mais çà, c'est pas pour tout de suite :D

Tu verra, il y a pas mal de tutoriels dispo en ligne spécifiquement pour le Pi. Les tutoriels linux génériques fonctionnent également, mais les tutos sur Raspbian sont chouette parceque la configuration

est exactement la tienne :)

Et petit point : même si tu ne fais pas des gros montages électroniques, avec simplement une LED, une résistance, et du fil, sans soudure, tu peux ajouter des LED de signalisation programmables pour

afficher/indiquer des trucs sur le fonctionnement de ta machine :) Et avec un peu de fil et une résistance, il est possible d'ajouter un/des boutons pour lancer des commandes sur le pi (programmables, bien sur) par un simple appui physique, tout en ayant la possibilité de lancer ça par ssh, web, ou autre :)

Petite Mise à jour (avec quelques photos) :

La mécanique avance : http://www.syris.fr/...y-le-chassis-2/

L'électronique également : http://www.syris.fr/...y-electronique/

Yaug : Je ferai un point sur les dépenses un peu plus tard, mais pas tout de suite, je veux pas me faire peur en ce moment :)

C'est vraiment un sacré projet, et je comprends ce que tu dis sur "comment on va mettre tout ça dans le châssis", j'ai les même problèmes ^^

Le point c'est qu'en plus, tu as plein de servomoteurs, et plein de composants, donc ça doit être plus compliqué ^^

Par contre, une question : comment fais tu pour évaluer l'autonomie en déplacement? Pour des roues, c'est simple, il suffit de calculer la consommation

du moteur en fonction de la distance à parcourir. Mais pour les servos, il y a des questions :

-quelle est la conso du servo dans quelle condition?

-comme le servo bouge par "à coups", comment calculer son temps de travail?

-quand le servo est actif, mais ne fait pas de mouvement, il consomme quand même du courant. Donc rester debout consomme. Mais combien?

Sur le dernier point, j'avais réfléchi à l'idée de commander l'alimentation électrique du servo (pas le signal de commande, mais bien l'alimentation électrique du servo)

avec un transistor depuis un GPIO. Quand le servo est alimenté, la force avec laquelle il tient la position est bien plus importante, mais dans pas mal de cas, sans alimentation,

il peut tenir en place.

Dans ton contexte, peut être que le plus simple serait de commander l'alimentation des servos de toute une patte, ce qui ferait 6 canaux pour gérer l'alimentation des pattes :)

Lien vers le commentaire
Partager sur d’autres sites

Créer un service pour le Raspberry Pi
Hello!
Ce tuto n'est pas électronique, mais purement logiciel. Avec votre Raspberry Pi, vous avez une petite machine capable
d'accomplir des tâches précises et en consommant peu. Il est possible de ne pas activer le serveur graphique, d'enlever le clavier,
la souris, ne pas brancher d'écran, et contrôler la machine par le réseau. Pour ma part, je lance mes commandes par SSH.
Le problème, c'est que si on lance une commande par SSH, et qu'on ferme le terminal, la commande s'interrompt.

Nous verrons donc comment faire pour créer un demon unix, qui continuera à fonctionner une fois qu'on l'aura lancé, et même comment
faire pour que notre démon se lance automatiquement au démarrage.

Je pars donc d'un script python que j'ai créé, qui me sert à afficher des informations sur l'écran LCD connecté aux GPIO de mon Raspberry Pi.
j'ai donc mon script lcdClock5.py, qui affiche diverses informations (IP, ping, température, date, uptime, occupation CPU, etc). Je dispose donc
de ce script, mais cela fonctionnera avec n'importe quel script.

Pour pouvoir creer un service, il nous faudra creer, en root, un script, dans /etc/init.d/
Dans mon cas, j'ai donc créé le fichier /etc/init.d/lcd0 :

sudo nano /etc/inid.d/lcd0
Je me suis basé sur ce tutoriel pour créer mon démon unix.

Dans mon cas, voici le code de base de mon script :
#! /bin/sh# /etc/init.d/lcd0## Some things that run alwaystouch /var/lock/lcd0script="/home/pi/code/lcdClock5.py"# Carry out specific functions when asked to by the systemcase "$1" instart)echo "Starting script lcd0 "sudo python $script &;;stop)echo "Stopping script lcd0"sudo kill -9 `ps -eo pid,cmd | grep "python $script" -m 2 | cut -d ' ' -f 1`;;*)echo "Usage: /etc/init.d/blah {start|stop}"exit 1;;esacexit 0

Partie servant à lancer le démon unix:
Il y a une section start, qui sera appelée pour lancer le script. Le echo "..." peut être supprimé, mais vous devez dans tous les cas mettre la commande pour lancer le script.
Dans mon cas :
sudo python $script &
sudo permet d'exécuter en root la commande python, qui exécutera le script contenu dans la variable $script.

Ainsi, on pourra démarrer le service par :
sudo /etc/init.d/./lcd0 start

Partie servant à arrêter le démon unix :
Nous aurons également une partie stop, permettant d'arrêter le démon. Dans mon cas, comme il s'agit d'un script python, je ne peux pas me contenter d'un simple "killall nom_du_script", alors j'ai fait quelques recherches. En pratique, le script python exécuté avec sudo lance deux processus, et ma commande permet de récupérer leurs PID. j'utilise alors kill -9 pour tuer les deux processus :
sudo kill -9 `ps -eo pid,cmd | grep "python $script" -m 2 | cut -d ' ' -f 1`

On pourra alors arrêter le service en utilisant la commande :
sudo /etc/init.d/./lcd0 stop

Rendre le script exécutable
Avant de pouvoir démarrer le service avec start et stop, il faudra rendre le script exécutable :
sudo chmod 755 /etc/init.d/lcd0

A partir de là, le démon est fonctionnel, et peut être démarré ou arrêté.

Permettre le lancement automatique au démarrage
Si l'on souhaite que le script se lance automatiquement au démarrage, il faudra alors utiliser la commande suivante :
update-rc.d lcd0 defaults
Dans l'état, cela fonctionnera, mais il y aura des warnings. Nous verrons plus tard quoi faire pour faire disparaître les warnings.

Désactiver le lancement automatique au démarrage
Pour désactiver le lancement automatique, il faudra taper la commande suivante :
update-rc.d -f lcd0 remove

Script modifié pour éviter les warnings
Voici une version modifiée du script, permettant d'éviter les warnings :
#! /bin/sh# /etc/init.d/lcd0#### BEGIN INIT INFO# Provides: lcd0# Required-Start: $local_fs $network# Required-Stop: $local_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: lcdscreen daemon# Description: lcd screen printing realtime data about the system### END INIT INFO# Some things that run always#touch /var/lock/lcd0script="/home/pi/code/lcdClock5.py"# Carry out specific functions when asked to by the systemcase "$1" instart)echo "Starting script lcd0 "sudo python $script &;;stop)echo "Stopping script lcd0 with pid $PID"sudo kill -s 9 `ps -eo pid,cmd | grep "python $script" -m 2 | cut -d ' ' -f 1`;;*)echo "Usage: /etc/init.d/blah {start|stop}"exit 1;;esacexit 0

Pour activer le script au démarage avec ces modifications, on fera par exemple :

sudo update-rc.d lcd0 start 50 2 3 4 5 . stop 50 0 1 6 .

Voici un tutoriel détaillant davantage cette partie décrivant le script et les runlevels.

Je mettrai à jour le tuto ultérieurement pour rajouter d'autres informations.

Lien vers le commentaire
Partager sur d’autres sites

sky99 : pour la conso, c'est simple, je ne m'en suis pas trop occupé. Je suis parti sur une base de consommation en charge par servo, puis j'ai calculé également la conso de ma partie électronique. J’en ai alors déduit que pour alimenter tout sa il me faudrait environ 4A.

Mais sa doit être beaucoup moins! Je ferai des essais réels quand j'alimenterai tout sa :)

J’ai jamais trouver de tutos ou d’explications plus poussés pour sa, toutes les docs constructeurs restent vagues par rapport à sa. Et il y a également le poids qui rentre en compte…

Lien vers le commentaire
Partager sur d’autres sites

sky99 : pour la conso, c'est simple, je ne m'en suis pas trop occupé. Je suis parti sur une base de consommation en charge par servo, puis j'ai calculé également la conso de ma partie électronique. J’en ai alors déduit que pour alimenter tout sa il me faudrait environ 4A.

Mais sa doit être beaucoup moins! Je ferai des essais réels quand j'alimenterai tout sa :)

J’ai jamais trouver de tutos ou d’explications plus poussés pour sa, toutes les docs constructeurs restent vagues par rapport à sa. Et il y a également le poids qui rentre en compte…

Il faudrait que je me trouve une pince ampèremétrique assez précise pour mesurer cela précisément, ce serait intéréssant à savoir. Mais avec mes servos, je sais qu'ils consomment

du courant quand ils ne font rien car :

1) le couple de tenue de position est largement supérieur au même paramètre quand l'alim est eteinte

2) ils font des petits bruits à intervalle régulier.

Sky, pourquoi ne pas être partis tout simplement sur le combo screen & crontab, pour le lancement automatique des commandes au démarrage (ou même autre action) ?

Je ne connais pas screen, donc je ne m'en suis pas servi :)

Pour crontab, j'ai essayé, mais le @reboot ne voulait pas fonctionner, au départ. J'ai pu lancer une commande différée avec at, et donc avoir un "service". Mais du coup il faut lancer manuellement le demon.

Concernant crontab, je pense bien qu'il y a moyen de lancer le démon au démarrage. Mais si je démarre, et que je veux l'arrêter? avec les scripts init.d, déjà je m'appuie sur un standard unix, ce qui fait qu'il est logique

pour un admin unix qui voudrait se servir de ça, de faire bidule start.

D'autre part, j'ai ainsi la possibilité d'avoir le script qui se lance au boot, et on peut déterminer quand. Dans mon cas il faut qu'il se lance une fois que le réseau est disponible, car sinon il n'affichera pas l'IP. (sur cette partie, ça ne fonctionne pas comme je voudrais, il faut que je trouve pourquoi).

En plus, je peux arrêter le script avec stop, quand je veux, et le lancer quand je le souhaite avec start.

On peut également ajouter par exemple des commandes restart et status, pour redémarrer le script et savoir son état.

Le coté négatif, c'est que c'est plus long à faire/verifier/débuguer qu'un simple crontab :)

Mais du coup quand le tout fonctionne, on peut se contenter de simplement changer le nom du script appelé, et bingo!

Lien vers le commentaire
Partager sur d’autres sites

Snootlab a envoyé un mail (mailing list) indiquant qu'ils vont distribuer les produits de pololu. C'est une bonne chose, car les FDP depuis pololu sont un peu élevés, et c'est un site US, alors que snootlab.com est un site français. Je pense que les produits seront moins chers chez pololu, surtout en comptant le taux de change euro-dollar, mais les FDP USA france font que ce n'est intéréssant qu'à partir d'un certain volume de commandes. D'autre part, il y a le risque de taxes à la livraison, depuis les USA.

Pololu vend beaucoup de matériel robotique (moteurs, roues, etc) très intéréssant, mais il manque pas mal d'autres choses, ce qui fait que c'est un peu chiant de commander chez eux, car on ne peut pas avoir tout ce qu'on veut d'un coup, et il faut souvent commander ailleurs.

alpha-crucis.com distribue déjà certains produits pololu, mais ce sera bien d'avoir un autre site franças. Il me semble qu'avec snootlab, en dessous d'un certain volume, ils

envoie le paquet par une enveloppe postale, donc c'est encore moins cher en FDP.

Dans leur mail, ils demandent aux usagers de proposer les produits qu'ils voudraient voir en priorité; j'ai donc proposé une liste de produits (le régulateur de tension 5v pololu, les moteurs avec boite de vitesse et les roues/chenilles principalement). Comme ils ont l'air assez ouvert, j'en ai profité pour leur proposer certaines idées. De même peut être qu'en tant que communauté, on peut leur demander de distribuer tel ou tel bidule, donc ce sera à voir :)

Sinon, j'ai reçu ma dernière commande, et j'ai des relais 220V. En pratique, le relais permet de commander le passage d'un courant éléctrique depuis un signal 5V. En gros pas loin d'un transistor. La différence, c'est qu'ici on peut commander du 220V alternatif (courant secteur quoi), ce qui nous permettra

d'allumer et éteindre des appareils secteur. Dans un premier temps, j'ai fait un tutoriel sur l'utilisation du relais depuis un arduino pour commander une lampe 220v, sur mon blog. Pour le raspberry pi, je ferai un tutoriel ici, le montage étant légèrement différent (il faut rajouter un transistor pour transformer le signal 3.3v des GPIO du Raspberry en signal 5V pour commander le relais), le temps que je fasse les schémas supplémentaires.

Mais pour ceux qui s'intéressent à la domotique, les relais sont des pièces très intéréssantes!

Et au passage, celui ci est particulièrement chouette, car il est sur une petite carte, avec une petite LED qui indique si le courant passe, et un circuit protégeant les GPIO du courant induit par la bobine du relais (plus d'explications là dessus dans le lien plus haut, ou alors plus tard, dans le tuto pour Raspberry pi).

Au passage, je pense à la possibilité de faire une petite série de tutoriels simples sur l'Arduino, pour en venir à certains usages un peu plus avancés ou l'on combinerait l'Arduino et le Raspberry Pi. Pensez vous que je devrais plutot :

  • Passer directement aux tutoriels d'utilisation combinée Arduino-Raspberry
  • Faire quelques tutoriels de base, très simples, sur l'utilisation de l'Arduino, avant d'arriver aux autres tutos dont je parle au dessus?

Je me dis que quelques petits tutos sur les Arduino seraient l'occasion de montrer un peu les possibilités de cette plateforme, pour ceux qui se demandent quoi choisir entre les deux, ne comprennent pas bien l'intérêt de l'un ou l'autre. D'un autre coté le sujet est sur le Raspberry, donc je ne voudrais pas trop "polluer" avec des sujets annexes... C'est aussi pour ça que je pensais à une forme plus brève, et concise de quelques exemples d'utilisation de base du Arduino, une sorte d'initiation avec quelques exemples, et par la suite passer à la combinaison Pi-Arduino, et ne parler de l'Arduino que quand il peut servir le Pi...

Bref, j'attends vos avis :)

Lien vers le commentaire
Partager sur d’autres sites

Merci !

Je n'avais pas lu le mail de snootlab jusqu'au bout :)

Peut être que je vais leur envoyer un mail avec les références pour mon robot du coup. Car Snootlab, tu le reçois dans la semaine ton colis, et ça c'est top. J'ai déjà passé 2 commandes chez eux, ils sont sérieux.

Pour l'arduino, vu que j'ai mis à jour mon site, je suis en train de faire une série de tutos basique pour lire les sondes DHT22 (humidité et température) et BMP085 (pression et température) avec à chaque fois 2 versions : raspberry et arduino. Si ça peut servir ...

Lien vers le commentaire
Partager sur d’autres sites

Merci de ta proposition :)

J'ai déjà tout ce qu'il faut, que ce soit sur raspberry pi ou arduino.

C'est juste qu'il faut que je prenne le temps pour rédiger les tutos, faire les schema fritzing, prendre d'éventuelles photos, etc ...

Du temps quoi :]

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous!

Pas de tutos ces derniers jours, mais la partie suivante du tuto robots arrive! J'ai procédé à quelques expériences ces derniers temps, pour améliorer R.Cerda, le robot Raspberry PI. J'ai du matériel, pour l'améliorer, mais je souhaitais d'abord voir dans quelle mesure on peut le rendre plus intelligent juste par du code. Donc je ferai bientôt un post sur l'aspect programmation, et peut être un sur la partie "construction" du robot, pour être complet (sachant qu'avec les schémas, la liste des pièces, il y a ce qu'il faut pour l'assemblage).

Bref, c'est en bonne voie. J'ai aussi tourné quelques vidéos permettant de voir la différence entre les configurations possibles (roues, chenilles, plus grandes roues : impact sur la vitesse, le franchissement).

Sinon, j'ai reçu des ATtiny85 et 2313, qui sont des microcontroleurs Atmel, le premier à 8 pattes, dont 6 entrées-sorties (4 pouvant être utilisées en entrées analogiques, 4 pouvant être utilisées en pwm) pour le 85, et 20 pattes dont davantage de sorties, mais toutes numériques (par contre 6PWM) pour le second.

J'ai pu programmer les ATTiny85 avec mon Arduino, ça fonctionne impec. L'une des puces fait des SOS avec une LED, juste pour le fun (je veux aussi voir l'autonomie qu'on peut tirer de ces puces, avec une charge légère, je pense à un contexte comme ton projet, ou on pourrait avoir des noeuds légers arduino qui monitorent un capteur, et envoient des données de temps en temps-, car j'ai lu que la conso de ces puces se mesure en microwatts, de quoi tenir des années avec des piles AA, sans charge. Donc à voir avec une charge. J'ai dans l'idée d'essayer de faire tourner un tel système sans batterie, avec juste un condensateur, et un panneau solaire pour le charger.)

Je n'ai pas encore essayé les ATtiny2313, mais à priori ça se programme de la même façon.

Dans les deux cas, on tape du "code Arduino" et on balance sur la puce. Tout n'est pas dispo, par exemple la librairie servo ne fonctionne pas. Mais j'ai trouvé une lib servo8bit qui permet de commander un servomoteur depuis le ATTiny.

Et ici vient le second point, intéréssant spécifiquement pour le Pi, j'ai pu commander le servo en PWM via le ATtiny85 (1 patte en sortie, contrôlant le servo, et deux en entrée, pour indiquer "tourne à gauche" et "tourne à droite".)

J'ai fait un petit protocole ne nécéssitant pas d'horloge : le ATtiny lit ses entrées, et dès qu'il trouve un 1, attend de trouver un 0. Quand c'est le cas, il considère qu'il a reçu une commande. Du coup, quelle que soit la vitesse de commutation du circuit qui envoie les signaux, tant qu'on a 0 puis 1 puis 0, le Microcontroleur comprend qu'on lui a demandé une chose. Donc si on veut changer rapidement la position du servo, on envoie rapidement une succession de 0-1-0 et on déplace d'autant le servo dans le sens demandé.

En pratique, on peut commander 2 servos (2 broches signaux servos, 2broches pour indiquer le sens de rotation, une broche pour indiquer le servo qu'on souhaite commander).

En pratique, ça permet de faire un module "tourelle" avec controle horizontal (gauche-droite) et vertical (haut bas) de la zone visée, par exemple pour une caméra motorisée. Le tout très facilement pilotable.

L'intérêt c'est aussi de pouvoir changer la position avec des boutons poussoirs (ça fonctionne également), du coup on peut avoir une double interface de commande, physique, avec des boutons, et logicielle, par les GPIO. Et le point fort, c'est qu'on peut faire tout ça avec les mêmes broches, ce qui veut dire qu'on a deux broches avec des boutons connectés dessus, et également connectées aux GPIO. DU coup le module peut fonctionner de façon indépendante, ou être commandé par le pi quand il est branché dessus.

AU passage, le ATtiny85 est minuscule, environ 1cm², et demande juste un +Vcc et une masse. Donc en gros, si on l'alimente, il fait ce qu'on lui demande, sans aucun autre composant nécéssaire. Pas besoin de condensateurs, de régulateurs, de résonateurs, etc...

Bref, bientôt, je ferai des articles sur la communication Raspberry Pi <-> Atmega(Arduino)/Attiny, et des façons d'étendre les capacités du Pi. En utilisant le ATTiny2313, on peut par exemple régler le problème des PWM sur le Raspberry!

Il y a aussi moyen de communiquer en mode série avec les ATmega et ATtiny, et ils peuvent fonctionner en 3.3V, donc on peut communiquer directement (si ces derniers sont bien en +3.3V! en 5V la communication est possible par les GPIO dans le sens PI vers ATMega/tiny -c'est ce que j'ai fait pour le contrôle du servo-, mais ne le faites pas dans l'autre sens : le 5V vers le 3.3V du pi, ça n'ira pas!)

Dernier point, Snootlab m'a répondu (très rapidement même, ils sont super sérieux!) et ils sont partants pour faire des packs. Du coup je vais essayer de travailler avec eux pour concevoir des packs robotique de base, par exemple le matos nécessaire à la fabrication d'un robot Raspberry Pi, et ils parlent même de tarifs "plus attractifs que pièce par pièce", donc c'est tout bénef :)

Je les trouve très bien, n'hésitez pas à regarder chez eux, ils ont des trucs intéressants (je signale que je ne gagne rien chez eux, je ne suis pas affilié ou quoi que ce soit, c'est juste que c'est un site FR, avec des FDP bas, et qu'ils sont d'accord pour faire des packs que je leur suggère! Donc du coup, je les recommande :) )

Lien vers le commentaire
Partager sur d’autres sites

Héhé, merci pour les nouvelles.

Pour les puces Attiny j'ai reçu un lot de puce ATtiny 84 et 85, mais que je n'ai pas encore testé.

Dans un premier temps j'étais parti pour programmer les ATmega328, pour ensuite réduire autant que possible et adapter des puces plus petites. Mais ça a pris un peu de retard, vu que pour Ydle on piétine un peu pour notre protocole radio pour le moment, et qu'avec la refonte de mon site, j'ai perdu pas mal de temps.

Sans compter que j'essaye de sortir un tuto tous les 5 jours. J'en ai sorti un simple ce week end pour lire une sonde DHT22 avec un arduino, je suis en train de faire la version Raspberry Pi.

Sinon, tu as fait quelques tests de mesures électriques avec les ATtiny ?

A noter qu'un planet à ouvert consacré au Raspberry Pi : http://planet.raspfr.org/. Pratique, ça permet de centraliser les entrées de blogs consacrés au Raspberry Pi.

Sinon je suis aussi en train de voir pour organiser un premier Raspberry Jam français (plus d'infos ICI).

Pour snootlab, c'est vraiment cool qu'ils aient répondu rapidement et favorablement. Un tel pack m'intéresserait fortement ! Du coup, je vais devoir retarder la création de mon robot ... :'(

Je vais de toute manière commander quelques step up / step down, car c'est mine de rien super pratique. Mais je confirme qu'ils ont l'air sérieux.

Lien vers le commentaire
Partager sur d’autres sites

J'ai déjà acheté 3-4 fois des trucs chez Snootlab. Pas de FDP si vous êtes sur Toulouse, s'ils ont en stock, tu vas chercher ton matos le lendemain chez eux, et c'est plutôt cool de parler avec eux de ce qu'ils font, même s'ils on une préférence pour l'Arduino. Du coup je vais me ruer sur le pack robot dès que vous arrivez à le sortir.

En tout cas Sky99, je te remercie pour tous tes tutos, je me suis mis à l'élec sur RPi grâce à toi, et j'adore, j'apprends plein de trucs :merci: Continue comme ça !

Maintenant que je commence à gérer les bases, je vais tenter de mettre tout ça ensemble pour voir comment je me démerde. Et une fois que j'aurai le pack robot, je vais tenter le mien :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...