Sisukord:

Bluetoothi termomeeter: 8 sammu
Bluetoothi termomeeter: 8 sammu

Video: Bluetoothi termomeeter: 8 sammu

Video: Bluetoothi termomeeter: 8 sammu
Video: Домашний термометр Xiaomi Mijia Новинка 2021 - bluetooth Thermometer Hygrometer XMWSDJ04MMC 2024, November
Anonim
Bluetooth termomeeter
Bluetooth termomeeter
Bluetooth termomeeter
Bluetooth termomeeter
Bluetooth termomeeter
Bluetooth termomeeter

Selles juhendis kirjeldatakse lihtsa kahe kanaliga termomeetri valmistamist 100K termistorisondide, Bluetooth -mooduli ja nutitelefoni abil. Bluetooth -moodul on LightBlue Bean, mille eesmärk on lihtsustada Bluetooth Low Energy rakenduste arendamist, kasutades mooduli programmeerimiseks tuttavat Arduino keskkonda.

Pärast mõnda aega komistamist, püüdes välja mõelda, kuidas Bluetoothi moodulist temperatuuriandmeid oma iPhone'i saada, leidsin rakenduse nimega EvoThings, mis lihtsustas oluliselt rakenduse arendamise poolt. Mul pole Maci (šokeeriv, ma tean!), Mis piirab minu võimet iPhone'i rakendust arendada, ja mul pole aega dešifreerida uusi Microsofti tööriistu, mis ilmselt toetavad iOS -i ja Androidi platvormideülest arendust. Olen teinud mitmeid HTML5 -stiilis rakendusi, kuid ainus viis Bluetooth -andmete saamiseks on Cordova pistikprogrammide kaudu, mis nägid välja rohkem väljakutset kui mul oli aega. EvoThings pakub väga hõlpsasti kasutatavat tööriistakomplekti, mis muutis Bluetoothi-iPhone'i väljakutse koogiteeks. Ja mulle meeldib kook!

Üldiselt leidsin, et Lightblue Beani ja EvoThingsi kombinatsioon on väga praktiline lahendus, mis nõuab lühikest aega investeeringuid.

Samm: asjad, mida vajate

Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate

Kasutasin ühe kanali jaoks kaubanduslikult saadavat termistorisondi, kuna soovisin, et termistor oleks vedelikeks kastmiseks suletud. Teise kanali jaoks tegin põhisondi termistorist, mõnest 26 -ga traadist ja 3,5 mm kõrvaklappide pistikust. Võite vabalt kasutada mis tahes soovitud termistore ja saate ise oma sondid valmistada näiteks soojust juhtivatest epoksü- ja plastkõrredest/kohvisegistitest. Järgneb see, mida ma kasutasin - see ei ole mõeldud ettekirjutava loendina!

Riistvara

  • 1 x 100K termistorisondid. Mudel Extech TP890. Need on tavaliselt saadaval ebay ja amazon.
  • 2 x 2,5 mm stereopistikut, mis sobivad Extechi sondide 2,5 mm pistikuga. Võtsin vanast arvutist välja 3,5 mm pistikud, nii et lõikasin Extechi sondi pistiku välja ja asendasin selle 3,5 mm pistikutega. Peaksite seda vältima, kasutage lihtsalt 2,5 mm pistikupesasid või riiulilt 2,5–3,5 mm stereoadapteri pistikut.
  • 100K termistorihelmest pluss 26 gabariidi traat pluss 3,5 mm stereopistik, kui soovite oma sondi teha. Kui ei, siis ostke teine Extechi sond!
  • 1 x helesinine uba Punch Through Designsi poolt. See on Arduino arendusplaadina programmeeritav Bluetooth -moodul. Moodul on üsna kallis, kuid eemaldab palju keerukust. Nad käitavad järgmise põlvkonna seadme jaoks Kickstarteri kampaaniat, mis võiks olla kaalumist väärt.
  • 2 x 1/4 W 100K takistit, mida kasutatakse termistoride võrdluspinge jagamiseks. Kasutasin 5% takistit, kuid suurema tolerantsiga takistid on üldiselt vähem temperatuuritundlikud ja tagavad parema jõudluse. 1% on selle jaoks hea tolerantsiväärtus.
  • Jootekolb ja jootekolb
  • Traadilõikurid ja mõned väikesed pikkused 26 või 28 gabariidiga haaketraati.

