- Robot Maker
- → Affichage d'un profil : Messages: shinxy
Statistiques de la communauté
- Groupe Membres
- Messages 8
- Visites sur le profil 5 950
- Titre Nouveau membre
- Âge 32 ans
- Date de naissance Décembre 15, 1992
-
Gender
Homme
-
Location
ile de france
Outils utilisateur
Messages que j'ai postés
Dans le sujet : robot "exploreur"
26 avril 2013 - 07:53
Je fait juste un petit up sur ce projet, pour connaitre unpeu vos idées sur la façons de procéder pour rajouter une commande wifi à mon robot, merci de répondre, toutes vos idées m'intéresse sachant que je n'est jamais utiliser le wifi avec arduino.
Bon bricolage à tous, et à bientôt.
Dans le sujet : robot "exploreur"
25 avril 2013 - 08:31



Dans le sujet : robot "exploreur"
25 avril 2013 - 03:25
Mon projet avance, lentement, mais surmement ^^. Je n'est malheuresement pas les temps de mis métre à fond, je fait ça en retrant des cours, où le week end. Fin bréf assez parler de ma vie.
Je posterais des photo du chassit ce soire, en attendant, je vais parler de l'avancement du projet

Partie chassit : il faut encore que je j'assemble tout les composant, pas facile de métre en place ce que je voudrait faire avec la tourelle, néanmois, les moteurs de déplacments sont installer et branchés, j'ai tout tester hier, le robot fait des allez et retours.
Partie électronique : je n'est pas du tout commencer... je voudrait faire, une allimentation séparer entre la carte et les moteurs (pour une débugage plus simple), donc une alim 6V avec un intérupteur pour les moteur, et une alim 9V, toujours avec un interupteur, pour la carte arduino. Je me cantonerais à ça pour la partie électronique, je risque de modifier pas mal de truck, au niveau de l'alimentation (de la carte et des moteurs) par la suite.
Partie programmation : c'est du code arduino, donc rien de bien compliqué pour l'instant, je ne gére que le déplacement et l'évitement d'obstacle, je met le code à la suite :
/******************************************************************************************** represente la partie "main()" du programme ********************************************************************************************/ // define du déplacement //******************************************************************************************* #define PIN_SERVO_GAUCHE 10 #define PIN_SERVO_DROITE 11 #define SERVO_GAUCHE 0 // permet de dissocié les deux servo #define SERVVO_DROITE 1 #define NEUTRE_SERVO_GAUCHE 45 // représente l'angle pour arréter le servo #define NEUTRE_SERVO_DROITE 75 #define REGULATION_VITESSE_GAUCHE 11 // plus ce chiffre sera faible, plus la vitesse #define REGULATION_VITESSE_DROITE 11 // des servo sera faible (et inversement) #define AVANT 0 #define GAUCHE 1 #define DROITE 2 #define ARRIERE 3 #define ARRET 4 //******************************************************************************************* //define du capteur de distance //******************************************************************************************* #define PIN_IN_CAPTEUR_DISTANCE 8 // ATTENTION : on écrit dessus, donc pour le µc c'est un latch #define PIN_OUT_CAPTEUR_DISTANCE 9 // ATTENTION : on lit dessus, donc pour le µc c'est un port #define DISTANCE_DETECTION 15 //******************************************************************************************* //define de la tourelle //******************************************************************************************* #define PIN_SERVO_TOURELLE 12 #define VISION_GAUCHE 20 // représente l'angle qu'il faut pour tourné le capteur a gauche #define VISION_DROITE 160// représente l'angle qu'il faut pour tourné le capteur a gauche #define VISION_MILIEU 70 // représente l'angle qu'il faut pour que le capteur soit centré //******************************************************************************************* #include <deplacement.h> #include <capteur_distance.h> #include <Servo.h> Servo servogauche; Servo servodroite; Servo servotourelle; int distance; void setup() { servogauche.attach(PIN_SERVO_GAUCHE); servodroite.attach(PIN_SERVO_DROITE); servotourelle.attach(PIN_SERVO_TOURELLE); pinMode (PIN_IN_CAPTEUR_DISTANCE, OUTPUT); pinMode (PIN_OUT_CAPTEUR_DISTANCE, INPUT); servotourelle.write(VISION_MILIEU) // on le fait regarder devant Move(AVANT); // reprend la même fonction que roby, car trés intéressant à mon avis } void loop() { capteurDistanceSetup(); distance = calculDistance(); if (distance > DISTANCE_DETECTION) Move(AVANT); else manoeuvreDevitement(); } /******************************************************************************************** represente mon onglet déplacement dans le programme ********************************************************************************************/ #include <Servo.h> Servo servogauche; Servo servodroite; Servo servotourelle; // récuperation du neutre de chaque servo moteur //******************************************************************************************** int getNeutral(int servo) { if (servo == SERVO_GAUCHE) return NEUTRE_SERVO_GAUCHE; else return NEUTRE_SERVO_DROITE; } //******************************************************************************************** // traitement du déplacement, permet de choisir la vitesse des moteur //******************************************************************************************** void controleServo(int vitesse, int servo) { int position = getNeutral(servo); if (servo == SERVO_GAUCHE) { position = position + vitesse; servogauche.write(position); } else { position = position - vitesse; servogauche.write(position); } } //******************************************************************************************** // fonction générique pour le déplacement //******************************************************************************************** void Move(int mouvement) { int A,B; // A sera assigné au servogauche, B sera assigné à celui de droite switch(mouvement) { case AVANT: A = 1; B = 1; break; case DROITE: A = 1; B = -1; break; case GAUCHE: A = -1; B = 1; break; case ARRIERE: A = -1; B = -1; break; case ARRET: A = 0; B = 0; break; default : A = 0; B = 0; break; // un grand homme ma dit un jours, "on ne sais jamais !!" xD } controleServo(A*REGULATION_VITESSE_GAUCHE, SERVO_GAUCHE); controleServo(B*REGULATION_VITESSE_DROITE, SERVO_DROITE); } //******************************************************************************************** //gestion de l'evitement //******************************************************************************************** void manoeuvreDevitement(void) { int distanceDroite; int distanceGauche; servotourelle.write(VISION_DROITE);// on regarde si il à quelque chose à droite delay(5); // permet d'être, largement, sur que la tourelle soit en place capteurDistanceSetup(); distanceDroite = calculDistance(); servotourelle.write(VISION_GAUCHE)// on regarde si il à quelque chose à gauche delay(5); capteurDistanceSetup(); distanceGauche = calculDistance(); if(distanceDroite<distanceGauche) { Move(GAUCHE); delay(300); } else if(distanceGauche<distanceDroite) { Move(DROITE); delay(300); } else if(distanceGauche == distanceDroite) // ça risque d'être mais on ne sait jamais { Move(DROITE); delay(300); } } //******************************************************************************************** /******************************************************************************************** represente mon onglet capteur de distance dans le programme ********************************************************************************************/ // géneration de l'impultion de 50µs pour commencer la détéction //******************************************************************************************** void capteurDistanceSetup(void) { digitalWrite(PIN_IN_CAPTEUR_DISTANCE, LOW); // on est sur de démarer à l'état bas digitalWrite(PIN_IN_CAPTEUR_DISTANCE, HIGH); delayMicroseconds(50); digitalWrite(PIN_IN_CAPTEUR_DISTANCE, LOW); } //******************************************************************************************** //traitement de la sortie du capteur //******************************************************************************************** int calculDistance(void) { long dureeImpultion = pulsIN(PIN_OUT_CAPTEUR_DISTANCE, HIGH, 30000); // 30000 sert à quiter l'attente au bout de 30000µs (30ms) si il n'y a pas d'impultion return dureeImpultion / 58; // permet d'avoir la distance en CM } //********************************************************************************************
alors, explication du code :
Si vous êtes actif sur ce forum (et donc ce site) vous avez dû remarquer que j'ai unpeu pomper le code de roby, mais j'ai essailler de le modifier, un peu quand même. Je trouve vraiment que ce code (celui fait par robotcop) est trés bien construit et ce comprend facilement.
Pour la partie capteur de distance, je pense que ceux qui utilise les capteurs de distance infrarouge (et ne savent utiliser que ça) non pas dû bien comprendre... en faite mon capteur est un SFR 05, et pour le faire fonctionne, il faut :
- Sur la pin IN (je ne sais plus le numéro) ou autrement appeler TRIG, il faut envoyer une impulssion (supérieur à 10µs) pour commencer une détéction d'obstacle. En gros dès que le capteur recevra ce TRIG en entrée, il va commencer à entreprendre la détéction d'obstacle, il va faire ceci :
- l'émetteur va envoyer un signal sonnor (à 40khz il me semble) et le récépteur va attendre de récupérer ce même signal. Pendant ce temps, le capteur "compte" le temps mis pour recevoir le signal sonnor. Le capteur envéra en sortie une durée d'impulsion qui d'épendra de ce temps, et donc qui dépendra de la distance !
- Donc sur la pin OUT nous allons récuperer l'impulsion générer par le capteur, sachant que :
la vitesse du son est de 340m/s, donc 1m /(1/314)s, donc 1cm/29µs
et que le son effectue un allez et retour, (donc /2) on aura : distance(en cm) = duréeImpulssion(en µs) / 29(en µs/cm) / 2
Voila pour l'explication (peut être laborieuse) de l'utilisation du capteur. et du code... je pense que le code parle de lui même, pas besoin de déblatérer trop longtemps à son sujet.
Donc il ne me réste plus qu'a assembler tout ça, ça me prend du temps parce que je veux faire les choses proprement, mais j'arrive bientôt à la fin de ma premiére partie ! à savoir évitement d'obstacle.
Je vais revenir sur ce que j'avais poster la derniére fois, je fait faire la commande à distance avant le module suiveur de ligne. Je pense que je vais me tourner vers un shield wifi, et j'aimerais bien savoir comment cela fonctionne ... Si quelqu'un pouvais me faire un petit cours accéléré dessus, (je profite des utilisateur de ce forum plutôt que d'aller chercher des info sur google, mais on est la pour s'endraider, er j'ai pas forcemement le temps, mon chassit me bouffe tout le temps dont je dispose mdr), ça serais sympa

En attendant, j'attend vos commentaire ( et réponses ) j'en est pas encore eu j'étais déçus

voila voila, bon bricolage à tous et à bientôt. (ce soire pour les photo du chassit xD)
Dans le sujet : Pongo - 1er projet robotique - robot à 4 roues motrices programm...
24 avril 2013 - 10:11
Je vien juste ici en qualité d'homme blazé ^^, juste pour vous déconseiller le site alpha crusis. ça ne ma pas surpris de voir que tu avait eu des problémes pour la réception de tes moteurs, en effet j'ai commandé deux fois chez eux (enfin essaillé de commander ) et à chaque fois ils me proposaient une livraison partielle, ou alors un remboursement, leurs stock ne coréspond pas du tout à ce qu'ils présentent dans leur conditions générales.
M'enfin bréf désoler de ne pas du tout faire avancer ton projet, mais quand j'ai vus alpha crusis je me devais d'en parler (même si c'est unpeu tard).
bonne continuation pour ton projet qui à l'aire prometteur

Dans le sujet : Présentation Nicolas
24 avril 2013 - 08:02
J'utilise aussi MPLABX, un pickit 3 et je fais moi même mes plaques de développement pour pic ^^
Tu sais avec quel type de pic tu voudrais travailler ? Si tu veux je peux t'apprendre à te faire des plaques de développement ( il y a pas grand chose à savoir d'ailleurs : une résistance, quelques capa, parfois un oscillateur ... et si tu veux "complexifier un chouilla " tu peux mettre une led ( avec sa résistance ) indiquant l'allumage et un régulateur de tension ...
Si tu veux je peux aussi te faire la carte de développement que tu auras imaginé par toi même ( ou t'en faire une que j'ai faîte pour moi )
J'ai aussi une belle réduction pour l'achat d'un pic kit ( 2 ou 3 ) donc si tu veux en profiter ...
En gros : " Je pourrais même te proposer un starter kit " pour la robotique avec les pic ^^
Concernant le choix du programmateur : le pic kit n'est pas obligatoire, mais le fait d'avoir un programmateur est obligatoire, il en existe d'autre ICD etc... Mais je trouve que le pic kit est vraiment bien !
oua, je ne sais pas quoi dire, apar que se serais avec plaisir ...
Alors, comme j'ai déjà unpeu travailler sur un dspic 30f4013, ça me tenterais bien continuer soit dessus, soit avec un 33, maintenant créer ma propre carte de dévelopement ça me tenterais bien, histoire de bien comprendre ce qu'il y as derierre les cartes déjà toute faite. Dans un sens c'est un peu comme aprendre l'assembleur, c'est pas utile dans l'absolu, mais le connaitre permet de mieu savoir ce qui se cache derierre ton code (j'ai adoré aprendre l'assembleur xD).
Donc encore une fois, oui ça me tenterais d'aprendre tout ça, mais comment ? De plus si tu as des prix intéressant sur le pic kit 3, je veux bien en profiter, c'est quand même pas donner c'est petite bêtes la ^^.
En gros : oui je veux bien d'un starter kit pour la robotique avec les pic, mais savoir faire ma carte de développement serai encore mieu

- Robot Maker
- → Affichage d'un profil : Messages: shinxy
- Privacy Policy