Оглавление:

Термометр Bluetooth: 8 шагов
Термометр Bluetooth: 8 шагов

Видео: Термометр Bluetooth: 8 шагов

Видео: Термометр Bluetooth: 8 шагов
Видео: Домашний термометр Xiaomi Mijia Новинка 2021 - bluetooth Thermometer Hygrometer XMWSDJ04MMC 2024, Ноябрь
Anonim
Bluetooth термометр
Bluetooth термометр
Bluetooth термометр
Bluetooth термометр
Bluetooth термометр
Bluetooth термометр

В этой инструкции подробно рассказывается о создании простого 2-канального термометра с использованием термисторных зондов 100K, модуля Bluetooth и смартфона. Модуль Bluetooth представляет собой компонент LightBlue Bean, который был разработан для упрощения разработки приложений с низким энергопотреблением Bluetooth за счет использования знакомой среды Arduino для программирования модуля.

Пытаясь понять, как получить данные о температуре от модуля Bluetooth на мой iPhone, я нашел приложение под названием EvoThings, которое значительно упростило разработку приложений. У меня нет Mac (шокирующий, я знаю!), Который ограничивает мои возможности по разработке приложений для iPhone, и у меня нет времени разбираться в новых инструментах Microsoft, которые, очевидно, поддерживают кроссплатформенную разработку для iOS и Android. Я сделал несколько приложений в стиле HTML5, но единственный способ получить данные Bluetooth - это использовать плагины для Cordova, что выглядело более сложной задачей, чем у меня было время. EvoThings предоставляет очень простой в использовании набор инструментов, которые превратили проблему подключения Bluetooth к iPhone в легкую прогулку. И мне нравится торт!

В целом, я нашел комбинацию Lightblue Bean и EvoThings очень практичным решением с небольшими временными затратами.

Шаг 1. Вещи, которые вам понадобятся

Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся
Вещи, которые вам понадобятся

Я использовал имеющийся в продаже термисторный зонд для одного канала, потому что хотел, чтобы термистор был герметичным для погружения в жидкости. Для второго канала я сделал базовый зонд из термистора, провода 26 калибра и штекера для наушников 3,5 мм. Вы можете использовать любые термисторы, какие захотите, и вы можете сделать свои собственные датчики из теплопроводящей эпоксидной смолы и, например, пластиковых соломинок / мешалок для кофе. Далее следует то, что я использовал - это не является предписывающим списком!

Аппаратное обеспечение

  • 1 x 100K Термисторные зонды. Модель Extech TP890. Они обычно доступны на ebay и amazon.
  • 2 x 2,5-миллиметровых стереоразъема, соответствующие 2,5-миллиметровому разъему на пробниках Extech. Я достал разъемы 3,5 мм со старого компьютера, поэтому отрезал разъем от датчика Extech и заменил его разъемами 3,5 мм. Вам следует избегать этого, просто используйте разъемы 2,5 мм или стандартный штекер стереоадаптера от 2,5 до 3,5 мм.
  • Бусина термистора 100K плюс провод 26 калибра плюс стерео штекер 3,5 мм, если вы хотите сделать свой собственный зонд. Если нет, купите второй датчик Extech!
  • 1 x Lightblue Bean от Punch Through Designs. Это модуль Bluetooth, программируемый как плата разработки Arduino. Модуль довольно дорогой, но он избавляет от множества сложностей. Они проводят кампанию на Kickstarter для устройства следующего поколения, о котором, возможно, стоит подумать.
  • 2 резистора 1 / 4Вт 100K, которые используются для разделения опорного напряжения для термисторов. Я использовал резисторы 5%, но резисторы с более высокими допусками обычно менее чувствительны к температуре и обеспечивают лучшую производительность. 1% - хорошее значение для этого.
  • Паяльник и припой
  • Кусачки и небольшие отрезки соединительного провода 26 или 28 калибра.

Программное обеспечение и прошивка

  • Для программирования Bean вам понадобится приложение Bean Loader. Я использовал окна, поэтому все ссылки будут специфичными для Windows. Все, что вам нужно для начала работы с Bean, включая особенности Arduino, доступно на сайте LightBlueBean.
  • Верстак EvoThings для приложения для смартфона доступен здесь. Там же доступна вся документация по началу работы. Это очень хорошо задокументировано.

