Python Language
IoT-programmering med Python och Raspberry PI
Sök…
Exempel - temperatursensor
Gränssnitt på DS18B20 med Raspberry pi
Anslutning av DS18B20 med Raspberry pi
Du kan se att det finns tre terminaler
- Vcc
- Gnd
- Data (One-wire protokoll)
R1 är 4,7k ohm motstånd för att dra upp spänningsnivån
- Vcc ska anslutas till någon av 5v- eller 3.3v-stiften på Raspberry pi (PIN: 01, 02, 04, 17).
- Gnd ska anslutas till någon av Gnd-stiften från Raspberry pi (PIN: 06, 09, 14, 20, 25).
- DATA ska anslutas till (PIN: 07)
Aktivera gränssnittet med en tråd från RPi-sidan
Logga in på Raspberry pi med kitt eller annan Linux / Unix-terminal.
Efter inloggning öppnar du filen /boot/config.txt i din favoritwebbläsare.
nano /boot/config.txt
Lägg till den här raden
dtoverlay=w1–gpio
i slutet av filen.Starta om Raspberry pi
sudo reboot
.Logga in på Raspberry pi och kör
sudo modprobe g1-gpio
sudo modprobe w1-therm
Gå nu till katalogen / sys / buss / w1 / enheter
cd /sys/bus/w1/devices
Nu hittar du en virtuell katalog skapad av din temperatursensor från 28 - ********.
Gå till den här katalogen
cd 28-********
Nu finns det ett filnamn w1-slave. Denna fil innehåller temperaturen och annan information som CRC.
cat w1-slave
.
Skriv nu en modul i python för att läsa temperaturen
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)
Ovanför pythonmodulen kommer att skriva ut temperaturen vs adressen under oändlig tid. RATE-parameter definieras för att ändra eller justera frekvensen för temperaturfrågan från sensorn.
GPIO-stiftdiagram