Блютуз термометр для андроид

Блютуз термометр для андроид

Одним утром я проснулся и захотел узнать температуру на улице. Вместо того, чтобы идти в хозяйственный магазин и покупать стеклянный термометр, я решил сделать самодельный беспроводной термометр. В центре платы находится микроконтроллер PIC12F675 в корпусе SO8. В правой части платы находится линейный источник питания (LP2950), ниже центра находится 1-Wire датчик температуры DS18B20, а в левой части находится TTL Bluetooth модуль от Sure.

Предпочитая стандартные протоколы, я решил передавать данные о температуре по Bluetooth SPP (Serial Port Protocol, протокол последовательного порта), а не по XBee или по другой подобной беспроводной архитектуре. Несмотря на то, Bluetooth потребляет больше чем XBee модуль, его преимуществом является то, что для приема используется стандартное оборудование. Почти все современные ноутбуки имеют интегрированный Bluetooth модуль, что позволяет использовать их в качестве приемника сигнала.

Я нашел Bluetooth модуль от Sure, который я купил несколько лет назад для другого проекта. Для упрощения макетирования, модуль для поверхностного монтажа был установлен на самодельную печатную плату с BLS штырьками. Так как у меня нет паяльной станции с феном, чтобы отпаять модуль, я заказал ещё один модуль GP-GC021. Ниже показан модуль, с которым я изначально работал, а на фото выше показан недавно приобретённый модуль.

Я решил использовать микроконтроллер PIC12F675 только потому, что он был у меня. Изначально я хотел использовать внутренний генератор 4 МГц, но позже я узнал, что Bluetooth модуль передает данные со скоростью 9600 бит/сек, и основная частота системы должна быть 8 МГц, чтобы не отставать и передавать данные с нужной скоростью.

Как и во всех моих проектах, схема и печатная плата были сделаны в Altium Designer. За эти годы я попробовал работать в различных САПР (Система автоматизированного проектирования), включая Eagle, ExpressPCB, и EdwinXP, однако я считаю, что Altium на голову выше всех остальных программ. Если вы простой любитель, то возможно Altium будет слишком дорогой для вас, но многие колледжи и университеты покупают учебную лицензию. В колледже Оканаган есть плавающая лицензия, которая позволяет студентам использовать Altium на любом компьютере, независимо от того, находимся мы на территории университета или нет. Пока я не работал в Altium, я боролся с САПР на протяжении многих лет. С Altium у меня тоже были небольшие проблемы, но в целом, в нем приятно работать.

Примечания:
— программирование не является моей сильной стороной, поэтому прошивка написана в PicBasic. В архиве находятся готовые к прошивке HEX файлы, поэтому если вы хотите изменить прошивку, вам нужно иметь ProtonIDE для компиляции.
— если вы будете делать плату по прилагаемым Gerber файлам, обратите внимание на то, что контакты для F1 (предохранитель на линии VCC датчика) слишком маленькие.
— вся информация в статье предоставлена без гарантий. Автор не несет никакой ответственности.
— если вы будете использовать этот проект или его часть в своем проекте, то указывайте автора.

Беспроводной цифровой термометр для смартфона

Простой Bluetooth термометр для Android на Arduino

В этой статье я расскажу как сделать простой беспроводной термометр, который может связываться с Andrond — смартфоном по каналу Bluetooth и отображать температуру на экране телефона в специальном приложении. Для изготовления такого термометра вам понадобится плата Arduino (например Arduino Uno), дешевый китайский модуль Bluetooth, и популярный дешевый термодатчик LM35.

Читайте также:  Тонкий кирпич для внутренней отделки

Принципиальная схема устройства очень проста:

Как видим, устройство питается от батареи напряжением 9 В, а Bluetooth модуль типа HC-05 подключается к контрактам CON1.

1. Смартфон с Android

Для работы с термометром на телефон нужно установить приложение — монитор temperaturemonitoring.apk. Программа создана с помощью веб-приложения MIT App Inventor. Если программа запущена на смартфоне, то данные с термометра принимаются по Bluetooth и отображаются на экране телефона.

2. Arduino Uno

Ардуино — это плата разработки, основанная на микроконтроллере AVR ATmega328P. На плате есть 6 аналоговых входов и 14 цифровых портов ввода/вывода. Микроконтроллер имеет 32 кб Flash памяти, 2 кб ОЗУ и 1 кб энергонезависимой памяти данных EEPROM. Плата поддерживает интерфейсы связи UART, SPI и I2C. Плата может работать на частоте 16 МГц.

В качестве сенсора температуры использован датчик LM35.

Bluetooth модуль типа HC-05 — это простой в использовании модуль, реализующий последовательный порт через Bluetooth (SPP), предназначенный для простой реализации Bluetooth соединения в различных приложениях на микроконтроллерах. Последовательный порт через Bluetooth представляет собой протокол связи посредством модуляции Bluetooth V2.0 + EDR (улучшенная скорость передачи данных) со скоростью 3 Мбит/с в диапазоне частот 2,4 ГГц. Модуль использует ядро CSR Bluecore 04 — одночиповую систему Bluetooth основанную на технологии CMOS и использует адаптивную функцию скачкообразной перестройки частоты. Пароль автоматического соединения по умолчанию — 1234 .

3. Термодатчик LM35

LM35 — это специальная прецизионная микросхема, выходное напряжение которой линейно и пропорционально изменению температуры (в градусах по Цельсию). LM35 имеет точность ± 1/4 ℃ при температурах, близких к комнатной, и ± 3/4 ℃ в диапазоне температур от -55 до + 150 ℃ . Масштабный коэффициент составляет 10 10 мВ / ℃ . Вывод Vout датчика температуры LM35 подключен к аналоговому входу A0 Arduino Uno. Микроконтроллер Arduino обрабатывает это напряжение, и программа Temp.ino в MCU, вычисляет эквивалентную температуру. Значение температуры предается модулю Bluetooth HC-05 по последовательному интерфейсу.

Как показано на схеме, контакты RX и TX модуля Bluetooth подключаются к выводам TX и RX Arduino Uno. Модуль Bluetooth HC-05 передает данные о температуре на смартфон через интерфейс Bluetooth. Приложение Android получает эти данные и выводит их на экран телефона. Для Для того, чтобы всё ето заработало, необходимо произвести сопряжения телефона и модуля Bluetooth.

4. Софт

Для прошивки платы Arduino вам потребуется оболочка Arduino IDE software. Это свободно распространяемое программное обеспечение скачивается на официальном сайте по следующей ссылке:
https://www.arduino.cc/en/Main/Software.

1. Скачайте и установите программу Arduino

2. Подключите плату Arduino к одному из USB портов компьютера.

3. Запустите программу Arduino

4. В программе выберите правильный COM потрт, созданный в момент подключения платы Arduino.

5. Загрузите файл с исходными кодами прошивки в программу Arduino (в терминах Ардуино такая программа называется "Sketch" (Скетч), ити "эскиз"), откомпилируйте и загрузите прошивку в контроллер платы.

Читайте также:  Вес швеллера стальной калькулятор

5. Сборка и тестирование

Соберите устройство согласно схеме. Проверка работоспособности очень проста. Установите на смартфона файл TemperatureMonitoring.apk. Подайте питание на передатчик (плату Ардуино и модуль Bluetooth). Перейдите в настройки телефона, в разделе доступных Bluetooth устройств найлите наш модуль и произведите соединение с ним, введя пароль 1234 (телефон отобразит устройство как HC-05). После успешного соединения запустите установленную программу TemperatureMonitoring и оно начнет отображать данные температуры, полученные со стороны передатчика:

Автор проекта Shibendu Mahata, Jadavpur University, Индия.
Источник — журнал Electronics For You (Индия).
Перевод MBS Electronics, 07.2018

Статья расскажет о проекте термометра, основным отличием от похожих проектов будет то, что показания датчика температуры будут передаваться на смартфон по Bluetooth и отображаться на его экране. Такой датчик температуры можно разместить в недоступном месте, например за окошком, в холодильнике. И вы всегда сможете проверить температуру без визуального контакта с этим датчиком. Вы запускаете мобильное приложение, подключаетесь к датчику и на экране Смартфона или планшета контролируете температуру. Сам датчик будет реализован с помощью Arduino. Для реализации передачи значения температуры на смартфон мы используем библиотеку RemoteXY.

Для реализации электрической части устройства термометра вам потребуется любая плата Arduino, термистор 1кОм, резистор 1кОм, желательно так же батарейный отсек для автономного питания Arduino. Термистор подойдет на любое сопротивление от 1 до 100 кОм, но в этом случае сопротивление резистора должно быть аналогичным. Ниже приведена схема подключения всех элементов конструкции. Мы же все это собрали на макетной плате.

Термистор включен в цепь делителя напряжения, во втором плече которого находится постоянное сопротивление. Таким образом, при изменении температуры будет изменяться сопротивление термистора, а значит и одного плеча делителя напряжения. Напряжение делителя будет изменяться в след за температурой. Среднюю точку делителя напряжения мы подключили к аналоговому входу 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. Вы можете подключиться монитором порта (Сервис/Монитор порта) и посмотреть, какие значения передаются. Теперь нам необходимо записать значения АЦП при выбранных эталонных температурах датчика. Первую эталонную температуру вы получаете сразу, если ваш термистор достаточно долго находился в комнате. Для получения второй эталонной температуры приложите термистор к своему телу и подержите его несколько минут. Перепишите значения АЦП, которые передаются в монитор порта при этих температурах. У нас получились следующие значения:

Читайте также:  Микровуаль что это такое

Заходим в онлайн редактор RemoteXY и создаем интерфейс управления. Он состоит из текстового поля, через которое будет передаваться измеряемая температура, и текстовой метки. Длина текстового поля, задаваемая в настройках, определяется максимальной длиной передаваемой строки. В нашем случае это могут быть значения "-40.0" или "100.0". То есть длина строки не может превышать 5 символов. Можно оставить предлагаемую по умолчанию системой длину в 10 символов.

Выбираем в настройках проекта целевую платформу Arduino (SoftwareSerial), library version и формируем исходный код нашего интерфейса. Не забудьте загрузить библиотеку RemoteXY и подключить ее к Arduino IDE (Скетч/Импортировать библиотеку/Add library. ).

Для передачи значения температуры на экран смартфона мы должны получить текущее значение АЦП, получить значение текущей температуры, используя линейную интерполяцию по двум известным точкам, преобразовать полученное значение в строку и записать ее в поле text_1 структуры RemoteXY. Для преобразования числа типа double в строку используем функцию:

dtostrf (floatVar, minStringWidthIncDecimalPoint, numVarsAfterDecimal, charBuf)

Задачу линейной интерполяции мы решим используя простую формулу:

Собрав все воедино мы получаем следующий исходный код — скетч для Arduino:

/* определение режима соединения и подключение библиотеки RemoteXY */
#define REMOTEXY_MODE__SOFTWARESERIAL
#include
#include

/* настройки соединения */
#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 */

/* первое замеренное значение — первая точка */
#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 ();

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);
>

В данном коде вы должны изменить определяемые значения SENS_1_VAL, SENS_1_TMP, SENS_2_VAL, SENS_2_TMP, подставив вместо них ваши, которые вы получили при измерениях значений для калибровки.

Загрузите скетч в вашу Arduino. Загрузите в ваш смартфон или планшет приложение RemoteXY. И можете контролировать температуру находясь на удалении от изготовленного вами датчика, используя Bluetooth.

Ссылка на основную публикацию
Блендер погружной для измельчения мяса
Смешивание коктейлей — это то, с чем может справиться любой блендер — погружной или стационарный. Но когда дело доходит до...
Бесперебойник как инвертор 12 220
ИБП – это очень выгодный прибор. Пока он работает, у пользователя нет проблем с электроснабжением. Но на этом функциональность данного...
Бесперебойник на 3 квт цена
Бесперебойник для дома – это современное и удобное решение на случай отключения электричества, которое обладает рядом преимуществ: работает полностью автоматически...
Блендер поларис разобрать насадку
Электрический блендер – это бытовой прибор широкого назначения, способный измельчать овощи и фрукты до консистенции легкого пюре. Также, применяя дополнение...
Adblock detector