Tarkvara ja püsivara

  • Beani programmeerimiseks vajate rakendust Bean Loader. Olen kasutanud aknaid, nii et kõik lingid on Windowsi jaoks spetsiifilised. Kõik, mida vajate Beaniga alustamiseks, sealhulgas Arduino eripärad, on saadaval saidil LightBlueBean
  • Nutitelefonirakenduse töölaud EvoThings on saadaval siin. Kogu "alustamise" dokumentatsioon on saadaval ka seal. See on väga hästi dokumenteeritud.

2. etapp: vooluahela ja elektriline ehitus

Vooluahel ja elektriline ehitus
Vooluahel ja elektriline ehitus
Vooluahel ja elektriline ehitus
Vooluahel ja elektriline ehitus
Vooluahel ja elektriline ehitus
Vooluahel ja elektriline ehitus

Termistor on temperatuurist sõltuv takisti. Extechi sondil on negatiivne temperatuurikoefitsient, mis tähendab, et temperatuuri tõustes takistus väheneb. Takistuse väärtust mõõdetakse lihtsa vooluahela abil, mis loob pingejaguri, mille ühel jalal on termistor, ja teisel - fikseeritud 100K takisti. Jagatud pinge juhitakse Beani analoogsisendkanalisse ja proovitakse püsivaras.

Vooluahela ehitamiseks võtsin vanast katkisest arvutist välja 3,5 mm helipistikud. Multimeetrit kasutati kahe PCB punkti määramiseks, mis vastasid sondi otsale ja esimesele ribale. Juhtmed joodeti helipistikupesade ja Beani külge, nagu on näidatud piltidel. Helipistikud kinnitati kahepoolse teibiga Beani prototüübi alale. Kasutatud lint on autoklassi kleebisteip, mis loob pukseerimisosade vahele väga tugeva sideme.

3. samm: sondi koefitsiendid

Sondi koefitsiendid
Sondi koefitsiendid

Nii levinud kui Extechi sond, ei avaldata Steinhart-Harti koefitsiente kusagilt, mida ma võiksin leida. Õnneks on veebipõhine kalkulaator, mis määrab koefitsiendid teie esitatud kolme temperatuurimõõtmise põhjal.

Mis foollows on põhiprotseduur, mida kasutasin koefitsientide saavutamiseks. Stiili eest punkte ei saa, kuid piisavalt hea, et saaksite öelda +/- 1 kraadi täpsust (minu poolt täielik pöidlahoid)…. muidugi sõltuvalt teie võrdlustermomeetri ja multimeetri täpsusest! Minu multimeeter on odav nimeta kaubamärgiüksus, mille ostsin palju aastaid tagasi, kui raha oli vähe. Raha on endiselt vähe ja see töötab endiselt!

Kalibreerimiseks vajame kolme takistuse kolme näitu.

  • Külmumise lähedal, lisades klaasile veele jää ja segades, kuni temperatuur stabiliseerub. Kui stabiliseerunud, kasutage multimeetrit sondi takistuse registreerimiseks ja võrdlustermomeetrit temperatuuri registreerimiseks.
  • Nüüd asetage sond toatemperatuuril veeklaasi, laske sondil veetemperatuuriga võrdsustada ja registreerige temperatuur oma võrdlustermomeetril ja takistusnäidik multimeetril.
  • Asetage sond kuuma vee klaasi ja registreerige takistus.

    Temperatuur Vastupanu
    5.6 218K
    21.0 97,1 tuhat
    38.6 43.2

Kogu see protsess on natuke kana ja muna olukord, kuna temperatuuri registreerimiseks vajate kalibreeritud termomeetrit ja takistuse registreerimiseks kalibreeritud multimeetrit. Siin esinevad vead põhjustavad teie tehtud temperatuuri mõõtmiste ebatäpsust, kuid minu jaoks on +/- 1 kraad rohkem kui vaja.

Nende salvestatud väärtuste ühendamine veebikalkulaatoriga annab järgmise:

Pilt
Pilt

Koefitsiendid (A, B ja C) ühendatakse Stenhart-Harti võrrandiga, et määrata temperatuur kindlaks proovivõetud takistuse väärtusest. Võrrand on määratletud järgmiselt (allikas: wikipedia.com)

Pilt
Pilt

Kus T = temperatuur Kelvinites

A, B ja C on Steinhart-Harti võrrandi koefitsiendid, mida püüame määrata R on takistus temperatuuril T

Püsivara teeb selle arvutuse.

Samm: püsivara

Püsivara
Püsivara
Püsivara
Püsivara

Termistori pingetest võetakse proovid, need teisendatakse temperatuuriks ja saadetakse Bluetoothi kaudu nutitelefonis töötavasse EvoThingsi rakendusse.

Pinge teisendamiseks Beani takistuse väärtuseks kasutatakse lihtsat lineaarset võrrandit. Võrrandi tuletamine esitatakse pildina. Prooviväärtuse pingeks teisendamise asemel, kuna nii ADC kui ka sisendpinge on viidatud samale aku pingele, saame pinge asemel kasutada ADC väärtust. 10 -bitise Bean ADC puhul annab aku täispinge ADC väärtuseks 1023, seega kasutame seda väärtust Vbat -na. Jaotustakisti tegelik väärtus on oluline kaalutlus. Mõõtke 100K jagajatakisti tegelik väärtus ja kasutage võrrandis mõõdetud väärtust, et vältida takisti tolerantsist tingitud tarbetut veaallikat.

Kui takistuse väärtus on arvutatud, teisendatakse takistuse väärtus temperatuuriks, kasutades Steinhart-Harti võrrandit. Seda võrrandit on üksikasjalikult kirjeldatud Vikipeedias.

Kuna meil on 2 sondi, oli mõttekas kapseldada sondi funktsionaalsus C ++ klassi.

Klass sisaldab Steinhart-Harti võrrandi koefitsiente, jagaja nominaalse takistuse väärtust ja analoogporti, millega termistor on ühendatud. Üks meetod, temperatuur (), teisendab ADC väärtuse takistuse väärtuseks ja kasutab seejärel Kelvini temperatuuri määramiseks Steinhart-Harti võrrandit. Tagastusväärtus lahutab arvutatud temperatuurist absoluutse nulli (273,15K), et saada väärtus Celsiuse järgi.

Lightblue Beani võimsus ilmneb asjaolust, et kõik Bluetooth -funktsioonid on sisuliselt rakendatud ühes koodireas, mis kirjutab proovivõetud temperatuuriväärtused Bluetooth -mälul olevale kriimustusandmete alale.

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

Iga proovivõetud temperatuuri väärtust tähistab ujuk, mis võtab 4 baiti. Kriimustusandmete ala mahutab 20 baiti. Me kasutame neist ainult 12. Kriimustusandmete alasid on 5, nii et kriimustusandmete abil saate üle kanda kuni 100 baiti andmeid.

Sündmuste põhivoog on järgmine:

  • Kontrollige, kas meil on Bluetooth -ühendus
  • Kui jah, proovige temperatuuri ja kirjutage see kriimustusandmete alale
  • Maga 200 ms ja korrake tsüklit.

Kui see pole ühendatud, paneb püsivara ATMEGA328P kiibi pikaks ajaks magama. Unetsükkel on energia säästmiseks oluline. ATMEGA328P kiip läheb vähese energiatarbega režiimi ja jääb sinna, kuni LBM313 Bluetooth -moodul katkestab. LBM313 tekitab katkestuse, et äratada ATMEGA328P soovitud unerežiimi lõpus või alati, kui Oaga luuakse Bluetooth -ühendus. Funktsioon WakeOnConnect on lubatud, helistades seadistamise ajal selgesõnaliselt Bean.enableWakeOnConnect (true).

Oluline on märkida, et püsivara töötab iga BLE kliendirakendusega. Klient peab vaid eemaldama kraapimisandmebaasilt temperatuuribaidid ja panema need kuvamiseks või töötlemiseks uuesti ujukomaarvudeks. Minu jaoks oli lihtsaim kliendirakendus EvoThingsi kasutamine.

Samm: nutitelefonirakendus

Nutitelefoni rakendus
Nutitelefoni rakendus

Evo Things näidisrakendus on väga lähedal sellele, mida vajasin, vaid väikese vaevaga, et lisada 3 -kanalilise temperatuuri mõõteseadme täiendamiseks täiendavaid kuvaelemente.

EvoThingsi platvormi installimine ja põhitöö on Evo Things veebisaidil väga hästi dokumenteeritud, nii et siin pole mõtet seda korrata. Kõik, mida ma siin käsitlen, on nende näidiskoodis tehtud konkreetsed muudatused, et kuvada 3 temperatuuriteabe kanalit, mis on eraldatud Bluetoothi kriimustusandmete alalt.

Pärast EvoThings Workbenchi installimist leiate Lightblue Beani näite siit (Windowsi 64 -bitistes arvutites):

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

Failid index.html ja app.js saate asendada sellele toimingule lisatud failidega. JavaScripti faili tehtud muudatused ekstraheerivad 3 ujukoma temperatuuri väärtust, moodustades kriimustusandmete ala ja HTML -failis loodud uute elementide sisemise HTML -i.

