Открытый проект мультизонного термосенсора с логированием и блютусом

974bb3e974c3a15a17086d33e8b26824.gif

Цель проекта — получить устройство с возможностью простого подключения множества термосенсоров. Термосенсоры должны однозначно идентифицироваться по месту. Все температуры должны отображаться на одном экране и логироваться в файл. За основу была взята шина 1-Wire и сенсоры DS18S20+.

Проект-концепция, такой можно сделать практически на любой отладочной плате с любым микроконтроллером. Но под рукой был именно модуль K66BLEZ1.

Перечень необходимых деталей

Модуль K66BLEZ1

ac85ddb70259da69438d06514562a760.png

Открытый проект модуля находится здесь. Модуль на борту имеет энергонезависимые часы реального времени, USB high speed с двумя виртуальными COM портами, микро SD карту с поддержкой FAT32, Blertooth LE 4.0 модуль, зарядник литиевых аккумуляторов 3.7 В. Питание от USB или источника питания 5 В или от аккумулятора 3.4…4.2 В.

Макетная плата

e314c725875caf20d25128b1085b5d6a.png

Схема макетной платы

aaabdb53153cc782335da432070835b9.png

Дисплей

d12ec15315dab11e1822a3ae079c0a6f.png

Полная информация о дисплее собрана здесь. Дисплей управляется по шине SPI. Работает только на запись. Значит при работе с ним надо применять технологию фрагментированного фреймбуфера.

Сенсоры DS18S20+

c9580120a07ee987dcd8122099a52d1b.png

Вся конструкция в сборе выглядит вот так:

1c9a75308fb4cb424d4138ad461a2097.png

За счёт того что сенсоры просто накалываются на плоский шлейф в произвольных местах сделать вариант под собственные нужды можно буквально за минуты. Длина шлейфа может достигать сотен метров и даже километра. Это обеспечивается сравнительно низкой скорость работы с сенсорами и подводкой отдельной линии питания. Питание 3.3 В подаётся в шлейф из модуля. Все сенсоры подключены на одну информационную линию DQ, по которой осуществляется двунаправленный обмен данными.

Пример схемы подключения трех сенсоров к микроконтроллеруПример схемы подключения трех сенсоров к микроконтроллеру

В данном проекте реализовано считывание данных максимум с 8-и сенсоров. Считывание каждого сенсора длиться около 0.6 сек. Проект легко переделать под большее количество сенсоров. На многие десятки.

Настраивается дивайс через USB и виртуальный COM порт. На стороне PC применяется программа терминал типа TeraTerm. Можно задать разворот экрана по всем 4 направлениям, задать максимальный размер лог файлов с записью температур, просмотреть и изменить идентификаторы сенсоров.

Способ привязки сенсоров DS18S20

Все сенсоры DS18S20 имеют глобально уникальные 8-байтные идентификаторы. Это позволяет к каждому из них обращаться по отдельности. Однако если изначально все сенсоры подключить одновременно, то останется неясным какой сенсор стоит на какой позиции. Поэтому была разработана процедура привязки сенсоров к месту. Процедура выполняется следующим образом:

  1. Питание выключено. Со шлейфа все сенсоры сняты. Распределяем по своему желанию номера позициям установки сенсоров.

  2. Устанавливается один сенсор на шлейф в позицию с номером 1.

  3. Включаем питание. Ожидаем появления данных с сенсора на экране. Выключаем питание.

  4. Устанавливаем следующий сенсор в следующую по порядку позицию и переходим к пункту 3. Если все сенсоры установлены, то процедура завершена.

После выполнения всей процедуры на экране напротив каждого номера позиции будут показания сенсора находящегося в именно в этой позиции.

Выполненные настройки сенсоров сохраняются в файле на SD карте и при переносе шлейфа на другое устройство нужно будет только перенести файл с настройками.

Каналы коммуникации с дивайсом

Устройство соединяется через USB интерфейс с компьютером. При этом на компьютере появляется два виртуальных COM порта. Порт с номером интерфейса 0 служит для управления через терминал, просмотра лога и управления настройками. Порт с интерфейсом 2 работает по протоколу FreeMaster и соответственно через него ведёт обмен данными среда FreeMaster на компьютере.

Лог-файл с результатами измерений

Лог файл с результатами измерений по всем зонам сохраняется в формате CSV и может быть импортировал в Excel или другую подходящую программу для анализа. Каждая запись сопровождается датой и временем. Периодичность записи около 5.5 сек.

d8626d4f4e20845479d489476cda7d35.png

Управление через терминал

Главное меню в терминале показано ниже. Кроме сохранения лога с результатами измерения температуры устройство ведёт также свой внутренний лог. Его можно просмотреть через терминал. Здесь также настраивается дата и время и все параметры.

86447427e5369a5c01e34ec71d558137.png

Обмен через USB со средой FreeMaster

Работа с FreeMaster была описана в предыдущих статьях. Стоит только напомнить что компонент FreeMaster обеспечивает доступ и в MATLAB в реальном времени.

b9308fbfdc0388396d20be7b56d1473b.png

Проект для среды FreeMaster находится в файле MZTS.pmp.

Наблюдение за температурой по Bluetooth LE.

Для этого используется кастомный набор характеристик и была написана простая утилита на PC под управлением Windows 10…11, Утилита умеет сканировать все BLE устройства в эфире и из списка выбирает только те которые поддерживают кастомную характеристику термосенора. Перед этим устройство должно быть спарено с PC. Пин код и имя устройства задаются через терминал.

0f5c7a45e0f4c5e0f03db7132afdb30b.png

Исходники проекта

Статьи с предыдущими концептами на модуле K66BLEZ1

© Habrahabr.ru