Déplacer un robot en fonction d'une intensité lumineuse

Bonjour bonjour tout le monde !

Je me tourne vers le communauté française d'Arduino pour vous demander votre aide.

En effet, dans le cadre de mon TPE, mes profs aimeraient que je fasse un "petit" projet. J'ai donc pensé à faire un robot roulant (mon prof en a quelques uns, sur lequel je mettrais une Arduino Uno/Mega ainsi qu'un capteur de luminosité.
Le "but" de ce robot serait de suivre une source lumineuse "intense" (tel qu'un petit laser, ou une lampe de poche).

Les différents problèmes sont... :

  • Je n'ai pas d'Arduino chez moi, on en a que au bahut, et je doute que mon prof veuille bien m'en prêter une que je programmerais à la maison.
  • Je n'ai pas de capteur de luminosité
  • Je n'ai pas de robot/voiture miniature et motorisée chez moi

Il y a un autre problème, je ne sais pas comment récupérer l'information envoyée par le capteur de luminosité (je pense qu'il s'agit d'un booléen, 0= pas de lumière "intense"/1 = lumière intense) ni comment faire suivre à mon robot ce point de lumière.

Il me reste assez peu de temps pour mon TPE, mais nous n'en avons parlé qu'hier de ce fameux projet... et à vrai dire ça m'embête ce petit délai :frowning:

J'ai déjà bien entendu cherché sur internet, mais à part trouver des vidéos sans code source fourni ou des forums ou les gens s'engueulent car ils se donnent entre eux des codes bugués, je n'ai rien trouvé de concret :frowning:

J'espère donc qu'une âme charitable me viendra en aide pour la réalisation de ce petit robot !

Je vous souhaite une bonne journée, et je vous remercie d'avance de l'aide que vous pourrez m'apporter.

Cordialement, Corentin aka Unyxos

Unyxos:
J'ai déjà bien entendu cherché sur internet, mais à part trouver des vidéos sans code source fourni ou des forums ou les gens s'engueulent car ils se donnent entre eux des codes bugués, je n'ai rien trouvé de concret :frowning:

Une petite recherche sur google soit en français, soit en anglais retourne des centaines de réponses et sur la quantité il y a de très bonnes réponses.
Et même s'ils donnent des codes pas terribles avec un minimum d'effort tu pourrais peut être en tirer quelque chose. Et au moins tu aurais une base matérielle et logicielle de départ.
Si tu avais fait un minimum de recherche, tu aurais déjà réalisé qu'avec un seul capteur tu n'arriveras à rien. Et que le capteur en question retourne une valeur analogique.

+1
as tu cherché en tapant "robot light arduino" ?
à mon avis, non :grin:

infobarquee:
+1
as tu cherché en tapant "robot light arduino" ?
à mon avis, non :grin:

Personnellement avant de faire ma réponse j'avais fait le test avec
"arduino robot light follower" et "arduino robot suiveur de lumière"

aide toi et la communauté t'aidera...

comme je suis bon, regarde ici:
http://4tronix.co.uk/arduino/Downloads.php

lien "magic02"

Coucou,

Déjà, merci à tous.

J'avais fais les recherches suivantes : "Arduino robot following lights", "faire suivre un rayon lumineux robot arduino", et encore beaucoup dont je ne me souviens plus.

Je sais qu'il est plus pratique d'avoir une base logicielle et matérielle, mais malheureusement, je n'ai que 16 ans, et on ne trouve pas 150€ en claquant des doigts, enfin... chacun son avis et ses moyens j'ai envie de dire...

Ensuite, je n'ai aucune notions en C/C++, c'est pourquoi cela va être un peu "chaud" pour moi.. :confused:

Je vais regarder les liens que vous m'avez envoyé, et je reviendrais vers vous.

En vous souhaitant une bonne soirée.

Cordialement, Corentin aka Unyxos

un truc que je pige pas.
comment faire un TPE si on a pas le matos sous la main?
comment faire un TPE si on a pas une once de notion de programmation?
comment faire un "petit projet" en partant direct sur un projet qui demande certaines notions qui ne sont pas de base?

soit le/les profs ont un soucis.
soit tu nous mitone un peu pour avoir un prog servit tout chaud.

tu peux pas partir sur un fader de led en utilisant la lumière?
ca, c'est un petit projet réalisable facilement sans trop de connassances vu la nuée d'exemples qui sont sur le net et dans l'ide arduino.

On a le matos au lycée
Je connais beaucoup de choses en programmation mais pas le C/C++ :wink:
Comment faire un projet comme ça ? Je te laisse aller voir avec mon prof, j'ai pas compris non plus :slight_smile:

Personnellement, j'ai pas que ça à faire de mitoner pour avoir un prog tout fait, car c'est quand même censé m'aider à acquérir des notions que je n'ai pas, et je n'aurais pas engueulé mon "collègue" de travail sur le TPE car il voulait prendre un pong déjà tout fait...

Le problème d'un LED fader est que cela n'est pas "exceptionnelle" comme réalisation, il nous faut quand même un truc qui claque, qui ai de la gueule ^^

Après je suis autodidacte et j'aime beaucoup réaliser des projets complexes en un petit délai, quitte à devoir y passer une ou deux nuits et me taper un peu de café ^^

apparemment dans ton premier post, c'est toi qui as choisi de faire ce robot et non le prof :wink:
en cherchant avec les indications données, tu aurai trouvé ton bonheur.
surtout avec "robot light arduino", 1er lien de google

tu aurais pu voir aussi qu'une ldr ne fait pas 0/1 mais 0->1024
outre le fait d'apprendre une base de langage, ton prof ne chercherait il pas a vous inculquer une logique de travail?

Bonjour les copains,
Personnellement, si je devais réaliser un robot qui se dirige vers la lumière, je le concevrai un peu comme un bolomètre. Pour gérer l'espace, il lui faut minimum deux yeux, donc deux cellules photo-résistantes. Je les placerais dans une sorte de "pare Soleil" de façon à ce qu'elles reçoivent la lumière venant de devant. (Un peu orientées vers les cotés éventuellement)
Entre ces deux cellules un cache, ainsi celle de gauche voit la lumière de gauche, celle de droite la lumière de droite. C'est simple et ça permet facilement de déterminer de quel coté se trouve la source lumineuse la plus intense. Tu fais alors tourner ton robot vers le coté le plus éclairé jusqu'à ce que les deux cellules reçoivent un flux équivalent. La source est alors en face, et tu peux maintenant avancer.
Brancher une cellule photo résistance est enfantin. Une résistance de quelques kilo homs entre le plus 5Vcc et ta cellule dont l'autre coté est à la masse. Le point de jonction entre cellule et résistance fixe réalise un diviseur potentiommétrique que tu relie à l'une des entrées analogiques. Deux cellules, deux entrés analogiques mobilisées. Une simple comparaison et le tour est joué ...
Pas tout à fait !
Pour ton TPE il te faudra "optimiser, voici quelques pistes :

  1. Obtenir la plus grande plage de variation de la tension sur les entrées analogiques. Il faut optimiser la valeur de la résistance. Voir si inverser la position de la cellule et de la résistance ne produit pas une plus grande plage de variations.
  2. Cellule directement éclairée, ou intercaler un "filtre" de diffusion du genge papier calque, cellule au fond d'un tunnel ou près de l'ouverture de la cavité dans laquelle elle se trouve ?
  3. Attention à la maladie de "parkinson" de ton robot. Si dès qu'une petite différence est détectée il change d'orientation, il va faire ça en permanence, avec les surcompensations. Il faut donc intercaler du "frottement" dans ton programme. Ce n'est pas compliqué, il suffit de ne réorienter que lorsque la différence de lumière "numérisée" sépasse un certain seuil que tu détermineras expérimentalement.
    Dernier conseil : Je crois pouvoir avancer l'idée qu'il faut en premier réaliser le matériel. Brancher les cellules, tester les plages de variation, vérifier que lorsque les moteurs fonctionnent ils ne génèrent pas de parasites. A ce point de vue il faut se méfier comme de la peste des petits moteurs à courant continu qui génèrent une pollution électromagnétique de plusieurs mégahertz.
    Une fois que to Arduino peut activer ou couper les moteurs et reçoit des informations lumineuses exploitables, alors seulement tu t'engages dans un programme d'exploitation, car la partie expérimentale la plus importante sera aboutie.

@Infobarquee : Ha, justement, en cherchant hier je l'ai trouvé et je pense m'en inspirer ^^ Mais merci quand même :wink:

@nulentout : Merci pour ces indications, je tâcherais de faire ceci :slight_smile:

pour ma part, je fais du tout en un, c'est à dire que je me pose un certain nombre de questions dont les réponses définiront l'ensemble du projet.

Pour ici ça serait un truc comme çà:

"que vais-je faire ? un robot
qu'est ce que je veux qu'il fasse ? se diriger vers la lumière
donc:
détection de la lumière = au moins 2 LDR
déplacement = 2 moteurs
.../...
si LDR gauche recoit plus de lumière que LDR droit --> tourne à gauche
--> à tester: isoler les LDR en plaçant des caches
si les 2 LDR reçoivent approximativement la même quantité de lumière --> avance tout droit
--> prévoir plage de tolérance
..."

et je déroule ainsi le cahier des charges en étant le plus complet possible.
Je me retrouve donc avec la partie mécanique parfaitement détaillée et le programme écrit en langage courant qu'il ne me reste plus qu'à traduire en C.

