RoboduLAB
Sommaire
Présentation du projet
Un robot pour apprendre à programmer en classe
- Utilisable en écoles primaires, collèges et lycées
- Toutes les pièces mécaniques sont imprimables (impression 3D – fichiers .stl fournis)
- Partie électronique basée sur une carte de prototypage « arduino »
- Libre (copiable, modifiable) et évolutif (de nombreuses options possibles)
RoboduLAB, permet une approche ludique de l’apprentissage du code à l’école primaire, des plots au format lego permettent de personnaliser le robot.
En collège et en lycée RoboduLAB est un support de thème très riche pour le travail en équipes projets : conception, réalisation, expérimentation.
La programmation se fait par assemblage de blocs (type scratch). Le programme se télécharge directement dans le robot depuis le PC ou la tablette en WIFI.
600px
Constitution du robot
RoboduLAB est constiué d'un chassis, de deux roues montées sur des servomoteurs qui sont commandés par une carte de prototypage arduino. Il sera possible de rajouter différentes options au modèle de base :
- suivi de ligne,
- module WIFI,
- détection des vides,
- sons (MP3),
- …
Chassis
Le chassis est constitué d'un ensemble de pièces imprimables par une une imprimante 3D et une roulette à bille.
Électronique
La partie électronique du robot comporte à minima :
- une carte arduino (UNO),
- deux servomoteurs à rotation continue,
- un capteur à ultrasons,
- une LED RGB (ou un NeoPixel Ring),
- un boîtier pour les piles (6 piles AA)
- un interrupteur à glissière.
Programmes
Le programme nécessaire pour le fonctionnement du robot peut être :
- soit écrit directement en C++ et téléchargé dans la carte arduino,
- soit représenté par des blocs graphiques (type scratch). Il sera alors possible de produire automatiquement le code en C++ qui sera téléchargé dans le robot.
Code arduino : démonstration du fonctionnement du robot en mode autonome
Programme sans NeoPixel Ring
Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino
/*
Ce programme allume progressivement une LED RGB cathodes communes branchée sur les broches 3,5 et 6
*/
int ledR = 3; // broche de la LED Rouge
int ledG = 5; // broche de la LED Verte
int ledB = 6; // broche de la LED Bleue
int i = 0; // variable de la boucle for
void setup() // setup est déroulé une seule fois après la remise à zéro
{
pinMode(ledR, OUTPUT); // la broche led (3) est initialisée en sortie
pinMode(ledG, OUTPUT); // la broche led (5) est initialisée en sortie
pinMode(ledB, OUTPUT); // la broche led (6) est initialisée en sortie
}
void loop() // loop est déroulé indéfiniment
{
for (i=0; i<=255;i++) // i varie de 1 à 255
{
analogWrite(ledR,i); // génère une impulsion sur la broche de largeur i => la luminosité R augmente
delay(20); // pause de 20 ms entre chaque pas
}
digitalWrite (ledR,LOW);
for (i=0; i<=255;i++) // i varie de 1 à 255
{
analogWrite(ledG,i); // génère une impulsion sur la broche de largeur i => la luminosité G augmente
delay(20); // pause de 20 ms entre chaque pas
}
digitalWrite (ledG,LOW);
for (i=0; i<=255;i++) // i varie de 1 à 255
{
analogWrite(ledB,i); // génère une impulsion sur la broche de largeur i => la luminosité B augmente
delay(20); // pause de 20 ms entre chaque pas
}
digitalWrite (ledB,LOW);
for (i=0; i<=255;i++) // i varie de 1 à 255
{
analogWrite(ledR,i); // génère une impulsion sur la broche de largeur i => la luminosité R augmente
analogWrite(ledG,i); // génère une impulsion sur la broche de largeur i => la luminosité G augmente
analogWrite(ledB,i); // génère une impulsion sur la broche de largeur i => la luminosité B augmente
delay(20); // pause de 20 ms entre chaque pas
}
digitalWrite (ledR,LOW);
digitalWrite (ledG,LOW);
digitalWrite (ledB,LOW);
}
Téléchargements
Documents de présentation
Pièces imprimables
Les pièces imprimables : base, roue, support capteur Ultra-sons et plaque pour support de piles sont téléchargeable sur Thingiverse:
http://www.thingiverse.com/thing:833005