1-wire термо станция на FreeBSD

FreeBSD

Статья с блога друга ZG с небольшими наработками о том как спаять схему на COM порт и подключить термодатчик DS18B20 к ПК на FreeBSD. А также организовать хранение данных в MySQL базе.

1. Собираем схему:

Схема: DS18B20 на RS232 - COM порт

Схем много, но ZG остановился на этой, ну и я не стал изобретать велосипед.

НА схеме слева COM-порт, справа датчик DS18B20.

Zender Diode — это обычные стабилитроны, Shottkie Diode (подойдут 1N4007 и на 1N4005) — собсно диоды шотки, конденсатор на схеме указан танталовый, но вполне подойдет и обычный электролит.

Сам датчик:

Датчик: DS18B20

О датчиках, можно использовать и DS1820 и DS18S20, но я рекомендую DS18B20 потому что он умеет показывать десятые доли градуса, а два первых — только по 0.5 градуса…

Настройка digitemp

После того как схема правильно собрана, и датчик к ней подключен, можно приступать к настройке digitemp (программа для работы с датчиками) оффсайт: www.digitemp.com

Скачиваем digitemp (папка /mnt/soft/1_arch взята как пример):

Распаковываем и компилируем:

После удачного компилинга выполняем:

Смотрим показывает ли нам digitemp свой мануал, если да то все ок.

Для удобства скопируем этот файл с новым именем dt в директорию в которой будем все хранить и настраивать:

Пробуем про инициализировать датчики, для этого нам нужно запустить digitemp с параметрами -q -w и указать com порт в который воткнута схема:

Отсюда видно что digitemp нашел 1 датчик 28050627020000D0 : DS18B20 Temperature Sensor, если он ничего не находит значить криво собрана схема или указант не тот com порт теперь сохраняем параметры в конфиг, для этого выполняем:

После чего digitemp в своем каталоге создаcт файл .digitemprc в котором лежат данные о порте, датчиках и формате вывода. Теперь чтоб посмотреть температуру достаточно выполнить:

Формат вывода информации можно задать как в .digitemprc LOG_FORMAT, так и через параметры запуска, например -o%.1C (покажет только температуру по цельсию).

Создание процедур и таблиц в MySQL:

Имеем установленный MySQL — ну и инструмент работы с ним. Создаем базу, пользователя, пароль.

Ниже представлен скрипт для создания таблиц:

Скрипт создаёт 2 таблицы, одна для текущих показаний, вторая для истории.

Создаём процедуру:

Проверяем доступ к БД, если всё ок — идём дальше.

Скрипт добавления данных в базу:

В скрипте указываются параметры соединения с БД, а так же каталоги для работы.

digitemp_sensor указывает номер, с которого начинают присваиваться идентификаторами датчики по порядку (в данной схеме их может быть до ста), обычно digitemp_sensor = 0. Скрипт рассчитан на работу со всеми датчиками в собранной Вами цепи.

Даем скрипту права на исполнение:

Добавляем скрипт в крон для выполнения раз в минуту:

 

VN:F [1.9.22_1171]
Рейтинг: 5.0/5 (2 голос (-ов) всего)
1-wire термо станция на FreeBSD, 5.0 out of 5 based on 2 ratings