Coffre fort à chaleur avec arduino

De Wikidebrouillard.

Article incomplet en cours de rédaction
La vidéo "Coffre fort à chaleur avec arduino"


Sommaire

Présentation de l'expérience

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 !

Matériel

  • 1 servomoteur
  • 1 capteur de température (ici on a utilisé un tmp102 mais on peut faire avec n'importe lequel, il suffit d'adapter la fonction "getTemperature" au capteur choisi)
  • 1 arduino uno (et son câble usb)
  • 1 ordinateur pour programmer la carte avec le logiciel arduino
  • des fils
  • 1 breadboard

L'expérience

Le montage

On relie :

  • Vcc du capteur à 3,3V
  • GND et ADD0 du capteur et le fil noir du servomoteur au GND de la carte
  • le fil jaune du servomoteur à la broche 9 de la carte arduino
  • le fil rouge du servomoteur à la broche 5V de la carte arduino
  • SCL du capteur à A5 de la carte arduino et SDA à A4
  • Echo du capteur à la broche 7

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.

Le code

#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.

Que voit-on ?

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.

Explications

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) {

Questions sans réponses

Expériences sur Wikidébrouillard

Autres expériences

Autres expériences avec le même concept, recherche sur internet (indiquer les liens). 

Applications : liens avec le quotidien

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, ....

Lieux propices à sa réalisation

Plutôt dans un atelier avec des ordinateurs disposant du logiciel arduino et des outils pour faire un coffre/un loquet.

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraitsAnnuaire
AR
CO

Coffre fort à chaleur avec arduino

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique