Accueil

!-- Global site tag (gtag.js) - Google Analytics -->

LDR photorésistance  (Photoresistor)

Photoresitances

  • Les photorésistances sont des composants photosensibles dont la valeur ohmique varie en fonction de l'intensité de lumière qu'ils reçoivent.
  • Pour allumer les ampoules d’un lampadaire quand la nuit tombe, on utilise une photorésistance reliée à un circuit commandant un relais.
  • Environ 2.5€  en France ici,  le lot de 10 en chine 1.53€ ici, 1.51€ les 20 pièces  ici

Un exemple d'utilisation : http://www.wikidebrouillard.org/index.php/Bande_d%27illumin%C3%A9s

 

 
/*
 
 Code Arduino qui permet de réaliser un luxmètre. Trois LED s'allument alternativement en fonction de l'intensité lumineuse ambiante.
 

*/


int capteur1 = 0; // variable identifiant un port ana. 0 de la carte
int LED1 = 13; // variable identifiant le port num. 13 de la carte
int LED2 = 12;// variable identifiant le port num. 13 de la carte
int LED3 = 11;// variable identifiant le port num. 13 de la carte
int LED4 = 10;// variable identifiant le port num. 13 de la carte

int lum1 = 0; // variable identifiant la valeur de la luminosité du capteur 1


void setup()
{
  pinMode(LED1, OUTPUT); //  initialise la broche 13 comme une sortie
  pinMode(LED2, OUTPUT); //  initialise la broche 12 comme une sortie
  pinMode(LED3, OUTPUT); //  initialise la broche 11 comme une sortie
  pinMode(LED4, OUTPUT); //  initialise la broche 11 comme une sortie


}


void loop() // debut de la boucle
{
  lum1 = analogRead( capteur1); // lire la donnée de la cellule dans lum1

  if (lum1 < 25 ) // si la luminosité est faible,
 
  {
    int n =50;
    while ( n > 0.00) {
      
       
    digitalWrite(LED1, LOW);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, HIGH);  // eteindre la LED3
    digitalWrite(LED4, HIGH);  // eteindre la LED3
    
    delay (n);
    
     digitalWrite(LED1, HIGH);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, HIGH);  // eteindre la LED3
    digitalWrite(LED4, HIGH);  // eteindre la LED3
    
    delay (n);
    
    digitalWrite(LED1, HIGH);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, HIGH);  // eteindre la LED3
    digitalWrite(LED4, LOW);  // eteindre la LED3
    
    delay (n);
    
     digitalWrite(LED1, HIGH);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, LOW);  // eteindre la LED3
    digitalWrite(LED4, LOW);  // eteindre la LED3
    
    delay (n);
    
    
    
     digitalWrite(LED1, HIGH);  // allumer la LED 1
    digitalWrite(LED2, LOW);  // eteindre la LED2
    digitalWrite(LED3, LOW);  // eteindre la LED3
    digitalWrite(LED4, LOW);  // eteindre la LED3
    
    delay (n);
    
    
    digitalWrite(LED1, HIGH);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, LOW);  // eteindre la LED3
    digitalWrite(LED4, LOW);  // eteindre la LED3
    
    delay (n);
    
    
     digitalWrite(LED1, HIGH);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, HIGH);  // eteindre la LED3
    digitalWrite(LED4, LOW);  // eteindre la LED3
    
    delay (n);
    
    
    
     digitalWrite(LED1, HIGH);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, HIGH);  // eteindre la LED3
    digitalWrite(LED4, HIGH);  // eteindre la LED3
    
    delay (n);
    
    
    
     digitalWrite(LED1, LOW);  // allumer la LED 1
    digitalWrite(LED2, HIGH);  // eteindre la LED2
    digitalWrite(LED3, HIGH);  // eteindre la LED3
    digitalWrite(LED4, HIGH);  // eteindre la LED3
    
    delay (n);
    
    
     digitalWrite(LED1, LOW);  // allumer la LED 1
    digitalWrite(LED2, LOW);  // eteindre la LED2
    digitalWrite(LED3, HIGH);  // eteindre la LED3
    digitalWrite(LED4, HIGH);  // eteindre la LED3
    
    delay (n);
   
    n--;
    }
  }
 
 
   else if (lum1 > 25 && lum1 < 50) // si la luminosité est moyenne
  {
    digitalWrite(LED2, HIGH);  // allumer la LED 2
    digitalWrite(LED1, LOW);  // eteindre la LED1
    digitalWrite(LED3, LOW); // etiendre la LED3
    digitalWrite(LED4, LOW);  // eteindre la LED3

  }
 
 
   else if (lum1 > 50 && lum1 < 75) {  // si la luminosité est élevée
 
    digitalWrite(LED3, HIGH);  // allumer la LED 3
    digitalWrite(LED1, LOW);  // eteindre la LED 1
    digitalWrite(LED2, LOW);  // eteindre la LED 2
    digitalWrite(LED4, LOW);  // eteindre la LED3

   }
   
   
   
   
      else if (lum1 > 75) {  // si la luminosité est élevée
 
    digitalWrite(LED3, LOW);  // allumer la LED 3
    digitalWrite(LED1, LOW);  // eteindre la LED 1
    digitalWrite(LED2, LOW);  // eteindre la LED 2
    digitalWrite(LED4, HIGH);  // eteindre la LED3

   }
 
} // Fin de la boucle



Sonde de température numérique DS18B20 :

Sonde de température DS18B20

  • Le thermomètre numérique DS18B20 offre une mesure de température sur 9 à 12 bits et possède une fonction d'alarme avec des points de déclenchement supérieurs et inférieurs non volatiles et programmables par l'utilisateur.
  • Le DS18B20 communique via un bus 1-Wire qui, par définition ne nécessite qu'une seule ligne de données (et la masse) pour la communication avec un micro-contrôleur.
  • Il a une plage de température de fonctionnement de -55°C à +125°C et est précis à ± 0,5°C sur la plage de -10°C à +85°C.
  • En outre, le DS18B20 peut dériver la puissance directement à partir de la ligne de données ("puissance parasite"), éliminant le besoin d'une alimentation externe.
  • Chaque DS18B20 a un unique code sur 64 bits en série, qui permet à de multiples DS18B20 de fonctionner sur le même bus one-Wire.
  • Ainsi, un seul micro-contrôleur peut contrôler plusieurs DS18B20 répartis sur une grande surface.

Faible coût : 

Un tutoriel pour le Ds18b20 : http://skyduino.wordpress.com/2012/04/26/arduino-capteur-de-temperature-ds18b20/

Ds18b20 étancheIl existe une version étanche de ce capteur :

 

  • environ 11€ l'unité en France ici
  • 4,18€ avec un câble de 3 mètres vendeurs chinois ici
  • 10PCS Waterproof Digital Thermal Probe or Sensor DS18B20 pour 14.02 € super prix sur Ebay ! http://stores.ebay.fr/czbelectronic

 

 

Utilise la bibliothèque OneWire.h

Code de test :

 #include <OneWire.h> // Inclusion de la librairie OneWire

 
#define DS18B20 0x28     // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 7 // Broche utilisée pour le bus 1-Wire
 
OneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds
 
// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d'erreur
boolean getTemperature(float *temp){
  byte data[9], addr[8];
  // data : Données lues depuis le scratchpad
  // addr : adresse du module 1-Wire détecté
 
  if (!ds.search(addr)) { // Recherche un module 1-Wire
    ds.reset_search();    // Réinitialise la recherche de module
    return false;         // Retourne une erreur
  }
   
  if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue
    return false;                        // Si le message est corrompu on retourne une erreur
 
  if (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20
    return false;         // Si ce n'est pas le cas on retourne une erreur
 
  ds.reset();             // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
   
  ds.write(0x44, 1);      // On lance une prise de mesure de température
  delay(800);             // Et on attend la fin de la mesure
   
  ds.reset();             // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
  ds.write(0xBE);         // On envoie une demande de lecture du scratchpad
 
  for (byte i = 0; i < 9; i++) // On lit le scratchpad
    data[i] = ds.read();       // Et on stock les octets reçus
   
  // Calcul de la température en degré Celsius
  *temp = ((data[1] << 8) | data[0]) * 0.0625;
   
  // Pas d'erreur
  return true;
}
 
// setup()
void setup() {
  Serial.begin(9600); // Initialisation du port série
}
 
// loop()
void loop() {
  float temp;
   
  // Lit la température ambiante à ~1Hz
  if(getTemperature(&temp)) {
     
    // Affiche la température
    Serial.print("Temperature : ");
    Serial.print(temp);
    Serial.write(176); // caractère °
    Serial.write('C');
    Serial.println();
  }
}

L'Arduino est un micro-contrôleur

il existe différentes versions : http://arduino.cc/en/Main/Products

arduino-uno-rev3arduino-uno-eth-usb2

Versions officielles : Arduino UNO 19.50€  et Arduino Ethernet+Usb2 58€ chez http://snootlab.com

Elle dispose :

  • de 14 broches numériques d'entrées/sorties (dont 6 peuvent être utilisées en sorties PWM (largeur d'impulsion modulée)),
  • de 6 entrées analogiques (qui peuvent également être utilisées en broches entrées/sorties numériques),
  • d'un quartz 16Mhz,
  • d'une connexion USB,
  • d'un connecteur d'alimentation jack,
  • d'un connecteur ICSP (programmation "in-circuit"),
  • et d'un bouton de réinitialisation (reset).

Pro Mini atmega328 5V 16MEnc28j60

Le moins chère : Version chinoise (Pro Mini atmega328 5V 16M) 2.90 € sur Ebay + carte Ethernet ENC28J60 2.82€ sur Ebay

L'Arduino Mini est une carte microcontrôleur basés sur le ATmega328, destiné à être utilisé sur des plaques d'essais (breadboard) et lorsque l'espace est compté. Il dispose de 14 entrées/sorties numériques (dont 6 peuvent être utilisées comme sorties PWM), 8 entrées analogiques, et un oscillateur cristal 16 MHz.

 

Mega2560 w5100

Ensemble Mega2560 (Funduino, clone chinois d'Arduino) + carte Ethernet W5100 pour environ 23€ sur Ebay

Cette carte dispose :

  • de 54 (!) broches numériques d'entrées/sorties (dont 14 peuvent être utilisées en sorties PWM (largeur d'impulsion modulée)),
  • de 16 entrées analogiques (qui peuvent également être utilisées en broches entrées/sorties numériques),
  • de 4 UART (port série matériel),
  • d'un quartz 16Mhz,
  • d'une connexion USB,
  • d'un connecteur d'alimentation jack,
  • d'un connecteur ICSP (programmation "in-circuit"),
  • et d'un bouton de réinitialisation (reset).

 

Capteur de température et d'humidité AM2302 (DHT22)

capteur DHT22Am2302

DHT22                           AM2302

  • "Bon marche" (10/15€ en Europe, 5€69 vendeurs chinois ici, 3.38http://stores.ebay.fr/txhangelectronic)
  • Alimentation et I/O: 3 à 5V
  • Max 2.5mA utilisé durant la conversion (au moment de l'acquisition de données)
  • Convient pour une lecture d'humidité entre 0-100% avec une précision de 2-5%.
  • Convient pour une lecture de température de -40 à +125°C avec une précision de ±0.5°C
  • Pas plus de 2 échantillonnages par seconde (0.5 Hz sampling rate)
  • Boitier: 15.1mm x 25mm x 7.7mm

Utilisation de ce capteur : http://mchobby.be/wiki/index.php?title=DHTxx

Il existe le DTH11 moins cher mais  moins précis. (précision de 5% et ±2°C)

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
 
  dht.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
  }
}

Sous-catégories

Toutes les infos sur le projet éco3x

L'histoire d'un chantier de construction d'une maison passive en Haute Saône...

Vous pouvez laisser des commentaires en cliquant sur Commentaire (0) en bas à droite des articles.

(les commentaires n'apparaissent qu'après validation pour éviter les spams)

Pour créer un compte ou vous identifier utilisez l'onglet "Contact"