Satura rādītājs:
- 1. darbība: lietas, kas jums būs nepieciešamas
- 2. solis: ķēdes un elektriskā konstrukcija
- 3. darbība: zondes koeficienti
- 4. solis: programmaparatūra
- 5. darbība: viedtālruņa lietotne
- 6. darbība: iežogojums
- 7. darbība: datora iestatījumi un Bluetooth konfigurācija
- 8. solis: Secinājums
Video: Bluetooth termometrs: 8 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šajā pamācībā sīki aprakstīts vienkārša divu kanālu termometra izgatavošana, izmantojot 100K termistoru zondes, Bluetooth moduli un viedtālruni. Bluetooth modulis ir LightBlue Bean, kas tika izstrādāts, lai vienkāršotu Bluetooth Low Energy lietotņu izstrādi, moduļa programmēšanai izmantojot pazīstamo Arduino vidi.
Kādu laiku klupdams, mēģinot izdomāt, kā iegūt datus par temperatūru no Bluetooth moduļa uz manu iPhone, es atradu lietotni ar nosaukumu EvoThings, kas ievērojami vienkāršoja projekta lietotņu izstrādes pusi. Man nav Mac (es zinu šokējoši!), Kas ierobežo manas iespējas izstrādāt iPhone lietotni, un man nav laika atšifrēt jaunos Microsoft rīkus, kas acīmredzami atbalsta iOS un Android starpplatformu izstrādi. Esmu izveidojis vairākas HTML5 stila lietotnes, taču vienīgais veids, kā iegūt Bluetooth datus, ir Cordova spraudņi, kas izskatījās vairāk kā izaicinājums, nekā man bija laiks. EvoThings nodrošina ļoti viegli lietojamu rīku komplektu, kas Bluetooth-iPhone izaicinājumu pārvērta par kūku. Un man garšo kūka!
Kopumā es atklāju, ka Lightblue Bean un EvoThings kombinācija ir ļoti praktisks risinājums ar mazām investīcijām.
1. darbība: lietas, kas jums būs nepieciešamas
Vienam kanālam es izmantoju tirdzniecībā pieejamu termistora zondi, jo vēlējos, lai termistors būtu noslēgts, lai to iegremdētu šķidrumos. Otrajam kanālam es izveidoju pamata zondi no termistora, apmēram 26 gabarīta stieples un 3,5 mm austiņu spraudņa. Jūs varat brīvi izmantot jebkuru vēlamo termistoru, un jūs varat izgatavot savas zondes, piemēram, no siltumvadošas epoksīda un plastmasas salmiņiem/kafijas maisītājiem. Tālāk es izmantoju to - tas nav paredzēts kā normatīvs saraksts!
Aparatūra
- 1 x 100K termistora zondes. Modelis Extech TP890. Tie parasti ir pieejami ebay un amazon.
- 2 x 2,5 mm stereo ligzdas, kas atbilst 2,5 mm spraudnim uz Extech zondēm. Es no vecā datora izņēmu 3,5 mm ligzdas, tāpēc es nogriezu Extech zondes kontaktdakšu un nomainīju to ar 3,5 mm kontaktdakšām. Jums vajadzētu izvairīties no tā, vienkārši izmantojiet 2,5 mm ligzdas vai izmantojiet no 2,5 mm līdz 3,5 mm stereo adaptera kontaktdakšu.
- 100K termistora lodīte plus 26 gabarīta vads plus 3,5 mm stereo spraudnis, ja vēlaties izveidot savu zondi. Ja nē, iegādājieties otru Extech zondi!
- 1 x gaiši zila pupiņa ar Punch Through Designs. Šis ir Bluetooth modulis, kas programmējams kā Arduino izstrādes dēlis. Modulis ir diezgan dārgs, taču tas novērš daudz sarežģītības. Viņi vada Kickstarter kampaņu nākamās paaudzes ierīcei, par ko varētu būt vērts padomāt.
- 2 x 1/4W 100K rezistori, ko izmanto, lai sadalītu atsauces spriegumu termistoriem. Es izmantoju 5% rezistorus, bet lielākas pielaides rezistori parasti ir mazāk jutīgi pret temperatūru un nodrošinās labāku veiktspēju. 1% tam ir laba pielaides vērtība.
- Lodāmurs un lodēt
- Stiepļu griezēji un daži nelieli 26 vai 28 gabarītu savienojuma stieples garumi.
Programmatūra un programmaparatūra
- Pupas programmēšanai jums būs nepieciešama lietotne Pupiņu iekrāvējs. Esmu izmantojis logus, tāpēc visas saites būs specifiskas Windows. Viss, kas jums nepieciešams, lai sāktu darbu ar Bean, ieskaitot Arduino specifiku, ir pieejams vietnē LightBlueBean
- EvoThings darbagalds viedtālruņa lietotnei ir pieejams šeit. Tur ir pieejama arī visa “darba sākšanas” dokumentācija. Tas ir ļoti labi dokumentēts.
2. solis: ķēdes un elektriskā konstrukcija
Termistors ir no temperatūras atkarīgs rezistors. Extech zondei ir negatīvs temperatūras koeficients, kas nozīmē, ka, paaugstinoties temperatūrai, pretestība samazinās. Pretestības vērtību mēra ar vienkāršu shēmu, kas izveido sprieguma dalītāju ar termistoru vienā kājā un fiksētu 100K rezistoru otrā. Sadalītais spriegums tiek ievadīts Bean analogās ieejas kanālā un tiek atlasīts programmaparatūrā.
Lai izveidotu ķēdi, es no vecā salauztā datora izņēmu 3,5 mm audio ligzdas. Lai noteiktu divus PCB punktus, kas atbilst zondes galam un pirmajai joslai, tika izmantots multimetrs. Vadi tika pielodēti pie audio ligzdām un pie pupiņas, kā parādīts attēlos. Audio ligzdas tika pielīmētas pie pupiņu prototipa zonas, izmantojot divpusēju lenti. Lente, kuru izmantoju, ir automobiļu klases uzlīmes lente, kas rada ļoti spēcīgu saikni starp vilkšanas detaļām.
3. darbība: zondes koeficienti
Tikpat izplatīta kā Extech zonde, Steinhart-Hart koeficienti netiek publicēti nekur, ko es varētu atrast. Par laimi ir tiešsaistes kalkulators, kas noteiks koeficientus no 3 jūsu norādītajiem temperatūras mērījumiem.
Kādas pamatnes ir pamata procedūra, ko izmantoju, lai sasniegtu koeficientus. Par stilu nenopelnīsiet nevienu punktu, bet pietiekami labi, lai jūs varētu pateikt +/- 1 grādu precizitāti (pilnīgs īkšķis no manas puses)…. protams, atkarībā no jūsu atsauces termometra un multimetra precizitātes! Mans multimetrs ir lēta zīmola vienība bez nosaukuma, kuru es nopirku pirms daudziem gadiem, kad nauda bija ierobežota. Nauda joprojām ir ierobežota, un tā joprojām darbojas!
Lai kalibrētu, mums ir nepieciešami trīs pretestības rādījumi no 3 temperatūrām.
- Tuvu sasalšanai, pievienojot ledus glāzei ūdens un maisot, līdz temperatūra stabilizējas. Kad stabilizējies, izmantojiet multimetru, lai reģistrētu zondes pretestību, un atsauces termometru, lai reģistrētu temperatūru.
- Tagad ievietojiet zondi istabas temperatūras ūdens glāzē, ļaujiet zondei izlīdzināties ar ūdens temperatūru un ierakstiet temperatūru savā atsauces termometrā un pretestības rādījumu multimetrā.
-
Ievietojiet zondi karstā ūdens glāzē un reģistrējiet pretestību.
Temperatūra Pretestība 5.6 218 tūkstoši 21.0 97,1 tūkst 38.6 43.2
Viss šis process ir nedaudz vistas un olu situācija, jo jums ir nepieciešams kalibrēts termometrs, lai reģistrētu temperatūru, un kalibrēts daudzmetrs, lai reģistrētu pretestību. Šeit pieļautās kļūdas radīs neprecizitāti jūsu veiktajos temperatūras mērījumos, bet manos nolūkos +/- 1 grāds ir vairāk nekā man nepieciešams.
Pievienojot šīs ierakstītās vērtības tīmekļa kalkulatorā, iegūstat sekojošo:
Koeficienti (A, B un C) ir pievienoti Stenhart-Hart vienādojumam, lai noteiktu temperatūru no parauga pretestības vērtības. Vienādojums ir definēts kā (avots: wikipedia.com)
Kur T = temperatūra Kelvinos
A, B un C ir Steinhart-Hart vienādojuma koeficienti, kurus mēs cenšamies noteikt R ir pretestība temperatūrā T
Programmatūra veiks šo aprēķinu.
4. solis: programmaparatūra
Termistoru spriegumi tiek ņemti no parauga, pārvērsti temperatūrā un, izmantojot Bluetooth, tiek nosūtīti uz lietotni EvoThings, kas darbojas viedtālrunī.
Lai pārveidotu spriegumu par pretestības vērtību pupiņās, tiek izmantots vienkāršs lineārs vienādojums. Vienādojuma atvasinājums tiek sniegts kā attēls. Tā vietā, lai pārvērstu izlases vērtību spriegumā, jo gan ADC, gan ieejas spriegums ir saistīti ar to pašu akumulatora spriegumu, sprieguma vietā mēs varam izmantot ADC vērtību. 10 bitu Bean ADC gadījumā pilna akumulatora sprieguma rezultātā ADC vērtība būs 1023, tāpēc mēs izmantojam šo vērtību kā Vbat. Sadalītāja rezistora faktiskā vērtība ir svarīgs apsvērums. Izmēriet 100K dalītāja rezistora faktisko vērtību un izmantojiet izmērīto vērtību vienādojumā, lai izvairītos no nevajadzīga kļūdu avota rezistora pielaides dēļ.
Kad pretestības vērtība ir aprēķināta, pretestības vērtība tiek pārvērsta temperatūrā, izmantojot Steinhart-Hart vienādojumu. Šis vienādojums ir sīki aprakstīts Vikipēdijā.
Tā kā mums ir 2 zondes, bija jēga zondes funkcionalitāti iekapsulēt C ++ klasē.
Klase ietver Steinhart-Hart vienādojuma koeficientus, dalītāja nominālo pretestības vērtību un analogo portu, kuram ir pievienots termistors. Viena metode, temperatūra (), pārveido ADC vērtību pretestības vērtībā un pēc tam izmanto Šteinharta-Hārta vienādojumu, lai noteiktu temperatūru Kelvinos. Atgriešanās vērtība no aprēķinātās temperatūras atņem absolūto nulli (273,15K), lai iegūtu vērtību pēc Celsija.
Gaiši zilās pupiņas jauda ir acīmredzama faktā, ka visas Bluetooth funkcijas būtībā ir ieviestas vienā koda rindā, kas parauga temperatūras vērtības raksta Bluetooth atmiņas nesaskrāpētajā datu apgabalā.
Bean.setScratchData (TEMPERATURE_SCRATCH_IDX, (uint8_t*) & temperatūra [0], 12);
Katru parauga temperatūras vērtību attēlo pludiņš, kas aizņem 4 baitus. Skrāpējumu datu apgabalā var būt 20 baiti. Mēs izmantojam tikai 12 no tiem. Ir 5 nulles datu apgabali, lai jūs varētu pārsūtīt līdz 100 baitiem datu, izmantojot nulles datus.
Notikumu pamatplūsma ir šāda:
- Pārbaudiet, vai mums ir Bluetooth savienojums
- Ja tā, izlasiet temperatūru un ierakstiet to datu laukā
- Gulēt 200 ms un atkārtot ciklu.
Ja nav izveidots savienojums, programmaparatūra ATMEGA328P mikroshēmu ilgstoši iemidzina. Miega cikls ir svarīgs enerģijas taupīšanai. ATMEGA328P mikroshēma pāriet mazjaudas režīmā un paliek tur, līdz to pārtrauc LBM313 Bluetooth modulis. LBM313 radīs pārtraukumu, lai pamodinātu ATMEGA328P pieprasītā miega perioda beigās vai ikreiz, kad tiek izveidots Bluetooth savienojums ar pupiņu. WakeOnConnect funkcionalitāti iespējo, iestatīšanas laikā () nepārprotami izsaucot Bean.enableWakeOnConnect (true).
Ir svarīgi atzīmēt, ka programmaparatūra darbosies ar jebkuru BLE klienta lietojumprogrammu. Viss, kas klientam ir jādara, ir noņemt temperatūras baitus no nulles datu bankas un salikt tos peldošā komata skaitļos, lai tos parādītu vai apstrādātu. Vienkāršākā klienta lietotne man bija izmantot EvoThings.
5. darbība: viedtālruņa lietotne
Evo Things parauga lietotne ir ļoti tuvu tam, kas man bija vajadzīgs, tikai ar nelielu piepūli, lai pievienotu papildu displeja elementus, lai pabeigtu 3 kanālu temperatūras mērīšanas ierīci.
EvoThings platformas uzstādīšana un pamatdarbība ir ļoti labi dokumentēta Evo Things tīmekļa vietnē, tāpēc nav nekādas vērtības to atkārtot šeit. Šeit es apskatīšu tikai konkrētās izmaiņas, ko es veicu to parauga kodā, lai parādītu 3 temperatūras informācijas kanālus, kas iegūti no Bluetooth nulles datu apgabala.
Pēc EvoThings Workbench instalēšanas Lightblue Bean piemēru atradīsit šeit (Windows 64 bitu datoros):
ŠīPC / Documents / EvothingsStudio_Win64_1. XX / Piemēri / Lightblue-bean-basic / app
Failus index.html un app.js varat aizstāt ar failiem, kas pievienoti šai darbībai. Jacascript failā veiktās izmaiņas izvelk 3 peldošā komata temperatūras vērtības, kas veido datu laukumu un augšup HTML failā izveidoto jauno elementu iekšējo HTML.
function onDataReadSuccess (dati) {
var temperatūraData = jauns Float32Array (dati);
var baiti = jauns Uint8Array (dati);
var temperatūra = temperatūraData [0];
console.log ('Temperatūras rādījumi:' + temperatūra + 'C');
document.getElementById ('temperatureAmbient'). internalHTML = temperatureData [0].toFixed (2) + "C °";
document.getElementById ('temperatūra1'). internalHTML = temperatureData [1].toFixed (2) + "C °";
document.getElementById ('temperatūra2'). internalHTML = temperatureData [2].toFixed (2) + "C °";
}
6. darbība: iežogojums
Korpuss ir vienkārša 3D drukāta kaste. Lai izveidotu dizainu, es izmantoju Cubify Design, taču pietiks ar jebkuru 3D modelēšanas programmu. STL fails ir pievienots, lai jūs varētu izdrukāt savu. Ja man tas būtu jādara vairāk, es padarītu sienas nedaudz biezākas, nekā tās ir tagad, un mainītu skavas dizainu, kas tur plāksni vietā. Skavas ļoti viegli salūst, jo 3D drukātajiem slāņiem ir smae plakne, kas ir vājākā orientācija 3D drukātajām daļām. Sienas ir ļoti plānas, tāpēc fiksācijas mehānisms ir nedaudz vājā pusē. Es izmantoju caurspīdīgu lenti, lai kaste būtu aizvērta, jo sienas bija pārāk vājas - ne elegantas, bet darbojas!
7. darbība: datora iestatījumi un Bluetooth konfigurācija
Pupiņas programmaparatūras veidošanas un augšupielādes cikls tiek veikts, izmantojot Bluetooth. Vienlaikus var būt tikai viens aktīvs Bluetooth savienojums. Pupiņu iekrāvējs ir pieejams vietnē Windows App Store
Pamata cikls, ko izmantoju, lai savienotu pārī un izveidotu savienojumu (un labotu un atkārtoti izveidotu savienojumu, ja kaut kas noiet greizi), ir šāds: Vadības panelī;/Bluetooth iestatījumi, jums vajadzētu redzēt šādu ekrānu:
Galu galā logi parādīs ziņojumu "Gatavs savienošanai pārī". Šajā brīdī jūs varat noklikšķināt uz pupiņu ikonas, un pēc dažām sekundēm Windows piedāvās ievadīt piekļuves kodu. Pupiņas noklusējuma piekļuves kods ir 00000
Ja piekļuves kods ir ievadīts pareizi, sistēma Windows parādīs, ka ierīce ir pareizi pievienota. Jums ir jābūt šajā stāvoklī, lai varētu programmēt pupiņu.
Kad esat izveidojis pārī savienojumu un izveidojis savienojumu, izmantojiet pupiņu iekrāvēju, lai pupiņā ielādētu programmaparatūru. Es atklāju, ka tas biežāk neizdodas, un šķiet, ka tas ir saistīts ar datora tuvumu. Pārvietojiet pupiņu, līdz atrodat sev piemērotu vietu. Ir reizes, kad nekas nedarbosies, un pupiņu iekrāvējs ieteiks pārī savienot ierīci. Parasti atkārtota savienošanas procesa atjaunošana atjaunos savienojumu. Pirms pārī savienošanas pārī ir jāizņem “Ierīce”.
Pupiņu iekrāvēja darbība ir vienkārša un labi dokumentēta viņu vietnē. Kad pupiņu iekrāvējs ir atvērts, izvēlieties izvēlnes vienumu "Programma", lai atvērtu dialoglodziņu, lai pārlūkotu Hex failu, kas norādīts šīs instrukcijas programmaparatūras solī.
Kad programmaparatūra ir ielādēta, aizveriet pupiņu iekrāvēju, lai pārtrauktu savienojumu starp pupiņu iekrāvēju un pupiņu aparatūru. Vienlaikus var izveidot tikai vienu savienojumu. Tagad atveriet EvoThings darbagaldu un viedtālrunī vai planšetdatorā palaidiet EvoThings klientu.
Noklikšķinot uz pogas "Palaist", EvoThings klients automātiski ielādēs termometra html lapu. Noklikšķiniet uz pogas Savienot, lai izveidotu savienojumu ar pupiņu, un jums vajadzētu redzēt temperatūru. Veiksmi!
8. solis: Secinājums
Ja viss ir pareizi uzbūvēts un konfigurēts, jums vajadzētu būt darba sistēmai, kas ļaus jums kontrolēt temperatūru ar 2 zondēm, kā arī uzraudzīt BMA250 sensora temperatūru uz pupiņu izstrādes paneļa. Ar EvoThings var paveikt vairāk - es tikko saskrāpēju virsmu, tāpēc atstāju šo eksperimentu jums! Paldies, ka izlasījāt! Ja kaut kas noiet greizi, vienkārši atstājiet komentārus, un es palīdzēšu, kur varu.
Ieteicams:
Gaismas termometrs - vitaminizēta dārza gaisma (eNANO De Jardin): 6 soļi
Gaismas termometrs - vitaminizēts dārza apgaismojums (eNANO De Jardin): vitaminizēts dārza apgaismojums ar arduino NANO un temperatūras sensoru BMP180. Mūsu pazemīgajai dārza gaismai būs slepena jauda: tā varēs norādīt āra temperatūru, izmantojot krāsu kodu un mirgo. Tās darbība ir šāda: tā ir
IOT viedais infrasarkanais termometrs (COVID-19): 3 soļi
IOT viedais infrasarkanais termometrs (COVID-19): 2019. mācību modulis tehnoloģijām un IOT, kas
Nixie termometrs un higrometrs ar Arduino Nano: 6 soļi
Nixie termometrs un higrometrs ar Arduino Nano: Kā pavadīt laiku, izklaidējoties un daudz mācoties, izmantojot pastiprinātāja pārveidotājus, viena stieples sensorus, Nixie lampas, Arduino kodēšanu. Šajā periodā mums visiem tiek lūgts palikt mājās, lai pasargātu sevi un citus no COVID-19. Šis ir labākais laiks, lai izmantotu
Arduino balstīts bezkontakta infrasarkanais termometrs - Uz IR balstīts termometrs, izmantojot Arduino: 4 soļi
Arduino balstīts bezkontakta infrasarkanais termometrs | Uz IR balstīts termometrs, izmantojot Arduino: Sveiki puiši, šajā instrukcijā mēs izgatavosim bezkontakta termometru, izmantojot arduino. Tā kā dažreiz šķidruma/cietās vielas temperatūra ir pārāk augsta vai zema, un tad ir grūti ar to sazināties un izlasīt temperatūra tādā situācijā
RuuviTag un PiZero W un Blinkt! termometrs uz Bluetooth bākas: 3 soļi (ar attēliem)
RuuviTag un PiZero W un Blinkt! termometrs, kas balstīts uz Bluetooth bāku: šajā pamācībā aprakstīta pieeja temperatūras un mitruma datu nolasīšanai no RuuviTag, izmantojot Bluetooth ar Raspberry Pi Zero W, un vērtību parādīšanai bināros skaitļos uz Pimoroni mirgošanas! pHAT. Vai arī īsumā: kā izveidot valsti