Python Language Esempio: sensore di temperatura


Esempio

Interfacciamento di DS18B20 con Raspberry pi

Connessione di DS18B20 con Raspberry pi

inserisci la descrizione dell'immagine qui

Puoi vedere che ci sono tre terminali

  1. Vcc
  2. Gnd
  3. Dati (protocollo a un filo)

inserisci la descrizione dell'immagine qui

R1 ha una resistenza di 4,7 k ohm per alzare il livello di tensione

  1. Vcc dovrebbe essere collegato a uno dei pin 5v o 3.3v di Raspberry pi (PIN: 01, 02, 04, 17).
  2. Gnd dovrebbe essere collegato a uno dei pin Gnd di Raspberry pi (PIN: 06, 09, 14, 20, 25).
  3. DATI devono essere collegati a (PIN: 07)

Abilitazione dell'interfaccia a un filo dal lato RPi

  1. Accedi a Raspberry pi usando stucco o qualsiasi altro terminale linux / unix.

  2. Dopo l'accesso, apri il file /boot/config.txt nel tuo browser preferito.

    nano /boot/config.txt

  3. Ora aggiungi la riga dtoverlay=w1–gpio alla fine del file.

  4. Ora riavviare il riavvio di Raspberry pi sudo reboot .

  5. Accedi a Raspberry pi ed esegui sudo modprobe g1-gpio

  6. Quindi eseguire sudo modprobe w1-therm

  7. Ora vai nella directory / sys / bus / w1 / devices cd /sys/bus/w1/devices

  8. Ora scoprirai una directory virtuale creata dal tuo sensore di temperatura a partire da 28 - ********.

  9. Vai a questa directory cd 28-********

  10. Ora c'è un nome di file w1-slave , questo file contiene la temperatura e altre informazioni come CRC. cat w1-slave .

Ora scrivi un modulo in python per leggere la temperatura

import glob
import time

RATE = 30
sensor_dirs = glob.glob("/sys/bus/w1/devices/28*")

if len(sensor_dirs) != 0:
    while True:
        time.sleep(RATE)
        for directories in sensor_dirs:
            temperature_file = open(directories + "/w1_slave")
            # Reading the files
            text = temperature_file.read()
            temperature_file.close()
            # Split the text with new lines (\n) and select the second line.
            second_line = text.split("\n")[1]
            # Split the line into words, and select the 10th word
            temperature_data = second_line.split(" ")[9]
            # We will read after ignoring first two character.
            temperature = float(temperature_data[2:])
            # Now normalise the temperature by dividing 1000.
            temperature = temperature / 1000
            print 'Address : '+str(directories.split('/')[-1])+', Temperature : '+str(temperature)

Sopra il modulo python stamperà la temperatura rispetto all'indirizzo per un tempo infinito. Il parametro RATE è definito per modificare o regolare la frequenza della richiesta di temperatura dal sensore.

Diagramma pin GPIO

  1. [ https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.png][3]