Съдържание:

Bluetooth термометър: 8 стъпки
Bluetooth термометър: 8 стъпки

Видео: Bluetooth термометър: 8 стъпки

Видео: Bluetooth термометър: 8 стъпки
Видео: Bluetooth 8-Channel relay control ( Fan and Light ) board (with Android App) 2024, Ноември
Anonim
Bluetooth термометър
Bluetooth термометър
Bluetooth термометър
Bluetooth термометър
Bluetooth термометър
Bluetooth термометър

Тази инструкция подробно описва изработката на прост 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 конфигурация

Компютърни настройки и Bluetooth конфигурация
Компютърни настройки и 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 - току -що надрасках повърхността, така че оставям този експеримент за вас! Благодаря за четенето! Ако нещата се объркат, просто оставете коментари и аз ще помогна, където мога.

Препоръчано: