В данном проекте мы будет передавать измеренное значение температуры на смартфон при помощи Bluetooth модуля. При помощи устройтсва которое описино ниже можно будет измерять температуру в любом месте, будь это холодильник, комната или же отопления. Для того чтобы измерь значение температуры необходимо соединится с тем или иным датчиком и получить температуру. Температура выводится на экран смартфона под Android.
arduino/peredacha-temperatury-na-smartfon.jpg" alt="Передача температуры на смартфон" width="492" height="371" />
Для связи смартфона с термометром, используется программа которая осуществляет получения и вывод данных на ваш экран. Использовать для контроля температуры, можно не только смартфон, но и планшет.
Устройства взаимодействуют между собой с помощью микроконтроллера Ардуино(Arduino). Настройка дистанционного управления и получение на экран данных, можно с помощью RemoteXY. Она позволяет управлять любыми микроконтроллерами в зоне действия Bluetooth.
Из деталей нам понадобится резистор на 1 кОм, термистор на 1 кОм, но подойдут и другие главное чтобы сопротивление было в пределах от 1 до 100 кОм. Тольк при использовании термисторов с другим сопротивленим неоходимо чтобы резистор с каким он подключается имел аналогичное значение.
Получили делителя напряжения, состоящий их термистора и резистора. Колебания температуры в районе термистора изменит его сопротивление, что повлияет на общее сопротивление делителя. Вывод которого подключен к плате Arduino.
Затем нужно настроить соответствие показаний измерителя температуры и входной величиной отображаемой на экране. Для этого необходимо два эталонных напряжения, например температуры в комнате и вашего тела. Если допустить, что процессы происходящие в термисторе при меняющейся температуры будут линейными, то можно воспользоваться приближенным определением значения заменив ее линейной функцией, способ линейной интерполяции.
Для настройки определяем значение поступающее от АЦП Arduino, при эталонных значениях температуры датчика. Применяем интерфейс Serial и монитор порта, для передачи данных от АЦП к компьютеру. В Arduino загружаем простой скетч, который будет измерять напряжение на аналоговом выводе и в цифровом виде передавать в Serial. Поступающие данные просматриваем через дисплей порта. Переписываем показания АЦП при эталонных температурах получаемых от термистора. Показания будут следующими: Т=25,0 АЦП=580, Т=36,6 АЦП=514.
Первым делом нам необходимо составить код который будет переводить полученное значение с термистора в виде аналогового значения Arduino в понятное нам т.е. в градусы. Для этого нам сначала нужно определить что приходит с Arduino. Это можно посмотреть через Serial монитор. Для этого сначала зальем простой код
void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A5); Serial.println(sensorValue); delay(1); }
Кож самой программы
///////////////////////////////////////////// // RemoteXY include library // ///////////////////////////////////////////// /* определение режима соединения и подключение библиотеки RemoteXY */ #define REMOTEXY_MODE__SOFTWARESERIAL #include <SoftwareSerial.h> #include <RemoteXY.h> /* настройки соединения */ #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, который представляет собой текстовое поле. Именно оно отвечает за передачу полученной температуры. Полученные данные будут ''-40.0'' или ''100.0 '', определяющее количество знаков в строке равным 5. Стандартно длина составляет 10 символов, выбор делается на ваше усмотрение.
Исходный код формируется с помощью платформы Arduino(SoftwareSerial), library version. Обязательно загрузите RemoteXY и подключите к Arduino. После этого подставляем данные полученных температур и АЦП в текстовое поле RemoteXY. Скетч загружается в Arduino, а RemoteXY в мобильное устройство или планшет. Теперь можно следить за измеряемой температурой с помощью Bluetooth.
Использовать это устройство можно абсолютно везде главное чтобы был нормальный заряд батареи смартфона и arduino. К примеру если у вас возникла необходимость измерять температуру в походных условиях то можно использовать зарядку на солнечных батареях, которая зарядит ваши гаджеты где бы вы не находились.
Комментарии