Дополнительная информация
✔ УПАКОВКА И КОМПЛЕКТАЦИЯ
Очень легкий кулечек, из защиты только поличтототам, но как видим почта пожалела и не сильно побила посылку. Внутри очень грустный китайский ребятёнок, который приболел. Упаковка очень оригинальная, обратите внимание на компресс, далее расскажу его секрет. У производителя есть разные расцветки, но в этом магазине доступен только зеленый. Можно инструкцию и не читать, на упаковке все схематически показано и рассказано. На одном из боков QR код для скачивания приложения на смартфон. Секрет компресса на упаковке, простой, это липучка, которая хорошо приклеена к картонной коробке и позволит часто открывать и закрывать коробку, пригодится для хранения браслета. Комплектация простая, браслет и инструкция. Ну и маленький вкладыш на китайском языке, быстрый старт я его назвал. Инструкция на хорошей полиграфии, цветная. На одной стороне полностью на китайском, вторая сторона на английском языке. Без инструкции все понятно, надо только отсканировать QR. Единственный момент на который я хочу акцентировать внимание, это то, что термометр прошел инспекцию по безопасности от вредных веществ и прошел поверку. Так это или нет мы не узнаем, но нам об этом сказали.
✔ ТЕРМОМЕТР
Термометр представляет собой браслет с приятным мягким ремешком и небольшим пластиковой вставкой. Кнопка — это единственное средство управления браслетом, долгое нажатие включение, длинное повторное выключение. Краткое нажатие выводит температуру на экранчик. Разрешение экрана 128*128 и размеры 12 на 12 миллиметров производитель заявляет о технологии AMOLED. Хочу обратить внимание, что углы все скошены, для предотвращения царапин или защемлений кожи ребенка. Зубчатая часть липучки сделана из мягкого пластика, очень цепучая. Но если нацепляет мусора, можно просто промыть под водой. Прошита аккуратно, я бы даже сказал впотай, шва как такого и нет, руку не будет надавливать или натирать. Сам датчик температуры выполнен в виде небольшой полусферы. Выпуклость на браслете сделана специально под физиологию руки, а именно подмышечной части. Я покажу наглядно чуть далее. Сам браслет как бы склеен из двух частей. Внутренняя часть очень мягкая и приятная на ощупь, верхняя немного жестче специально для липучки. Полусфера датчика довольно сильно выпирает, так что не будет необходимости туго затягивать браслет, датчик все равно дотянется до кожи ребенка. Крышка отсека для батарейки типа CR2032, открывается с усилием, надо надавить пальцем и нажимая им провернуть на 10 градусов примерно. В характеристиках указано что питается он двумя батарейками CR2032, но по факту только одна. Среднее время работы заявлено в районе 1000 часов. Экран горит не постоянно, а через минуту примерно гаснет, поэтому затраты только на передачу данных по Bluetoth. Рабочая длинна браслета 20,5 сантиметра, это максимально, а минимально можно подобрать почти под любую руку от 3 месяцев до 6 лет. Весит 14 грамм, на руке как пушинка. Размеры и вес под спойлером.Дополнительная информация
✔ СОФТ ДЛЯ МОНИТОРИНГА
Сосканировав QR код, и перейдя по ссылке который он предложил можно выбрать приложение почти под любую операционную систему современного мобильного телефона. Я выбрал под Андроид. Первый запуск проходит с небольшой инструкцией по подключению термометра и синхронизации данных. Можно зарегистрироваться в системе vipose, но это дает возможность только сохранять статистику в «облаке» и при перепрошивки телефона можно будет посмотреть температуру спустя месяц или два. Без регистрации и интернета все работает также, только сохраняется в память смартфона. Работает с версией Bluetooth 4,0. На версию ниже программа не захотела устанавливаться. Очень улыбнул пункт, создать ребенка. В стиле создать папку =) Из важных функций я отмечу наличие сигнала при повышении температуры заданной вами, сигнал может быть как просто вибро, так и с мелодией. В настройках можно посмотреть состояние батареи, включить или выключить синхронизацию и проверить наличие новых обновлений. Программа на смарт имела 16 версию от 11 июня. Программа хранит статистику температуры рисуя графики по часам и температуре. Масштаб графика можно изменять. Из меню графиков есть возможность отправить точку температуры в фейсбук или по СМС. Возможно пригодится отправить домашнему врачу или бабушке с дедушкой, что температура 36,6! Все изменения происходят в режиме реального времени. Минимальная температура для отображения 32 градуса, а максимальная 43.
✔ ТЕСТЫ
Однажды я купил электронный градусник, и для интереса проверил его, он выдал мне 35,4. второй тест 5,3 и не выше при последующих тестах, при моей стандартной температуре 36,7, что подтверждал и ртутный градусник. Поэтому именно электронным градусникам я не верю, будем проверять этот. Чтобы результаты получились идеально правильны, необходимо правильно одеть термометр. А именно выемкой и датчиком в подмышку, но, так чтобы не натирало. В результате должно получиться что то похожее. Как видим на ребенке в 5,5 лет термометр застегнулся и еще немного осталось места.
Произведем контрольные замеры с помощью инфракрасного термометра и надежного старичка, ртутного термометра. Замеры 36,4 — здоровый ребенок. Ждем примерно 1 минуту пока термометр с комнатной температуры достигнет температуры тела ребенка. 36,4. Тест считаю пройденным!!! Если под мышкой ребенку не комфортно, то можно закрепить просто на руке, но тогда результат будет уже другой. Можно просто закрепить, сделать замер ртутным термометром, и прибавлять в уме разницу. Как видим температура уже просто на коже упала почти на 2 градуса. Меняется практически каждую секунду, синхронизация с программой на смартфоне происходит без промедлений.✔ ВИДЕО ОБЗОР
✔ ЗАКЛЮЧЕНИЕ
Довольно неплохой гаджет, я вспоминаю как ночью я или жена каждые 10-15 минут вставали измерять температуру не растет ли, падает ли. Это хорошо когда есть инфракрасный термометр, пик и готово, но минус в том, что тебе надо вставать и надо беспокоить болеющего ребенка. Этот же термометр позволит просто включить экран и сразу увидеть температуру малыша. Вторым плюсом является режим оповещения в случае превышения заданного порога температуры, и если вы даже спите в одной комнате с ребенком, просто ставим этот режим на вибро. Ну и третий момент, который мне понравился это режим записи температуры, есть возможность проследить действует ли лекарство или понять в какой момент начнет расти, да и просто показать врачу, мол было весь день так, а на вечер начала расти. Материал приятный, не чешется и не раздражает руку тоже к плюсам. К минусам отнесу, необходимость четкого позиционирования под мышкой, для точного измерения. Ну и просто к предостережениям отнесу, то, что не стоит никогда полагаться на электронику когда дело идет о здоровье, тем более ребенка. Да он позволит всю ночь не вставить к малышу, а смотреть все на экране смартфона, но а если смартфон зависнет…Ну а я желаю Вам и вашим деткамЕсли у вас остались вопросы — я с удовольствием на них отвечу. Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта. Наверно, уже каждый слышал об Arduino. Поиграться с этой платформой решил и я, и сделать Bluetooth термометр, показания которого можно смотреть на телефоне или компьютере, оснащенным блютуз модулем.
Принцип действия
К Arduino подключен Bluetooth по UART, который эмулируется софтово (используется библиотека SoftwareSerial). Этим освобождаем хардварный порт, что дает возможность одновременного считывания данных через кабель и через блютуз. Также к Arduino подключен термодатчик. Считываются показания с термодатчика и отправляются в блютуз и по кабелю на компьютер(при необходимости). Любое устройство, оснащенное блютуз и поддерживающее протокол btspp, принимает данные от блютуз-модуля Arduino. А дальше прикладной софт на основе этих данных может строить графики, вести статистику или просто выводить на экран текущую температуру.
Железо
Купил на robocraft.ru: ORduino Nano (ATmega168) — 500 руб Блютуз модуль HC-05 — 330 руб Аналоговый температурнй датчик LM335 — 40 рубНа радиорынке покупал: 1 резистор на 2,2 КОма, стабилизаторы на 3.3 B и на 5.5 В, конденсаторы для них ~ 30 руб Датчик LM335 аналоговый, поэтому, чтобы рассчитать сколько вольт приходит от него, необходимо знать напряжение питания. Если мы ошибемся в вольтаже даже на 0.01 В, то датчик уже даст ошибку в 1 градус, а чем больше заданное значение напряжения будет отличатся от действующего напряжения, тем больше будет погрешность. Не говоря про то что датчик сам имеет погрешность в 1 градус. Необходим высоко стабилизированный источник питания. И лучший результат тут покажут обычные батарейки (точнее батарея из гальванических элементов) подключенные через стабилизатор напряжения к Arduino (в Nano этого стабилизатора нет). Но схемка потребляет 60-70 мА. Для батареек это многовато («Крону» посадит примерно за час-полчаса, но для тестов подойдет). А сетевые блоки питания выдают не такое стабильное напряжение. Из-за пульсаций показания датчика будут сильно прыгать. Самый простой выход из этой ситуации использовать цифровые датчики температуры. Например, 1-Wire датчик DS18B20.
Софт
Надо заметить, что Блютуз-модуль HC-05 мне пришел со скоростью 9600 (заявленная 38400). Благо её можно поменять через AT-команды. Для работы с модулем в режиме AT-команд можно воспользоваться нехитрым скетчем, предварительно подключив PIO11 к +5 В через резистор 220 Ом.
#include SoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственно void setup() { Serial.begin(9600); mySerial.begin(9600); } void loop() { if (mySerial.available()) { int c = mySerial.read(); // читаем из software-порта Serial.write(c); // пишем в hardware-порт } if (Serial.available()) { int c = Serial.read(); // читаем из hardware-порта mySerial.write(c); // пишем в software-порт } }
Скетч для работы с термодатчиком и Bluetooth тоже не сложный. Данные передаем в бинарном формате, пакетами. Каждый пакет начинается с 0xDEAD
#include SoftwareSerial mySerial(2, 3); const double opVoltage = 4.98; // опорное напряжение (напряжение питания) const byte tmpPin = 0; // номер пина, на котором сидит термодатчик void setup() { Serial.begin(9600); mySerial.begin(9600); pinMode(13, OUTPUT); } void loop() { double vl = (analogRead(tmpPin)*opVoltage)/1024; // значение напряжения на пине int tempK = vl*100; // расчет температуры в кельвинах int tempC = tempK - 273; // перевод температуры в градусы цельсия byte packet[] = {0xDE, 0xAD, tempC >> 8, tempC & 0xFF }; // формируем пакет // отправляем пакет Serial.write(packet, 4); // на компьютер mySerial.write(packet, 4); // блютуз-модулю // индикация работы - помигаем светодиодом digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(1500); }
Мидлет для телефона написан на J2ME (на чём же ещё. это же мидлет), плюс в том что будет работать на любом телефоне с поддержкой jsr82. Но, зная про «кросплатформенность» J2ME, по крайней мере должен работать 🙂 Обратите внимание, что в мидлете указан адрес моего блютуз-модуля. Исходники мидлета, а также скетчи Arduino можно найти здесь
Схема
Блютуз подключается к пинам D2 и D3. Напряжение с датчика температуры снимается на пин A0.
Заключение
Термометр можно использовать как домашний или как уличный, только тогда всё устройство нужно защитить от агрессивной окружающей среды. И не надо сверлить никаких дырок в стене под провод. А ещё можно написать клиент для мобильного телефона и получить доступ в Интернет или отправлять смс. И не надо никаких GSM/GPRS шилдов и AT-команд. Лишь телефон с блютузом, но это уже совсем другая история…
Полезные ссылки
Bluetooth-модуль HC-05Аналоговый датчик температуры – LM335Температурный 1-Wire датчик DS18S20ИсходникиРЕДАКТОРПРИЛОЖЕНИЕДОКУМЕНТАЦИЯПРИМЕРЫСООБЩЕСТВОБЛОГВОЙТИ
ПРИМЕРЫ ПРОЕКТОВ ARDUINO
Первый проект. Мигаем светодиодом Arduino при помощи кнопки на смартфоне
Управляем Arduino-машинкой при помощи G-сенсора со смартфона
Подключаем сервомашинку и управляем со смартфона
Температурный датчик с выводом значения на смартфон
Умная розетка с управлением со смартфона по Bluetooth
Картонный робот под управлением смартфона
Вывод температуры и влажности DTH11 на смартфон через сеть
Статья расскажет о проекте термометра, основным отличием от похожих проектов будет то, что показания датчика температуры будут передаваться на смартфон по Bluetooth и отображаться на его экране. Такой датчик температуры можно разместить в недоступном месте, например за окошком, в холодильнике. И вы всегда сможете проверить температуру без визуального контакта с этим датчиком. Вы запускаете мобильное приложение, подключаетесь к датчику и на экране Смартфона или планшета контролируете температуру. Сам датчик будет реализован с помощью Arduino. Для реализации передачи значения температуры на смартфон мы используем библиотеку RemoteXY.
<center></center>
Для реализации электрической части устройства термометра вам потребуется любая плата Arduino, термистор 1кОм, резистор 1кОм, желательно так же батарейный отсек для автономного питания Arduino. Термистор подойдет на любое сопротивление от 1 до 100 кОм, но в этом случае сопротивление резистора должно быть аналогичным. Ниже приведена схема подключения всех элементов конструкции. Мы же все это собрали на макетной плате.
<center></center>
Термистор включен в цепь делителя напряжения, во втором плече которого находится постоянное сопротивление. Таким образом, при изменении температуры будет изменяться сопротивление термистора, а значит и одного плеча делителя напряжения. Напряжение делителя будет изменяться в след за температурой. Среднюю точку делителя напряжения мы подключили к аналоговому входу Arduino с номером A5.
Разработку программы мы начнем с калибровки нашего датчика. Калибровку мы выполним по двум точкам, и для этого нам понадобится эталонная температура. У меня в комнате стоит термометр, который показывает 25 градусов Цельсия, это будет первая эталонная температура. Так же я знаю что температура моего тела составляет 36.6 градусов Цельсия, и это будет вторая эталонная температура. Так же примем, что сопротивление нашего термистора в определенных пределах изменяется по линейному закону в зависимости от температуры. По этому, в дальнейшем, для вычисления текущей температуры будем использовать линейную интерполяцию.
Для выполнения калибровки нам необходимо определить, какое значение выдает АЦП Arduino при температурах датчика, которые мы выбрали эталонными. Используем Serial и монитор порта, для того что бы передавать значение АЦП на компьютер, что бы мы могли посмотреть, какое же оно при наших эталонных температурах. Для этого нам потребуется загрузить в Arduino следующий простой скетч.
void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A5); Serial.println(sensorValue); delay(1); }
Данный скетч в каждом цикле программы измеряет напряжение аналогового вывода A5, оцифровывает его и отправляет в Serial. Вы можете подключиться монитором порта (Сервис/Монитор порта) и посмотреть, какие значения передаются. Теперь нам необходимо записать значения АЦП при выбранных эталонных температурах датчика. Первую эталонную температуру вы получаете сразу, если ваш термистор достаточно долго находился в комнате. Для получения второй эталонной температуры приложите термистор к своему телу и подержите его несколько минут. Перепишите значения АЦП, которые передаются в монитор порта при этих температурах. У нас получились следующие значения:
T=25.0°C АЦП=580
T=36.6°C АЦП=514
Заходим в онлайн редактор RemoteXY и создаем интерфейс управления. Он состоит из текстового поля, через которое будет передаваться измеряемая температура, и текстовой метки. Длина текстового поля, задаваемая в настройках, определяется максимальной длиной передаваемой строки. В нашем случае это могут быть значения «-40.0» или «100.0». То есть длина строки не может превышать 5 символов. Можно оставить предлагаемую по умолчанию системой длину в 10 символов.
<center></center>
Выбираем в настройках проекта целевую платформу Arduino (SoftwareSerial), library version и формируем исходный код нашего интерфейса. Не забудьте загрузить библиотеку RemoteXY и подключить ее к Arduino IDE (Скетч/Импортировать библиотеку/Add library…).
Для передачи значения температуры на экран смартфона мы должны получить текущее значение АЦП, получить значение текущей температуры, используя линейную интерполяцию по двум известным точкам, преобразовать полученное значение в строку и записать ее в поле text_1 структуры RemoteXY. Для преобразования числа типа double в строку используем функцию:
dtostrf (floatVar, minStringWidthIncDecimalPoint, numVarsAfterDecimal, charBuf)
Задачу линейной интерполяции мы решим используя простую формулу:
<center></center>
Собрав все воедино мы получаем следующий исходный код — скетч для Arduino:
///////////////////////////////////////////// // RemoteXY include library // ///////////////////////////////////////////// /* определение режима соединения и подключение библиотеки RemoteXY */ #define REMOTEXY_MODE__SOFTWARESERIAL #include #include <remotexy> астройки соединения */ #define REMOTEXY_SERIAL_RX 2 #define REMOTEXY_SERIAL_TX 3 #define REMOTEXY_SERIAL_SPEED 9600 /* конфигурация интерфейса */ unsigned char RemoteXY_CONF[] = { 0,11,27,0,1,5,67,0,24,23 ,54,16,2,11,129,0,23,12,39,9 ,0,84,101,109,112,44,32,194,176,67 ,0 }; /* структура определяет все переменные вашего интерфейса управления */ struct { /* output variable */ char text_1[11]; /* =строка оканчивающаяся нулем UNICODE */ /* other variable */ unsigned char connect_flag; /* =1 if wire connected, else =0 */ } RemoteXY; ///////////////////////////////////////////// // END RemoteXY include // ///////////////////////////////////////////// /* первое замеренное значение - первая точка */ #define SENS_1_VAL 514 #define SENS_1_TMP 36.6 /* второе замеренное значение - вторая точка */ #define SENS_2_VAL 580 #define SENS_2_TMP 25.0 void setup() { RemoteXY_Init (); Serial.begin(9600); } void loop() { RemoteXY_Handler (); /* получаем значение АЦП */ int sensorValue = analogRead(A5); /* вычисляем текущую температуру используя линейную интерполяцию по двум известным точкам */ double temp = SENS_1_TMP + (SENS_2_TMP - SENS_1_TMP) / (SENS_2_VAL - SENS_1_VAL) * (sensorValue - SENS_1_VAL); /* преобразуем значение температуры в строку и помещаем ее сразу в поле text_1 структуры RemoteXY */ dtostrf(temp, 0, 1, RemoteXY.text_1); /* отправляем значение АЦП в Serial для того что бы мы могли проверить значения */ Serial.println(sensorValue); delay(1); } </remotexy>
В данном коде вы должны изменить определяемые значения SENS_1_VAL, SENS_1_TMP, SENS_2_VAL, SENS_2_TMP, подставив вместо них ваши, которые вы получили при измерениях значений для калибровки.
Загрузите скетч в вашу Arduino. Загрузите в ваш смартфон или планшет приложение RemoteXY. И можете контролировать температуру находясь на удалении от изготовленного вами датчика, используя Bluetooth.
<center></center>Используемые источники:
- https://mysku.ru/blog/china-stores/32765.html
- https://habr.com/post/139477/
- https://remotexy.com/ru/examples/temperature/