Raspberry - Afficher une température sur un LCD

temperature


Nous allons afficher la température sur un afficheur LCD.

Nous avons besoin des matériels ci-dessous:

  • un Raspberry
  • un afficher LCD 1602
  • une sonde de température DS18B20


Pour le cablage et le paramétrage de la sonde DS18B20 voir les pages: 

Raspberry - Sonde DS18B20 - Température et Raspberry

Raspberry - Sonde de température DS18B20

Pour le cablage et le paramétrage de l'afficheur LCD voir la page:

Raspberry - Afficheur LCD 1602



Le schema

lcd-ds18b20-schema


Cablage du LCD 1602 voir la page:

Raspberry - Afficheur LCD 1602 


Câblage avec le Raspberry en Mode 4 bit


LCD1602 - Raspberry (Mode Board)

  • Broche 1 (Vss)  sur Pin 6 (Masse)
  • Broche 2 (Vdd) sur Pin 2 (+5v)
  • Broche 3 (V0) sur curseur du potentiomètre 10 KOhms
  • Broche 4 (RS) sur Pin 37
  • Broche 5 (R/W) sur le Gnd - Masse
  • Broche 6 (E) sur Pin 35
  • Broche 11 (DB4 - Data) sur Pin 33
  • Broche 12 (DB5 - Data) sur Pin 31
  • Broche 13 (DB6 - Data) sur Pin 29
  • Broche 14 (DB7 - Data) sur Pin 23
  • Broche 15 (A - Anode rétro-éclairage) sur résistance de 220 Ohms puis +5v
  • Broche 16 (K - Cathode rétro-éclairage) sur le Gnd - Masse

 Avant de mettre sous tension, vérifier votre cablage, une erreur pourrait etre fatale pour le Raspberry et/ou le LCD 

Nous ajoutons la sonde DS18B20

Cablage de la sonde DS18B20 voir les pages:


Câblage de la sonde DS18B20

  • Rouge = +Vcc
  • Noir = Gnd
  • Jaune = GPIO4 - Pin7

Résistance de 4700 Ohms entre +Vcc et GPIO4 - Pin7



Affichage de la température

  • lcd-ds18b20-code
  • lcd-ds18b20-temperature


Nous affichons la température relevée par la sonde DS18B20 sur l'afficheur LCD 1602


Le code:


# coding:utf-8
# Utilisation d'un afficheur LCD 1602 sur Raspberry 3 B+
#


from RPLCD.gpio import CharLCD
from time import sleep


lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23])


def lireFichier(emplacement):
    fichTemp = open(emplacement)
    contenu = fichTemp.read()
    fichTemp.close()
    return contenu


def recupTemp(contenuFich):
    secondeLigne = contenuFich.split("\n")[1]
    temperatureData = secondeLigne.split(" ")[9]
    temperature = float(temperatureData[2:5])
    temperature = temperature / 10
    return temperature

while True:    # Mettre le 28-xxxxxxxxx de votre sonde
    contenuFich = lireFichier("/sys/bus/w1/devices/28-xxxxxxxxxxx/w1_slave")  # contenuFich la temperature
    temperature = recupTemp(contenuFich)
    lcd.cursor_pos = (0, 0)
    lcd.write_string("Temperature :")
    lcd.cursor_pos = (1, 0)
    resultat = str(temperature) + " C"  # Variable resultat contient la temperature
    lcd.write_string(resultat)  # Affichage de la temperature sur LCD
    sleep(5)




Affichage Date/Heure et Température

  • lcd-date-temp-code
  • lcd-date-temp

Nous affichons la date/heure du jour et la température relevée par la sonde DS18B20 sur l'afficheur LCD 1602


Le code:


# coding:utf-8
# Utilisation d'un afficheur LCD 1602 sur Raspberry 3 B+
# Affichage date/heure et température
# avec clignotement du lcd


from RPLCD.gpio import CharLCD
import time


lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23])


def lireFichier(emplacement):
    fichTemp = open(emplacement)
    contenu = fichTemp.read()
    fichTemp.close()
    return contenu


def recupTemp(contenuFich):
    secondeLigne = contenuFich.split("\n")[1]
    temperatureData = secondeLigne.split(" ")[9]
    temperature = float(temperatureData[2:5])
    temperature = temperature / 10
    return temperature


while True:
    # Mettre le 28-xxxxxxxxx de votre sonde
    contenuFich = lireFichier("/sys/bus/w1/devices/28-xxxxxxxxxxx/w1_slave")  # contenuFich la temperature
    temperature = recupTemp(contenuFich)
    # Affichage date/heure sur la même ligne
    # %y affiche l'année sur 2 digit 

    lcd.cursor_pos = (0, 0)
    lcd.write_string("%s" %time.strftime("%d/%m/%y   %H:%M"))
    # Affichage de la température
    lcd.cursor_pos = (1, 0)
    lcd.write_string("Temp.")
    lcd.cursor_pos = (1, 6)
    resultat = str(temperature) + " C"  # Variable resultat contient la temperature
    lcd.write_string(resultat)  # Affichage de la temperature sur LCD
    time.sleep(2)
    lcd.clear()  # Effacement LCD



Affichage Date/Heure, Température et Led

  • lcd-date-temp-led-code
  • lcd-date-temp-led-verte
  • lcd-date-telp-led-rouge


Nous ajoutons à notre montage deux leds (Rouge/Verte) et deux résistances de 220 Ohms pour nous indiquer la plage de température relevée par la sonde.

Température inférieure à 18°C

  • Led Rouge allumée
  • Led Verte éteinte

Température supèrieure à 18°C

  • Led Rouge étiente
  • Led Verte allumée

La led  verte  est reliée au GPIO17 - pin 11
La led  rouge  est reliée au GPIO18 - pin 12


Le code:


# coding:utf-8
# Utilisation d'un afficheur LCD 1602 sur Raspberry 3 B+
# Affichage date/heure et température
# avec clignotement du lcd et led verte et rouge


import RPi.GPIO as GPIO
from RPLCD.gpio import CharLCD
import time


vert=11  # Led verte
rouge=12  # Led rouge


GPIO.setmode(GPIO.BOARD)  # Numérotation BOARD
GPIO.setwarnings(False)
GPIO.setup(11, GPIO.OUT)  # led rouge
GPIO.setup(12, GPIO.OUT)  # led verte


GPIO.output(rouge, 0) # initialisation led rouge = 0
GPIO.output(vert,0)  # initialisation led verte = 0


lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23])


def lireFichier(emplacement):
    fichTemp = open(emplacement)
    contenu = fichTemp.read()
    fichTemp.close()
    return contenu


def recupTemp(contenuFich):
    secondeLigne = contenuFich.split("\n")[1]
    temperatureData = secondeLigne.split(" ")[9]
    temperature = float(temperatureData[2:5])
    temperature = temperature / 10
    return temperature


try:
    while True:
        # Mettre le 28-xxxxxxxxx de votre sonde
        contenuFich = lireFichier("/sys/bus/w1/devices/28-xxxxxxxxxxx/w1_slave")  # contenuFich la temperature
        temperature = recupTemp(contenuFich)
        # Affichage date/heure sur la même ligne
        # %y affiche l'année sur 2 digit
 
        lcd.cursor_pos = (0, 0)
        lcd.write_string("%s" %time.strftime("%d/%m/%y   %H:%M"))
        # Affichage de la température
        lcd.cursor_pos = (1, 0)
        lcd.write_string("Temp.")
        lcd.cursor_pos = (1, 6)
        resultat = str(temperature) + " C"  # Variable resultat contient la temperature
        lcd.write_string(resultat)  # Affichage de la temperature sur LCD
        time.sleep(2)
        lcd.clear()  # Effacement LCD
        # Test de la temperature - si < 20° = led rouge allumée / si > 20° led verte allumée
        if temperature <= 20:
            GPIO.output(rouge, 1)
            GPIO.output(vert,0)
        else:
            GPIO.output(rouge, 0)
            GPIO.output(vert,1)
except:
    GPIO.cleanup()  # Mise à zéro du GPIO






Personnaliser

Google Analytics

Google Analytics est un service utilisé sur notre site Web qui permet de suivre, de signaler le trafic et de mesurer la manière dont les utilisateurs interagissent avec le contenu de notre site Web afin de l’améliorer et de fournir de meilleurs services.

Facebook

Notre site Web vous permet d’aimer ou de partager son contenu sur le réseau social Facebook. En l'utilisant, vous acceptez les règles de confidentialité de Facebook: https://www.facebook.com/policy/cookies/

Twitter

Les tweets intégrés et les services de partage de Twitter sont utilisés sur notre site Web. En activant et utilisant ceux-ci, vous acceptez la politique de confidentialité de Twitter: https://help.twitter.com/fr/rules-and-policies/twitter-cookies