Indholdsfortegnelse:

Bluetooth -termometer: 8 trin
Bluetooth -termometer: 8 trin

Video: Bluetooth -termometer: 8 trin

Video: Bluetooth -termometer: 8 trin
Video: BUGANI M83 Orange Trim Large Wireless Portable Bluetooth Boombox Speaker 2024, November
Anonim
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer
Bluetooth termometer

Denne instruktive beskriver fremstilling af et simpelt 2 -kanals termometer ved hjælp af 100K termistorsonder, et Bluetooth -modul og en smartphone. Bluetooth -modulet er en LightBlue Bean, der er designet til at forenkle Bluetooth Low Energy -appudvikling ved hjælp af det velkendte Arduino -miljø til programmering af modulet.

Efter at have snublet et stykke tid og forsøgt at finde ud af, hvordan jeg fik temperaturdataene fra Bluetooth -modulet til min iPhone, fandt jeg en app kaldet EvoThings, som forenklede appudviklingssiden af projektet betydeligt. Jeg har ikke en Mac (chokerende ved jeg!), Der begrænser min evne til at udvikle en iPhone -app, og jeg har ikke tid til at tyde de nye Microsoft -værktøjer, der tydeligvis understøtter udvikling på tværs af platforme til iOS og Android. Jeg har lavet flere apps i HTML5 -stil, men den eneste måde at få adgang til Bluetooth -data er via plugins til Cordova, der lignede mere en udfordring, end jeg havde tid til. EvoThings giver et meget brugervenligt sæt værktøjer, der gjorde Bluetooth-til-iPhone-udfordringen til en cakewalk. Og jeg kan godt lide kage!

Samlet set fandt jeg kombinationen af Lightblue Bean og EvoThings til at være en meget praktisk løsning med lave investeringer.

Trin 1: Ting du skal bruge

Ting du skal bruge
Ting du skal bruge
Ting du skal bruge
Ting du skal bruge
Ting du skal bruge
Ting du skal bruge

Jeg brugte en kommercielt tilgængelig termistorsonde til en kanal, fordi jeg ville have termistoren forseglet til nedsænkning i væsker. Til den anden kanal lavede jeg en grundlæggende sonde fra en termistor, nogle 26 gauge wire og et 3,5 mm hovedtelefonstik. Du er fri til at bruge alle termistorer, du ønsker, og du kan lave dine egne sonder fra f.eks. Varmeledende epoxy og plastrør/kafferør. Det følgende er, hvad jeg brugte - det er ikke meningen, at det skal være en foreskrivende liste!

Hardware

  • 1 x 100K termistorprober. Model Extech TP890. Disse er almindeligt tilgængelige på eBay og Amazon.
  • 2 x 2,5 mm Stereo -stik, der matcher 2,5 mm -stikket på Extech -sonderne. Jeg fjernede 3,5 mm stik fra en gammel computer, så jeg skar stikket af Extech -sonden og erstattede det med 3,5 mm stik. Du bør undgå dette, bare brug 2,5 mm stik, eller brug et 2,5 mm til 3,5 mm stereo adapterstik på hylden.
  • 100K termistorperle plus 26 gauge wire plus 3,5 mm stereostik, hvis du vil lave din egen sonde. Hvis ikke, køb en anden Extech -sonde!
  • 1 x Lightblue Bean af Punch Through Designs. Dette er Bluetooth -modulet, der kan programmeres som et Arduino -udviklingsbord. Modulet er lidt dyrt, men det fjerner meget kompleksitet. De kører en Kickstarter -kampagne for den næste generations enhed, som kan være værd at overveje.
  • 2 x 1/4W 100K modstande, der bruges til at opdele referencespændingen for termistorerne. Jeg brugte 5% modstande, men modstande med højere tolerance er generelt mindre temperaturfølsomme og vil give bedre ydeevne. 1% er en god toleranceværdi for dette.
  • Loddejern og loddetin
  • Trådskærere og nogle små længder på 26 eller 28 gauge tilslutningstråd.

Software og firmware

  • For at programmere bønnen skal du bruge Bean Loader -appen. Jeg har brugt windows, så alle links vil være Windows -specifikke. Alt hvad du behøver for at komme i gang med Bean inklusive Arduino -specifikationerne er tilgængelig fra LightBlueBean -webstedet
  • EvoThings -arbejdsbordet til smartphone -appen er tilgængeligt her. Al "komme i gang" dokumentation er også tilgængelig der. Det er meget veldokumenteret.

Trin 2: Kredsløbet og elektrisk konstruktion

Kredsløbet og elektrisk konstruktion
Kredsløbet og elektrisk konstruktion
Kredsløbet og elektrisk konstruktion
Kredsløbet og elektrisk konstruktion
Kredsløbet og elektrisk konstruktion
Kredsløbet og elektrisk konstruktion

En termistor er en temperaturafhængig modstand. Extech -sonden har en negativ temperaturkoefficient, hvilket betyder, at når temperaturen stiger, falder modstanden. Modstandsværdien måles med et simpelt kredsløb, der skaber en spændingsdeler med termistoren i det ene ben og en fast 100K modstand i det andet. Den opdelte spænding føres ind i en analog inputkanal på bønnen og samples i firmwaren.

For at bygge kredsløbet fjernede jeg 3,5 mm lydstik fra en gammel ødelagt pc. Et multimeter blev brugt til at bestemme de to punkter på printet, der svarede til spidsen og det første bånd af sonden. Ledninger blev loddet til lydstikkene og til bønnen som vist på billederne. Lydstikkene blev sat fast på prototypeområdet af bønnen ved hjælp af dobbeltsidet tape. Båndet, jeg brugte, er dekalbånd i bilkvalitet, som skaber en meget stærk binding mellem slæbedelene.

Trin 3: Probe -koefficienter

Probe koefficienter
Probe koefficienter

Så almindelig som Extech-sonden er, Steinhart-Hart-koefficienterne offentliggøres ikke nogen steder, som jeg kunne finde. Heldigvis er der en online lommeregner, der bestemmer koefficienterne ud fra 3 temperaturmålinger, du angiver.

Hvilke folier er den grundlæggende procedure, jeg plejede at nå frem til koefficienterne. Vil ikke optjene nogen point for stil, men god nok til at få dig til at sige +/- 1 grad nøjagtig (en total tommelfingeren fra min side)…. afhængigt af nøjagtigheden af dit referencetermometer og multimeter selvfølgelig! Mit multimeter er en billig mærkeenhed uden navn, jeg købte for mange år siden, da pengene var stramme. Penge er stadig stramme, og det virker stadig!

For at kalibrere har vi brug for tre modstandsmålinger fra 3 temperaturer.

  • Nær frysepunktet ved at tilsætte is til et glas vand og omrøre, indtil temperaturen stabiliseres. Når den er stabiliseret, skal du bruge multimåleren til at registrere modstanden fra sonden og referencetermometeret til at registrere temperaturen.
  • Placer nu sonden i et glas vand ved stuetemperatur, lad sonden udligne med vandtemperaturen og registrer temperaturen på dit referencetermometer og modstandsaflæsning på din multimeter.
  • Placer sonden i et glas varmt vand og registrer modstanden.

    Temperatur Modstand
    5.6 218K
    21.0 97,1K
    38.6 43.2

Hele denne proces er lidt af en kylling og æg situation, da du har brug for et kalibreret termometer til at registrere temperaturen og en kalibreret multi-meter for at registrere modstanden. Fejl her vil resultere i unøjagtighed i de temperaturmålinger, du foretager, men til mine formål er +/- 1 grad mere, end jeg har brug for.

Tilslutning af disse registrerede værdier til webberegneren giver følgende:

Billede
Billede

Koefficienterne (A, B og C) tilsluttes Stenhart-Hart-ligningen for at bestemme temperaturen fra en prøvetaget modstandsværdi. Ligningen er defineret som (kilde: wikipedia.com)

Billede
Billede

Hvor T = Temperatur i Kelvin

A, B og C er Steinhart-Hart-ligningskoefficienterne, vi forsøger at bestemme R er modstanden ved temperatur T

Firmwaren udfører denne beregning.

Trin 4: Firmware

Firmware
Firmware
Firmware
Firmware

Termistorspændingerne samples, konverteres til temperatur og sendes via Bluetooth til EvoThings -appen, der kører på smartphonen.

For at konvertere spændingen til en modstandsværdi inden for bønnen bruges en simpel lineær ligning. Afledningen af ligningen er angivet som et billede. I stedet for at konvertere den samplede værdi til spænding, da både ADC og indgangsspændingen refereres til den samme batterispænding, kan vi bruge ADC -værdien i stedet for spændingen. For 10bit Bean ADC vil fuld batterispænding resultere i en ADC -værdi på 1023, så vi bruger denne værdi som Vbat. Den faktiske værdi af skillemodstanden er en vigtig overvejelse. Mål den faktiske værdi af 100K -skillemodstanden, og brug den målte værdi i ligningen for at undgå en unødvendig fejlkilde på grund af modstandstolerance.

Når modstandsværdien er beregnet, konverteres modstandsværdien til temperatur ved hjælp af Steinhart-Hart-ligningen. Denne ligning er beskrevet detaljeret på Wikipedia.

Fordi vi har 2 sonder, var det fornuftigt at indkapsle sondens funktionalitet i en C ++ - klasse.

Klassen indkapsler Steinhart-Hart-ligningskoefficienterne, den nominelle divider-modstandsværdi og den analoge port, som termistoren er forbundet til. En enkelt metode, temperatur (), konverterer ADC-værdien til en modstandsværdi og bruger derefter Steinhart-Hart-ligningen til at bestemme temperaturen i Kelvin. Returværdien trækker det absolutte nul (273,15K) fra den beregnede temperatur for at give værdien i Celsius.

Styrken i Lightblue Bean er tydelig i det faktum, at al Bluetooth -funktionalitet i det væsentlige er implementeret i en kodelinje, som skriver de samplede temperaturværdier til et ridsedataområde på Bluetooth -hukommelsen.

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

Hver udtaget temperaturværdi repræsenteres af en float, der fylder 4 bytes. Skrabe -dataområdet kan indeholde 20 bytes. Vi bruger kun 12 af dem. Der er 5 scratch data områder, så du kan overføre op til 100 bytes data ved hjælp af scratch data.

Den grundlæggende strøm af begivenheder er:

  • Kontroller, om vi har en Bluetooth -forbindelse
  • Prøv i så fald temperaturer og skriv dem til skrabe -dataområdet
  • Sov 200 ms og gentag cyklussen.

Hvis den ikke er tilsluttet, sætter firmwaren ATMEGA328P -chippen i dvale i lang tid. Søvncyklussen er vigtig for at bevare strømmen. ATMEGA328P -chippen går i laveffekttilstand og forbliver der, indtil den afbrydes af LBM313 Bluetooth -modulet. LBM313 vil generere en afbrydelse for at vække ATMEGA328P i slutningen af den ønskede søvnperiode, eller når der oprettes en Bluetooth -forbindelse til bønnen. WakeOnConnect -funktionaliteten aktiveres ved eksplicit at kalde Bean.enableWakeOnConnect (true) under opsætningen ().

Det er vigtigt at bemærke, at firmwaren fungerer med enhver BLE -klientapplikation. Alt, hvad klienten skal gøre, er at fjerne temperaturbytes fra bunden af databasen og samle dem til flydende punktnumre til visning eller behandling. Den nemmeste klient -app for mig var at bruge EvoThings.

Trin 5: Smartphone -app

Smartphone -app
Smartphone -app

Evo Things -prøve -appen er meget tæt på det, jeg havde brug for, med kun en mindre indsats for at tilføje de ekstra displayelementer for at fuldføre 3 -kanals temperaturmåleenheden.

Installation og grundlæggende drift af EvoThings -platformen er meget veldokumenteret på Evo Things -webstedet, så der er ingen værdi i at gentage det her. Alt, hvad jeg vil dække her, er de specifikke ændringer, jeg foretog i deres prøvekode for at vise 3 kanaler med temperaturinformation, hentet fra Bluetooth -scratch -dataområdet.

Når du har installeret EvoThings Workbench, finder du Lightblue Bean -eksemplet her (på Windows 64 bit computere):

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

Du kan erstatte index.html- og app.js -filerne med de filer, der er knyttet til dette trin. De ændringer, der er foretaget i jacascript -filen, udtrækker de tre flydende punkttemperaturværdier fra scratch -dataområdet og op ad den indre HTML for nye elementer, der er oprettet i HTML -filen.

function onDataReadSuccess (data) {

var temperatureData = ny Float32Array (data);

var bytes = ny Uint8Array (data);

var temperatur = temperaturData [0];

console.log ('Temperatur læst:' + 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 °";

}

Trin 6: Kapsling

Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet
Kabinet

Kabinettet er en simpel 3D -trykt æske. Jeg brugte Cubify Design til at oprette designet, men ethvert 3D -modelleringsprogram er tilstrækkeligt. STL -filen er vedhæftet, så du kan udskrive din egen. Hvis jeg skulle gøre det om, ville jeg gøre væggene lidt tykkere, end de er nu, og ændre klemmedesignet, der holder tavlen på plads. Klippene går meget let i stykker, fordi stressen er i smae -planet som 3D -trykte lag, hvilket er den svageste orientering for 3D -udskrevne dele. Væggene er meget tynde, så snapmekanismen er lidt på den svage side. Jeg brugte klar tape til at holde æsken lukket, fordi væggene var for spinkle - ikke elegant, men det virker!

Trin 7: PC -indstillinger og Bluetooth -konfiguration

PC -indstillinger og Bluetooth -konfiguration
PC -indstillinger og Bluetooth -konfiguration

Firmwareopbygnings- og uploadcyklussen for Bean udføres alt via Bluetooth. Der kan kun være én aktiv Bluetooth -forbindelse ad gangen. Bean Loader er tilgængelig fra Windows App Store

Den grundlæggende cyklus, jeg bruger til at parre og forbinde (og reparere og genoprette forbindelse, når det går galt) er som følger: Fra Kontrolpanel;/Bluetooth -indstillinger skal du se følgende skærm:

Billede
Billede

Til sidst rapporterer Windows "Klar til parring". På dette tidspunkt kan du klikke på ikonet Bønne, og efter nogle sekunder vil Windows bede dig om at indtaste en adgangskode. Standardadgangskoden for bønnen er 00000

Billede
Billede

Hvis adgangskoden er indtastet korrekt, viser Windows, at enheden er korrekt tilsluttet. Du skal være i denne tilstand for at kunne programmere bønnen.

Billede
Billede

Når du er parret og forbundet, skal du bruge bønnelæsseren til at indlæse firmwaren i bønnen. Jeg fandt dette til at mislykkes oftere end ikke, og det syntes at være relateret til nærhed til min computer. Flyt bønnen rundt, indtil du finder en placering, der fungerer for dig. Der er tidspunkter, hvor intet vil fungere, og Bean Loader vil foreslå genparring af enheden. Normalt vil gendannelse af parringsprocessen igen gendanne forbindelsen. Du skal "Fjern enheden", før du parrer igen.

Billede
Billede

Bønnelæsseroperationen er ligetil og veldokumenteret på deres websted. Når bønnelæsseren er åben, skal du vælge menupunktet "Program" for at åbne en dialogboks for at gå til Hex -filen, der blev leveret i firmwaredrinnet i denne instruks.

Billede
Billede

Når firmwaren er indlæst, skal du lukke bønnelæsseren, så forbindelsen mellem bønnelæsseren og bønnens hardware afbrydes. Du kan kun have en forbindelse ad gangen. Åbn nu EvoThings -arbejdsbordet og start EvoThings -klienten på din smartphone eller tablet.

Billede
Billede

Når du klikker på knappen "Kør", indlæser EvoThings -klienten automatisk html -siden til termometeret. Klik på knappen Tilslut for at oprette forbindelse til bønnen, og du skal se temperaturer vises. Succes!

Trin 8: Konklusion

Konklusion
Konklusion

Hvis alt er bygget og konfigureret korrekt, skal du have et fungerende system, der giver dig mulighed for at overvåge temperaturer med 2 sonder, samt overvåge temperaturen på BMA250 -sensoren på Bean -udviklingsbrættet. Der er mere, der kan gøres med EvoThings - jeg har lige ridset overfladen, så jeg overlader dette eksperiment til dig! Tak fordi du læste! Hvis det går galt, skal du bare efterlade kommentarer, så hjælper jeg, hvor jeg kan.

Anbefalede: