Réveil Arduino Éloïse¶
Histoire¶
Éloïse, élève de 3e au collège Alfred Mauguin, est venue au Fablab de sa propre initiative pour apprendre l'électronique et la programmation, au travers de son projet personnel de Réveil Arduino. André Bougerolles qui l'accompagne dans son projet, et utilisait le Redmine pour échanger des fichiers avec Éloïse et lui laisser des instructions, des exercices et des corrections.
Ceci n'est qu'une mise en forme de leur travail.
Le projet¶
L'objectif est de fabriquer une horloge/réveil à base d'Arduino, d'un module RTC, d'un système d'affichage, ... qui servira de base pour d'autres projets plus ambitieux (jardin connecté ...), et qui permet à Éloïse d'apprendre l'électronique et la programmation. Ce projet permet aussi de découvrir divers composants très utilisés dans les montages Arduino.
Les documents¶
Tous les documents de ce projet sont sauvegardés ici . On y retrouve les programmes d'exercices au format .INO, des bibliothèques et des fiches techniques.
Suivi Éloïse¶
09/10/2019¶
Ajouté au redmine :- ce fichier de suivi
- les fonctionnalités de la bibliothèque RTC
- un exercice sur RTC à temier
- l'exercice terminé
- ajouter les variables manquantes (mois, année...)
- attribuer les valeurs aux variables
- afficher les valeurs à l'écran
Pour mémoire : utiliser les instructions déjà vues (serial.print, serial.begin)
On peut faire copier/coller
08/01/2020¶
Réaliser un détecteur d'humidité de sol.
Utiliser la fiche guide "détecteur humidité sol"
15/01/2020¶
Faire fonctionner un servomoteur SG90 en utilisant la fiche.
Assembler sur la même plaque de test les mesures de température, humidité air, humidité terre, mise en marche servomoteur, allumage diodes.
Utilisation de la bibliothèque RTClib.h¶
Mettre dans les déclarations du programme Arduino :
#include <RTClib.h> #include <Wire.h> RTC_DS1307 RTC;Les fonctions de la bibliothèque :
- Remettre à l'heure le circuit avec l'horloge du micro ordinateur, à mettre en général dans le setup :
RTC.adjust(DateTime(__DATE__, __TIME__));
- Mise à jour manuelle en entrant les valeurs :
RTC.adjust(DateTime(2016,6,13,14,35,0));
- Lancer la fonction de lecture des registres (heure, minute, seconde, année, mois) et fige les données (important)
DateTime now = RTC.now();
- Autres fonctions :
now.year() |
donne l'année | now.month() |
donne le mois | now.day() |
donne le jour | now.hour() |
donne l'heure |
now.minute() |
donne les minutes | now.second() |
donne les secondes | now.dayOfWeek() |
jour de la semaine, 0 = dimanche, 1 = lundi ... |
Capteur d'humidité au sol avec Arduino¶
L'objectif est de mesurer le taux d'humidité dans le sol d'une plantation, d'interpréter la mesure, et de décider en fonction du résultat de la mesure : arroser en commandant un robinet ou une vanne ou ne pas arroser.
Le montage peut s'intégrer dans un système plus complexe qui associe mesure de température, d'humidité de l'air, mesure de l'éclairage ambiant ....
Le principe : le détecteur est alimenté en 0v-5v et le niveau d'humidité se mesure sur la broche S reliée à une entrée analogique de l'Arduino.
|
Utilisation du servomoteur SG90 avec l'Arduino¶
Les servomoteurs sont des moteurs un peu particuliers, qui peuvent tourner avec une liberté d'environ 180° et garder de manière relativement précise l'angle de rotation que l'on souhaite obtenir. On utilise des servomoteurs couramment en modélisme pour contrôler des systèmes mécaniques (gouverne d'avion, accélérateur de moteur thermique, etc.). Les servomoteurs sont aussi couramment utilisés en robotique pour faire des mini-robots, des actionneurs ou des indicateurs rotatifs.
Les caractéristiques du SG90 sont les suivantes :¶
- Dimensions : 22 x 11.5 x 27 mm.
- Poids : 9 gr.
- Tension d’alimentation : 4.8v à 6v.
- Vitesse : 0.12 s / 60° sous 4.8v.
- Couple : 1.2 Kg / cm sous 4.8v.
- Amplitude : de 0 à 180°.
Le servomoteur est équipé d’une prise de type Graupner à 3 fils.¶
La correspondance des fils est la suivante :
Marron | Masse |
Rouge | +5V |
Orange | Commande |
Utilisation¶
On utilise la bibliothèque Servo.h :#include <Servo.h>
Servo monservo; |
crée l’objet pour contrôler le servomoteur , on peut créer plusieurs objets servo1, servo2, etc. |
monservo.attach(9); |
utilise la broche 9 pour le contrôle du servomoteur |
monservo.write(0); |
positionne le servomoteur à `l'angle 0° |
monservo.write(position); |
positionne le servomoteur à "position" qui peut varier de 0° à 180° |
Exemple de programme :¶
|
Bibliothèque LiquidCrystal_I2C¶
Pour utiliser les afficheurs cristaux liquides connectés en I2C.
Initialisation¶
#include <Wire.h> |
appel de la bibliothèque Wire.h pour communiquer en I2C |
#include <LiquidCrystal_I2C.h> |
pour utiliser la bibliothèque |
LiquidCrystal_I2C lcd(0x27,16,2); |
règle l'adresse du LCD à 0x27 pour 16 caractères et 2 lignes d'affichage |
Les commandes de la fonction¶
lcd.begin(); et/ou lcd.init(); |
Initialisation de l'écran LCD, doit être faite en 1er | lcd.backlight(); |
allumer le rétro-éclairage |
lcd.clear(); |
effacer l'écran | lcd.write(blablabla); |
écrire à l'écran "blablabla" |
lcd.setCursor(x, y); |
positionner le curseur à la colonne x et à la ligne y, x = 0 à 15 et y = 0 à 1 | lcd.home(); |
le prochain caractère sera affiché à la première position de l'écran |
lcd.blink(); |
faire clignoter le curseur indicateur | lcd.noBlink(); |
arrêter le clignotement du curseur |
lcd.noCursor(); |
cacher le curseur | lcd.cursor(); |
montrer le curseur |
lcd.noDisplay(); |
masquer tous les caractères à l'écran | lcd.display(); |
montrer les caractères à l'écran après la commande précédente |
lcd.leftToRight(); |
écrire de gauche à droite | lcd.rightToLeft(); |
écrire de droite à gauche |