Съдържание:
- Стъпка 1: Неща, от които се нуждаете
- Стъпка 2: Схема и електрическа конструкция
- Стъпка 3: Коефициенти на сондата
- Стъпка 4: Фърмуер
- Стъпка 5: Приложение за смартфон
- Стъпка 6: Приложение
- Стъпка 7: Настройки на компютъра и Bluetooth конфигурация
- Стъпка 8: Заключение
Видео: Bluetooth термометър: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Тази инструкция подробно описва изработката на прост 2 -канален термометър, използващ 100K термисторни сонди, Bluetooth модул и смартфон. Bluetooth модулът е LightBlue Bean, който е проектиран да опрости разработката на Bluetooth Low Energy, като използва познатата среда 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 х 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 by Punch Through Designs. Това е Bluetooth модул, програмируем като дъска за разработка на Arduino. Модулът е доста скъп, но премахва много сложност. Те провеждат кампания в Kickstarter за устройство от следващо поколение, което може да си струва да се обмисли.
- 2 x 1/4W 100K резистора, които се използват за разделяне на референтното напрежение за термисторите. Използвах 5% резистори, но резисторите с по -висок толеранс обикновено са по -малко чувствителни към температурата и ще осигурят по -добра производителност. 1% е добра стойност на толерантност за това.
- Поялник и спойка
- Резачки за тел и някои малки дължини от тел за свързване 26 или 28.
Софтуер и фърмуер
- За програмиране на Bean ще ви трябва приложението Bean Loader. Използвал съм Windows, така че всички връзки ще бъдат специфични за Windows. Всичко, от което се нуждаете, за да започнете с Bean, включително спецификата на Arduino, е достъпно от сайта LightBlueBean
- Работната маса EvoThings за приложението за смартфон е достъпна тук. Цялата документация за "започване" е достъпна и там. Той е много добре документиран.
Стъпка 2: Схема и електрическа конструкция
Термисторът е температурно зависим резистор. Сондата Extech има отрицателен температурен коефициент, което означава, че с повишаване на температурата съпротивлението намалява. Стойността на съпротивлението се измерва с обикновена верига, която създава делител на напрежение с термистора в единия крак и неподвижен резистор 100K в другия. Разделеното напрежение се подава в канал за аналогов вход на Bean и се взема проба във фърмуера.
За да изградя веригата, изчистих 3,5 мм аудио жакове от стар счупен компютър. Използва се мултицет за определяне на двете точки на печатната платка, които съответстват на върха и първата лента на сондата. Проводниците бяха запоени към аудио жаковете и към Bean, както е показано на изображенията. Аудио жаковете бяха залепени към прототипната област на Bean с помощта на двустранна лента. Лентата, която използвах, е лепенка за автомобилни марки, която създава много здрава връзка между теглещите се части.
Стъпка 3: Коефициенти на сондата
Колкото и често срещана сондата на Extech, коефициентите на Steinhart-Hart не се публикуват никъде, където мога да намеря. За щастие има онлайн калкулатор, който ще определи коефициентите от 3 температурни измервания, които предоставяте.
Какви фолиа е основната процедура, която използвах, за да стигна до коефициентите. Няма да спечелите точки за стил, но достатъчно добри, за да ви накарат да кажете +/- 1 градус точен (общо изсмукване на палци от моя страна)…. в зависимост от точността на вашия референтен термометър и мултицет, разбира се! Моят мултицет е евтина марка без име, която купих преди много години, когато парите бяха ограничени. Парите са все още тесни и все още работят!
За калибриране се нуждаем от три показания за съпротивление от 3 температури.
- Близо до замръзване чрез добавяне на лед към чаша вода и разбъркване, докато температурата се стабилизира. След като се стабилизира, използвайте мултиметъра, за да запишете съпротивлението на сондата, и еталонния термометър, за да регистрирате температурата.
- Сега поставете сондата в чаша вода със стайна температура, оставете сондата да се изравни с температурата на водата и запишете температурата на вашия референтен термометър и показанието на съпротивлението на вашия многометър.
-
Поставете сондата в чаша гореща вода и запишете съпротивлението.
Температура Съпротивление 5.6 218 хиляди 21.0 97,1 хиляди 38.6 43.2
Целият този процес е малко като ситуация с пиле и яйце, тъй като се нуждаете от калибриран термометър за записване на температурата и калибриран многометър за запис на съпротивлението. Грешките тук ще доведат до неточности в измерванията на температурата, които правите, но за моите цели +/- 1 градус е повече, отколкото ми трябва.
Включването на тези записани стойности в уеб калкулатора дава следното:
Коефициентите (A, B и C) са включени в уравнението на Stenhart-Hart, за да се определи температурата от избраната стойност на съпротивление. Уравнението се дефинира като (източник: wikipedia.com)
Където T = температура в Келвин
A, B и C са коефициентите на уравнението на Steinhart-Hart, които се опитваме да определим R е съпротивлението при температура T
Фърмуерът ще извърши това изчисление.
Стъпка 4: Фърмуер
Напреженията на термистора се пробват, преобразуват в температура и се изпращат чрез Bluetooth към приложението EvoThings, работещо на смартфона.
За да преобразувате напрежението в стойност на съпротивление в Bean, се използва просто линейно уравнение. Извеждането на уравнението е предоставено като изображение. Вместо да преобразуваме извадената стойност в напрежение, тъй като и ADC, и входното напрежение се отнасят до едно и също напрежение на батерията, можем да използваме стойността на ADC вместо напрежението. За 10 -битовия Bean ADC, пълното напрежение на батерията ще доведе до стойност на ADC 1023, така че използваме тази стойност като Vbat. Действителната стойност на разделителния резистор е важно съображение. Измерете действителната стойност на 100K делителния резистор и използвайте измерената стойност в уравнението, за да избегнете ненужен източник на грешка поради толеранса на резистора.
След като се изчисли стойността на съпротивлението, стойността на съпротивлението се преобразува в температура с помощта на уравнението на Steinhart-Hart. Това уравнение е описано подробно в Уикипедия.
Тъй като имаме 2 сонди, имаше смисъл да капсулираме функционалността на сондата в клас C ++.
Класът капсулира коефициентите на уравнението на Steinhart-Hart, стойността на номиналното съпротивление на делителя и аналоговия порт, към който е свързан термисторът. Един метод, температура (), преобразува стойността на ADC в стойност на съпротивление и след това използва уравнението на Steinhart-Hart за определяне на температурата в Kelvin. Обратната стойност изважда абсолютната нула (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 връзка към Bean. Функционалността WakeOnConnect се активира чрез изрично извикване на Bean.enableWakeOnConnect (true) по време на setup ().
Важно е да се отбележи, че фърмуерът ще работи с всяко клиентско приложение BLE. Всичко, което клиентът трябва да направи, е да извади температурните байтове от банката с данни за нулата и да ги събере отново в числа с плаваща запетая за показване или обработка. Най -лесното клиентско приложение за мен беше да използвам EvoThings.
Стъпка 5: Приложение за смартфон
Примерното приложение Evo Things е много близко до това, от което се нуждаех, като бяха необходими само незначителни усилия, за да добавя допълнителните елементи на дисплея, за да завърша 3 -каналното устройство за измерване на температурата.
Инсталацията и основната работа на платформата EvoThings са много добре документирани на уеб сайта на Evo Things, така че няма смисъл да се повтаря това тук. Всичко, което ще покрия тук, са специфичните промени, които направих в техния примерен код, за да покажат 3 канала с информация за температурата, извлечени от областта за данни за надраскване на Bluetooth.
След като инсталирате EvoThings Workbench, тук ще намерите примера Lightblue Bean (на 64 -битови компютри с Windows):
ThisPC / Documents / EvothingsStudio_Win64_1. XX / Примери / Lightblue-bean-basic / app
Можете да замените файловете index.html и app.js с файловете, приложени към тази стъпка. Промените, направени във файла jacascript, извличат 3 -те температурни стойности с плаваща запетая от областта на данните за надраскване и нагоре по вътрешния HTML на новите елементи, създадени в HTML файла.
функция onDataReadSuccess (данни) {
var temperatureData = нов Float32Array (данни);
var bytes = нов Uint8Array (данни);
var температура = 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 файлът е прикачен, за да отпечатате свой собствен. Ако трябваше да го направя отново, щях да направя стените малко по -дебели, отколкото са сега, и да променя дизайна на скобата, която държи дъската на място. Клиповете се счупват много лесно, тъй като стресът е в ниската равнина като 3D отпечатаните слоеве, което е най -слабата ориентация за 3D отпечатани части. Стените са много тънки, така че механизмът за щракване е малко по -слаб. Използвах прозрачна лента, за да държа кутията затворена, защото стените бяха твърде крехки - не елегантни, но работят!
Стъпка 7: Настройки на компютъра и Bluetooth конфигурация
Цикълът на изграждане и качване на фърмуера за Bean се извършва през Bluetooth. В същото време може да има само една активна Bluetooth връзка. Bean Loader се предлага от Windows App Store
Основният цикъл, който използвам за сдвояване и свързване (и ремонт и повторно свързване, когато нещата се объркат) е следният: От контролния панел;/Bluetooth настройки, трябва да видите следния екран:
В крайна сметка прозорците ще докладват „Готови за сдвояване“. В този момент можете да кликнете върху иконата на Bean и след няколко секунди Windows ще ви подкани да въведете парола. Паролата по подразбиране за боба е 00000
Ако паролата е въведена правилно, Windows ще покаже, че устройството е правилно свързано. Трябва да сте в това състояние, за да можете да програмирате Bean.
След като сте сдвоени и свързани, използвайте Bean Loader, за да заредите фърмуера в боба. Открих, че това се проваля по -често и изглежда, че е свързано с близостта до компютъра ми. Преместете Bean наоколо, докато намерите място, което работи за вас. Има моменти, когато нищо няма да работи и Bean Loader ще предложи повторно сдвояване на устройството. Обикновено повторното преминаване през процеса на сдвояване ще възстанови връзката. Трябва да „Премахнете устройството“преди повторно сдвояване.
Операцията Bean Loader е проста и добре документирана на техния сайт. Когато Bean Loader е отворен, изберете елемента от менюто „Program“, за да отворите диалогов прозорец, за да прегледате Hex файла, предоставен в стъпката на фърмуера на тази инструкция.
След като фърмуерът се зареди, затворете Bean Loader, така че връзката между Bean Loader и хардуера на Bean да се прекъсне. Можете да имате само една връзка наведнъж. Сега отворете работната маса на EvoThings и стартирайте клиента EvoThings на смартфона или таблета.
Когато кликнете върху бутона "Изпълни", клиентът на EvoThings автоматично ще зареди html страницата за термометъра. Щракнете върху бутона Connect, за да се свържете с Bean и трябва да видите показаните температури. Успех!
Стъпка 8: Заключение
Ако всичко е изградено и конфигурирано правилно, трябва да имате работеща система, която ще ви позволи да наблюдавате температурите с 2 сонди, както и да следите температурата на сензора BMA250 на дъската за разработка на Bean. Има още какво да се направи с EvoThings - току -що надрасках повърхността, така че оставям този експеримент за вас! Благодаря за четенето! Ако нещата се объркат, просто оставете коментари и аз ще помогна, където мога.
Препоръчано:
Светещ термометър - Витаминизирана градинска светлина (eNANO De Jardin): 6 стъпки
Светещ термометър - Витаминизирана градинска светлина (eNANO De Jardin): Витаминизирана градинска светлина с arduino NANO и температурен сензор BMP180. Нашата скромна градинска светлина ще има тайна мощност: тя ще може да показва външната температура чрез цветен код и мига. Работата му е следната:
Интелигентен инфрачервен термометър IOT (COVID-19): 3 стъпки
Интелигентен инфрачервен термометър IOT (COVID-19): Поради въстанието на COVID през 2019 г. решихме да направим интелигентен инфрачервен термометър IOT, който се свързва с интелигентни устройства, за да показва записаната температура, това е не само по-евтина алтернатива, но и чудесна преподавателски модул за технологии и IOT, който ще
Използвайте смартфон като безконтактен термометър / преносим термометър: 8 стъпки (със снимки)
Използвайте смартфон като безконтактен термометър / преносим термометър: Измерване на телесната температура с безконтактно / безконтактно като термо пистолет. Създадох този проект, защото Thermo Gun сега е много скъп, така че трябва да намеря алтернатива, за да направя DIY. И целта е да се направи с нискобюджетна версия
Инфрачервен термометър на базата на Arduino - Инфрачервен термометър, използващ Arduino: 4 стъпки
Инфрачервен термометър на базата на Arduino | Инфрачервен термометър, използващ Arduino: Здравейте, момчета, в тази инструкция ще направим безконтактен термометър, използващ arduino. Тъй като понякога температурата на течността/твърдото вещество е твърде висока или твърде ниска, а след това е трудно да се установи контакт с нея и да се прочете температура тогава в този пейзаж
RuuviTag и PiZero W и Blinkt! термометър, базиран на Bluetooth маяк: 3 стъпки (със снимки)
RuuviTag и PiZero W и Blinkt! термометър, базиран на Bluetooth маяк: Тази инструкция описва подход за четене на данни за температурата и влажността от RuuviTag, използвайки Bluetooth с Raspberry Pi Zero W и за показване на стойностите в двоични числа на мигач на Pimoroni! pHAT.Иначе казано: как да се изгради държава