dissabte, 29 de juny del 2013

Connectar un sensor d'humitat i temperatura a l'Arduino

El component en qüestió venia amb el pack: http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834 (podeu veure tots els components del pack catalogats aquí). El seu codi és Ky-015.

El tutorial d'on ho he tret és aquest, encara que en el seu cas el sensor té un pin de més que no es fa servir.

Connexió del sensor

El sensor és senzill de connectar. Té 3 pins:
  1. S: pin de dades, és connecta a un dels pins analògics. Per exemple a l'A0.
  2. +5v: directa a l'arduino
  3. GND: directe a l'arduino
Vista dels connectors

Instal·lació de la llibreria d'Arduino

Malgrat que es podria fer servir sense una llibreria, la veritat és que sempre és més fàcil si es pot reaprofitar el treball que ha fet algú altre. En aquest cas cal instal·lar la llibreria en zip que podeu trobar a hobbyist.co.nz.

En general, per instal·lar llibreries es recomana copiar-les al directori d'instal·lació de l'arduino al subdirectori "libraries", però aquí explico una altre manera de fer-ho:

Obrir l'entorn d'Arduino i anar al menú "Sketch ->Importar librerías -> Add library " 
Seleccionar l'arxiu zip (en aquest cas es diu DHT.zip) un cop fet tornareu a l'entorn de programació 
Tornar al menú "Sketch ->Importar librerías " i seleccionar al final de tot la llibreria importada i al codi ja us apareixerà una línia a l'inici on s'importa la llibreria (#include <dht.h>) 

Codi d'exemple

El següent codi agafa la temperatura i humitat del sensor i l'escriu pel port sèrie.

Mentre s'està executant connectat a l'ordinador, es pot consultar el que l'Arduino envia per sèrie prement "control+majúscules+M" o bé anant a "Herramientas -> Monitor Serial"

#include <dht.h>

#define dht_dpin A0 //pin de lectura A0

dht DHT;//llibreria importada 

void setup(){ 
 Serial.begin(9600); 
 delay(1000);//es recomana deixar un segon abans de llegir 

void loop(){

 DHT.read11(dht_dpin);
 Serial.print("Current humidity = "); 
 Serial.print(DHT.humidity); 
 Serial.print("% "); 
 Serial.print("temperature = "); 
 Serial.print(DHT.temperature); 
 Serial.println("C "); 

 delay(800);//es recomana consultar cada 2 segons 
 //encara que tambe funciona amb 0.8 segons 

Com queda la connexió