Stellaris LaunchPad & Energia: Probando sensor DHT22 (temperatura y humedad) - Envio de datos al monitor serial de Energia


En este ejemplo veremos un test básico del DHT22, un sensor digital de temperatura y humedad relativa, los datos obtenidos serán mostrados en el monitor serial de Energia.

Circuito:
El circuito utilizado es el que se propone en el datasheet, bueno por toda la red se propone lo mismo también he agregado un capacitor de 0.1uF entre VDD y GND, como la Stellaris trabaja a 3.3V el sensor también lo he alimentado con este voltaje.
Código:
Con respecto al código he usado la librería "DHT sensor library" de Adafruit, esta por demás decir se tiene que inicializar la librería y declarar el pin en donde esta conectado el sensor, como ya se dijo al presionar SW1 empezara a enviar los datos de temperatura y humedad al monitor serial.
/*******************************************************************************
*
* Prueba del sensor DHT22 - Envio de datos al monitor serial de Energia
*
*******************************************************************************
* FileName: LM4F_E010.ino
* Processor: EX-LM4F120XL
* Complier: Energia 1.6.10E18
* Author: Pedro Sánchez (MrChunckuee)
* Blog: http://mrchunckuee.blogspot.com/
* Email: mrchunckuee.psr@gmail.com
* Description: Este ejemplo se basa en la libreria de Adafruit para el
* sensor de temperatura y humedad DHT22, cuando sepulsa SW1
* envia los datos al monitor serial y realiza un blink en el
* LED Azul, si se vuelve a pulsar SW1 el envio se detiene.
*******************************************************************************
* Rev. Date Comment
* v0.0.0 04/06/2019 Creación del firmware
******************************************************************************/
#include "DHT.h"
#define DHTPIN PB_5 // what digital pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
const int pinButton = PUSH1;
const int pinLed = BLUE_LED;
// Variables will change:
int ledState = LOW; // ledState used to set the LED
long previousMillis = 0; // will store last time LED was updated
long interval = 1500; // interval at which to blink (milliseconds)
int buttonState = 0;
int buttonTicks = 0;
int currentButtonState = 0;
int lastButtonState= 0;
int buttonFlag = LOW;
void setup() {
pinMode(pinButton, INPUT_PULLUP);
pinMode(pinLed, OUTPUT);
Serial.begin(9600);
dht.begin();
delay(3000);
Serial.println("DHT22 test! by MrChunckue - Electronica&Robotica");
Serial.println("Pulsa SW1 para enviar datos de Humedad y Temperatura");
Serial.println(" ");
}
void loop(){
GetInput();
if(buttonFlag == HIGH){
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW){
ledState = HIGH;
//Se lee temperatura y humedad
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C ");
}
else
ledState = LOW;
// set the LED with the ledState of the variable:
digitalWrite(pinLed, ledState);
}
}
}
void GetInput(void){
// Push Button debounce
if (buttonState != digitalRead(pinButton)){
if (buttonTicks > 20){
buttonState = digitalRead(pinButton);
buttonTicks = 0;
}
else buttonTicks++;
}
else buttonTicks = 0;
// Process the push button
currentButtonState = buttonState;
if (currentButtonState == 0 && lastButtonState == 1){
if (buttonFlag == LOW){
buttonFlag = HIGH;
Serial.println("Enviando datos cada 3 segundos!!");
}
else{
buttonFlag = LOW;
digitalWrite(pinLed, LOW);
Serial.println("Se detuvo el envio de datos!!");
Serial.println(" ");
}
}
lastButtonState = currentButtonState;
}
view raw LM4F_E010.ino hosted with ❤ by GitHub

Resultados:
Aquí una captura de pantalla del monitor serial con los valores arrojados por el DHT22, las pruebas las he realizado en una tarde-noche lluviosa pero no estoy seguro de que sean 100% fiables, para saber la precisión necesitaría tener otra herramienta de medición así que por el momento digo que son validos los valores tomados, en cuanto consiga algo realizare la comparativa.


Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.


Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.

Referencias:

Publicar un comentario

0 Comentarios