Inhoudsopgave:
- Stap 1: Dingen die je nodig hebt
- Stap 2: Het circuit en de elektrische constructie
- Stap 3: Sondecoëfficiënten
- Stap 4: Firmware
- Stap 5: Smartphone-app
- Stap 6: Behuizing
- Stap 7: PC-instellingen en Bluetooth-configuratie
- Stap 8: Conclusie
Video: Bluetooth-thermometer: 8 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Deze instructable beschrijft het maken van een eenvoudige 2-kanaals thermometer met 100K thermistorsondes, een Bluetooth-module en smartphone. De Bluetooth-module is een LightBlue Bean die is ontworpen om de ontwikkeling van Bluetooth Low Energy-apps te vereenvoudigen door de vertrouwde Arduino-omgeving te gebruiken voor het programmeren van de module.
Na een tijdje rondstruinen om erachter te komen hoe ik de temperatuurgegevens van de Bluetooth-module naar mijn iPhone kon krijgen, vond ik een app genaamd EvoThings die de app-ontwikkelingskant van het project aanzienlijk vereenvoudigde. Ik heb geen Mac (schokkend weet ik het!) die mijn vermogen om een iPhone-app te ontwikkelen beperkt, en ik heb geen tijd om de nieuwe Microsoft-tools te ontcijferen die klaarblijkelijk platformonafhankelijke ontwikkeling voor iOS en Android ondersteunen. Ik heb verschillende apps in HTML5-stijl gedaan, maar de enige manier om Bluetooth-gegevens te krijgen, is via plug-ins voor Cordova, wat meer een uitdaging leek dan waar ik tijd voor had. EvoThings biedt een zeer gebruiksvriendelijke set tools die de Bluetooth-naar-iPhone-uitdaging tot een makkie hebben gemaakt. En ik hou van taart!
Over het algemeen vond ik de combinatie van Lightblue Bean en EvoThings een zeer praktische oplossing met een lage tijdsinvestering.
Stap 1: Dingen die je nodig hebt
Ik gebruikte een in de handel verkrijgbare thermistorsonde voor één kanaal omdat ik de thermistor wilde verzegelen voor onderdompeling in vloeistoffen. Voor het tweede kanaal heb ik een basissonde gemaakt van een thermistor, een draad van 26 gauge en een hoofdtelefoonstekker van 3,5 mm. U bent vrij om elke gewenste thermistoren te gebruiken en u kunt uw eigen sondes maken van bijvoorbeeld warmtegeleidende epoxy en plastic rietjes/koffieroerders. Wat volgt is wat ik heb gebruikt - het is niet bedoeld als een prescriptieve lijst!
Hardware
- 1 x 100K Thermistorsondes. Model Extech TP890. Deze zijn algemeen verkrijgbaar op ebay en amazon.
- 2 x 2,5 mm stereo-aansluitingen die overeenkomen met de 2,5 mm-stekker op de Extech-sondes. Ik heb 3,5 mm-aansluitingen van een oude computer weggevangen, dus ik sneed de stekker van de Extech-sonde af en verving deze door 3,5 mm-stekkers. U moet dit vermijden door gewoon 2,5 mm-aansluitingen te gebruiken of een kant-en-klare 2,5 mm naar 3,5 mm stereo-adapterstekker te gebruiken.
- 100K thermistorkraal plus 26 gauge draad plus 3,5 mm stereostekker als u uw eigen sonde wilt maken. Zo niet, koop dan een tweede Extech-sonde!
- 1 x lichtblauwe boon van Punch Through Designs. Dit is de Bluetooth-module die programmeerbaar is als Arduino-ontwikkelbord. De module is nogal prijzig, maar het neemt veel complexiteit weg. Ze voeren een Kickstarter-campagne voor het apparaat van de volgende generatie dat misschien het overwegen waard is.
- 2 x 1/4W 100K weerstanden die worden gebruikt om de referentiespanning voor de thermistoren te verdelen. Ik heb weerstanden van 5% gebruikt, maar weerstanden met een hogere tolerantie zijn over het algemeen minder temperatuurgevoelig en zullen betere prestaties leveren. 1% is hiervoor een goede tolerantiewaarde.
- Soldeerbout en soldeer
- Draadknippers en enkele kleine lengtes van 26 of 28 gauge aansluitdraad.
Software en firmware
- Voor het programmeren van de Bean heb je de Bean Loader app nodig. Ik heb windows gebruikt, dus alle links zijn specifiek voor Windows. Alles wat je nodig hebt om met de Bean aan de slag te gaan, inclusief de Arduino-specificaties, is beschikbaar op de LightBlueBean-site
- De EvoThings-werkbank voor de smartphone-app is hier beschikbaar. Alle "aan de slag"-documentatie is daar ook beschikbaar. Het is zeer goed gedocumenteerd.
Stap 2: Het circuit en de elektrische constructie
Een thermistor is een temperatuurafhankelijke weerstand. De Extech-sonde heeft een negatieve temperatuurcoëfficiënt, wat betekent dat naarmate de temperatuur stijgt, de weerstand afneemt. De weerstandswaarde wordt gemeten met een eenvoudig circuit dat een spanningsdeler creëert met de thermistor in het ene been en een vaste 100K-weerstand in het andere. De verdeelde spanning wordt ingevoerd in een analoog ingangskanaal op de Bean en gesampled in de firmware.
Om het circuit te bouwen, heb ik 3,5 mm audio-aansluitingen van een oude kapotte pc gehaald. Een multimeter werd gebruikt om de twee punten op de PCB te bepalen die overeenkwamen met de punt en de eerste band van de sonde. Draden werden gesoldeerd aan de audio-aansluitingen en aan de Bean zoals weergegeven in de afbeeldingen. De audio-aansluitingen werden met dubbelzijdig plakband op het prototypegebied van de Bean geplakt. De tape die ik heb gebruikt, is stickertape van autokwaliteit die een zeer sterke hechting tussen de trekdelen creëert.
Stap 3: Sondecoëfficiënten
Hoe gewoon de Extech-sonde ook is, de Steinhart-Hart-coëfficiënten zijn nergens gepubliceerd die ik kon vinden. Gelukkig is er een online rekenmachine die de coëfficiënten bepaalt uit 3 temperatuurmetingen die je verstrekt.https://www.thinksrs.com/downloads/programs/Therm%2…
Wat volgt, is de basisprocedure die ik heb gebruikt om tot de coëfficiënten te komen. Zal geen punten verdienen voor stijl, maar goed genoeg om je +/- 1 graad nauwkeurig te laten zeggen (een totale thumbsuck van mijn kant) …. afhankelijk van de nauwkeurigheid van uw referentiethermometer en multimeter natuurlijk! Mijn multimeter is een goedkope merkeenheid die ik jaren geleden kocht toen het geld krap was. Geld is nog steeds krap en het werkt nog steeds!
Om te kalibreren hebben we drie weerstandsmetingen nodig van 3 temperaturen.
- Dichtbij het vriespunt door ijs toe te voegen aan een glas water en te roeren tot de temperatuur gestabiliseerd is. Eenmaal gestabiliseerd, gebruikt u de multimeter om de weerstand van de sonde te registreren en de referentiethermometer om de temperatuur te registreren..
- Plaats nu de sonde in een glas water op kamertemperatuur, laat de sonde gelijk worden met de watertemperatuur en noteer de temperatuur op uw referentiethermometer en de weerstandswaarde op uw multimeter.
-
Plaats de sonde in een glas heet water en noteer de weerstand.
Temperatuur Weerstand 5.6 218K 21.0 97,1K 38.6 43.2
Dit hele proces is een beetje een kip-en-ei situatie aangezien je een gekalibreerde thermometer nodig hebt om de temperatuur te meten en een gekalibreerde multimeter om de weerstand te meten. Fouten hier zullen resulteren in onnauwkeurigheid in de temperatuurmetingen die u maakt, maar voor mijn doeleinden is +/- 1 graad meer dan ik nodig heb.
Het aansluiten van deze geregistreerde waarden in de webcalculator levert het volgende op:
De coëfficiënten (A, B en C) worden aangesloten op de Stenhart-Hart-vergelijking om de temperatuur te bepalen op basis van een bemonsterde weerstandswaarde. De vergelijking wordt gedefinieerd als (bron: wikipedia.com)
Waar T= Temperatuur in Kelvin
A, B en C zijn de Steinhart-Hart vergelijkingscoëfficiënten die we proberen te bepalen R is de weerstand bij temperatuur T
De firmware voert deze berekening uit.
Stap 4: Firmware
De thermistorspanningen worden gesampled, omgezet in temperatuur en via Bluetooth verzonden naar de EvoThings-app die op de smartphone draait.
Om de spanning om te zetten naar een weerstandswaarde binnen de Bean, wordt een eenvoudige lineaire vergelijking gebruikt. De afleiding van de vergelijking wordt gegeven als een afbeelding. In plaats van de bemonsterde waarde om te zetten in spanning, kunnen we de ADC-waarde gebruiken in plaats van de spanning, aangezien zowel de ADC als de ingangsspanning naar dezelfde batterijspanning verwijzen. Voor de 10bit Bean ADC resulteert de volledige batterijspanning in een ADC-waarde van 1023, dus we gebruiken deze waarde als Vbat. De werkelijke waarde van de scheidingsweerstand is een belangrijke overweging. Meet de werkelijke waarde van de 100K-delerweerstand en gebruik de gemeten waarde in de vergelijking om een onnodige bron van fouten als gevolg van weerstandstolerantie te voorkomen.
Nadat de weerstandswaarde is berekend, wordt de weerstandswaarde omgezet in temperatuur met behulp van de Steinhart-Hart-vergelijking. Deze vergelijking wordt in detail beschreven op Wikipedia.
Omdat we 2 sondes hebben, was het logisch om de sondefunctionaliteit in te kapselen in een C++-klasse.
De klasse omvat de Steinhart-Hart-vergelijkingscoëfficiënten, de nominale weerstandswaarde van de deler en de analoge poort waarop de thermistor is aangesloten. Een enkele methode, temperatuur(), converteert de ADC-waarde naar een weerstandswaarde en gebruikt vervolgens de Steinhart-Hart-vergelijking om de temperatuur in Kelvin te bepalen. De retourwaarde trekt het absolute nulpunt (273,15K) af van de berekende temperatuur om de waarde in Celsius te verkrijgen.
De kracht van de Lightblue Bean blijkt uit het feit dat alle Bluetooth-functionaliteit in wezen is geïmplementeerd in 1 regel code die de gesamplede temperatuurwaarden naar een krasgegevensgebied op het Bluetooth-geheugen schrijft.
Bean.setScratchData(TEMPERATURE_SCRATCH_IDX, (uint8_t*)&temperatuur[0], 12);
Elke bemonsterde temperatuurwaarde wordt weergegeven door een vlotter die 4 bytes in beslag neemt. Het krasgegevensgebied kan 20 bytes bevatten. We gebruiken er maar 12. Er zijn 5 krasgegevensgebieden, zodat u tot 100 bytes aan gegevens kunt overbrengen met behulp van krasgegevens.
De basisstroom van gebeurtenissen is:
- Controleer of we een Bluetooth-verbinding hebben
- Zo ja, bemonster temperaturen en schrijf ze naar het gebied met krasgegevens
- Slaap 200 ms en herhaal de cyclus.
Indien niet aangesloten, zet de firmware de ATMEGA328P-chip voor een lange tijd in de slaapstand. De slaapcyclus is belangrijk om energie te besparen. De ATMEGA328P-chip gaat in de energiebesparende modus en blijft daar totdat deze wordt onderbroken door de LBM313 Bluetooth-module. De LBM313 genereert een onderbreking om de ATMEGA328P te wekken aan het einde van de gevraagde slaapperiode, of wanneer er een Bluetooth-verbinding met de Bean tot stand wordt gebracht. De WakeOnConnect-functionaliteit wordt ingeschakeld door Bean.enableWakeOnConnect(true) expliciet aan te roepen tijdens setup().
Het is belangrijk op te merken dat de firmware met elke BLE-clienttoepassing werkt. Het enige wat de klant hoeft te doen is de temperatuurbytes uit de krasdatabank te strippen en ze opnieuw samen te stellen tot drijvende-kommagetallen voor weergave of verwerking. De gemakkelijkste client-app voor mij was om EvoThings te gebruiken.
Stap 5: Smartphone-app
De Evo Things-voorbeeldapp komt heel dicht in de buurt van wat ik nodig had met slechts een kleine inspanning die nodig was om de extra weergave-elementen toe te voegen om het 3-kanaals temperatuurmeetapparaat te voltooien.
De installatie en basiswerking van het EvoThings-platform is zeer goed gedocumenteerd op de Evo Things-website, dus het heeft geen zin dat hier te herhalen. Het enige dat ik hier zal bespreken, zijn de specifieke wijzigingen die ik heb aangebracht in hun voorbeeldcode om 3 kanalen met temperatuurinformatie weer te geven, geëxtraheerd uit het Bluetooth-krasgegevensgebied.
Nadat je de EvoThings Workbench hebt geïnstalleerd, vind je hier het voorbeeld van Lightblue Bean (op Windows 64 bit computers):
Deze pc\Documents\EvothingsStudio_Win64_1. XX\Examples\Lightblue-bean-basic\app
U kunt de bestanden index.html en app.js vervangen door de bestanden die bij deze stap zijn bijgevoegd. De wijzigingen die in het jacascript-bestand zijn aangebracht, extraheren de 3 drijvende-komma-temperatuurwaarden uit het krasgegevensgebied en de binnenste HTML van nieuwe elementen die in het HTML-bestand zijn gemaakt.
functie onDataReadSuccess(data) {
var temperatuurData = nieuwe Float32Array(data);
var bytes = nieuwe Uint8Array(gegevens);
var temperatuur = temperatuurData[0];
console.log('Temperatuur gelezen: ' + 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: Behuizing
De behuizing is een eenvoudige 3D-geprinte doos. Ik heb Cubify Design gebruikt om het ontwerp te maken, maar elk 3D-modelleringsprogramma is voldoende. Het STL-bestand is bijgevoegd zodat u uw eigen bestand kunt afdrukken. Als ik het over moest doen, zou ik de muren een beetje dikker maken dan ze nu zijn, en het clipontwerp veranderen dat het bord op zijn plaats houdt. De clips breken heel gemakkelijk omdat de spanning in het kleine vlak ligt als de 3D-geprinte lagen, wat de zwakste oriëntatie is voor 3D-geprinte onderdelen. De muren zijn erg dun, dus het klikmechanisme is een beetje aan de zwakke kant. Ik gebruikte doorzichtige tape om de doos gesloten te houden omdat de muren te dun waren - niet elegant, maar het werkt!
Stap 7: PC-instellingen en Bluetooth-configuratie
De firmware-build- en uploadcyclus voor de Bean gebeurt allemaal via Bluetooth. Er kan slechts één actieve Bluetooth-verbinding tegelijk zijn. De Bean Loader is verkrijgbaar in de Windows App Store
De basiscyclus die ik gebruik om te koppelen en te verbinden (en te repareren en opnieuw te verbinden als er iets misgaat) is als volgt: Vanuit het Configuratiescherm;/Bluetooth-instellingen zou u het volgende scherm moeten zien:
Uiteindelijk zal Windows "Klaar om te koppelen" melden. Op dit punt kunt u op het Bean-pictogram klikken en na enkele seconden zal Windows u vragen om een toegangscode in te voeren. De standaard toegangscode voor de boon is 00000
Als de toegangscode correct is ingevoerd, geeft Windows aan dat het apparaat correct is aangesloten. Je moet in deze staat zijn om de Bean te kunnen programmeren.
Zodra u bent gekoppeld en verbonden, gebruikt u de Bean Loader om de firmware naar de bean te laden. Ik merkte dat dit vaker wel dan niet mislukte en het leek te maken te hebben met de nabijheid van mijn computer. Verplaats de Boon totdat je een locatie vindt die voor jou werkt. Er zijn momenten waarop niets zal werken en de Bean Loader zal voorstellen om het apparaat opnieuw te koppelen. Door het koppelingsproces opnieuw te doorlopen, wordt doorgaans de verbinding hersteld. U moet "Het apparaat verwijderen" voordat u opnieuw koppelt.
De werking van de Bean Loader is eenvoudig en goed gedocumenteerd op hun site. Kies met de Bean Loader open het menu-item "Programma" om een dialoogvenster te openen om naar het Hex-bestand te bladeren dat in de firmwarestap van deze instructable is geleverd.
Zodra de firmware is geladen, SLUIT de Bean Loader zodat de verbinding tussen de Bean Loader en de Bean-hardware wordt verbroken. U kunt slechts één verbinding tegelijk hebben. Open nu de EvoThings-werkbank en start de EvoThings-client op de smartphone of tablet.
Wanneer u op de knop "Uitvoeren" klikt, laadt de EvoThings-client automatisch de html-pagina voor de thermometer. Klik op de knop Verbinden om verbinding te maken met de Bean en je zou de temperaturen moeten zien verschijnen. Succes!
Stap 8: Conclusie
Als alles correct is gebouwd en geconfigureerd, zou u een werkend systeem moeten hebben waarmee u de temperatuur kunt bewaken met 2 sondes, evenals de temperatuur van de BMA250-sensor op het Bean-ontwikkelbord. Er is meer dat kan worden gedaan met EvoThings - ik heb net het oppervlak bekrast, dus ik laat dit experiment aan jou over! Bedankt voor het lezen! Als er iets misgaat, laat dan een reactie achter en ik zal helpen waar ik kan.
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Mijn Bluetooth-headset converteren naar Bluetooth-luidsprekers: 5 stappen
Mijn Bluetooth-headset omzetten in Bluetooth-luidsprekers: mijn headset wordt niet meer zelf van stroom voorzien, wordt alleen ingeschakeld wanneer ik de micro-USB-connector oplaad, de batterij is al leeg en een van de luidsprekers werkt niet. Maar de Bluetooth werkt nog steeds zonder enig probleem. Vandaag zal ik laten zien
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
ESP32 Bluetooth-zelfstudie - Hoe de ingebouwde Bluetooth van ESP32 te gebruiken: 5 stappen
ESP32 Bluetooth-zelfstudie | Hoe de ingebouwde Bluetooth van ESP32 te gebruiken: Hallo, aangezien het ESP32-bord wordt geleverd met WiFi & Bluetooth beide, maar voor onze meestal projecten gebruiken we meestal alleen wifi, we gebruiken geen Bluetooth. Dus in deze instructables laat ik zien hoe gemakkelijk het is om Bluetooth van ESP32 & Voor uw basisprojecten