INHOUDSOPGAWE:

Bluetooth -termometer: 8 stappe
Bluetooth -termometer: 8 stappe

Video: Bluetooth -termometer: 8 stappe

Video: Bluetooth -termometer: 8 stappe
Video: Bluetooth not showing in Windows 7 2024, November
Anonim
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer

Hierdie instruksies gee 'n uiteensetting van die maak van 'n eenvoudige 2 -kanaals termometer met behulp van 100K termistorsondes, 'n Bluetooth -module en 'n slimfoon. Die Bluetooth -module is 'n LightBlue Bean wat ontwerp is om die ontwikkeling van Bluetooth Low Energy -app te vereenvoudig deur die bekende Arduino -omgewing te gebruik vir die programmering van die module.

Nadat ek 'n rukkie gestruikel het om te probeer uitvind hoe ek die temperatuurdata van die Bluetooth -module na my iPhone kan kry, het ek 'n app genaamd EvoThings gevind wat die app -ontwikkelingskant van die projek aansienlik vereenvoudig het. Ek het nie 'n Mac nie (wat ek skokkend weet!) Wat my vermoë beperk om 'n iPhone -app te ontwikkel, en ek het nie tyd om die nuwe Microsoft -instrumente wat duidelik platformontwikkeling vir iOS en Android ondersteun, te ontsyfer nie. Ek het verskeie programme in HTML5 -styl gedoen, maar die enigste manier om by Bluetooth -data uit te kom, is deur plugins vir Cordova, wat meer uitdagend gelyk het as waarvoor ek tyd gehad het. EvoThings bied 'n baie maklik om te gebruik gereedskap wat die Bluetooth-na-iPhone-uitdaging in 'n cakewalk verander het. En ek hou van koek!

Oor die algemeen het ek gevind dat die kombinasie van Lightblue Bean en EvoThings 'n baie praktiese oplossing is met 'n lae tydsbelegging.

Stap 1: Dinge wat u benodig

Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het

Ek het 'n in die handel beskikbare termistorsonde vir een kanaal gebruik, want ek wou hê dat die termistor verseël moes word om in vloeistowwe onder te dompel. Vir die tweede kanaal het ek 'n basiese sonde gemaak van 'n termistor, ongeveer 26 meter draad en 'n 3,5 mm koptelefoonprop. U kan enige termistors wat u wil gebruik, en u kan u eie sonde maak van byvoorbeeld termiese geleidende epoxy en plastiekstrooitjies/koffie -roerders. Wat hierna volg, is wat ek gebruik het - dit is nie bedoel om 'n voorskriftelike lys te wees nie!

Hardeware

  • 1 x 100K termistor sondes. Model Extech TP890. Dit is algemeen beskikbaar op eBay en Amazon.
  • 2 x 2,5 mm stereo -aansluitings wat pas by die 2,5 mm -aansluiting op die Extech -sondes. Ek het 3.5 mm -aansluitings van 'n ou rekenaar verwyder, sodat ek die prop van die Extech -sonde afsny en dit met 3.5mm -proppe vervang het. U moet dit vermy deur net 2,5 mm-aansluitings te gebruik, of om 'n 2,5 mm tot 3,5 mm-stereo-aansluiting op die rak te gebruik.
  • 100K termistor kraal plus 26 meter draad plus 3,5 mm stereo prop as u u eie sonde wil maak. Indien nie, koop 'n tweede Extech -sonde!
  • 1 x Lightblue Bean deur Punch Through Designs. Dit is die Bluetooth -module wat programmeerbaar is as 'n Arduino -ontwikkelingsbord. Die module is nogal duur, maar dit verwyder baie kompleksiteit. Hulle voer 'n Kickstarter -veldtog vir die volgende generasie toestel, wat die moeite werd is om te oorweeg.
  • 2 x 1/4W 100K weerstande wat gebruik word om die verwysingspanning vir die termistors te verdeel. Ek het 5% weerstande gebruik, maar weerstande met 'n hoër verdraagsaamheid is oor die algemeen minder temperatuurgevoelig en lewer beter werkverrigting. 1% is 'n goeie verdraagsaamheid hiervoor.
  • Soldeerbout en soldeer
  • Draadsnyers en 'n paar klein lengtes van 26 of 28 gauge aansluitdraad.

Sagteware en Firmware

  • Om die Bean te programmeer, benodig u die Bean Loader -app. Ek het vensters gebruik, sodat alle skakels Windows -spesifiek sal wees. Alles wat u nodig het om met die Bean te begin, insluitend die Arduino -besonderhede, is beskikbaar op die LightBlueBean -webwerf
  • Die EvoThings -werkbank vir die slimfoon -app is hier beskikbaar. Al die 'aan die gang' -dokumentasie is ook daar beskikbaar. Dit is baie goed gedokumenteer.

Stap 2: Die stroombaan en elektriese konstruksie

Die stroombaan en elektriese konstruksie
Die stroombaan en elektriese konstruksie
Die stroombaan en elektriese konstruksie
Die stroombaan en elektriese konstruksie
Die stroombaan en elektriese konstruksie
Die stroombaan en elektriese konstruksie

'N Termistor is 'n temperatuurafhanklike weerstand. Die Extech -sonde het 'n negatiewe temperatuurkoëffisiënt, wat beteken dat namate die temperatuur toeneem, die weerstand afneem. Die weerstandswaarde word gemeet met 'n eenvoudige stroombaan wat 'n spanningsverdeler skep met die termistor in die een been en 'n vaste 100K -weerstand in die ander been. Die verdeelde spanning word na 'n analoog ingangskanaal op die boontjie gevoer en in die firmware geneem.

Om die stroombaan te bou, het ek 3,5 mm -klanke van 'n ou stukkende rekenaar verwyder. 'N Multimeter is gebruik om die twee punte op die PCB te bepaal wat ooreenstem met die punt en eerste band van die sonde. Drade is aan die klankaansluitings en aan die boontjie gesoldeer, soos op die beelde getoon. Die klankaansluitings is vasgemaak aan die prototipe van die boontjie met dubbelzijdige band. Die band wat ek gebruik het, is 'n plakband vir motors wat 'n baie sterk band tussen die sleepdele skep.

Stap 3: Probe -koëffisiënte

Probe Koëffisiënte
Probe Koëffisiënte

So algemeen soos die Extech-sonde is, word die Steinhart-Hart-koëffisiënte nêrens gepubliseer wat ek kon vind nie. Gelukkig is daar 'n aanlyn sakrekenaar wat die koëffisiënte bepaal uit 3 temperatuurmetings wat u verskaf.

Watter foillows is die basiese prosedure wat ek gebruik het om by die koëffisiënte te kom. Ek verdien geen punte vir styl nie, maar goed genoeg om u +/- 1 graad akkuraat te sê ('n totale duim van my kant) … afhangende van die akkuraatheid van u verwysingstermometer en multimeter natuurlik! My multimeter is 'n goedkoop naamlose handelsmerk wat ek baie jare gelede gekoop het toe geld min was. Geld is nog steeds styf en dit werk nog steeds!

Om te kalibreer, benodig ons drie weerstandsmetings van 3 temperature.

  • Byna vriespunt deur ys by 'n glas water te voeg en te roer totdat die temperatuur gestabiliseer is. Sodra dit gestabiliseer is, gebruik die multimeter om die weerstand van die sonde en die verwysingstermometer aan te teken om die temperatuur te meet.
  • Plaas nou die sonde in 'n glas water by kamertemperatuur, laat die sonde met die watertemperatuur gelykmaak en teken die temperatuur op u verwysingstermometer en die weerstandslesing op u multi-meter aan.
  • Plaas die sonde in 'n glas warm water en teken die weerstand aan.

    Temperatuur Weerstand
    5.6 218K
    21.0 97,1K
    38.6 43.2

Hierdie hele proses is 'n bietjie hoender- en eiersituasie, aangesien u 'n geykte termometer benodig om die temperatuur aan te teken en 'n gekalibreerde multimeter om die weerstand aan te teken. Foute hier lei tot onnoukeurigheid in die temperatuurmetings wat u maak, maar vir my doeleindes is +/- 1 graad meer as wat ek nodig het.

As u hierdie aangetekende waardes in die webrekenaar koppel, kry u die volgende:

Beeld
Beeld

Die koëffisiënte (A, B en C) word in die Stenhart-Hart-vergelyking ingeprop om die temperatuur van 'n bemonsterde weerstandswaarde te bepaal. Die vergelyking word gedefinieer as (bron: wikipedia.com)

Beeld
Beeld

Waar T = temperatuur in Kelvin

A, B en C is die Steinhart-Hart vergelykingskoëffisiënte wat ons probeer bepaal R is die weerstand by temperatuur T

Die firmware sal hierdie berekening uitvoer.

Stap 4: Firmware

Firmware
Firmware
Firmware
Firmware

Die termistorspannings word gemeet, na temperatuur omgeskakel en via Bluetooth gestuur na die EvoThings -app wat op die slimfoon werk.

Om die spanning na 'n weerstandswaarde binne die boon om te skakel, word 'n eenvoudige lineêre vergelyking gebruik. Die afleiding van die vergelyking word as 'n beeld verskaf. In plaas daarvan om die steekproefwaarde na spanning om te skakel, aangesien beide die ADC en die insetspanning na dieselfde batteryspanning verwys, kan ons die ADC -waarde in plaas van die spanning gebruik. Vir die 10bit Bean ADC sal die volle batteryspanning 'n ADC -waarde van 1023 tot gevolg hê, dus gebruik ons hierdie waarde as Vbat. Die werklike waarde van die verdelingsweerstand is 'n belangrike oorweging. Meet die werklike waarde van die 100K verdelerweerstand en gebruik die gemete waarde in die vergelyking om 'n onnodige bron van foute as gevolg van weerstandstoleransie te vermy.

Sodra die weerstandswaarde bereken is, word die weerstandswaarde omgeskakel na temperatuur met behulp van die Steinhart-Hart vergelyking. Hierdie vergelyking word breedvoerig op Wikipedia beskryf.

Omdat ons 2 sondes het, was dit sinvol om die sondefunksionaliteit in 'n C ++ - klas in te sluit.

Die klas bevat die Steinhart-Hart-vergelykingskoëffisiënte, die nominale verdelingsweerstandswaarde en die analoog poort waarmee die termistor gekoppel is. 'N Enkele metode, temperatuur (), skakel die ADC-waarde om in 'n weerstandswaarde en gebruik dan die Steinhart-Hart-vergelyking om die temperatuur in Kelvin te bepaal. Die opbrengswaarde trek die absolute nul (273,15K) af van die berekende temperatuur om die waarde in Celsius te verskaf.

Die krag van die Lightblue Bean blyk duidelik uit die feit dat al die Bluetooth -funksies in wese geïmplementeer is in 1 kodereël, wat die temperatuurmonsters na die krasdata op die Bluetooth -geheue skryf.

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

Elke gemonsterde temperatuurwaarde word voorgestel deur 'n vlot wat 4 grepe beslaan. Die krap -data -area kan 20 grepe bevat. Ons gebruik slegs 12 daarvan. Daar is 5 krasdata -gebiede, sodat u tot 100 grepe data kan oordra met behulp van krasdata.

Die basiese vloei van gebeure is:

  • Kyk of ons 'n Bluetooth -verbinding het
  • As dit die geval is, meet die temperatuur en skryf dit na die data -gebied
  • Slaap 200 ms en herhaal die siklus.

As dit nie gekoppel is nie, laat die firmware die ATMEGA328P -chip lank aan die slaap raak. Die slaapsiklus is belangrik om krag te bespaar. Die ATMEGA328P -chip gaan in 'n lae kragmodus en bly daar totdat dit onderbreek word deur die LBM313 Bluetooth -module. Die LBM313 sal 'n onderbreking genereer om die ATMEGA328P aan die einde van die versoekte slaapperiode wakker te maak, of wanneer 'n Bluetooth -verbinding met die Bean gemaak word. Die WakeOnConnect -funksie word geaktiveer deur Bean.enableWakeOnConnect (waar) uitdruklik te bel tydens opstelling ().

Dit is belangrik om daarop te let dat die firmware met enige BLE -kliënttoepassing sal werk. Al wat die kliënt hoef te doen, is om die temperatuurgrepe van die krasdatabank te verwyder en dit weer in dryfpuntgetalle te plaas vir vertoning of verwerking. Die maklikste kliënt -app vir my was om EvoThings te gebruik.

Stap 5: slimfoon -app

Slimfoon -app
Slimfoon -app

Die Evo Things -voorbeeld -app is baie naby aan wat ek nodig gehad het, met slegs geringe inspanning om die bykomende skermelemente by te voeg om die 3 -kanaals temperatuurmeetapparaat te voltooi.

Die installasie en basiese werking van die EvoThings -platform is baie goed gedokumenteer op die Evo Things -webwerf, dus is dit nie waardevol om dit hier te herhaal nie. Al wat ek hier behandel, is die spesifieke veranderinge wat ek aan die voorbeeldkode gemaak het om drie kanale temperatuurinligting te vertoon, onttrek uit die Bluetooth -krasdatarea.

Nadat u die EvoThings Workbench geïnstalleer het, vind u die Lightblue Bean -voorbeeld hier (op Windows 64 bit -rekenaars):

Hierdie PC / Documents / EvothingsStudio_Win64_1. XX / Voorbeelde / Lightblue-bean-basic / app

U kan die index.html- en app.js -lêers vervang met die lêers wat by hierdie stap aangeheg is. Die veranderinge wat in die jacascript -lêer aangebring is, haal die drie temperatuurwaardes van die drywende punt uit die krasdata -gebied en verhoog die interne HTML van nuwe elemente wat in die HTML -lêer geskep is.

funksie onDataReadSuccess (data) {

var temperatureData = nuwe Float32Array (data);

var bytes = nuwe Uint8Array (data);

var temperatuur = temperatuurData [0];

console.log ('Temperatuur gelees:' + temperatuur + '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 °";

}

Stap 6: Omhulsel

Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel

Die omhulsel is 'n eenvoudige 3D -gedrukte boks. Ek het Cubify Design gebruik om die ontwerp te skep, maar enige 3D -modelleringsprogram is voldoende. Die STL -lêer is aangeheg om u eie te kan druk. As ek dit moes doen, sou ek die mure 'n bietjie dikker maak as wat dit nou is, en die clipontwerp verander wat die bord in plek hou. Die knipsels breek baie maklik omdat die spanning in die smae -vlak is as die 3D -gedrukte lae, wat die swakste oriëntasie vir 3D -gedrukte dele is. Die mure is baie dun, so die snapmeganisme is 'n bietjie aan die swak kant. Ek het duidelike band gebruik om die boks toe te hou omdat die mure te dun was - nie elegant nie, maar dit werk!

Stap 7: PC -instellings en Bluetooth -konfigurasie

PC -instellings en Bluetooth -konfigurasie
PC -instellings en Bluetooth -konfigurasie

Die firmware- en oplaaisiklus vir die Bean word alles via Bluetooth gedoen. Daar kan slegs een aktiewe Bluetooth -verbinding op 'n slag wees. Die Bean Loader is beskikbaar in die Windows App Store

Die basiese siklus wat ek gebruik om te koppel en aan te sluit (en te herstel en weer aan te sluit as dinge verkeerd loop) is soos volg: Vanuit die bedieningspaneel;/Bluetooth -instellings, moet u die volgende skerm sien:

Beeld
Beeld

Uiteindelik sal vensters 'Klaar om te koppel' meld. Op hierdie punt kan u op die boontjie -ikoon klik en na 'n paar sekondes sal Windows u vra om 'n wagwoord in te voer. Die standaard wagwoord vir die boontjie is 00000

Beeld
Beeld

As die wagwoord korrek ingevoer is, sal Windows wys dat die toestel behoorlik gekoppel is. U moet in hierdie toestand wees om die boontjie te kan programmeer.

Beeld
Beeld

Sodra u gekoppel en gekoppel is, gebruik die Bean Loader om die firmware na die boontjie te laai. Ek het gevind dat dit meer gereeld misluk, en dit het blykbaar verband gehou met die nabyheid van my rekenaar. Beweeg die boontjie rond totdat u 'n plek vind wat by u pas. Daar is tye dat niks sal werk nie en die Bean Loader sal voorstel dat die toestel weer gekoppel word. Gewoonlik sal die verbinding weer herstel word deur die koppelingsproses weer deur te gaan. U moet die toestel "verwyder" voordat u dit weer koppel.

Beeld
Beeld

Die Bean Loader -werking is eenvoudig en goed gedokumenteer op hul webwerf. Terwyl die Bean Loader oop is, kies die menu -item "Program" om 'n dialoog oop te maak om na die Hex -lêer te gaan wat in die firmware -stap van hierdie instruksies verskyn.

Beeld
Beeld

Sodra die firmware gelaai is, sluit die Bean Loader sodat die verbinding tussen die Bean Loader en die Bean hardeware verbreek word. U kan slegs een verbinding op 'n slag hê. Maak nou die EvoThings -werkbank oop en begin die EvoThings -kliënt op die slimfoon of tablet.

Beeld
Beeld

As u op die "Run" -knoppie klik, laai die EvoThings -kliënt outomaties die html -bladsy vir die termometer. Klik op die knoppie Verbind om met die boontjie te skakel, en u moet die temperatuur sien. Sukses!

Stap 8: Gevolgtrekking

Afsluiting
Afsluiting

As alles korrek gebou en gekonfigureer is, moet u 'n werkende stelsel hê waarmee u die temperatuur met 2 sondes kan monitor, sowel as die temperatuur van die BMA250 -sensor op die Bean -ontwikkelingsbord. Daar is meer wat met EvoThings gedoen kan word - ek het pas aan die oppervlak gekrap, so ek laat hierdie eksperimenteer vir u! Dankie vir die lees! As dinge verkeerd loop, laat net kommentaar en ek sal help waar ek kan.

Aanbeveel: