Python Language
Programowanie IoT za pomocą Pythona i Raspberry PI
Szukaj…
Przykład - czujnik temperatury
Interfejs DS18B20 z Raspberry pi
Połączenie DS18B20 z Raspberry pi
Widać, że są trzy terminale
- Vcc
- Gnd
- Dane (protokół jednoprzewodowy)
R1 ma oporność 4,7 k na podniesienie poziomu napięcia
- Vcc należy podłączyć do dowolnego z pinów 5v lub 3.3v w Raspberry pi (PIN: 01, 02, 04, 17).
- Gnd powinien być podłączony do dowolnego z pinów Gnd Raspberry pi (PIN: 06, 09, 14, 20, 25).
- Dane należy podłączyć do (PIN: 07)
Włączanie interfejsu jednoprzewodowego od strony RPi
Zaloguj się do Raspberry pi za pomocą putty lub dowolnego innego terminala linux / unix.
Po zalogowaniu otwórz plik /boot/config.txt w swojej ulubionej przeglądarce.
nano /boot/config.txt
Teraz dodaj tę linię
dtoverlay=w1–gpio
na końcu pliku.Teraz uruchom ponownie Raspberry pi
sudo reboot
.Zaloguj się do Raspberry pi i uruchom
sudo modprobe g1-gpio
Następnie uruchom
sudo modprobe w1-therm
Teraz przejdź do katalogu / sys / bus / w1 / devices
cd /sys/bus/w1/devices
Teraz znajdziesz wirtualny katalog tworzony z czujnika temperatury, zaczynając od 28 - ********.
Przejdź do tego katalogu
cd 28-********
Teraz jest nazwa pliku w1-slave. Ten plik zawiera temperaturę i inne informacje, takie jak CRC.
cat w1-slave
.
Teraz napisz moduł w pythonie, aby odczytał temperaturę
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)
Powyższy moduł pytona wydrukuje temperaturę w funkcji adresu przez nieskończony czas. Parametr RATE określa się w celu zmiany lub dostosowania częstotliwości zapytania o temperaturę z czujnika.
Schemat pinów GPIO