1-Wire в OpenWrt
Если так задуматься, то датчик - это, наверное, одно из самых распространенных устройств в нашей жизни. Датчики, как это бы страшно не звучало ))), они повсюду....Все задачи, которые ставятся перед тем или иным устройствам, в своей основе содержат показания датчиков. Если датчик такой-то изменил своё состояние на такое-то,значит вот та железка должна сделать то-то...)). Как это знакомо, наверное, для многих из вас.Существует очень большое разнообразие типов датчиков: датчик температуры, влажности, дыма, газа, уровня жидкости, удара, вибрации, движения, тока, напряжения, частоты, мощности, света, и так можно перечислять очень долго. Несмотря на такое большое разнообразие типов, их общая структура примерно одна и та же. Это некий чувствительный сенсор, который на выходе выдает различные уровни напряжения. Получается, наша задача - всего лишь научиться измерять напряжение и тогда мы сможем сделать любой датчик.
Поэтому здесь я предлагаю научиться измерять напряжение, а заодно и значение температуры на основе one-wire датчика DS2438.
На этапе конфигурации OpenWrt нужно отметить следующие модули:
Kernel modules:
USB Support:
<M> kmod-usb-serial
<M> kmod-usb-serial-cp210x
Utilities:
Filesystem:
<M> owfs
<M> owshell
<M> digitemp
В OpenWrt работа c 1-wire возможна с помощью двух программ. Давайте сначала рассмотрим программу digitemp.
Устанавливаем пакеты:
root@OpenWrt:/# opkg install kmod-usb-serial-cp210x Installing kmod-usb-serial-cp210x (2.6.36.2-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-usb-serial-cp210x_2.6.36.2-1_brcm47xx.ipk. Installing kmod-usb-serial (2.6.36.2-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-usb-serial_2.6.36.2-1_brcm47xx.ipk. Configuring kmod-usb-serial. Configuring kmod-usb-serial-cp210x. root@OpenWrt:/# opkg install digitemp Installing digitemp (3.6.0-3) to root... Downloading ftp://ftp:ftp@192.168.0.9/digitemp_3.6.0-3_brcm47xx.ipk. Configuring digitemp. |
Подключаем адаптер к usb-порту роутера и смотрим вывод dmesg:
root@OpenWrt:/# dmesg usb 1-1.4: new full speed USB device using ohci_hcd and address 4 cp210x 1-1.4:1.0: cp210x converter detected usb 1-1.4: reset full speed USB device using ohci_hcd and address 4 usb 1-1.4: cp210x converter now attached to ttyUSB0 |
root@OpenWrt:/# digitemp_DS9097 -i -s /dev/ttyUSB0 DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane GNU Public License v2.0 - http://www.digitemp.com Turning off all DS2409 Couplers . Searching the 1-Wire LAN 265576BA000000DF : DS2438 Temperature, A/D Battery Monitor ROM #0 : 265576BA000000DF Wrote .digitemprc |
Теперь, чтобы прочитать значения температуры и напряжения с нашего датчика, нужно выполнить следующую операцию:
root@OpenWrt:/# digitemp_DS9097 -a -A -l /home/1wire_log DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane GNU Public License v2.0 - http://www.digitemp.com |
root@OpenWrt:/# cat /home/1wire_log Jan 01 00:01:44 Sensor 0 VDD: 5.06 AD: 4.98 CAD: -1018 C: 24.59 |
Для рассмотрения программы owfs доустановим пакеты:
root@OpenWrt:/# opkg install owshell owfs Installing owshell (2.8p4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/owshell_2.8p4-1_brcm47xx.ipk. Installing libow (2.8p4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/libow_2.8p4-1_brcm47xx.ipk. Installing libusb (0.1.12-2) to root... Downloading ftp://ftp:ftp@192.168.0.9/libusb_0.1.12-2_brcm47xx.ipk. Installing libpthread (0.9.31-64) to root... Downloading ftp://ftp:ftp@192.168.0.9/libpthread_0.9.31-64_brcm47xx.ipk. Installing librt (0.9.31-64) to root... Downloading ftp://ftp:ftp@192.168.0.9/librt_0.9.31-64_brcm47xx.ipk. Installing owfs (2.8p4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/owfs_2.8p4-1_brcm47xx.ipk. Installing libfuse (2.8.5-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/libfuse_2.8.5-1_brcm47xx.ipk. Installing kmod-fuse (2.6.36.2-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-fuse_2.6.36.2-1_brcm47xx.ipk. Installing fuse-utils (2.8.5-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/fuse-utils_2.8.5-1_brcm47xx.ipk. Configuring librt. Configuring libpthread. Configuring libusb. Configuring libow. Configuring owshell. Configuring kmod-fuse. Configuring libfuse. Configuring fuse-utils. Configuring owfs. |
При запуске owfs нужно указать точку монтирования и тип адаптера (у меня это ds9097).
root@OpenWrt:/# owfs -d /dev/ttyUSB0 /home/1wire/ |
root@OpenWrt:/# ls -l /home/1wire/ drwxr-xr-x 1 root root 8 Jan 1 00:02 drwxrwxrwx 1 root root 8 Jan 1 00:02 26.5576BA000000 drwxr-xr-x 1 root root 8 Jan 1 00:02 settings drwxrwxrwx 1 root root 8 Jan 1 00:02 simultaneous drwxr-xr-x 1 root root 8 Jan 1 00:02 statistics drwxr-xr-x 1 root root 30 Jan 1 00:02 structure drwxr-xr-x 1 root root 8 Jan 1 00:02 system drwxr-xr-x 1 root root 8 Jan 1 00:02 uncached |
root@OpenWrt:/# ls -l /home/1wire/26.5576BA000000 -r--r--r-- 1 root root 16 2011-02-16 20:52 address -r--r--r-- 1 root root 256 2011-02-16 20:52 alias drwxrwxrwx 1 root root 8 2011-02-16 20:56 B1-R1-A -rw-rw-rw- 1 root root 1 2011-02-16 20:56 CA -r--r--r-- 1 root root 2 2011-02-16 20:52 crc8 -rw-rw-rw- 1 root root 24 2011-02-16 20:52 date drwxrwxrwx 1 root root 8 2011-02-16 20:56 disconnect -rw-rw-rw- 1 root root 1 2011-02-16 20:56 EE drwxrwxrwx 1 root root 8 2011-02-16 20:56 endcharge -r--r--r-- 1 root root 2 2011-02-16 20:52 family drwxrwxrwx 1 root root 8 2011-02-16 20:56 HIH3600 drwxrwxrwx 1 root root 8 2011-02-16 20:56 HIH4000 drwxrwxrwx 1 root root 8 2011-02-16 20:56 HTM1735 -r--r--r-- 1 root root 12 2011-02-16 20:52 humidity -rw-rw-rw- 1 root root 1 2011-02-16 20:56 IAD -r--r--r-- 1 root root 12 2011-02-16 20:52 id -r--r--r-- 1 root root 16 2011-02-16 20:52 locator drwxrwxrwx 1 root root 8 2011-02-16 20:56 MultiSensor -rw-rw-rw- 1 root root 12 2011-02-16 20:56 offset drwxrwxrwx 1 root root 8 2011-02-16 20:56 pages -r--r--r-- 1 root root 16 2011-02-16 20:52 r_address -r--r--r-- 1 root root 12 2011-02-16 20:52 r_id -r--r--r-- 1 root root 16 2011-02-16 20:52 r_locator drwxrwxrwx 1 root root 8 2011-02-16 20:56 S3-R1-A -r--r--r-- 1 root root 12 2011-02-16 20:52 temperature -r--r--r-- 1 root root 32 2011-02-16 20:52 type -rw-rw-rw- 1 root root 12 2011-02-16 20:56 udate -r--r--r-- 1 root root 12 2011-02-16 20:56 VAD -r--r--r-- 1 root root 12 2011-02-16 20:56 VDD -r--r--r-- 1 root root 12 2011-02-16 20:56 vis |
root@OpenWrt:/# cat ./temperature 22.3125 |
root@OpenWrt:/# owhttpd -d /dev/ttyUSB0 -p 8080 |
Чуть позже будет обновление, где посмотрим, как строить графики по текущим логам.
1-wire датчик температуры
Комментариев нет:
Отправить комментарий