В прошлом обзоре мы рассмотрели подключение датчика BMP085 по шине I2C. А сейчас остановимся на, пожалуй, одной из самых популярных шин – 1-wire. Ее очень широко используют в системах домашней (да и не только) автоматизации для подключения различных датчиков, устройств контроля доступа, охранных сигнализаций и т.д.
В данном материале будет рассмотрено подключение датчиков температуры DS18B20 к Raspberry Pi. Как известно, все устройства, работающие по шине 1-wire имеют уникальный идентификационный номер, что позволяет включать однотипные устройств фактически параллельно. В Raspberry Pi для работы с шиной 1-wire задействован пин GPIO4, к которому мы и подключим два датчика температуры DS18B20 (рис.1).
Рис.1
Выполним настройки конфигурационного файла config для работы с датчиками DS18B20. Открываем файл командой:
sudo nano /etc/webiopi/config
и в разделе [DEVICES] прописываем:
tmp0=DS18B20
tmp1=DS18B20 (рис.2)
Рис.2
Сохраняем изменения в конфигурационном файле (Ctrl+O/Enter), перезапускаем WebIOPi (sudo /etc/init.d/webiopi restart) и вводим в браузере адрес встроенногомониторадевайсов WebIOPi:
http://192.168.1.8:8000/app/devices-monitor
Если датчики исправны и подключены правильно, то в браузере будут отображаться их показания температуры в градусах (рис.3).
Рис.3
Теперь необходимо разобраться в следующем моменте. Датчики включены на одну шину, и требуется выяснить, какой датчик является tmp0, а какой tmp1. Другими словами нам нужно определить идентификационные номера каждого датчика. Для этого необходимо зайти на диске Raspberry Pi в папку:
sys/bus/w1/devices (рис.4)
Рис.4
Там находятся два файла, названия которых и являются идентификационными номерами подключенных к шине 1-wire датчиков. Теперь необходимо в конфигурационном файле привязать идентификационные номера датчиков к присвоенным переменным tmp0 и tmp1.
Открываем файл config командой:
sudo nano /etc/webiopi/config
и в разделе [DEVICES] прописываем:
tmp0=DS18B20 slave:28-000002c2a679
tmp1=DS18B20 slave:28-000002c29f6c (рис.5)
Рис.5
Сохраняем изменения в конфигурационном файле (Ctrl+O/Enter) и перезапускаем WebIOPi (sudo /etc/init.d/webiopirestart)
В файл script.py добавляем макрос работы с датчиками DS18B20 (рис.6)
Рис.6
Создаем тестовую страницу index.html для вызова макросов со скрипта Python и визуализации получаемых данных температуры(рис.7)
Рис.7
Копируем созданные файлы script.py и index.html в соответствующие папки /home/pi/myproject/python и /home/pi/myproject/html
Вводим в браузере адрес http://192.168.1.8:8000/index.html
После загрузки страницы получаем данные температуры с датчиков DS18B20 (рис.8).
Рис.8
Аналогично, как и для датчика BMP085 рассмотренные примеры можно добавить на любую HTML страницу нашей системы домашней автоматизации. Они позволят вам организовать сбор данных с датчиков температуры DS18B20.