Python Language
Программирование IoT с использованием Python и малины PI
Поиск…
Пример - датчик температуры
Взаимодействие DS18B20 с малиновым pi
Соединение DS18B20 с малиновой пи
Вы можете видеть, что есть три терминала
- Vcc
- Gnd
- Данные (один проводной протокол)
R1 - сопротивление 4.7 кОм для вытягивания уровня напряжения
- Vcc должен быть подключен к любому из контактов 5v или 3.3v из малины pi (PIN: 01, 02, 04, 17).
- Gnd должен быть подключен к любому из Gnd контактов из малины pi (PIN: 06, 09, 14, 20, 25).
- DATA необходимо подключить к (PIN: 07)
Включение однопроводного интерфейса со стороны RPi
Войдите в Raspberry pi с помощью шпатлевки или любого другого терминала linux / unix.
После входа в систему, откройте файл /boot/config.txt в своем любимом браузере.
nano /boot/config.txt
Теперь добавьте эту строку
dtoverlay=w1–gpio
в конец файла.Теперь перезагрузите перезагрузку малины pi
sudo reboot
.Войдите в Raspberry pi и запустите
sudo modprobe g1-gpio
Затем запустите
sudo modprobe w1-therm
Теперь перейдите в каталог / sys / bus / w1 / devices
cd /sys/bus/w1/devices
Теперь вы обнаружите виртуальный каталог, созданный вашим температурным датчиком, начиная с 28 - ********.
Перейти к этому каталогу
cd 28-********
Теперь есть имя файла w1-slave , этот файл содержит температуру и другую информацию, такую как CRC.
cat w1-slave
.
Теперь напишите модуль в python, чтобы прочитать температуру
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)
Выше модуля python будет печатать температуру vs адрес в течение бесконечного времени. Параметр RATE определяется для изменения или настройки частоты запроса температуры от датчика.
Фиксированная диаграмма GPIO