Innehållsförteckning:
- Steg 1: Saker du behöver
- Steg 2: Kretsen och den elektriska konstruktionen
- Steg 3: Sondkoefficienter
- Steg 4: Firmware
- Steg 5: Smartphone -app
- Steg 6: Kapsling
- Steg 7: PC -inställningar och Bluetooth -konfiguration
- Steg 8: Slutsats
Video: Bluetooth -termometer: 8 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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
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
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:
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)
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
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
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
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
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:
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
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.
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.
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.
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.
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
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:
Konvertera mitt Bluetooth -headset till Bluetooth -högtalare: 5 steg
Konvertera mitt Bluetooth-headset till Bluetooth-högtalare: Mitt headset drivs inte av sig själv längre, drivs bara när jag ansluter mikro-USB-kontaktens laddning, batteriet är redan slut och en av högtalarna fungerar inte. Men Bluetooth fungerar fortfarande utan problem. Idag visar jag
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Trådlös Bluetooth -bot med Arduino och Bluetooth: 6 steg
Trådlös Bluetooth-bot med Arduino och Bluetooth: I den här självstudien kommer vi att lära oss hur man gör en trådlös Bluetooth-bot med Arduino och Bluetooth-modul hc-05, och styra den med vår smartphone
ESP32 Bluetooth -handledning - Så här använder du inbyggd Bluetooth av ESP32: 5 steg
ESP32 Bluetooth -handledning | Hur man använder inbyggd Bluetooth av ESP32: Hej killar Eftersom ESP32 -kortet levereras med WiFi & Bluetooth båda men för våra mestadels projekt använder vi vanligtvis bara Wifi, vi använder inte Bluetooth. Så i denna instruktioner visar jag hur enkelt det är att använda Bluetooth av ESP32 & För dina grundläggande projekt
Konvertera ditt Bluetooth -headset till ett trådbundet Bluetooth -headset: 5 steg (med bilder)
Konvertera ditt Bluetooth -headset till ett trådlöst Bluetooth -headset: Idag ska jag berätta hur du gör eller konverterar ditt eget trådlösa Bluetooth -headset. Följ mitt steg och du är några steg bakom för att konvertera det