C'est ma façon de procéder. J'ignore si elle est bonne ou pas mais elle fonctionne pour moi

C'est, je pense, une bonne manière de procéder.

On a le projet bien en tête et sur papier, on sait exactement ce qu'on veut, et on ne se pose pas X questions sur "Est-ce que j'ai fais ça, est-ce que j'ai pensé à ça ?".

C'est ce que je fais à chaque fois (surtout en langage web), ça permet d'avoir une idée et une représentation très précise de ce que l'on veut faire ^^

Il me semble utile ici d'ajouter un petit complément :
Le projet étant défini, personnellement je commence par faire une première analyse pour évaluer la faisabilité. Si je crois pouvoir aboutir, alors il devient raisonnable de consacrer des efforts au projet.
Pour les solutions, il me semble toujours avantageux de chercher plusieurs pistes et de les analyser, puis, expérience à l'appui, en sélectionner une qui me semble appliquable une fois avois plus ou moins dégrossi mes études, tant théoriques que pratiques.
Chercher l'optimisation à outrance n'est pas un gage de réussite, il faut accepter des compromis. Optimaliser une solution n'est envisageable qu'en vue d'une production en série, pas pour une approche de type "découverte".
Prenons un exemple : Est il incontournable d'utiliser au moins deux LDR ?
Pourquoi ne pas envisager une seule orientée vers l'avant. On fait tourner le robot et l'on observe l'évolution de l'éclairement. Dès que l'on franchit un maxi, on stoppe l'évolution et l'on avance d'une distance élémentaire. On pent envisager alors de faire osciller sans interruption notre mobile. Il avance systématiquement avec un seul moteur. Dès que l'éclairage baisse on active l'autre moteur. Un petit seuil pour créer "du frottement" informatique. On aura ainsi un mobile qui se déplace par oscillations, mais si ces dernières sont de faible amplitude c'est jouable.
Bon, ce n'est pas forcément la solution idéale, mais elle mérite au moins d'être envisagée.

on peut en effet, mais à l'inverse, on peut également ajouter un détecteur d'obstacle pour éviter que les roues continuent à tourner quand le robot est bloqué par exemple.

tout est question de moyen et d'état d'esprit. Qui peut le plus peut le moins :slight_smile:

Pour moi la solution a une LDR n'est pas la bonne pour plusieurs raisons :

  • déjà, économiquement elle n'a pas d'intérêt : une LDR et une résistance on est en-dessous des 0.5€ / capteur donc bon autant ne pas se priver
  • performance du robot et facilité de programmation : il me semble beaucoup plus facile d'avoir une logique de "je mesure et je sais directement où je dois aller " que "je mesure, je bouge, je mesure, où j'en suis pas rapport à la précédente mesure?, je bouge etc ...". En plus si on imagine plusieurs capteurs à 360°C, le robot pourra réagir quelque soit la direction

Dans les améliorations facilement envisageable : évitement d'obstacle par infrarouge et communication sans fil (très utile pour débuguer)

Pour limiter les coûts ne pas hésiter à commander en Chine (sauf si vous êtes tenus par les délais) :

http://dx.com/p/batman-robot-raider-car-kits-for-arduino-153016

Coucou :slight_smile:

Merci pour les liens, nous sommes malheureusement tenus non seulement par les délais (3 semaines restantes, donc pas assez large) et en plus, nous sommes tenus économiquement, j'ai pas un rond, le mec avec qui je le fais, n'en parlons pas, et nos profs font des commandes groupées, donc pas cool...

On a déjà beaucoup de trucs au lycée, notamment des resistances photo-électriques, on a un petit robot de base (qu'on a toujours pas vu d'ailleurs, c'pratique m'voyez...).

Merci de ton aide en tous cas :slight_smile:

3 semaines pour un TPE ?! Ca a bien changé en quelques années à moins que j'ai loupé un épisode ...

J'ai un projet en cours, qui n'avance pas trop malheureusement, dont une des fonctions est de se diriger vers une source de lumière (enfin une source de chaleur).
J'utilise 2 photo-transistors montés comme deux yeux sur une tourelle servo et je mesure l'écart de luminosité reçu par chacun pour en déduire la direction de la source de chaleur.
C'est un peu capricieux mais les premiers essais ont montré que ça peut marcher:

B@tto:
3 semaines pour un TPE ?! Ca a bien changé en quelques années à moins que j'ai loupé un épisode ...

Non non, nos profs ont fait le point avec nous et nous ont fortement conseillés de faire un projet "matériel", "concret". nous avons donc choisi ça, sinon cela fais depuis le mois d'Octobre que nous travaillons dessus ^^

@patg_ c'est un peu cela que nous voulons faire, sauf qu'on aura... 4h maximum xD