function onDataReadSuccess (andmed) {

var temperatureData = uus Float32Array (andmed);

var baiti = uus Uint8Array (andmed);

var temperatuur = temperatuurData [0];

console.log ('Temperatuuri lugemine:' + temperatuur + 'C');

document.getElementById ('temperatureAmbient'). internalHTML = temperatureData [0].toFixed (2) + "C °";

document.getElementById ('temperatuur1'). internalHTML = temperatureData [1].toFixed (2) + "C °";

document.getElementById ('temperatuur2'). internalHTML = temperatureData [2].toFixed (2) + "C °";

}

6. samm: ümbris

Korpus
Korpus
Korpus
Korpus
Korpus
Korpus
Korpus
Korpus

Korpus on lihtne 3D trükitud karp. Disaini loomiseks kasutasin Cubify Designi, kuid piisab mis tahes 3D -modelleerimisprogrammist. STL -fail on lisatud teie enda printimiseks. Kui ma peaksin selle üle tegema, teeksin seinad natuke paksemaks kui praegu ja muudaksin klambri kujundust, mis hoiab plaati paigal. Klambrid purunevad väga kergesti, kuna 3D -trükitud kihtidena on smae tasapinnal stress, mis on 3D -trükitud osade kõige nõrgem orientatsioon. Seinad on väga õhukesed, nii et lukustusmehhanism on veidi nõrgal küljel. Kasutasin kasti suletuna läbipaistvat teipi, kuna seinad olid liiga õhukesed - mitte elegantsed, kuid toimivad!

Samm: arvuti seaded ja Bluetoothi seadistamine

Arvuti seaded ja Bluetoothi konfiguratsioon
Arvuti seaded ja Bluetoothi konfiguratsioon

Beani püsivara loomise ja üleslaadimise tsükkel toimub Bluetoothi kaudu. Korraga saab olla ainult üks aktiivne Bluetooth -ühendus. Oalaadur on saadaval Windowsi rakenduste poest

Põhitsükkel, mida kasutan paaristamiseks ja ühendamiseks (ning parandamiseks ja uuesti ühendamiseks, kui asjad valesti lähevad) on järgmine: Juhtpaneelilt;/Bluetoothi seaded peaksite nägema järgmist ekraani:

Pilt
Pilt

Lõpuks kuvatakse aknas "Sidumiseks valmis". Sel hetkel saate klõpsata oaikoonil ja mõne sekundi pärast palub Windows teil sisestada pääsukoodi. Oa vaikimisi pääsukood on 00000

Pilt
Pilt

Kui pääsukood on õigesti sisestatud, näitab Windows, et seade on korralikult ühendatud. Oa programmeerimiseks peate olema selles olekus.

Pilt
Pilt

Kui olete paaristunud ja ühendatud, laadige oa laadija abil oa sisse püsivara. Leidsin, et see ebaõnnestub sagedamini ja tundus olevat seotud minu arvuti lähedusega. Liigutage Beani ringi, kuni leiate endale sobiva asukoha. On aegu, mil miski ei tööta ja Oakoormaja soovitab seadme uuesti siduda. Tavaliselt taastatakse sidumisprotsess uuesti, taastades ühenduse. Enne uuesti sidumist peate seadme eemaldama.

Pilt
Pilt

Oakoormaja operatsioon on lihtne ja nende saidil hästi dokumenteeritud. Kui oalaadur on avatud, valige dialoogiboksi avamiseks menüükäsk "Programm", et sirvida Hex -faili, mis on antud juhendi püsivara etapis.

Pilt
Pilt

Kui püsivara on laaditud, sulgege oalaadur, nii et ühendus oalaaduri ja oa riistvara vahel katkeb. Korraga saab olla ainult üks ühendus. Nüüd avage EvoThingsi töölaud ja käivitage EvoThingsi klient nutitelefonis või tahvelarvutis.

Pilt
Pilt

Kui klõpsate nuppu "Käivita", laadib EvoThings klient automaatselt termomeetri html -lehe. Oaga ühendamiseks klõpsake nuppu Ühenda ja temperatuur peaks olema kuvatud. Edu!

8. samm: järeldus

Järeldus
Järeldus

Kui kõik on õigesti ehitatud ja konfigureeritud, peaks teil olema toimiv süsteem, mis võimaldab teil temperatuuri kahe sondi abil jälgida, samuti jälgida Bean arendusplaadil oleva BMA250 anduri temperatuuri. EvoThingsiga saab teha veel palju - olen just pinda kriimustanud, nii et jätan selle katsetamise teile! Täname lugemise eest! Kui asjad lähevad valesti, jätke lihtsalt kommentaarid ja aitan, kus saan.

Soovitan: