Sommaire |
Marre qu'on fouille dans vos affaires ? Marre des cadenas dont on perd la clé ou dont on oublie le code ? Essayez les coffres à capteurs, dont celui à chaleur !
On relie :
On viendra ensuite mettre tout me branchement dans un coffre (ou on imaginera le coffre) : le capteur de température à l'extérieur et le servomoteur avec la carte à l'intérieur. Le principe est qu'en chauffant le capteur, le servomoteur tournera. Dans la position 0 degrés, le servomoteur fera office de loquet pour le coffre et en position 90 degrés, il permettra d'ouvrir le coffre.
#include <Wire.h> //on inclue la librairie permettant de dialoguer avec le capteur int tmp102Address = 0x48; //Adresse du capteur (voir plus bas) #include <Servo.h> //on inclue la librairie nécessaire à l'utilisation du servomoteur Servo myservo; // crée l'objet servomoteur pour contrôler le servomoteur void setup(){ Wire.begin(); //on active la discussion entre l'arduino et le capteur myservo.attach(9); // On précise que le servomoteur utilise la broche 9 myservo.write(0); //on met le servomoteur en position "fermé" } void loop(){ float celsius = getTemperature(); //on récupére la température if(celsius>=30) { //si elle est au dessus de 30 degrès celsius myservo.write(90); //on fait tourner le servomoteur jusqu'à 90 degr!s delay(5000); //on attend 5 secondes myservo.write(0); //on remet le servomoteur dans sa position de base } delay(1000); //Pour ne pas surcharger la carte, on attend 1 seconde } float getTemperature(){ //fonction permettant de récupérer la température Wire.requestFrom(tmp102Address,2); byte MSB = Wire.read(); //on récupére la température byte LSB = Wire.read(); //on l'assemble int TemperatureSum = ((MSB << 8) | LSB) >> 4; float celsius = TemperatureSum*0.0625; return celsius; // on la renvoie }
Le capteur TMP102 est un capteur de la famille I2C. Il s'agit d'un type de bus (moyen de communication arduino-capteur). Ce bus s'appuie sur la relation maître-esclave : l'arduino est le maître et le capteur l'esclave. L'esclave ne peut pas contacter le maître; c'est au maître de lancer la communication.
Le bus I2C permet d'avoir plusieurs esclaves sur les mêmes broches (A4 et A5), chaque esclave étant identifié par son adresse. Ensuite, le maître va envoyer une requête à l'adresse de l'esclave. Le tmp102 va alors renvoyé la température codé sur 12 bits en 2 parties : une de 8 bits et une de 4 bits qu'on viendra ensuite assemblé pour ne former qu'une seule variable de 12 bits.
On multipliera par 0,0625 afin de passer de cette valeur sans unité à une valeur en degrés Celsius.
Ce n'est pas le plus simple des capteurs, mais c'est un capteur pratique en cas de grosses installations demandant plusieurs capteurs/esclaves.
On voit que quand on souffle de l'air chaud sur le capteur, le servomoteur bouge. Puis au bout d'un certains temps, il se remet dans sa position initiale.
Le capteur va renvoyé la température à l'arduino. Si cette température dépasse les 30 degrés, alors l'arduino va faire bouger le servomoteur pour qu'il ouvre le coffre. Puis, au bout de 5 secondes (le temps de ranger ou d'ouvrir simplement), le servomoteur va se remettre en position initiale.
Dans le cas ou 5 secondes serait trop court ou long, il suffit de modifier le 5000 (millisecondes) de la ligne :
delay(5000);
Si 30 degrés Celsius sont trop dures à atteindre, il suffit de baisser ou d'augmenter le 30 de cette ligne :
if(celsius>=30) {
Autres expériences avec le même concept, recherche sur internet (indiquer les liens).
Le but est de créer un coffre fort avec un système d'ouverture surprenant et inhabituel. On peut imaginer d'autres coffres sur le même principe : un coffre qui ne s'ouvre qu'au soleil ou dans le noir avec un capteur de luminosité, un qui ne s'ouvre que si on tape dans ses mains assez fort avec un capteur de son, ....
Plutôt dans un atelier avec des ordinateurs disposant du logiciel arduino et des outils pour faire un coffre/un loquet.
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique