Innehållsförteckning:

Bluetooth -termometer: 8 steg
Bluetooth -termometer: 8 steg

Video: Bluetooth -termometer: 8 steg

Video: Bluetooth -termometer: 8 steg
Video: STEG SDSP6 Bluetooth Module Music Stream vs ML653 3-Way Active App Control 4K (FNS) 2024, November
Anonim
Bluetooth -termometer
Bluetooth -termometer
Bluetooth termometer
Bluetooth termometer
Bluetooth -termometer
Bluetooth -termometer

Denna instruerbara detalj beskriver hur man skapar en enkel 2 -kanals termometer med 100K termistorsonder, en Bluetooth -modul och smartphone. Bluetooth -modulen är en LightBlue Bean som har utformats för att förenkla utvecklingen av appen Bluetooth Low Energy genom att använda den välbekanta Arduino -miljön för att programmera modulen.

Efter att ha snubblat runt ett tag och försökt ta reda på hur man får temperaturdata från Bluetooth -modulen till min iPhone hittade jag en app som heter EvoThings som förenklade apputvecklingssidan av projektet avsevärt. Jag har inte en Mac (chockerande jag vet!) Som begränsar min förmåga att utveckla en iPhone -app, och jag har inte tid att dechiffrera de nya Microsoft -verktygen som uppenbarligen stöder plattformsutveckling för iOS och Android. Jag har gjort flera HTML5 -stilappar men det enda sättet att komma åt Bluetooth -data är genom plugins för Cordova som såg ut som en mer utmaning än jag hade tid med. EvoThings ger en mycket lättanvänd uppsättning verktyg som gjorde Bluetooth-till-iPhone-utmaningen till en cakewalk. Och jag gillar tårta!

Sammantaget tyckte jag att kombinationen av Lightblue Bean och EvoThings var en mycket praktisk lösning med lågtidsinvesteringar.

Steg 1: Saker du behöver

Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver

Jag använde en kommersiellt tillgänglig termistorsond för en kanal eftersom jag ville ha termistorn förseglad för nedsänkning i vätskor. För den andra kanalen gjorde jag en grundprobe från en termistor, en 26 gauge tråd och en 3,5 mm hörlursplugg. Du är fri att använda alla termistorer du vill ha och du kan tillverka egna prober av värmeledande epoxi och plaströr/kafferörare till exempel. Det som följer är vad jag använde - det är inte avsett att vara en föreskrivande lista!

Hårdvara

  • 1 x 100K termistorsonder. Modell Extech TP890. Dessa är vanligt tillgängliga på eBay och Amazon.
  • 2 x 2,5 mm stereokontakter som matchar 2,5 mm -kontakten på Extech -givarna. Jag tog bort 3,5 mm -uttag från en gammal dator så jag skar bort kontakten från Extech -sonden och ersatte den med 3,5 mm -kontakter. Du bör undvika detta genom att bara använda 2,5 mm-uttag eller använda en 2,5 mm till 3,5 mm stereoadapterkontakt från hyllan.
  • 100K termistorpärla plus 26 gauge -kabel plus 3,5 mm stereokontakt om du vill göra din egen sond. Om inte, köp en andra Extech -sond!
  • 1 x Lightblue Bean av Punch Through Designs. Detta är Bluetooth -modulen som är programmerbar som ett Arduino -utvecklingskort. Modulen är ganska dyr men den tar bort mycket komplexitet. De kör en Kickstarter -kampanj för nästa generations enhet som kan vara värt att överväga.
  • 2 x 1/4W 100K motstånd som används för att dela referensspänningen för termistorerna. Jag använde 5% motstånd men motstånd med högre tolerans är i allmänhet mindre temperaturkänsliga och ger bättre prestanda. 1% är ett bra toleransvärde för detta.
  • Lödkolv och löd
  • Trådskärare och några små längder på 26 eller 28 gauge anslutningstråd.

Programvara och fast programvara

  • För att programmera Bean behöver du Bean Loader -appen. Jag har använt windows så att alla länkar är Windows -specifika. Allt du behöver för att komma igång med Bean inklusive Arduino -specifikationerna är tillgänglig från LightBlueBean -webbplatsen
  • EvoThings arbetsbänk för smartphone -appen finns här. All "komma igång" dokumentation finns också där. Det är mycket väl dokumenterat.

Steg 2: Kretsen och den elektriska konstruktionen

Kretsen och den elektriska konstruktionen
Kretsen och den elektriska konstruktionen
Kretsen och den elektriska konstruktionen
Kretsen och den elektriska konstruktionen
Kretsen och den elektriska konstruktionen
Kretsen och den elektriska konstruktionen

En termistor är ett temperaturberoende motstånd. Extech -sonden har en negativ temperaturkoefficient vilket innebär att när temperaturen ökar minskar motståndet. Motståndsvärdet mäts med en enkel krets som skapar en spänningsdelare med termistorn i ett ben och ett fast 100K motstånd i det andra. Den delade spänningen matas in i en analog ingångskanal på Bean och samplas i firmware.

För att bygga kretsen tog jag bort 3,5 mm ljuduttag från en gammal trasig dator. En multimeter användes för att bestämma de två punkterna på kretskortet som motsvarade spetsen och det första bandet på sonden. Ledningar löddes till ljuduttagen och till bönan som visas på bilderna. Ljuduttagen satt fast vid prototypområdet på bönan med hjälp av dubbelsidig tejp. Tejpen jag använde är dekaltejp av bilkvalitet som skapar en mycket stark bindning mellan dragdelarna.

Steg 3: Sondkoefficienter

Sondkoefficienter
Sondkoefficienter

Så vanligt som Extech-sonden är, Steinhart-Hart-koefficienterna publiceras inte någonstans som jag kunde hitta. Lyckligtvis finns det en onlinekalkylator som bestämmer koefficienterna från tre temperaturmätningar du tillhandahåller.

Vilka följor är den grundläggande proceduren jag använde för att komma fram till koefficienterna. Kommer inte att tjäna några poäng för stil men tillräckligt bra för att få dig att säga +/- 1 grad noggrann (totalt tummen från min sida)…. beroende på noggrannheten i din referenstermometer och multimeter förstås! Min multimeter är en billig märkesenhet utan namn som jag köpte för många år sedan när pengarna var knappa. Pengar är fortfarande trånga och det fungerar fortfarande!

För att kalibrera behöver vi tre resistansavläsningar från 3 temperaturer.

  • Nära frysning genom att tillsätta is till ett glas vatten och omröra tills temperaturen stabiliserats. När den är stabiliserad, använd multimätaren för att registrera sondens motstånd och referenstermometern för att registrera temperaturen.
  • Lägg nu sonden i ett glas vatten vid rumstemperatur, låt sonden utjämna med vattentemperaturen och registrera temperaturen på din referenstermometer och resistansavläsningen på din multimätare.
  • Placera sonden i ett glas varmt vatten och registrera motståndet.

    Temperatur Motstånd
    5.6 218K
    21.0 97,1 k
    38.6 43.2

Hela denna process är lite av en kyckling- och äggsituation eftersom du behöver en kalibrerad termometer för att registrera temperaturen och en kalibrerad multimeter för att registrera motståndet. Fel här kommer att resultera i felaktigheter i de temperaturmätningar du gör men för mina syften är +/- 1 grad mer än jag behöver.

Att ansluta dessa inspelade värden till webbkalkylatorn ger följande:

Bild
Bild

Koefficienterna (A, B och C) ansluts till Stenhart-Hart-ekvationen för att avgöra temperaturen från ett provmotståndsvärde. Ekvationen definieras som (källa: wikipedia.com)

Bild
Bild

Där T = Temperatur i Kelvin

A, B och C är Steinhart-Hart ekvationskoefficienter som vi försöker bestämma R är motståndet vid temperatur T

Firmware kommer att utföra denna beräkning.

Steg 4: Firmware

Firmware
Firmware
Firmware
Firmware

Termistorspänningarna samplas, omvandlas till temperatur och skickas via Bluetooth till EvoThings -appen som körs på smarttelefonen.

För att omvandla spänningen till ett motståndsvärde inom bönan används en enkel linjär ekvation. Avledningen av ekvationen tillhandahålls som en bild. Istället för att omvandla det samplade värdet till spänning, eftersom både ADC och ingångsspänning refereras till samma batterispänning, kan vi använda ADC -värdet istället för spänningen. För 10bit Bean ADC kommer full batterispänning att resultera i ett ADC -värde på 1023 så vi använder detta värde som Vbat. Det verkliga värdet på avdelningsmotståndet är en viktig faktor. Mät det verkliga värdet på 100K -avdelningsmotståndet och använd det uppmätta värdet i ekvationen för att undvika en onödig felkälla på grund av motståndstolerans.

När motståndsvärdet har beräknats omvandlas motståndsvärdet till temperatur med hjälp av Steinhart-Hart-ekvationen. Denna ekvation beskrivs i detalj på Wikipedia.

Eftersom vi har 2 prober var det vettigt att inkapsla sondfunktionen i en C ++ - klass.

Klassen inkapslar Steinhart-Hart-ekvationskoefficienterna, det nominella divideringsmotståndsvärdet och den analoga porten som termistorn är ansluten till. En enda metod, temperatur (), konverterar ADC-värdet till ett motståndsvärde och använder sedan Steinhart-Hart-ekvationen för att bestämma temperaturen i Kelvin. Returvärdet subtraherar absolut noll (273,15K) från den beräknade temperaturen för att ge värdet i Celsius.

Kraften hos Lightblue Bean är uppenbar i det faktum att all Bluetooth -funktionalitet i huvudsak är implementerad i en kodrad som skriver de samplade temperaturvärdena till ett repdataområde i Bluetooth -minnet.

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

Varje samplat temperaturvärde representeras av en flottör som tar upp 4 byte. Skrapdataområdet kan rymma 20 byte. Vi använder bara 12 av dem. Det finns fem repdataområden så att du kan överföra upp till 100 byte med hjälp av repdata.

Det grundläggande flödet av händelser är:

  • Kontrollera om vi har en Bluetooth -anslutning
  • Om så är fallet, prova temperaturer och skriv dem till skrapdataområdet
  • Sov 200 ms och upprepa cykeln.

Om den inte är ansluten, låter den fasta programvaran ATMEGA328P -chipet vila länge. Sömncykeln är viktig för att bevara kraften. ATMEGA328P -chipet går in i lågeffektläge och stannar där tills det avbryts av LBM313 Bluetooth -modulen. LBM313 genererar ett avbrott för att väcka ATMEGA328P vid slutet av sömnperioden som begärts, eller när en Bluetooth -anslutning görs till bönan. WakeOnConnect -funktionen aktiveras genom att uttryckligen ringa Bean.enableWakeOnConnect (true) under installationen ().

Det är viktigt att notera att firmware fungerar med alla BLE -klientprogram. Allt klienten behöver göra är att ta bort temperaturbyten från skrapdatabanken och montera ihop dem till flytande punktnummer för visning eller bearbetning. Den enklaste klientappen för mig var att använda EvoThings.

Steg 5: Smartphone -app

Smartphone -app
Smartphone -app

Evo Things -exempelappen ligger mycket nära vad jag behövde med bara en liten ansträngning som krävs för att lägga till ytterligare displayelement för att slutföra 3 -kanals temperaturmätaren.

Installationen och grundläggande driften av EvoThings -plattformen är mycket väl dokumenterad på Evo Things -webbplatsen, så det är ingen idé att upprepa det här. Allt jag kommer att täcka här är de specifika ändringar jag gjorde i deras provkod för att visa tre kanaler med temperaturinformation, extraherat från Bluetooth -skrapdataområdet.

När du har installerat EvoThings Workbench hittar du Lightblue Bean -exemplet här (på Windows 64 bitars datorer):

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

Du kan ersätta index.html- och app.js -filerna med filerna som bifogas detta steg. De ändringar som gjorts i jacascript -filen extraherar de tre flytpunktstemperaturvärdena från repdataområdet och uppåt den inre HTML -filen för nya element som skapats i HTML -filen.

function onDataReadSuccess (data) {

var temperatureData = new Float32Array (data);

var bytes = new Uint8Array (data);

var temperatur = temperaturData [0];

console.log ('Temperaturläsning:' + 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 °";

}

Steg 6: Kapsling

Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad

Höljet är en enkel 3D -tryckt låda. Jag använde Cubify Design för att skapa designen men alla 3D -modelleringsprogram kommer att räcka. STL -filen bifogas så att du kan skriva ut din egen. Om jag var tvungen att göra om det skulle jag göra väggarna lite tjockare än de är nu och ändra klämdesignen som håller brädet på plats. Klämmorna går lätt sönder eftersom stressen ligger i smae -planet som 3D -tryckta lager, vilket är den svagaste orienteringen för 3D -tryckta delar. Väggarna är mycket tunna så snäppmekanismen är lite på den svaga sidan. Jag använde klar tejp för att hålla lådan stängd eftersom väggarna var för tunna - inte elegant men det fungerar!

Steg 7: PC -inställningar och Bluetooth -konfiguration

PC -inställningar och Bluetooth -konfiguration
PC -inställningar och Bluetooth -konfiguration

Firmware -byggnads- och uppladdningscykeln för Bean görs över Bluetooth. Det kan bara finnas en aktiv Bluetooth -anslutning åt gången. Bean Loader är tillgänglig från Windows App Store

Grundcykeln jag använder för att para och ansluta (och reparera och återansluta när saker går fel) är följande: Från kontrollpanelen;/Bluetooth -inställningar ska du se följande skärm:

Bild
Bild

Så småningom kommer Windows att rapportera "Ready to pair". Vid denna tidpunkt kan du klicka på Bean -ikonen och efter några sekunder kommer Windows att uppmana dig att ange ett lösenord. Standardlösenordet för bönan är 00000

Bild
Bild

Om lösenordet har angetts korrekt visar Windows att enheten är korrekt ansluten. Du måste vara i detta tillstånd för att kunna programmera bönan.

Bild
Bild

När du är ihopkopplad och ansluten använder du Bean Loader för att ladda firmware till bönan. Jag tyckte att detta misslyckades oftare än inte och det verkade vara relaterat till närheten till min dator. Flytta bönan runt tills du hittar en plats som fungerar för dig. Det finns tillfällen då ingenting kommer att fungera och Bean Loader kommer att föreslå omparning av enheten. Normalt återställer anslutningen genom att gå igenom parningsprocessen igen. Du måste "Ta bort enheten" innan du återparar.

Bild
Bild

Bean Loader -operationen är enkel och väl dokumenterad på deras webbplats. Med bönlastaren öppen, välj menyalternativet "Program" för att öppna en dialogruta för att bläddra till Hex -filen som finns i firmware -steget i denna instruerbara.

Bild
Bild

När den inbyggda programvaran har laddats stänger du bönladdaren så att anslutningen mellan bönladdaren och bönhårdvaran bryts. Du kan bara ha en anslutning åt gången. Öppna nu EvoThings -arbetsbänken och starta EvoThings -klienten på smarttelefonen eller surfplattan.

Bild
Bild

När du klickar på knappen "Kör" laddar EvoThings -klienten automatiskt html -sidan för termometern. Klicka på knappen Anslut för att ansluta till bönan och du bör se temperaturer visas. Framgång!

Steg 8: Slutsats

Slutsats
Slutsats

Om allt är byggt och konfigurerat korrekt bör du ha ett fungerande system som gör att du kan övervaka temperaturer med 2 givare, samt övervaka temperaturen på BMA250 -sensorn på Bean -utvecklingsbrädan. Det finns mer som kan göras med EvoThings - jag har precis repat ytan så jag lämnar det här experimentet åt dig! Tack för att du läser! Om saker går fel är det bara att lämna kommentarer så hjälper jag till där jag kan.

Rekommenderad: