Përmbajtje:

Termometër Bluetooth: 8 hapa
Termometër Bluetooth: 8 hapa

Video: Termometër Bluetooth: 8 hapa

Video: Termometër Bluetooth: 8 hapa
Video: Учим цвета Разноцветные яйца на ферме Miroshka Tv 2024, Korrik
Anonim
Termometër Bluetooth
Termometër Bluetooth
Termometër Bluetooth
Termometër Bluetooth
Termometër Bluetooth
Termometër Bluetooth

Ky udhëzues detajon krijimin e një termometri të thjeshtë me 2 kanale duke përdorur sonda termistore 100K, një modul Bluetooth dhe smartphone. Moduli Bluetooth është një LightBlue Bean i cili është krijuar për të thjeshtuar zhvillimin e aplikacionit Bluetooth Low Energy duke përdorur mjedisin e njohur Arduino për programimin e modulit.

Pasi u pengova për një kohë duke u përpjekur të kuptoj se si të marr të dhënat e temperaturës nga moduli Bluetooth në iPhone tim, gjeta një aplikacion të quajtur EvoThings i cili thjeshtoi në mënyrë të konsiderueshme anën e zhvillimit të aplikacionit të projektit. Unë nuk kam një Mac (e tronditëse e di!) I cili kufizon aftësinë time për të zhvilluar një aplikacion iPhone dhe nuk kam kohë të deshifroj mjetet e reja të Microsoft -it të cilat me sa duket mbështesin zhvillimin e platformës së kryqëzuar për iOS dhe Android. Unë kam bërë disa aplikacione të stilit HTML5, por mënyra e vetme për të marrë të dhëna Bluetooth është përmes shtojcave për Cordova, të cilat dukeshin më shumë si një sfidë sesa kisha kohë. EvoThings siguron një grup mjetesh shumë të lehtë për t’u përdorur që e shndërruan sfidën Bluetooth-në-iPhone në një kek. Dhe më pëlqen torta!

Në përgjithësi, gjeta kombinimin e Lightblue Bean dhe EvoThings të jetë një zgjidhje shumë praktike me investime në kohë të ulët.

Hapi 1: Gjërat që ju nevojiten

Gjërat që do t'ju nevojiten
Gjërat që do t'ju nevojiten
Gjërat që do t'ju nevojiten
Gjërat që do t'ju nevojiten
Gjërat që do t'ju nevojiten
Gjërat që do t'ju nevojiten

Kam përdorur një sondë termistore komerciale të disponueshme për një kanal sepse doja që termistori të mbyllej për zhytje në lëngje. Për kanalin e dytë, bëra një sondë bazë nga një termistor, një tel 26 matës dhe një prizë kufje 3.5 mm. Ju jeni të lirë të përdorni çdo termistor që dëshironi dhe mund të bëni sondat tuaja nga epokside termike përçuese dhe kashtë plastike/përzierës kafeje për shembull. Ajo që vijon është ajo që kam përdorur - nuk ka për qëllim të jetë një listë urdhëruese!

Hardware

  • 1 x Sondë termistori 100K. Modeli Extech TP890. Këto janë zakonisht të disponueshme në ebay dhe amazon.
  • 2 priza stereo 2.5 mm e cila përputhet me prizën 2.5 mm në sondat Extech. Unë fshiva prizat 3.5 mm nga një kompjuter i vjetër kështu që e ndërpreva spinën e sondës Extech dhe e zëvendësova me priza 3.5 mm. Ju duhet ta shmangni këtë vetëm me një prizë 2.5mm, ose përdorni një prizë përshtatës stereo 2.5mm deri 3.5mm jashtë raftit.
  • Rruaza 100K termistor plus tela 26 matës plus prizë stereo 3.5 mm nëse doni të bëni sondën tuaj. Nëse jo, blini një sondë të dytë Extech!
  • 1 x Fasule Lightblue nga Punch Through Designs. Ky është moduli Bluetooth i programueshëm si një bord zhvillimi Arduino. Moduli është disi i kushtueshëm, por heq shumë kompleksitet. Ata po drejtojnë një fushatë Kickstarter për pajisjen e gjeneratës së ardhshme e cila mund të jetë me vlerë të merret parasysh.
  • 2 rezistenca 1 x 1/4W 100K të cilat përdoren për të ndarë tensionin referues për termistorët. Kam përdorur rezistenca 5%, por rezistorët më të lartë të tolerancës janë përgjithësisht më pak të ndjeshëm ndaj temperaturës dhe do të ofrojnë performancë më të mirë. 1% është një vlerë e mirë tolerance për këtë.
  • Saldim dhe saldim
  • Prerëset e telave dhe disa gjatësi të vogla prej teli lidhës 26 ose 28 matës.

Softuer dhe Firmware

  • Për programimin e Bean, do t'ju duhet aplikacioni Bean Loader. Unë kam përdorur dritare kështu që të gjitha lidhjet do të jenë specifike për Windows. Gjithçka që ju nevojitet për të filluar me Bean përfshirë specifikat e Arduino është në dispozicion nga faqja LightBlueBean
  • Tavolina e punës EvoThings për aplikacionin e smartphone është në dispozicion këtu. I gjithë dokumentacioni i "fillimit" është gjithashtu i disponueshëm atje. Isshtë shumë mirë e dokumentuar.

Hapi 2: Qarku dhe Ndërtimi Elektrik

Qarku dhe Ndërtimi Elektrik
Qarku dhe Ndërtimi Elektrik
Qarku dhe Ndërtimi Elektrik
Qarku dhe Ndërtimi Elektrik
Qarku dhe Ndërtimi Elektrik
Qarku dhe Ndërtimi Elektrik

Një termistor është një rezistencë e varur nga temperatura. Sonda Extech ka një koeficient negativ të temperaturës që do të thotë se me rritjen e temperaturës, rezistenca zvogëlohet. Vlera e rezistencës matet me një qark të thjeshtë i cili krijon një ndarës të tensionit me termistorin në njërën këmbë, dhe një rezistencë fikse 100K në tjetrën. Tensioni i ndarë futet në një kanal Analog Input në Bean dhe merret mostra në firmware.

Për të ndërtuar qarkun, fshiva prizat audio 3.5 mm nga një kompjuter i vjetër i prishur. Një multimetër u përdor për të përcaktuar dy pikat në PCB që korrespondonin me majën dhe brezin e parë të sondës. Telat u ngjitën në prizat audio dhe në Bean siç tregohet në imazhe. Prizat audio ishin ngjitur në zonën prototip të Bean duke përdorur shirit të dyanshëm. Shiriti që kam përdorur është shirit dekalor i klasës automobilistike i cili krijon një lidhje shumë të fortë midis pjesëve të tërheqjes.

Hapi 3: Koeficientët e sondës

Koeficientët e sondës
Koeficientët e sondës

Sado e zakonshme të jetë sonda Extech, koeficientët Steinhart-Hart nuk publikohen askund ku mund të gjeja. Për fat të mirë ekziston një kalkulator online që do të përcaktojë koeficientët nga 3 matje të temperaturës që ju ofroni.

Çfarë pengon është procedura bazë që kam përdorur për të arritur te koeficientët. Nuk do të fitoj asnjë pikë për stilin, por aq e mirë sa të të bëjë të thuash +/- 1 shkallë të saktë (një gisht i madh nga ana ime)…. në varësi të saktësisë së termometrit tuaj të referencës dhe multimetrit natyrisht! Multimetri im është një njësi e lirë e markës pa emër që bleva shumë vite më parë kur paratë ishin të ngushta. Paraja është ende e ngushtë dhe ende punon!

Për të kalibruar, na duhen tre lexime të rezistencës nga 3 temperatura.

  • Pranë ngrirjes duke shtuar akull në një gotë me ujë dhe duke e trazuar derisa temperatura të stabilizohet. Pasi të stabilizohet, përdorni multimetrin për të regjistruar rezistencën e sondës dhe termometrin referues për të regjistruar temperaturën.
  • Tani vendoseni sondën në një gotë me ujë në temperaturën e dhomës, lejoni që sonda të barazohet me temperaturën e ujit dhe regjistroni temperaturën në termometrin tuaj referues dhe leximin e rezistencës në shumë metrin tuaj.
  • Vendoseni sondën në një gotë me ujë të nxehtë dhe regjistroni rezistencën.

    Temperatura Rezistenca
    5.6 218K
    21.0 97.1K
    38.6 43.2

I gjithë ky proces është pak si një situatë pule dhe veze pasi keni nevojë për një termometër të kalibruar për të regjistruar temperaturën dhe një shumë metër të kalibruar për të regjistruar rezistencën. Gabimet këtu do të rezultojnë në pasaktësi në matjet e temperaturës që bëni, por për qëllimet e mia, +/- 1 gradë është më shumë sesa më nevojitet.

Lidhja e këtyre vlerave të regjistruara në llogaritësin e internetit jep sa vijon:

Imazhi
Imazhi

Koeficientët (A, B dhe C) futen në ekuacionin Stenhart-Hart për të zbutur temperaturën nga një vlerë rezistence e mostruar. Ekuacioni përcaktohet si (burimi: wikipedia.com)

Imazhi
Imazhi

Ku T = Temperatura në Kelvin

A, B dhe C janë koeficientët e ekuacionit Steinhart-Hart që ne po përpiqemi të përcaktojmë R është rezistenca në temperaturën T

Firmware do të kryejë këtë llogaritje.

Hapi 4: Firmware

Firmware
Firmware
Firmware
Firmware

Tensionet e termistorit merren mostra, konvertohen në temperaturë dhe dërgohen përmes Bluetooth në aplikacionin EvoThings që funksionon në smartphone.

Për të shndërruar tensionin në një vlerë rezistence brenda Bean, përdoret një ekuacion i thjeshtë linear. Derivimi i ekuacionit ofrohet si një imazh. Në vend që të konvertohet vlera e mostrës në tension, meqenëse si ADC ashtu edhe voltazhi i hyrjes i referohen të njëjtit tension të baterisë, ne mund të përdorim vlerën ADC në vend të tensionit. Për ADB 10 -bit Bean, tensioni i plotë i baterisë do të rezultojë në një vlerë ADC prej 1023 kështu që ne e përdorim këtë vlerë si Vbat. Vlera aktuale e rezistencës ndarëse është një konsideratë e rëndësishme. Matni vlerën aktuale të rezistencës ndarëse 100K dhe përdorni vlerën e matur në ekuacion për të shmangur një burim gabimi të panevojshëm për shkak të tolerancës së rezistencës.

Pasi të llogaritet vlera e rezistencës, vlera e rezistencës shndërrohet në temperaturë duke përdorur ekuacionin Steinhart-Hart. Ky ekuacion përshkruhet në detaje në Wikipedia.

Meqenëse kemi 2 sonda, kishte kuptim të përfshijmë funksionalitetin e sondës në një klasë C ++.

Klasa përfshin koeficientët e ekuacionit Steinhart-Hart, vlerën nominale të rezistencës ndaj ndarësit dhe portën analoge me të cilën është lidhur termistori. Një metodë e vetme, temperatura (), konverton vlerën ADC në një vlerë rezistence dhe më pas përdor ekuacionin Steinhart-Hart për të përcaktuar temperaturën në Kelvin. Vlera e kthimit zbret zero absolute (273.15K) nga temperatura e llogaritur për të siguruar vlerën në Celsius.

Fuqia e Lightblue Bean është e qartë në faktin se i gjithë funksionaliteti Bluetooth është zbatuar në thelb në 1 rresht të kodit i cili shkruan vlerat e temperaturës së mostrës në një zonë të dhënash të gërvishtura në kujtesën Bluetooth.

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

Çdo vlerë e mostrës e temperaturës përfaqësohet nga një noton i cili merr 4 bajt. Zona e të dhënave të gërvishtjeve mund të mbajë 20 bajt. Ne përdorim vetëm 12 prej tyre. Ka 5 zona të të dhënave të gërvishtjeve, kështu që mund të transferoni deri në 100 bajt të dhëna duke përdorur të dhëna të para.

Rrjedha themelore e ngjarjeve është:

  • Kontrolloni për të parë nëse kemi një lidhje Bluetooth
  • Nëse është kështu, mostroni temperaturat dhe shkruajini ato në zonën e të dhënave të gërvishtjes
  • Flini 200ms dhe përsëritni ciklin.

Nëse nuk është i lidhur, firmueri e vë çipin ATMEGA328P në gjumë për një kohë të gjatë. Cikli i gjumit është i rëndësishëm për ruajtjen e fuqisë. Çipi ATMEGA328P kalon në modalitetin e energjisë së ulët dhe qëndron atje derisa të ndërpritet nga moduli Bluetooth LBM313. LBM313 do të krijojë një ndërprerje për të zgjuar ATMEGA328P në fund të periudhës së kërkuar të gjumit, ose sa herë që bëhet një lidhje Bluetooth me Bean. Funksionaliteti WakeOnConnect aktivizohet duke thirrur në mënyrë eksplicite Bean.enableWakeOnConnect (e vërtetë) gjatë konfigurimit ().

Importantshtë e rëndësishme të theksohet se firmware do të punojë me çdo aplikacion të klientit BLE. E tëra që klienti duhet të bëjë është të heqë bajtët e temperaturës nga banka e të dhënave të gërvishtura dhe t'i rindërtojë ato në numra të pikave lundruese për shfaqje ose përpunim. Aplikacioni më i lehtë i klientit për mua ishte përdorimi i EvoThings.

Hapi 5: Aplikacioni për smartphone

Aplikacioni për smartphone
Aplikacioni për smartphone

Aplikacioni i mostrës Evo Things është shumë afër asaj që më duhej me vetëm një përpjekje të vogël të kërkuar për të shtuar elementët shtesë të ekranit për të përfunduar pajisjen e matjes së temperaturës me 3 kanale.

Instalimi dhe funksionimi themelor i platformës EvoThings është shumë mirë i dokumentuar në faqen e internetit të Evo Things kështu që nuk ka vlerë ta përsërisim këtu. E tëra që do të mbuloj këtu janë ndryshimet specifike që kam bërë në kodin e tyre të mostrës për të shfaqur 3 kanale të informacionit të temperaturës, të nxjerra nga zona e të dhënave të gërvishtjes Bluetooth.

Pasi të keni instaluar EvoThings Workbench, do të gjeni shembullin Lightblue Bean këtu (në kompjuterët Windows 64 bit):

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

Ju mund të zëvendësoni skedarët index.html dhe app.js me skedarët e bashkangjitur në këtë hap. Ndryshimet e bëra në skedarin jacascript nxjerrin 3 vlerat e temperaturës së pikës lundruese nga zona e të dhënave të gërvishtjes dhe nga HTML e brendshme e elementeve të rinj të krijuar në skedarin HTML.

funksion onDataReadSuccess (të dhëna) {

var temperatureData = new Float32Array (të dhëna);

var bytes = Uint8Array i ri (të dhëna);

var temperatura = temperatureData [0];

console.log ('Temperatura e lexuar:' + temperatura + 'C');

document.getElementById ('temperatureAmbient'). innerHTML = temperatureData [0].tëFiksuara (2) + "C °";

document.getElementById ('temperature1'). innerHTML = temperatureData [1].të Fiksuara (2) + "C °";

document.getElementById ('temperature2'). innerHTML = temperatureData [2].të Fiksuara (2) + "C °";

}

Hapi 6: Mbyllja

Rrethim
Rrethim
Rrethim
Rrethim
Rrethim
Rrethim
Rrethim
Rrethim

Mbulimi është një kuti e thjeshtë e printuar 3D. Kam përdorur Cubify Design për të krijuar modelin, por çdo program modelimi 3D do të jetë i mjaftueshëm. Skedari STL është i bashkangjitur që ju të printoni tuajin. Nëse do të më duhej ta bëja përsëri, do t'i bëja muret pak më të trashë se tani dhe do të ndryshoja modelin e kapëses që mban tabelën në vend. Klipet prishen shumë lehtë sepse stresi është në rrafshin smae si shtresa të printuara 3D, i cili është orientimi më i dobët për pjesët e printuara 3D. Muret janë shumë të hollë, kështu që mekanizmi i kapjes është pak në anën e dobët. Kam përdorur shirit të qartë për ta mbajtur kutinë të mbyllur sepse muret ishin shumë të dobëta - jo elegante, por funksionon!

Hapi 7: Cilësimet e PC dhe Konfigurimi Bluetooth

Cilësimet e kompjuterit dhe konfigurimi i Bluetooth
Cilësimet e kompjuterit dhe konfigurimi i Bluetooth

Cikli i ndërtimit dhe ngarkimit të firmware për Bean është bërë i gjithi përmes Bluetooth. Mund të ketë vetëm një lidhje aktive Bluetooth në të njëjtën kohë. Bean Loader është në dispozicion nga Windows App Store

Cikli bazë që përdor për të çiftuar dhe lidhur (dhe riparuar dhe rilidhur kur gjërat shkojnë keq) është si më poshtë: Nga Paneli i Kontrollit;/cilësimet Bluetooth, duhet të shihni ekranin e mëposhtëm:

Imazhi
Imazhi

Përfundimisht dritaret do të raportojnë "Gati për çiftim". Në këtë pikë mund të klikoni në ikonën Bean dhe pas disa sekondash, Windows do t'ju kërkojë të futni një kodkalim. Kodi i parazgjedhur për fasule është 00000

Imazhi
Imazhi

Nëse fjalëkalimi është futur saktë, Windows do të tregojë që pajisja është e lidhur siç duhet. Ju duhet të jeni në këtë gjendje në mënyrë që të jeni në gjendje të programoni Bean.

Imazhi
Imazhi

Pasi të jeni çiftuar dhe lidhur, përdorni Bean Loader për të ngarkuar firmuerin në fasule. Kam gjetur se kjo dështonte më shpesh sesa jo dhe dukej se lidhej me afërsinë me kompjuterin tim. Lëvizni Bean përreth derisa të gjeni një vend që funksionon për ju. Ka raste kur asgjë nuk do të funksionojë dhe Bean Loader do të sugjerojë ri-çiftimin e pajisjes. Zakonisht kalimi i procesit të çiftimit përsëri do të rivendosë lidhjen. Duhet të "Hiqni pajisjen" para se të çiftoni përsëri.

Imazhi
Imazhi

Operacioni Bean Loader është i rreptë dhe i dokumentuar mirë në faqen e tyre. Me Bean Loader të hapur, zgjidhni artikullin e menysë "Program" për të hapur një dialog për të shfletuar skedarin Hex të dhënë në hapin e firmuerit të këtij udhëzuesi.

Imazhi
Imazhi

Pasi të jetë ngarkuar firmueri, Mbyllni ngarkuesin e fasuleve në mënyrë që lidhja midis ngarkuesit të fasuleve dhe pajisjes së fasule të bjerë. Mund të keni vetëm një lidhje në të njëjtën kohë. Tani hapni tryezën e punës EvoThings dhe filloni klientin EvoThings në smartphone ose tabletë.

Imazhi
Imazhi

Kur klikoni butonin "Run", klienti EvoThings automatikisht do të ngarkojë faqen html për termometrin. Klikoni butonin Lidhu për t'u lidhur me Bean dhe duhet të shihni temperaturat e shfaqura. Sukses!

Hapi 8: Përfundimi

Përfundim
Përfundim

Nëse gjithçka është ndërtuar dhe konfiguruar saktë, duhet të keni një sistem pune i cili do t'ju lejojë të monitoroni temperaturat me 2 sonda, si dhe të monitoroni temperaturën e sensorit BMA250 në tabelën e zhvillimit Bean. Mund të bëhet më shumë me EvoThings - sapo kam gërvishtur sipërfaqen, kështu që këtë eksperimentim e lë për ju! Faleminderit per leximin! Nëse gjërat shkojnë keq, thjesht lini komente dhe unë do t'ju ndihmoj ku të mundem.

Recommended: