Página principal


Arduino
TM1638

Modulo  LED&KEY
Temperatura y humedad

xsetaseta@gmail.com


Hace tiempo compré un módulo que empleaba el CHIP TM1638 , y no lo había utilizado hasta ahora. Estoy preparando una serie de montajes que utilizarán el mencionado módulo, y el primero en realizar es un visualizador de temperatura y humedad.
El módulo llevaba 8 led , 8 display, y 8 botones.
Este módulo se controla a través de 3 líneas;  strobe(STB) , clock(CLK), data(I/O).
Aparte de las líneas de control necesita los cables de alimentación +5V y GND.
Hay que tener en cuenta que con lo máxima luminosidad puede llegar a consumir 150 mA . Se puede regular el consumo mediante el comando oportuno al TM1638.
El montaje es muy sencillo, se puede realizar en menos de 30 minutos.
Para el sensor de temperatura y humedad emplearemos  el AM2302, que se comunica con el arduino mediante 1 sola línea.
Para la comunicación entre el arduino y el AM2302 se emplea la librería Wire . Se une el pin de datos  del AM2302 con el pin del arduino D3 . También debemos colocar una resistencia de 10k entre el pin de datos del AM2302 y la alimentación.
Para controlar el TM1638 empleamos la librería https://github.com/rjbatista/tm1638-library
La comunicación entre el CHIP TM1638 y el arduino se hace mediante la siguiente conexión:
STB-> D7
CLK-> D8
DIO-> D9

Esquema de conexión.


Montaje del circuito.


Medida después de meter el circuito al congelador.

/*
xsetaseta@gmail.com
Juan Galaz
4/SEP/2017
*/

#include <TM1638.h>

//data(I/O) pin 8, clock(CLK) pin 9 , strobe(STB) pin 7
TM1638 module(8, 9, 7);

#include <Wire.h>
#include <VirtualWire.h>
#include "DHT.h"

#define DHTPIN 3     // what pin we're connected to
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);

float h,t;
int hi,ti;

char cadena[20];

void setup() 
{
  Serial.begin(9600);
   dht.begin();
 //activa intensidad con nivel 2
  module.setupDisplay(1,0);
  module.setDisplayToString("SENSOR  ",0,0);
  delay(500);
}

void loop() 
{
  h = dht.readHumidity();
  t = dht.readTemperature();

if (isnan(t) || isnan(h))
    {
    Serial.println("Failed to read from DHT");
    }
  else
    {      
      hi=h;
      ti=t*10;
      
      Serial.print("Humedad="); Serial.print(hi);
      Serial.print("     Temperatura="); Serial.println(ti);
     
      sprintf(cadena,"H%2d %3d*",hi,ti);
      if(ti>-100)
        {module.setDisplayToString(cadena,4,0);}
        else
        {module.setDisplayToString(cadena,2,0);}
      Serial.println(cadena);      
    }
    
delay(1000); 
}




Hasta pronto.
JUAN GALAZ

Bibliografía:
https://github.com/rjbatista/tm1638-library
https://blog.3d-logic.com/2015/01/10/using-a-tm1638-based-board-with-arduino/
http://www.reuk.co.uk/wordpress/using-the-buttons-on-a-tm1638-module-with-arduino/
http://tronixstuff.com/2012/03/11/arduino-and-tm1638-led-display-modules/
http://www.reuk.co.uk/wordpress/arduino-code-for-displaying-numbers-on-tm1638-module-display/