воскресенье, 7 июня 2015 г.

Подключаем датчик температуры DS18B20









Датчик DALLAS 18B20

Для измерения температуры можно использовать датчик DS18B20, который измеряет температуру от -55°C до +125°C. Данный датчик работает по протоколу 1Wire, который позволяет добавить подобных устройств на одной шине более 16 миллионов. Расстояние до датчика может достигать 300 метров при соблюдении ряда условий. В частности: использование специального кабеля IEEE1394, использование спецдрайвера, использование топологии “общая шина” и др.

Для подключения нам потребуется:

  • Макетная плата
  • Датчик температуры DS18B20
  • Соединительные провод
  • Резистор на 4.7кОм



Схема подключения датчика DS18B20

Включаем Raspberry Pi, открываем терминал.

Редактируем config.txt. В данном конфиг-файле можно редактировать множество параметров – от разрешения экрана до добавления лицензионных ключей для воспроизведения MPEG-2/VС-1
  • sudo nano /boot/config.txt
И добавляем строку для включения при загрузке системы протокола 1Wire для 4 пина GPIO в конец файла
  • dtoverlay=w1-gpio,gpiopin=4
Сохраняем CTRL+O, CTRL+X и перезагружаем малину
  • sudo reboot
Загружаем модули. Данные модули предназначены для расширения возможностей ядра Linux. Так как протокол 1Wire по умолчанию не включен в ядре, необходимо загрузить дополнительные модули w1-gpio(модуль поддержки 1Wire протокола через GPIO порты) и w1-therm(модуль поддержки датчиков температуры DS18B20 и его совместимые) вручную.
  • sudo modprobe w1-gpio

  • sudo modprobe w1-therm
Для каждого датчика создается собственный каталог, например 28-0000011aa1a1

Переходим в каталог датчика и считываем с него температуру
  • cd /sys/bus/w1/devices/28*
  • cat w1_slave
Вывод будет примерно таким:

9a 01 4b 46 7f ff 06 10 78 : crc=78 YES
9a 01 4b 46 7f ff 06 10 78 t=25625

crc=78 YES показывает, что температура правильно считана, если будет выводить ответ = NO – необходимо заново считать температуру -  cat w1_slave

t=25625 и есть температура, измеряемая датчиком, умноженная на 1000. То есть 25625 = 25.6 градуса по Цельсию.

Для удобства можно использовать скрипт на Python, который вы найдёте в архиве. Для этого нам нужно скачать архив.

Скачиваем
  • wget http://wiki.malinapi.com/lib/exe/fetch.php/temp.tar
Распаковываем архив
  • tar -xvf temp.tar
При вводе команды ls мы увидим файл: temp.py

Для запуска скрипта, достаточно выполнить
  • sudo python temp.py
Вывод температуры будет осуществляться в реальном времени!

Комментариев нет:

Отправить комментарий