Cuprins:

Termometru Bluetooth: 8 pași
Termometru Bluetooth: 8 pași

Video: Termometru Bluetooth: 8 pași

Video: Termometru Bluetooth: 8 pași
Video: Original X8 Ultra Smart Watch Series 8 NFC Body Temperature Monitor Bluetooth Call Calculator 2024, Iulie
Anonim
Termometru Bluetooth
Termometru Bluetooth
Termometru Bluetooth
Termometru Bluetooth
Termometru Bluetooth
Termometru Bluetooth

Acest instructabil detalii despre realizarea unui termometru simplu pe 2 canale folosind sonde de termistor 100K, un modul Bluetooth și smartphone. Modulul Bluetooth este un LightBlue Bean care a fost conceput pentru a simplifica dezvoltarea aplicației Bluetooth Low Energy folosind mediul familiar Arduino pentru programarea modulului.

După ce m-am împiedicat o vreme să încerc să dau seama cum să obțin datele de temperatură de pe modulul Bluetooth pe iPhone-ul meu, am găsit o aplicație numită EvoThings care a simplificat considerabil partea de dezvoltare a aplicației a proiectului. Nu am un Mac (șocant știu!) Care îmi limitează capacitatea de a dezvolta o aplicație pentru iPhone și nu am timp să descifrez noile instrumente Microsoft care, evident, sprijină dezvoltarea pe mai multe platforme pentru iOS și Android. Am făcut mai multe aplicații în stil HTML5, dar singura modalitate de a accesa datele Bluetooth este prin intermediul pluginurilor pentru Cordova, care păreau a fi o provocare mai mare decât am avut timp. EvoThings oferă un set de instrumente foarte ușor de utilizat care a transformat provocarea Bluetooth-iPhone într-un tort. Și îmi place tortul!

În general, am găsit că combinația Lightblue Bean și EvoThings este o soluție foarte practică, cu investiții de timp reduse.

Pasul 1: Lucruri de care ai nevoie

Lucruri de care ai nevoie
Lucruri de care ai nevoie
Lucruri de care ai nevoie
Lucruri de care ai nevoie
Lucruri de care ai nevoie
Lucruri de care ai nevoie

Am folosit o sondă de termistor disponibilă comercial pentru un canal, deoarece am vrut termistorul sigilat pentru imersiune în lichide. Pentru cel de-al doilea canal, am realizat o sondă de bază dintr-un termistor, câteva sârme de calibru 26 și o mufă pentru căști de 3,5 mm. Sunteți liber să utilizați orice termistor doriți și vă puteți realiza propriile sonde din epoxidice conductoare termic și paie de plastic / agitatoare de cafea, de exemplu. Ceea ce urmează este ceea ce am folosit - nu intenționează să fie o listă prescriptivă!

Hardware

  • 1 x sonde termistor 100K. Model Extech TP890. Acestea sunt disponibile în mod obișnuit pe eBay și Amazon.
  • 2 mufe stereo de 2,5 mm care se potrivesc cu mufa de 2,5 mm de pe sondele Extech. Am scos mufele de 3,5 mm de pe un computer vechi, așa că am întrerupt sonda Extech și am înlocuit-o cu mufe de 3,5 mm. Ar trebui să evitați acest lucru, doar să folosiți mufe de 2,5 mm sau să utilizați un adaptor stereo de 2,5 mm până la 3,5 mm.
  • Margină de termistor 100K plus sârmă de calibru 26 plus mufă stereo de 3,5 mm dacă doriți să vă creați propria sondă. Dacă nu, cumpărați o a doua sondă Extech!
  • 1 x Lightblue Bean de la Punch Through Designs. Acesta este modulul Bluetooth programabil ca placă de dezvoltare Arduino. Modulul este cam scump, dar elimină multă complexitate. Ei desfășoară o campanie Kickstarter pentru dispozitivul de nouă generație, care ar putea fi demn de luat în considerare.
  • 2 rezistențe 1 / 4W 100K care sunt utilizate pentru a împărți tensiunea de referință pentru termistori. Am folosit rezistențe de 5%, dar rezistențele cu toleranță mai mare sunt în general mai puțin sensibile la temperatură și vor oferi performanțe mai bune. 1% este o bună valoare de toleranță pentru aceasta.
  • Fier de lipit și lipit
  • Tăietoare de sârmă și unele lungimi mici de sârmă de conectare de calibru 26 sau 28.

Software și firmware

  • Pentru programarea Bean, veți avea nevoie de aplicația Bean Loader. Am folosit Windows, astfel încât toate linkurile vor fi specifice Windows. Tot ce aveți nevoie pentru a începe să utilizați Bean, inclusiv specificul Arduino, este disponibil de pe site-ul LightBlueBean
  • Bancul de lucru EvoThings pentru aplicația pentru smartphone este disponibil aici. Toată documentația „de început” este disponibilă și acolo. Este foarte bine documentat.

Pasul 2: Circuitul și construcția electrică

Circuitul și construcția electrică
Circuitul și construcția electrică
Circuitul și construcția electrică
Circuitul și construcția electrică
Circuitul și construcția electrică
Circuitul și construcția electrică

Un termistor este un rezistor dependent de temperatură. Sonda Extech are un coeficient de temperatură negativ, ceea ce înseamnă că, pe măsură ce temperatura crește, rezistența scade. Valoarea rezistenței este măsurată cu un circuit simplu care creează un divizor de tensiune cu termistorul într-un picior și un rezistor fix de 100K în celălalt. Tensiunea divizată este alimentată într-un canal de intrare analogică pe Bean și eșantionată în firmware.

Pentru a construi circuitul, am eliminat mufele audio de 3,5 mm de pe un computer vechi stricat. Un multimetru a fost folosit pentru a determina cele două puncte de pe PCB care corespundeau vârfului și primei benzi a sondei. Sârmele au fost lipite la mufele audio și la Bean așa cum se arată în imagini. Mufele audio au fost lipite de zona prototipului Bean folosind bandă dublă. Banda pe care am folosit-o este o bandă de autocolant de calitate auto, care creează o legătură foarte puternică între piesele de remorcare.

Pasul 3: Coeficienții sondei

Coeficienții sondei
Coeficienții sondei

Pe cât de comună este sonda Extech, coeficienții Steinhart-Hart nu sunt publicați nicăieri pe care să-i găsesc. Din fericire există un calculator online care va determina coeficienții din 3 măsurători de temperatură pe care le furnizați.

Ce urmări este procedura de bază pe care am folosit-o pentru a ajunge la coeficienți. Nu veți câștiga niciun punct pentru stil, dar suficient de bun pentru a vă ajuta să spuneți +/- 1 grad de precizie (un deget total de partea mea) … în funcție de precizia termometrului de referință și a multimetrului, desigur! Multimetrul meu este o unitate ieftină fără nume pe care am cumpărat-o acum mulți ani, când banii erau strânși. Banii sunt încă strânși și încă funcționează!

Pentru calibrare, avem nevoie de trei citiri de rezistență de la 3 temperaturi.

  • Aproape de îngheț, adăugând gheață la un pahar de apă și agitând până când temperatura se stabilizează. Odată stabilizat, utilizați multimetrul pentru a înregistra rezistența sondei și termometrul de referință pentru a înregistra temperatura.
  • Acum puneți sonda într-un pahar cu apă la temperatura camerei, lăsați sonda să se egalizeze cu temperatura apei și înregistrați temperatura pe termometrul de referință și citirea rezistenței pe multimetru.
  • Așezați sonda într-un pahar cu apă fierbinte și înregistrați rezistența.

    Temperatura Rezistenţă
    5.6 218K
    21.0 97,1K
    38.6 43.2

Întregul proces este o situație de pui și ouă, deoarece aveți nevoie de un termometru calibrat pentru a înregistra temperatura și de un multimetru calibrat pentru a înregistra rezistența. Erorile de aici vor avea ca rezultat inexactitatea măsurătorilor de temperatură pe care le faceți, dar în scopurile mele, +/- 1 grad este mai mult decât am nevoie.

Conectarea acestor valori înregistrate la calculatorul web produce următoarele:

Imagine
Imagine

Coeficienții (A, B și C) sunt conectați la ecuația Stenhart-Hart pentru a descuraja temperatura de la o valoare de rezistență eșantionată. Ecuația este definită ca (sursă: wikipedia.com)

Imagine
Imagine

Unde T = Temperatura în Kelvin

A, B și C sunt coeficienții de ecuație Steinhart-Hart pe care încercăm să îi determinăm R este rezistența la temperatura T

Firmware-ul va efectua acest calcul.

Pasul 4: Firmware

Firmware
Firmware
Firmware
Firmware

Tensiunile termistorului sunt prelevate, convertite la temperatură și trimise prin Bluetooth către aplicația EvoThings care rulează pe smartphone.

