====== Fun MOOC - Programmer un objet avec Arduino ======
====Porteurs du projet====
Jamel BENMAMAR (contact : [[jamel.benmamar@upmc.fr|jamel.benmamar@upmc.fr]])
Christophe BONNET (contact : [[christophe.bonnet@upmc.fr|christophe.bonnet@upmc.fr]])
Sylvain THERY (contact : [[sylvain.thery@upmc.fr|sylvain.thery@upmc.fr]])
====Introduction====
* Date de début : 15 janvier 2019
* Date de fin d'inscription : 1er mars 2019
* Date de fin : 5 mars 2019
* URL du MOOC : https://www.fun-mooc.fr/courses/course-v1:MinesTelecom+04017+session05/about
====Descriptif du MOOC====
**Les thématiques : Informatique, Innovation, Numérique, technologie, Programmation**
**À propos du cours**
Ce MOOC est le troisième volet du parcours La Fabrication Numérique.
**Apprenez à programmer un objet en utilisant l’électronique et le développement Arduino issu des FabLabs !**
Grâce à ce MOOC, vous pourrez rapidement programmer et construire un objet interactif après avoir acquis les connaissances de base en électronique et en développement informatique.
Vous serez capable de programmer un Arduino, un petit ordinateur utilisé dans les FabLabs pour rendre les objets intelligents.
Vous collaborerez entre apprenants, échangerez avec les experts de ce MOOC et apprendrez à devenir un vrai "maker" !
**Ce cours s’adresse aux curieux et aux passionnés du numérique de tous âges souhaitant découvrir les technologies que l'on trouve dans les FabLabs. Rejoignez-nous !**
À la fin du MOOC, je suis capable de...
* Programmer un microcontrôleur Arduino
* Interfacer Arduino avec des capteurs analogiques et numériques (bouton poussoir, capteurs de lumière, de bruit, de présence, de pression...)
* Utiliser une librairie logiciel (pour contrôler des moteurs, des prises lumières, du son...)
* Décoder les concepts clés du prototypage issus des Fablabs (apprentissage par l'exemple, prototypage rapide...)
**Prérequis**
Des notions en développement informatique sont un plus.
Il est recommandé d'avoir suivi [[https://www.fun-mooc.fr/courses/course-v1:MinesTelecom+04026+session01/about|le MOOC s'Initier à la fabrication numérique]]
**Kit de démarrage**
L'acquisition d'un kit de démarrage pour pouvoir réaliser les exercices pratiques est optionnelle.
Il vous sera possible de suivre le cours sur un simulateur proposé dans le MOOC.
**Liste du matériel**
**Kit de démarrage : l'essentiel**
* Arduino UNO R3 avec son câble USB ×1
* Platine de prototypage × 1 (aux moins 500 'trous')
* Kit de câbles de prototypages × 1
* LED de différentes couleurs (au moins 2 x vert, 2 x rouge, 2 x orange ou jaune)
* Résistances de différentes valeurs :
* 10KΩ × 5
* 4KΩ × 5
* 1KΩ × 5
* 220Ω × 5
* 150Ω × 5
* Condensateurs céramique de différentes valeurs :
* 100nF × 2
* 10nF × 2
* Condensateurs chimiques de différentes valeurs ( tension de service d'au moins 10v ) :
* 10uF × 2
* 47uF × 2
* 470uF × 2
* Diodes 1N4148 × 2 (ou autre diode)
* Transistor NPN (TO92) x 2 ( ex. BC337, BC546, 2N2222, 2N3904...)
* Transistor PNP (TO92) x 2 ( ex. BC327, BC556, 2N2907, 2N3906...)
* Photorésistance × 1
* Bouton poussoirs × 5
* Potentiomètre 10kΩ (preset) × 1
* Potentiomètre 10kΩ ou 50kΩ avec bouton × 1
* Piezo buzzer × 1
**Matériel optionnel**
* Module d'extension (shield ou module) écran LCD 16x2 ( très recommandé )
* LED RVB × 1
* Bouton codeur avec contact × 1
* Thermistance ( 100kΩ ou 50kΩ ) × 1
* LM35 (sonde de température) × 1
* Transistor MOSFET-N "Logic level" × 1 ( ex. IRL530 )
* Transistor MOSFET-P "Logic level" × 1 ( ex. IRF9530 )
* Module Relais pilotable en 5V pour commuter jusqu'à 230V × 1
* Module d'extension (shield ou breakout board) Ethernet (au choix) :
* (basé sur chip Wiznet W5100) × 1 ( plus cher mais plus facile à utiliser avec l'Arduino UNO )
* (basé sur chip ENC28J60) x 1 (moins cher mais gourmand en mémoire)
* Mini Servo Moteur × 1 ( choisir la plus grande angle d'ouverture possible )
* Boîtier plastique pour contenir les composants et l'Arduino × 1 (vraiment optionnel :)
**Prix moyen :~50€**
**Attestations**
Une attestation de suivi avec succès est attribuée par FUN aux apprenants ayant réussi les évaluations.
====Déroulement du MOOC====
Le MOOC s'étale sur 4 semaines dans lesquelles vous verrez :
* Semaine 1 : Les outils
* Semaine 2 : Capteurs numériques + 1 TP
* Semaine 3 : Capteurs analogiques + 1 TP
* Semaine 4 : Librairies et sorties + 1 TP
====Travaux pratiques====
Le MOOC est maintenant terminé, voici donc les corrections des TP comme promis ;)
**TP1 : Feu tricolore**
/*
Feu tricolore
TP de la semaine 1 du MOOC "Programmer un objet avec Arduino"
Allume trois LED comme suit :
Verte allumée pendant 3 secondes
Orange allumée pendant 1 seconde
Rouge allumée pendant 3 secondes
Le montage :
* Une LED rouge sur la broche 2 en série avec une résistance de 220Ω
* Une LED orange sur la broche 3 en série avec une résistance de 220Ω
* Une LED verte sur la broche 4 en série avec une résistance de 220Ω
créé le 18 Mai 2018
par Baptiste Gaultier
Ce code est en CC0 1.0 Universal
https://www.fun-mooc.fr/courses/MinesTelecom/04017/session01/about
*/
int rouge = 2;
int orange = 3;
int verte = 4;
// le code dans cette fonction est exécuté une fois au début
void setup() {
// indique que les broches des LED
// sont des sorties :
pinMode(rouge, OUTPUT);
pinMode(orange, OUTPUT);
pinMode(verte, OUTPUT);
}
// le code dans cette fonction est exécuté en boucle
void loop() {
digitalWrite(verte, HIGH);
delay(3000);
digitalWrite(verte, LOW);
digitalWrite(orange, HIGH);
delay(1000);
digitalWrite(orange, LOW);
digitalWrite(rouge, HIGH);
delay(3000);
digitalWrite(rouge, LOW);
}
**
TP1 : Montage électronique**
{{:wiki:projets:trafficlight_bb.png?400|}}
Pour réaliser ce montage, vous avez besoin de :
* Un Arduino
* Une platine de prototypage
* Un câble USB
* Trois résistances de 220Ω
* Des fils de prototypage
* Une LED verte
* Une LED orange
* Une LED rouge
**TP2 : Feu tricolore + feu piéton**
/*
Feu tricolore + Feu Piétons
TP de la semaine 2 du MOOC "Programmer un objet avec Arduino"
Le montage :
* Une LED rouge sur la broche 12 en série avec une résistance de 220Ω
* Une LED orange sur la broche 11 en série avec une résistance de 220Ω
* Une LED verte sur la broche 10 en série avec une résistance de 220Ω
* Une LED rouge sur la broche 9 en série avec une résistance de 220Ω
* Une LED verte sur la broche 8 en série avec une résistance de 220Ω
* Bouton poussoir branché sur la broche 2 depuis +5V
* Une résistance de 1KΩ branché sur la broche 2 depuis GND
créé le 9 Avril 2014
par Baptiste Gaultier
avec les conseils de fb251
Ce code est en CC0 1.0 Universal
https://www.france-universite-numerique-mooc.fr/courses/MinesTelecom/04002/Trimestre_1_2014/about
*/
// Initialisation des constantes pour les LED
const int rouge = 12;
const int orange = 11;
const int verte = 10;
const int rougePieton = 9;
const int vertePieton = 8;
// Numéro de la broche à laquelle est connecté le bouton poussoir
const int bouton = 2;
// Déclaration des variables :
int etatBouton = 0;
// le code dans cette fonction est exécuté une fois au début
void setup() {
// indique que les broches des LED
// sont des sorties :
pinMode(rouge, OUTPUT);
pinMode(orange, OUTPUT);
pinMode(verte, OUTPUT);
pinMode(rougePieton, OUTPUT);
pinMode(vertePieton, OUTPUT);
// indique que la broche bouton est une entrée :
pinMode(bouton, INPUT);
}
// le code dans cette fonction est exécuté en boucle
void loop() {
// Dans le fonctionnement normal, le feu piéton est toujours rouge
digitalWrite(rougePieton, HIGH);
// Fonctionnement normal du feu voiture
digitalWrite(verte, HIGH);
delay(3000);
digitalWrite(verte, LOW);
// lit l'état du bouton et stocke le résultat
// dans etatBouton :
etatBouton = digitalRead(bouton);
// Si etatBouton est égal à HIGH
// c'est que le bouton est appuyé
if (etatBouton == HIGH) {
digitalWrite(orange, HIGH);
delay(1000);
digitalWrite(orange, LOW);
digitalWrite(rouge, HIGH);
// Le feu piéton passe au vert pendant 5s
digitalWrite(rougePieton, LOW);
digitalWrite(vertePieton, HIGH);
delay(5000);
// On remet le feu piéton au rouge
digitalWrite(rougePieton, HIGH);
digitalWrite(vertePieton, LOW);
// Puis on s'assure que le feu voiture est éteint
digitalWrite(rouge, LOW);
}
else {
// Fonctionnement normal du feu voiture
digitalWrite(orange, HIGH);
delay(1000);
digitalWrite(orange, LOW);
digitalWrite(rouge, HIGH);
delay(3000);
digitalWrite(rouge, LOW);
}
}
**
TP2 : Montage électronique**
{{:wiki:projets:tp_semaine_3.png?400|}}
Pour réaliser ce montage, vous avez besoin de :
* Un Arduino
* Une platine de prototypage
* Un câble USB
* Cinq résitances de 220Ω
* Une résistance de 10kΩ
* Des fils de prototypage
* Deux LED verte
* Une LED orange
* Deux LED rouge
* Un bouton poussoir
**TP3 : Thérémine lumineux**
/*
Thérémine lumineux
Le montage :
* Un piezo branché sur la broche 8
* Une photorésistance branchée sur la broche A2 depuis +5V
* Une résistance de 10kΩ branchée sur la broche A2 depuis GND
créé le 9 Avril 2014
par Baptiste Gaultier
Ce code est en CC0 1.0 Universal
https://www.france-universite-numerique-mooc.fr/courses/MinesTelecom/04002/Trimestre_1_2014/about
*/
// variable pour stocker la valeur reçue sur A2
int sensorValue;
void setup() {
}
void loop() {
// lire la valeur de la photorésistance et stocker ça dans une variable
// Attention, sur les schéma/montage en dessous, elle est branchée sur A2 (et non A0)
sensorValue = analogRead(A2);
// re étalonne la variable vers un grand intervalle de fréquences audibles
int pitch = map(sensorValue, 0, 1023, 50, 30000);
// jouer la fréquence sur le piezo branché sur la broche 8
tone(8, pitch);
// attendre 10 ms
delay(10);
}
**TP3 : Montage électronique**
{{:wiki:projets:buzzer_bb.png?400|}}
Pour réaliser ce montage, vous avez besoin de :
* Un Arduino
* Une platine de prototypage
* Un câble USB
* Une résistance de 10kΩ
* Des fils de prototypage
* Une photorésistance
* Un piézo
**TP4 : Feu tricolore et barrière**
/*
Feu bicolore et barrière
Le montage :
* Une LED rouge sur la broche 3 en serie avec une resistance de 220Ω
* Une LED verte sur la broche 4 en serie avec une resistance de 220Ω
* Un servomoteur branché sur les broches 9, +5V et GND
* Bouton poussoir branché sur la broche 2 depuis +5V
* Une résistance de 1KΩ bracnhé sur la broche 2 depuis GND
créé le 18 Avril 2014
par Baptiste Gaultier
Ce code est en CC0 1.0 Universal
https://www.france-universite-numerique-mooc.fr/courses/MinesTelecom/04002/Trimestre_1_2014/about
*/
#include
Servo servo; // création de l'objet servo issu
// du moule Servo
// Initialisation des constantes
const int bouton = 2;
const int ledRouge = 3;
const int ledVerte = 4;
// Déclaration des variables :
int etatBouton = 0;
int pos = 0;
// le code dans cette fonction est exécuté une fois au début
void setup() {
// on souhaite communiquer avec l'ordinateur
Serial.begin(9600);
// indique que les broches des LED
// sont des sorties :
pinMode(ledRouge, OUTPUT);
pinMode(ledVerte, OUTPUT);
// indique que la broche bouton est une entrée :
pinMode(bouton, INPUT);
// on accroche notre servomoteur branché sur la broche 9
servo.attach(9);
// allume le feu rouge
digitalWrite(ledRouge, HIGH);
// positionne la barrière horizontalement
servo.write(0);
}
// le code dans cette fonction est exécuté en boucle
void loop(){
// read the state of the pushbutton value:
etatBouton = digitalRead(bouton);
// si le bouton est appuyé
if (etatBouton == HIGH) {
// alors on envoie un message sur le moniteur série
Serial.print("Bouton appuye");
// puis on remonte la barrière de 90°
for(pos = 0; pos <= 90; pos++) {
servo.write(pos);
delay(15);
}
// puis on allume le feu vert durant 5 secondes
digitalWrite(ledRouge, LOW);
digitalWrite(ledVerte, HIGH);
delay(5000);
// et on repasse au rouge
digitalWrite(ledVerte, LOW);
digitalWrite(ledRouge, HIGH);
// enfin, on redescend la barrière
for(pos = 90; pos>=0; pos--) {
servo.write(pos);
delay(15);
}
}
}
**TP4 : Montage électronique**
{{:wiki:projets:feu_bicolore_et_barriere_pour_sch_ma_bb.png?400|}}
Pour réaliser ce montage, vous avez besoin de :
* Un Arduino
* Une platine de prototypage
* Un câble USB
* Une résistance de 10kΩ
* Deux résistances de 220Ω
* Des fils de prototypage
* Une photorésistance
* Un servomoteur
* Un bouton possoir
* Une LED rouge
* Une LED verte