Termometro con sensor DHT 11

Se enseñara como hacer un termómetro con un sensor dht11, el cual es un sensor de temperatura y humedad, pero en este caso solo se utilizara la medición de temperatura para elaborar el termómetro.

Materiales para la elaboración

  • 1 Raspberry pi 3 model B
  • 32 puntes de corriente
  • 32 leds
  • 8 resistencias de 330 ohms
  • 12 cables macho-hembra
  • 1 sensor Dht-11
  • 1 protoboard

Conexión a la protoboard

Primero se empezara conectando a la protoboard los componentes mas adelante se conectaran al raspberry pi 3 los diferentes cables.

1.  Lo primero que se debe hacer es colocar los puentes en la protoboard para unir las filas de leds. (img 1)
img 1
2.  Una vez colocado los puentes se procede a conectar los leds en su debido espacio, se recuerda que la pata mas corta del led es la linea negativa y la larga su linea positiva. El primer puente es la linea negativa y el segundo la positiva por lo que colocaremos los leds siguiendo ese orden. (img 2, img 3)

img 2

img 3
3.  Seguido de conectar los leds se procede a conectar los siguientes puentes para después conectar las resistencias y corrientes. (img 4, img 5)

img 4

img 5
4.  Conectamos las resistencias de 330 ohms saliendo de la linea negativa de las protoboard las lineas negativas de los leds y conectamos un cable macho-hembra a la fila negativa de la protoboard. (img 6, img 7)

img 6

img 7
5.  Conectar los cable macho-hembra a las lineas positivas de los leds, estos serán los que se encarguen de enviar el pulso que haga encender las lineas de leds.(img 8)

img 8 
6.  una vez conectado todos los cables se procederá a conectar el sensor dht-11. (img 9)

img 9
7. una vez conectados se conectaran los últimos 3 cables macho-hembra a cada entrada del sensor. (img 10)

img 10

Conexión al raspberry pi 3

Ahora se conectara los cables macho-hembra al raspberry pi 3.


Se aclara que los cables se conectaran de arriba hacia abajo.

Cables positivos de los leds

  1. Al pin #31
  2. Al pin #29
  3. Al pin #22
  4. Al pin #18
  5. Al pin #16
  6. Al pin #15
  7. Al pin #13
  8. Al pin #11

Cables del sensor

  1. Al pin #1
  2. Al pin #12
  3. Al pin #6

Cable negativo

  1. Al pin #9

Código 

El código fue digitado en el lenguaje de programación python, ya que es un lenguaje de alto nivel lo que quiere decir que su sintaxis es muy sencilla y fácil para empezar a programar.

    import RPi.GPIO as GPIO
    import time
    #------------------------------------------------#
    #Define los GPIO como salida 
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17, GPIO.OUT) ## GPIO 17 como salida
    GPIO.setup(27, GPIO.OUT) ## GPIO 27 como salida
    GPIO.setup(22, GPIO.OUT) ## GPIO 22 como salida
    GPIO.setup(23, GPIO.OUT) ## GPIO 23 como salida
    GPIO.setup(24, GPIO.OUT) ## GPIO 24 como salida
    GPIO.setup(25, GPIO.OUT) ## GPIO 25 como salida
    GPIO.setup(5, GPIO.OUT) ## GPIO 5 como salida
    GPIO.setup(6, GPIO.OUT) ## GPIO 6 como salida
    #------------------------------------------------#
    #Inicia el ciclo para el calculo del resultado y mostrar resultado
    while(True):
        #------------------------------------------------#
        #Declaracion de variables
        Canal = 18
        data = []
        j = 0
        #------------------------------------------------#
        #Establece coneccion con el senson
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(Canal, GPIO.OUT)
        GPIO.output(Canal, GPIO.LOW)
        time.sleep(0.02)
        GPIO.output(Canal, GPIO.HIGH)
        GPIO.setup(Canal, GPIO.IN)
        while GPIO.input(Canal) == GPIO.LOW:
                continue
        while GPIO.input(Canal) == GPIO.HIGH:
                continue
        #------------------------------------------------#
        #Recibe los pulsos del sensor
        while j < 40:
                k = 0
                while GPIO.input(Canal) == GPIO.LOW:
                        continue
                while GPIO.input(Canal) == GPIO.HIGH:
                        k += 1
                        if k > 100:
                                break
                if k < 8:
                        data.append(0)
                else:
                        data.append(1)
                j += 1
        #------------------------------------------------#
        #interpreta los pulsos del sensor y los convierte en decimal
        temperature_bit = data[16:24]
        temperature = 0
        for i in range(8):
                temperature += temperature_bit[i] * 2 ** (7 - i)
    
        #------------------------------------------------#
        #Inicia el bloque de mostrar resultado enciende los leds dependiendo del nivel
        print(temperature)
        GPIO.output(17, True) ## Enciendo el 17
        time.sleep(0.3)
        if temperature>5:
            GPIO.output(27, True) ## Enciendo el 27
            time.sleep(0.3)
        if temperature>10:
            GPIO.output(22, True) ## Enciendo el 22
            time.sleep(0.3)
        if temperature>15:
            GPIO.output(23, True) ## Enciendo el 23
            time.sleep(0.3)
        if temperature>20:
            GPIO.output(24, True) ## Enciendo el 24
            time.sleep(0.3)
        if temperature>=25:
            GPIO.output(25, True) ## Enciendo el 25
            time.sleep(0.3)
        if temperature>30:
            GPIO.output(5, True) ## Enciendo el 5
            time.sleep(0.3)
        if temperature>35:
            GPIO.output(6, True) ## Enciendo el 6
            time.sleep(0.3)
        #------------------------------------------------#
        #Una vez mostrado el resultado apaga los leds 
        GPIO.output(17, False) ## Apagando el 17
        GPIO.output(27, False) ## Apagando el 27
        GPIO.output(22, False) ## Apagando el 22
        GPIO.output(23, False) ## Apagando el 23
        GPIO.output(24, False) ## Apagando el 24
        GPIO.output(25, False) ## Apagando el 25
        GPIO.output(5, False)  ## Apagando el 5
        GPIO.output(6, False)  ## Apagando el 6
        time.sleep(0.3)
        #------------------------------------------------#
        #Vuelve a iniciar el ciclo
    #limpia las declaraciones de los GPIO
    GPIO.cleanup() 


Una vez escrito el código se corre y listo, un ejemplo básico para conocer un poco mas del uso del raspberry pi 3.

Comentarios

Entradas más populares de este blog

Cargador de programas

Arquitectura de 128 Bits

Dispositivos de entrada y salida