Шаг 2: Схема и электрическая конструкция

Схема и электрическая конструкция
Схема и электрическая конструкция
Схема и электрическая конструкция
Схема и электрическая конструкция
Схема и электрическая конструкция
Схема и электрическая конструкция

Термистор - это резистор, зависящий от температуры. Зонд Extech имеет отрицательный температурный коэффициент, что означает, что с повышением температуры сопротивление уменьшается. Значение сопротивления измеряется с помощью простой схемы, которая создает делитель напряжения с термистором в одной ветви и фиксированным резистором 100 кОм в другой. Разделенное напряжение подается на канал аналогового ввода на Bean-компоненте и записывается в микропрограммное обеспечение.

Чтобы собрать схему, я собрал 3,5-мм аудиоразъемы со старого сломанного ПК. Мультиметр использовался для определения двух точек на печатной плате, которые соответствовали наконечнику и первой полосе зонда. Провода были припаяны к аудиоразъемам и к Bean, как показано на изображениях. Аудиоразъемы были приклеены к области прототипа Bean с помощью двустороннего скотча. Лента, которую я использовал, - это наклейка автомобильного класса, которая создает очень прочную связь между буксировочными частями.

Шаг 3: Коэффициенты зонда

Коэффициенты зонда
Коэффициенты зонда

Каким бы распространенным ни был зонд Extech, коэффициенты Стейнхарта-Харта нигде не опубликованы. К счастью, есть онлайн-калькулятор, который определит коэффициенты по 3 предоставленным вами измерениям температуры.

Какая фольга - это основная процедура, которую я использовал для получения коэффициентов. Не зарабатываю очков за стиль, но достаточно хорош, чтобы заставить вас сказать +/- 1 градус с точностью (с моей стороны, полный палец)…. в зависимости от точности вашего эталонного термометра и мультиметра, конечно! Мой мультиметр - дешевый прибор без названия, который я купил много лет назад, когда денег было мало. Денег по-прежнему мало, и он все еще работает!

Для калибровки нам нужны три показания сопротивления при трех температурах.

  • Почти замерзание, добавив лед в стакан с водой и помешивая, пока температура не стабилизируется. После стабилизации используйте мультиметр для записи сопротивления зонда и эталонного термометра для записи температуры.
  • Теперь поместите зонд в стакан с водой комнатной температуры, дайте зонду выровняться с температурой воды и запишите температуру на эталонном термометре и показания сопротивления на мультиметре.
  • Поместите зонд в стакан с горячей водой и запишите сопротивление.

    Температура Сопротивление
    5.6 218 тыс.
    21.0 97,1 тыс.
    38.6 43.2

Весь этот процесс напоминает ситуацию с курицей и яйцом, поскольку вам нужен калиброванный термометр для записи температуры и калиброванный мультиметр для записи сопротивления. Ошибки здесь приведут к неточности в измерениях температуры, которые вы делаете, но для моих целей +/- 1 градус больше, чем мне нужно.

Вставка этих записанных значений в веб-калькулятор дает следующее:

Изображение
Изображение

Коэффициенты (A, B и C) подставляются в уравнение Стенхарта-Харта для определения температуры по выбранному значению сопротивления. Уравнение определяется как (источник: wikipedia.com)

Изображение
Изображение

Где T = Температура в Кельвинах

A, B и C - коэффициенты уравнения Стейнхарта-Харта, которые мы пытаемся определить, R - сопротивление при температуре T

Прошивка выполнит этот расчет.

Шаг 4: Прошивка

Прошивка
Прошивка
Прошивка
Прошивка

Напряжение термистора измеряется, преобразуется в температуру и отправляется через Bluetooth в приложение EvoThings, работающее на смартфоне.

Чтобы преобразовать напряжение в значение сопротивления внутри Bean, используется простое линейное уравнение. Вывод уравнения представлен в виде изображения. Вместо преобразования выборочного значения в напряжение, поскольку и АЦП, и входное напряжение относятся к одному и тому же напряжению батареи, мы можем использовать значение АЦП вместо напряжения. Для 10-битного Bean ADC полное напряжение батареи приведет к значению ADC 1023, поэтому мы используем это значение как Vbat. Фактическое значение резистора делителя является важным фактором. Измерьте фактическое значение резистора делителя 100 кОм и используйте измеренное значение в уравнении, чтобы избежать ненужного источника ошибок из-за допуска резистора.

После расчета значения сопротивления значение сопротивления преобразуется в температуру с использованием уравнения Стейнхарта-Харта. Это уравнение подробно описано в Википедии.

Поскольку у нас есть 2 зонда, имело смысл инкапсулировать функциональность зонда в класс C ++.

Класс инкапсулирует коэффициенты уравнения Стейнхарта-Харта, номинальное значение сопротивления делителя и аналоговый порт, к которому подключен термистор. Единственный метод, temperature (), преобразует значение АЦП в значение сопротивления, а затем использует уравнение Стейнхарта-Харта для определения температуры в Кельвинах. Возвращаемое значение вычитает абсолютный ноль (273,15K) из рассчитанной температуры, чтобы получить значение в градусах Цельсия.

Сила Lightblue Bean проявляется в том факте, что все функции Bluetooth по существу реализованы в 1 строке кода, который записывает выборочные значения температуры в область временных данных в памяти Bluetooth.

Bean.setScratchData (TEMPERATURE_SCRATCH_IDX, (uint8_t *) и температура [0], 12);

Каждое измеренное значение температуры представлено числом с плавающей запятой, занимающим 4 байта. Область временных данных может содержать 20 байтов. Мы используем только 12 из них. Имеется 5 областей временных данных, поэтому вы можете передать до 100 байт данных с помощью временных данных.

Основной поток событий:

  • Проверьте, есть ли у нас соединение Bluetooth
  • Если да, возьмите образцы температур и запишите их в область временных данных.
  • Спите 200 мс и повторите цикл.

Если не подключен, прошивка переводит микросхему ATMEGA328P в спящий режим на длительное время. Цикл сна важен для экономии энергии. Микросхема ATMEGA328P переходит в режим низкого энергопотребления и остается там до тех пор, пока не будет прервана модулем Bluetooth LBM313. LBM313 сгенерирует прерывание, чтобы разбудить ATMEGA328P в конце запрошенного периода ожидания или всякий раз, когда соединение Bluetooth установлено с компонентом. Функциональность WakeOnConnect включается явным вызовом Bean.enableWakeOnConnect (true) во время setup ().

Важно отметить, что прошивка будет работать с любым клиентским приложением BLE. Все, что нужно сделать клиенту, - это удалить байты температуры из временного банка данных и собрать их в числа с плавающей запятой для отображения или обработки. Самым простым клиентским приложением для меня было использование EvoThings.

Шаг 5. Приложение для смартфона

Приложение для смартфона
Приложение для смартфона

Пример приложения Evo Things очень близок к тому, что мне было нужно, с небольшими усилиями, необходимыми для добавления дополнительных элементов дисплея, чтобы завершить трехканальное устройство измерения температуры.

Установка и базовая работа платформы EvoThings очень хорошо документирована на веб-сайте Evo Things, поэтому повторять это здесь не имеет смысла. Все, что я расскажу здесь, - это конкретные изменения, которые я внес в их пример кода для отображения трех каналов информации о температуре, извлеченных из области рабочих данных Bluetooth.

После того, как вы установили EvoThings Workbench, вы найдете здесь пример Lightblue Bean (на компьютерах с 64-разрядной ОС Windows):

Этот ПК / Documents / EvothingsStudio_Win64_1. XX / Examples / Lightblue-bean-basic / app

Вы можете заменить файлы index.html и app.js файлами, прикрепленными к этому шагу. Изменения, внесенные в файл jacascript, извлекают 3 значения температуры с плавающей запятой из области временных данных и внутреннего HTML новых элементов, созданных в файле HTML.

function onDataReadSuccess (данные) {

var temperatureData = new Float32Array (данные);

var bytes = новый Uint8Array (данные);

var temperature = temperatureData [0];

console.log ('Температура чтения:' + температура + 'C');

document.getElementById ('temperatureAmbient'). innerHTML = temperatureData [0].toFixed (2) + «C °»;

document.getElementById ('temperature1'). innerHTML = temperatureData [1].toFixed (2) + «C °»;

document.getElementById ('temperature2'). innerHTML = temperatureData [2].toFixed (2) + «C °»;

}

Шаг 6: корпус

Вложение
Вложение
Вложение
Вложение
Вложение
Вложение
Вложение
Вложение

Корпус представляет собой простую коробку, напечатанную на 3D-принтере. Я использовал Cubify Design для создания дизайна, но подойдет любая программа для 3D-моделирования. Файл STL прилагается, чтобы вы могли распечатать его самостоятельно. Если бы мне пришлось делать это заново, я бы сделал стены немного толще, чем они есть сейчас, и изменил бы дизайн зажима, который удерживает доску на месте. Зажимы ломаются очень легко, потому что напряжение находится в плоскости smae, как и слои 3D-печати, что является самой слабой ориентацией для деталей 3D-печати. Стенки очень тонкие, поэтому защелкивающийся механизм немного слабоват. Я использовал прозрачный скотч, чтобы держать коробку закрытой, потому что стены были слишком хлипкими - не элегантно, но это работает!

Шаг 7: настройки ПК и конфигурация Bluetooth

Настройки ПК и конфигурация Bluetooth
Настройки ПК и конфигурация Bluetooth

Цикл сборки и загрузки прошивки для Bean осуществляется через Bluetooth. Одновременно может быть только одно активное соединение Bluetooth. Загрузчик компонентов доступен в магазине приложений Windows.

Базовый цикл, который я использую для сопряжения и подключения (а также восстановления и повторного подключения, если что-то идет не так), выглядит следующим образом: Из Панели управления; / Настройки Bluetooth вы должны увидеть следующий экран:

Изображение
Изображение

В конце концов окна сообщат «Готово к сопряжению». На этом этапе вы можете щелкнуть значок Bean, и через несколько секунд Windows предложит вам ввести пароль. Код доступа по умолчанию для bean-компонента - 00000.

Изображение
Изображение

Если пароль введен правильно, Windows покажет, что устройство подключено правильно. Вы должны находиться в этом состоянии, чтобы иметь возможность программировать компонент.

Изображение
Изображение

После создания пары и подключения используйте Bean Loader для загрузки микропрограммы в bean-компонент. Я обнаружил, что это чаще всего дает сбой, и, похоже, это связано с близостью к моему компьютеру. Перемещайте Bean, пока не найдете подходящее для вас место. Бывают случаи, когда ничего не работает, и Bean Loader предлагает выполнить повторное сопряжение устройства. Обычно повторное сопряжение восстанавливает соединение. Перед повторным сопряжением необходимо «Удалить устройство».

Изображение
Изображение

Операция Bean Loader проста и хорошо документирована на их сайте. При открытом загрузчике компонентов выберите пункт меню «Программа», чтобы открыть диалоговое окно для перехода к шестнадцатеричному файлу, предоставленному на этапе прошивки данной инструкции.

Изображение
Изображение

Как только прошивка загружена, ЗАКРЫВАЙТЕ Bean Loader, чтобы соединение между Bean Loader и оборудованием Bean было разорвано. У вас может быть только одно соединение за раз. Теперь откройте рабочую среду EvoThings и запустите клиент EvoThings на смартфоне или планшете.

Изображение
Изображение

Когда вы нажимаете кнопку «Выполнить», клиент EvoThings автоматически загружает html-страницу для термометра. Нажмите кнопку «Подключить», чтобы подключиться к Bean-компоненту, и вы должны увидеть отображаемые значения температуры. Успех!

Шаг 8: Заключение

Заключение
Заключение

Если все построено и настроено правильно, у вас должна быть работающая система, которая позволит вам контролировать температуру с помощью 2 датчиков, а также контролировать температуру датчика BMA250 на плате разработки Bean. С EvoThings можно сделать еще больше - я лишь поцарапал поверхность, поэтому оставляю этот эксперимент для вас! Спасибо за прочтение! Если что-то пойдет не так, просто оставьте комментарии, и я помогу чем смогу.

Рекомендуемые: