среда, 5 октября 2011 г.

1Wire и DS1820

Есть простейший адаптер на FT232R и одном транзисторе для 1Wire. Нужно получить температуру.
Ставим пакет digitemp

Запускаем
digitemp_DS9097 -i -s /dev/ttyUSB0

на выходе что-то вроде:

Turning off all DS2409 Couplers
.
Searching the 1-Wire LAN
10BBEC6C010800A0 : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 10BBEC6C010800A0
Wrote .digitemprc

Значит нашли нужный адаптер и термометр.
Теперь берем с него температуру:

digitemp_DS9097 -a -s /dev/ttyUSB

в выводе нас интересует строчка:

Oct 05 14:40:28 Sensor 0 C: 21.25 F: 70.25

можно "отсеч" лишний вывод командой вида

digitemp_DS9097 -a -s /dev/ttyUSB0 -q -o "%.1C"

выведет цифры температуры по Цельсию.
если датчиков несколько, добавляем параметр -t 0 (0-n) номер датчика

2 комментария:

  1. а можно поподробнее про этот простейший? к нему только 1 датчик прикручивается? обязательно ли использовать ft232r, или можно обойтись v-usb (cdc class)?

    ОтветитьУдалить
  2. В принципе это адаптер - т.е. usb - uart. Так что подключить к нему можно датчиков достаточно много. Да и не только датчики температуры, но и АЦП и т.п. - словом все, что можно зацепить на 1Wire шину. Другой вопрос - что дальность в простейшем варианте может составлять.. ну скажем до 20м более менее устойчиво.

    v-usb - так собственно тогда никакие другие примочки и не нужны, можно прямо на нем (на микроконтроллере) реализовать функционал 1Wire - см. AVR318 http://www.gaw.ru/html.cgi/txt/app/micros/avr/avr318.htm
    и просто чиать v-usb как hid устройство.

    А вот подключить v-usb в качестве виртуального адаптера последовательного порта (вместо FT232R) и уже к нему транзистор - не получится, ибо для работы с 1Wire нужно скорость 115200, чего v-usb не в состоянии обеспечить (во всяком случае раньше не было такого).

    ОтветитьУдалить