Pentru a converti tensiunea la o valoare de rezistență în interiorul Bean, se utilizează o ecuație liniară simplă. Derivarea ecuației este furnizată ca imagine. În loc să convertim valoarea eșantionată în tensiune, deoarece atât ADC cât și tensiunea de intrare sunt referite la aceeași tensiune a bateriei, putem folosi valoarea ADC în locul tensiunii. Pentru ADC Bean de 10 biți, tensiunea completă a bateriei va avea ca rezultat o valoare ADC de 1023, așa că vom folosi această valoare ca Vbat. Valoarea reală a rezistorului divizor este un aspect important. Măsurați valoarea reală a rezistorului de divizare 100K și utilizați valoarea măsurată în ecuație pentru a evita o sursă inutilă de eroare din cauza toleranței rezistorului.

Odată ce valoarea rezistenței este calculată, valoarea rezistenței convertită la temperatură utilizând ecuația Steinhart-Hart. Această ecuație este descrisă în detaliu pe Wikipedia.

Deoarece avem 2 probe, a avut sens să încapsulăm funcționalitatea sondei într-o clasă C ++.

Clasa încapsulează coeficienții de ecuație Steinhart-Hart, valoarea nominală a rezistenței divizorului și portul analogic la care este conectat termistorul. O singură metodă, temperature (), convertește valoarea ADC într-o valoare de rezistență și apoi folosește ecuația Steinhart-Hart pentru a determina temperatura în Kelvin. Valoarea returnată scade zero absolut (273,15 K) din temperatura calculată pentru a furniza valoarea în grade Celsius.

Puterea Lightblue Bean este evidentă prin faptul că toate funcționalitățile Bluetooth sunt implementate în esență într-o linie de cod care scrie valorile de temperatură eșantionate într-o zonă de date zero pe memoria Bluetooth.

Bean.setScratchData (TEMPERATURE_SCRATCH_IDX, (uint8_t *) și temperatura [0], 12);

Fiecare valoare de temperatură eșantionată este reprezentată de un plutitor care ocupă 4 octeți. Zona de date zero poate conține 20 de octeți. Folosim doar 12 dintre ele. Există 5 zone de date zero, astfel încât să puteți transfera până la 100 de octeți de date folosind date zero.

Fluxul de bază al evenimentelor este:

  • Verificați dacă avem o conexiune Bluetooth
  • Dacă da, probați temperaturile și scrieți-le în zona de date de zgârieturi
  • Adormiți 200 ms și repetați ciclul.

Dacă nu este conectat, firmware-ul pune cipul ATMEGA328P în repaus pentru o lungă perioadă de timp. Ciclul somnului este important pentru conservarea energiei. Cipul ATMEGA328P intră în modul de consum redus de energie și rămâne acolo până când este întrerupt de modulul Bluetooth LBM313. LBM313 va genera o întrerupere pentru a trezi ATMEGA328P la sfârșitul perioadei de somn solicitate sau ori de câte ori se face o conexiune Bluetooth la Bean. Funcționalitatea WakeOnConnect este activată apelând explicit Bean.enableWakeOnConnect (adevărat) în timpul configurării ().

Este important să rețineți că firmware-ul va funcționa cu orice aplicație client BLE. Tot ceea ce trebuie să facă clientul este să scoată octeții de temperatură din banca de date zero și să le reasambleze în numere în virgulă mobilă pentru afișare sau procesare. Cea mai ușoară aplicație client pentru mine a fost să folosesc EvoThings.

Pasul 5: aplicația pentru smartphone

Aplicație pentru smartphone
Aplicație pentru smartphone

Aplicația eșantion Evo Things este foarte aproape de ceea ce aveam nevoie, doar cu un efort minor necesar pentru a adăuga elemente de afișare suplimentare pentru a finaliza dispozitivul de măsurare a temperaturii pe 3 canale.

Instalarea și funcționarea de bază a platformei EvoThings sunt foarte bine documentate pe site-ul web Evo Things, deci nu există nicio valoare în a repeta acest lucru aici. Tot ce voi acoperi aici sunt modificările specifice pe care le-am făcut la codul de eșantionare pentru a afișa 3 canale de informații despre temperatură, extrase din zona de date Bluetooth zero.

După ce ați instalat EvoThings Workbench, veți găsi exemplul Lightblue Bean aici (pe computerele Windows pe 64 de biți):

ThisPC / Documents / EvothingsStudio_Win64_1. XX / Example / Lightblue-bean-basic / app

Puteți înlocui fișierele index.html și app.js cu fișierele atașate la acest pas. Modificările aduse fișierului jacascript extrag cele 3 valori ale temperaturii în virgulă mobilă din zona de date de zgârieturi și în sus HTML-ul interior al elementelor noi create în fișierul HTML.

funcția onDataReadSuccess (date) {

var temperatureData = nou Float32Array (date);

var octeți = nou Uint8Array (date);

var temperature = temperatureData [0];

console.log ('Citire temperatură:' + temperatură + '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 °";

}

Pasul 6: incintă

Incintă
Incintă
Incintă
Incintă
Incintă
Incintă
Incintă
Incintă

Carcasa este o cutie simplă tipărită 3D. Am folosit Cubify Design pentru a crea designul, dar orice program de modelare 3D va fi suficient. Fișierul STL este atașat pentru ca dvs. să îl tipăriți pe al dvs. Dacă ar fi trebuit să o fac, aș face pereții puțin mai groși decât sunt acum și aș schimba designul clemei care ține placa în loc. Clemele se rup foarte ușor deoarece stresul se află în planul smae ca straturi imprimate 3D, care este cea mai slabă orientare pentru piesele imprimate 3D. Pereții sunt foarte subțiri, astfel încât mecanismul de fixare este puțin pe partea slabă. Am folosit bandă transparentă pentru a păstra cutia închisă, deoarece pereții erau prea slabi - nu eleganți, dar funcționează!

Pasul 7: Setări PC și Configurare Bluetooth

Setări PC și configurație Bluetooth
Setări PC și configurație Bluetooth

Ciclul de construire și încărcare a firmware-ului pentru Bean se face prin Bluetooth. Nu poate exista decât o singură conexiune Bluetooth activă la un moment dat. Bean Loader este disponibil din Windows App Store

Ciclul de bază pe care îl folosesc pentru asocierea și conectarea (și repararea și reconectarea când lucrurile merg prost) este următorul: Din panoul de control; / Setări Bluetooth, ar trebui să vedeți următorul ecran:

Imagine
Imagine

În cele din urmă, ferestrele vor raporta „Gata de asociere”. În acest moment puteți face clic pe pictograma Bean și, după câteva secunde, Windows vă va solicita să introduceți o parolă. Parola implicită pentru bean este 00000

Imagine
Imagine

Dacă parola este introdusă corect, Windows va arăta că dispozitivul este conectat corect. Trebuie să vă aflați în această stare pentru a putea programa Bean.

Imagine
Imagine

Odată ce sunteți asociat și conectat, utilizați încărcătorul de fasole pentru a încărca firmware-ul pe fasole. Am constatat că acest lucru eșuează de cele mai multe ori și părea să fie legat de apropierea de computerul meu. Mutați Bean până când găsiți o locație care funcționează pentru dvs. Există momente în care nimic nu va funcționa și încărcătorul de fasole va sugera re-asocierea dispozitivului. În mod obișnuit, parcurgerea procesului de asociere va restabili conexiunea. Trebuie să „Eliminați dispozitivul” înainte de a împerechea din nou.

Imagine
Imagine

Operațiunea Bean Loader este simplă și bine documentată pe site-ul lor. Cu Bean Loader deschis, alegeți elementul de meniu „Program” pentru a deschide o casetă de dialog pentru a naviga la fișierul Hex furnizat în etapa de firmware a acestui instructable.

Imagine
Imagine

Odată ce firmware-ul este încărcat, ÎNCHIDEZ Bean Loader, astfel încât conexiunea dintre Bean Loader și hardware-ul Bean să fie întreruptă. Puteți avea o singură conexiune la un moment dat. Acum deschideți bancul de lucru EvoThings și porniți clientul EvoThings pe smartphone sau tabletă.

Imagine
Imagine

Când faceți clic pe butonul „Run”, clientul EvoThings va încărca automat pagina html pentru termometru. Faceți clic pe butonul Conectare pentru a vă conecta la Bean și ar trebui să vedeți temperaturile afișate. Succes!

Pasul 8: Concluzie

Concluzie
Concluzie

Dacă totul este construit și configurat corect, ar trebui să aveți un sistem de lucru care vă va permite să monitorizați temperaturile cu 2 sonde, precum și să monitorizați temperatura senzorului BMA250 de pe placa de dezvoltare Bean. Există mai multe lucruri care pot fi făcute cu EvoThings - tocmai am zgâriat suprafața, așa că vă las această experimentare! Mulțumesc pentru lectură! Dacă lucrurile merg prost, lasă doar comentarii și te voi ajuta acolo unde pot.

Recomandat: