Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Petit Rover Arduino : Construisez Votre Propre Robot Autonome

Composants et fournitures

Outils et machines nécessaires

Applications et services en ligne

À propos de ce projet

Contexte

Mon neveu (9 ans) et ma nièce (7 ans) sont devenus fous d'excitation en voyant une vidéo d'un robot évitant les obstacles que j'avais construit il y a quelque temps.

Le tutoriel pour celui-ci ne verra hélas jamais le jour, mon disque dur ayant rendu l'âme avant que je ne découvre les bienfaits des sauvegardes, Dropbox, GitHub, etc. :)

J'ai donc décidé de voir si je pouvais concevoir quelque chose à la fois (un peu) éducatif et amusant. J'ai simplifié mon jouet au maximum et voici ce petit rover.

Le châssis est une boîte qui contenait à l'origine des bâtonnets de crabe. Sa taille s'est avérée parfaite. (Merci Papa d'en avoir mangé des caisses entières :D) Un pot de margarine ferait probablement aussi l'affaire.

En guise d'avertissement, je décrirai ici comment nous avons construit ces robots en laissant les enfants faire presque tout le travail eux-mêmes. Je ne recommande en aucun cas de faire de même. C'est à vous, parents responsables / tuteurs / tante / oncle / baby-sitter... de déterminer si chaque enfant peut être confié aux différentes tâches. Même si ce n'était pas strictement nécessaire, les enfants portaient des lunettes de protection lors du travail. Les boîtes étant en plastique très mou, j'ai laissé mon neveu et ma nièce les découper eux-mêmes après un briefing sur les dangers de pointer le cutter vers eux-mêmes ou leurs membres. Pour percer les trous des LED, nous avons utilisé une petite visseuse sans fil pour limiter les risques de blessures.

Heureux de signaler que la trousse de secours restée en standby n'a pas servi. :)

Mais rappelons-le : VOUS êtes l'adulte !

Circuit

J'ai rendu le circuit un peu plus complexe que nécessaire en connectant les deux servos comme je l'ai fait.

Petit Rover Arduino : Construisez Votre Propre Robot Autonome

Pour les enfants... je dis "enfants" mais le groupe incluait ma sœur (35 ans) et ma mère (65 ans), toutes deux ayant apprécié l'après-midi "Robots-et-Bricolage" autant que les vrais enfants. :)

Petit Rover Arduino : Construisez Votre Propre Robot Autonome

Pour mon public, j'ai imprimé l'image du circuit sur une page A4 en essayant de garder l'échelle de la breadboard 1:1 avec la réalité, et je leur ai donné tous les fils de câblage de la bonne couleur et longueur.

Une fois le circuit assemblé, il suffit de charger le programme sur l'Arduino. J'ai inclus des commentaires dans le code pour vous aider à l'ajuster si besoin. Si tout est bien connecté, les servos devraient se mettre à tourner et les LED à clignoter. Et si vous mettez la main devant le capteur, un servo s'arrête et l'autre tourne brièvement dans l'autre sens.

Tout est prêt !

Assemblage

Il est temps de prendre votre "châssis" et de percer des trous dedans.

Petit Rover Arduino : Construisez Votre Propre Robot Autonome

Petit Rover Arduino : Construisez Votre Propre Robot Autonome

Maintenant, mettez tout dans la boîte et fixez les éléments avec de la colle chaude.

Montez les roues sur les servos une fois la colle sèche.

Décorez la boîte ! (Et postez des photos ! Ce serait génial !)

Petit Rover Arduino : Construisez Votre Propre Robot Autonome

Mettez les piles et regardez le petit rover se déplacer aléatoirement dans la pièce jusqu'à ce que les piles s'épuisent. Ou que vous en ayez marre du bruit. Ou que le chien s'en empare ! :D

Code

LittleRover (Arduino)

Version pour capteur ultrasonique à 4 broches :

#include <Servo.h>
/* Si votre capteur a seulement 3 broches, décommentez la ligne 6 et commentez la ligne 7 */
//int distanceR = A0; // Broche Trigger
int distance = 6; // Broche Trigger
int pingDelay = 10; // Longueur de l'impulsion du capteur ultrasonique
int distanceR = A0; // Broche Echo
int led1 = 8, led2 = 9; // LEDs
Servo leftPower;
Servo rightPower;
unsigned long flashTime;
unsigned long nextSensorTime;
float obstacleDist = 0.0f;

void setup() {
  //Serial.begin(115200);
  leftPower.attach(3);
  rightPower.attach(5);
  leftPower.write(90);
  rightPower.write(90);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  delay(1000);
}

void loop() {
  LEDs();
  /* Cela évite que le capteur ne vide la batterie trop vite en limitant les mesures à 5 fois par seconde.
     Vous pouvez augmenter ce nombre pour mesurer moins souvent, mais il risque alors de foncer dans le mur... */
  if(millis() - nextSensorTime > 200){
    nextSensorTime = millis();
    /* Je fais 2 mesures car parfois le capteur se trompe et ne renvoie rien... */
    float reading1 = TakeReading();
    delay(100);
    float reading2 = TakeReading();
    Serial.println(reading1);
    Serial.println(reading2);
    // On prend la plus grande distance pour obstacleDist
    obstacleDist = reading1 >= reading2 ? reading1 : reading2;
    // Si distance < 10cm, on tourne, sinon on avance tout droit.
    if(obstacleDist < 10.0f){
      //Serial.println("turn");
      turn();
    }else{
      //Serial.println("forward");
      forward();
    }
  }
}

void LEDs(){
  if(millis() - flashTime > 1000) flashTime = millis();
  if(millis() - flashTime < 500){
    digitalWrite(led1, LOW);
    digitalWrite(led2, HIGH);
  }else if(millis() - flashTime > 500){
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
  }
}

void forward(){
  /* Si votre robot recule, inversez le 135 et le 45. */
  leftPower.write(135);
  rightPower.write(45);
}

void turn(){
  /* Pour tourner dans l'autre sens, décommentez lignes 92-93 et commentez 95-96 */
  //leftPower.write(90);
  //rightPower.write(135);
  leftPower.write(45);
  rightPower.write(90);
  delay(350);
}

float TakeReading(){
  unsigned long echo = 0;
  float result = 0.0f;
  pinMode(distance, OUTPUT);
  digitalWrite(distance, LOW);
  delayMicroseconds(2);
  digitalWrite(distance, HIGH);
  delayMicroseconds(pingDelay);
  digitalWrite(distance, LOW);
  pinMode(distanceR, INPUT);
  digitalWrite(distanceR, HIGH);
  echo = pulseIn(distanceR, HIGH, 38000);
  result = echo / 58.138;
  return result;
}

Schémas

Fichier Fritzing : littlerover_87IypZOgwm.fzz

Processus de fabrication

  1. Construire un Rover Windows IoT Core avec Raspberry Pi 2 – Guide débutant à avancé
  2. Jeu UFO Attack DIY avec Arduino UNO et Afficheur MAX7219
  3. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  4. Effet feu à l'eau : Projet Arduino UNO + Neopixel Stick
  5. Horloge 3D RGB Arduclock – Montre LED Bluetooth avec horloge temps réel
  6. Surveillance de la Qualité de l'Eau : Système Arduino MKR1000 pour Rivières et Lacs
  7. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  8. Jeu interactif joystick + LEDs avec Arduino
  9. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth