Модули прошивки

Для того, что-бы можно было получить шину 1-Wire на любом GPIO роутера необходимо загрузить несколько модулей ядра – wire, w1_therm, w1-gpio, w1-gpio-custom. Первые три модуля загрузятся автоматически, а для вызова загрузки четвётрого с нужными параметрами лучше всего создать фаил /etc/modules.d/59-w1-gpio-custom, содержащий строку:

w1-gpio-custom bus0=0,7,0

В данном примере bus0=0 означает, что необходимо создать новую шину 1-Wire (их может быть несколько), а число 7 указывает номер GPIO на который будут подключены датчики.

После подключения датчиков и перезагрузки роутера температуру с них можно получить командой:

awk -F= '/t=/ {printf "%.02f\n", $2/1000}' /sys/bus/w1/drivers/w1_slave_driver/*/w1_slave

Фото

В TP-Link MR3220 для экспериментов с 1-Wire лучше и проще всего взять свободный gpio7 – он никуда не подключен.


Напряжение 3,3V с TTL колодки консольного порта подаётся через резистор 3k на gpio7, делается так называемая “подтяжка”, pull-up.


Датчик температуры можно подключить как по двум проводам (data + gnd), так и по трём (data, vcc, gnd). Я всегда предпочитаю трёх-проводное подключение – Dallas-ы меньше глючат.


Примерно так выглядит тестовый стенд. В точку соединения gpio7 и резистора, помимо датчиков температуры DS18B20 можно подключать и ключи iButton.


Внешние ссылки



Published

15 October 2013

Tags