Python Language
Programmazione IoT con Python e Raspberry PI
Ricerca…
Esempio: sensore di temperatura
Interfacciamento di DS18B20 con Raspberry pi
Connessione di DS18B20 con Raspberry pi
Puoi vedere che ci sono tre terminali
- Vcc
- Gnd
- Dati (protocollo a un filo)
R1 ha una resistenza di 4,7 k ohm per alzare il livello di tensione
- Vcc dovrebbe essere collegato a uno dei pin 5v o 3.3v di Raspberry pi (PIN: 01, 02, 04, 17).
- Gnd dovrebbe essere collegato a uno dei pin Gnd di Raspberry pi (PIN: 06, 09, 14, 20, 25).
- DATI devono essere collegati a (PIN: 07)
Abilitazione dell'interfaccia a un filo dal lato RPi
Accedi a Raspberry pi usando stucco o qualsiasi altro terminale linux / unix.
Dopo l'accesso, apri il file /boot/config.txt nel tuo browser preferito.
nano /boot/config.txt
Ora aggiungi la riga
dtoverlay=w1–gpio
alla fine del file.Ora riavviare il riavvio di Raspberry pi
sudo reboot
.Accedi a Raspberry pi ed esegui
sudo modprobe g1-gpio
Quindi eseguire
sudo modprobe w1-therm
Ora vai nella directory / sys / bus / w1 / devices
cd /sys/bus/w1/devices
Ora scoprirai una directory virtuale creata dal tuo sensore di temperatura a partire da 28 - ********.
Vai a questa directory
cd 28-********
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