Inhaltsverzeichnis:

Bluetooth-Thermometer - Gunook
Bluetooth-Thermometer - Gunook

Video: Bluetooth-Thermometer - Gunook

Video: Bluetooth-Thermometer - Gunook
Video: Этот горшок для растений является УМНЫМ и поддерживается Xiaomi 🔥 2024, November
Anonim
Bluetooth-Thermometer
Bluetooth-Thermometer
Bluetooth-Thermometer
Bluetooth-Thermometer
Bluetooth-Thermometer
Bluetooth-Thermometer

Dieses anweisbare beschreibt die Herstellung eines einfachen 2-Kanal-Thermometers mit 100K-Thermistorsonden, einem Bluetooth-Modul und einem Smartphone. Das Bluetooth-Modul ist ein LightBlue Bean, das entwickelt wurde, um die Entwicklung von Bluetooth Low Energy-Apps zu vereinfachen, indem die vertraute Arduino-Umgebung für die Programmierung des Moduls verwendet wird.

Nachdem ich eine Weile herumgestolpert war, um herauszufinden, wie ich die Temperaturdaten vom Bluetooth-Modul auf mein iPhone bekomme, fand ich eine App namens EvoThings, die die App-Entwicklungsseite des Projekts erheblich vereinfachte. Ich habe keinen Mac (schockierend, ich weiß!), was meine Fähigkeit zur Entwicklung einer iPhone-App einschränkt, und ich habe keine Zeit, die neuen Microsoft-Tools zu entschlüsseln, die offensichtlich die plattformübergreifende Entwicklung für iOS und Android unterstützen. Ich habe mehrere Apps im HTML5-Stil erstellt, aber die einzige Möglichkeit, an Bluetooth-Daten zu gelangen, sind Plugins für Cordova, die nach einer größeren Herausforderung aussahen, als ich Zeit hatte. EvoThings bietet ein sehr einfach zu bedienendes Werkzeugset, das die Bluetooth-zu-iPhone-Herausforderung zu einem Kinderspiel machte. Und ich mag Kuchen!

Insgesamt empfand ich die Kombination von Lightblue Bean und EvoThings als sehr praktische Lösung mit geringem Zeitaufwand.

Schritt 1: Dinge, die Sie brauchen

Dinge, die du brauchen wirst
Dinge, die du brauchen wirst
Dinge, die du brauchen wirst
Dinge, die du brauchen wirst
Dinge, die du brauchen wirst
Dinge, die du brauchen wirst

Ich habe für einen Kanal eine handelsübliche Thermistorsonde verwendet, weil ich den Thermistor zum Eintauchen in Flüssigkeiten versiegelt haben wollte. Für den zweiten Kanal habe ich eine Basissonde aus einem Thermistor, einem 26-Gauge-Draht und einem 3,5-mm-Kopfhörerstecker hergestellt. Sie können beliebige Thermistoren verwenden und Ihre eigenen Sonden aus wärmeleitendem Epoxid und Kunststoff-Strohhalmen/Kaffeerührern herstellen. Was folgt, ist das, was ich verwendet habe - es soll keine vorschreibende Liste sein!

Hardware

  • 1 x 100K Thermistorsonden. Modell Extech TP890. Diese sind häufig bei ebay und amazon erhältlich.
  • 2 x 2,5-mm-Stereobuchsen, die dem 2,5-mm-Stecker der Extech-Sonden entsprechen. Ich habe 3,5-mm-Buchsen von einem alten Computer gesäubert, also habe ich den Stecker von der Extech-Sonde abgeschnitten und durch 3,5-mm-Stecker ersetzt. Sie sollten dies vermeiden und einfach 2,5-mm-Buchsen verwenden oder einen handelsüblichen 2,5-mm-auf-3,5-mm-Stereo-Adapterstecker verwenden.
  • 100K-Thermistorperle plus 26-Gauge-Draht plus 3,5-mm-Stereostecker, wenn Sie Ihre eigene Sonde herstellen möchten. Wenn nicht, kaufen Sie eine zweite Extech-Sonde!
  • 1 x Hellblaue Bohne von Punch Through Designs. Dies ist das als Arduino-Entwicklungsboard programmierbare Bluetooth-Modul. Das Modul ist etwas teuer, aber es nimmt eine Menge Komplexität ab. Sie führen eine Kickstarter-Kampagne für das Gerät der nächsten Generation durch, die eine Überlegung wert sein könnte.
  • 2 x 1/4W 100K Widerstände, die verwendet werden, um die Referenzspannung für die Thermistoren zu teilen. Ich habe 5% Widerstände verwendet, aber Widerstände mit höherer Toleranz sind im Allgemeinen weniger temperaturempfindlich und bieten eine bessere Leistung. 1% ist hierfür ein guter Toleranzwert.
  • Lötkolben und Lot
  • Drahtschneider und einige kleine Längen von 26 oder 28 Gauge Anschlussdraht.

Software und Firmware

  • Zum Programmieren der Bean benötigen Sie die Bean Loader App. Ich habe Windows verwendet, damit alle Links Windows-spezifisch sind. Alles, was Sie für den Einstieg in die Bean benötigen, einschließlich der Arduino-Spezifika, finden Sie auf der LightBlueBean-Site
  • Die EvoThings Workbench für die Smartphone-App finden Sie hier. Dort ist auch die gesamte Dokumentation "Erste Schritte" verfügbar. Es ist sehr gut dokumentiert.

Schritt 2: Die Schaltung und der elektrische Aufbau

Die Schaltung und der elektrische Aufbau
Die Schaltung und der elektrische Aufbau
Die Schaltung und der elektrische Aufbau
Die Schaltung und der elektrische Aufbau
Die Schaltung und der elektrische Aufbau
Die Schaltung und der elektrische Aufbau

Ein Thermistor ist ein temperaturabhängiger Widerstand. Die Extech-Sonde hat einen negativen Temperaturkoeffizienten, was bedeutet, dass mit steigender Temperatur der Widerstand abnimmt. Der Widerstandswert wird mit einer einfachen Schaltung gemessen, die einen Spannungsteiler mit dem Thermistor in einem Bein und einem festen 100K-Widerstand in dem anderen erzeugt. Die geteilte Spannung wird in einen analogen Eingangskanal des Bean eingespeist und in der Firmware abgetastet.

Um die Schaltung aufzubauen, habe ich 3,5-mm-Audiobuchsen von einem alten kaputten PC gesäubert. Mit einem Multimeter wurden die beiden Punkte auf der Leiterplatte bestimmt, die der Spitze und dem ersten Band der Sonde entsprachen. Drähte wurden an die Audiobuchsen und an die Bean gelötet, wie in den Bildern gezeigt. Die Audiobuchsen wurden mit doppelseitigem Klebeband auf den Prototypbereich der Bean geklebt. Das von mir verwendete Klebeband ist ein Aufkleberband in Automobilqualität, das eine sehr starke Verbindung zwischen den Schleppseilteilen herstellt.

Schritt 3: Sondenkoeffizienten

Sondenkoeffizienten
Sondenkoeffizienten

So verbreitet die Extech-Sonde auch ist, die Steinhart-Hart-Koeffizienten werden nirgendwo veröffentlicht, was ich finden könnte. Glücklicherweise gibt es einen Online-Rechner, der die Koeffizienten aus 3 von Ihnen bereitgestellten Temperaturmessungen bestimmt.https://www.thinksrs.com/downloads/programs/Therm%2…

Was follows ist das grundlegende Verfahren, mit dem ich zu den Koeffizienten gelangt bin. Wird keine Punkte für Stil verdienen, aber gut genug, um Sie dazu zu bringen, +/- 1 Grad genau zu sagen (ein totaler Daumenlutsch meinerseits) …. natürlich abhängig von der Genauigkeit Ihres Referenzthermometers und Multimeters! Mein Multimeter ist ein billiges No-Name-Markengerät, das ich vor vielen Jahren gekauft habe, als das Geld knapp war. Das Geld ist immer noch knapp und es funktioniert immer noch!

Zum Kalibrieren benötigen wir drei Widerstandswerte von 3 Temperaturen.

  • Nahe dem Gefrierpunkt, indem Eis in ein Glas Wasser gegeben und gerührt wird, bis sich die Temperatur stabilisiert hat. Verwenden Sie nach der Stabilisierung das Multimeter, um den Widerstand der Sonde aufzuzeichnen, und das Referenzthermometer, um die Temperatur aufzuzeichnen.
  • Stellen Sie nun die Sonde in ein Glas Wasser mit Raumtemperatur, lassen Sie die Sonde der Wassertemperatur angleichen und zeichnen Sie die Temperatur auf Ihrem Referenzthermometer und den Widerstandswert auf Ihrem Multimeter auf.
  • Legen Sie die Sonde in ein Glas heißes Wasser und notieren Sie den Widerstand.

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

Dieser ganze Prozess ist ein bisschen wie eine Henne-Ei-Situation, da Sie ein kalibriertes Thermometer benötigen, um die Temperatur aufzuzeichnen und ein kalibriertes Multimeter, um den Widerstand aufzuzeichnen. Fehler hier führen zu Ungenauigkeiten bei den von Ihnen vorgenommenen Temperaturmessungen, aber für meine Zwecke sind +/- 1 Grad mehr als ich brauche.

Das Einstecken dieser aufgezeichneten Werte in den Web-Rechner ergibt Folgendes:

Bild
Bild

Die Koeffizienten (A, B und C) werden in die Stenhart-Hart-Gleichung eingesetzt, um die Temperatur aus einem abgetasteten Widerstandswert zu bestimmen. Die Gleichung ist definiert als (Quelle: wikipedia.com)

Bild
Bild

Wobei T= Temperatur in Kelvin

A, B und C sind die Koeffizienten der Steinhart-Hart-Gleichung, die wir zu bestimmen versuchen. R ist der Widerstand bei der Temperatur T

Die Firmware führt diese Berechnung durch.

Schritt 4: Firmware

Firmware
Firmware
Firmware
Firmware

Die Thermistorspannungen werden abgetastet, in Temperatur umgewandelt und über Bluetooth an die auf dem Smartphone laufende EvoThings-App gesendet.

Um die Spannung in einen Widerstandswert innerhalb der Bean umzuwandeln, wird eine einfache lineare Gleichung verwendet. Die Herleitung der Gleichung wird als Bild bereitgestellt. Anstatt den Abtastwert in Spannung umzuwandeln, da sowohl der ADC als auch die Eingangsspannung auf dieselbe Batteriespannung bezogen sind, können wir den ADC-Wert anstelle der Spannung verwenden. Für den 10-Bit-Bean-ADC führt die volle Batteriespannung zu einem ADC-Wert von 1023, daher verwenden wir diesen Wert als Vbat. Der tatsächliche Wert des Teilerwiderstands ist eine wichtige Überlegung. Messen Sie den tatsächlichen Wert des 100K-Teilerwiderstands und verwenden Sie den gemessenen Wert in der Gleichung, um eine unnötige Fehlerquelle aufgrund der Widerstandstoleranz zu vermeiden.

Sobald der Widerstandswert berechnet ist, wird der Widerstandswert mit der Steinhart-Hart-Gleichung in Temperatur umgewandelt. Diese Gleichung ist ausführlich auf Wikipedia beschrieben.

Da wir 2 Probes haben, war es sinnvoll, die Probe-Funktionalität in eine C++-Klasse zu kapseln.

Die Klasse kapselt die Koeffizienten der Steinhart-Hart-Gleichung, den Nennwiderstandswert des Teilers und den analogen Anschluss, an den der Thermistor angeschlossen ist. Eine einzige Methode, temperature(), wandelt den ADC-Wert in einen Widerstandswert um und verwendet dann die Steinhart-Hart-Gleichung, um die Temperatur in Kelvin zu bestimmen. Der Rückgabewert subtrahiert den absoluten Nullpunkt (273,15 K) von der berechneten Temperatur, um den Wert in Celsius bereitzustellen.

Die Leistungsfähigkeit der Lightblue Bean zeigt sich darin, dass die gesamte Bluetooth-Funktionalität im Wesentlichen in einer Codezeile implementiert ist, die die abgetasteten Temperaturwerte in einen Scratch-Datenbereich des Bluetooth-Speichers schreibt.

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

Jeder abgetastete Temperaturwert wird durch einen Gleitkommawert dargestellt, der 4 Byte belegt. Der Scratch-Datenbereich kann 20 Bytes aufnehmen. Wir verwenden nur 12 davon. Es gibt 5 Scratch-Datenbereiche, sodass Sie bis zu 100 Bytes an Daten mit Scratch-Daten übertragen können.

Der grundlegende Ablauf der Ereignisse ist:

  • Überprüfen Sie, ob wir eine Bluetooth-Verbindung haben
  • Wenn ja, messen Sie die Temperaturen und schreiben Sie sie in den Scratch-Datenbereich
  • Schlafen Sie 200 ms und wiederholen Sie den Zyklus.

Wenn keine Verbindung besteht, versetzt die Firmware den ATMEGA328P-Chip für lange Zeit in den Ruhezustand. Der Schlafzyklus ist wichtig, um Strom zu sparen. Der ATMEGA328P-Chip geht in den Energiesparmodus und bleibt dort, bis er durch das Bluetooth-Modul LBM313 unterbrochen wird. Der LBM313 generiert einen Interrupt, um den ATMEGA328P am Ende der angeforderten Ruhezeit aufzuwecken oder wenn eine Bluetooth-Verbindung zum Bean hergestellt wird. Die WakeOnConnect-Funktionalität wird aktiviert, indem Bean.enableWakeOnConnect(true) während setup() explizit aufgerufen wird.

Es ist wichtig zu beachten, dass die Firmware mit jeder BLE-Client-Anwendung funktioniert. Der Client muss lediglich die Temperaturbytes aus der Scratch-Datenbank entfernen und sie zur Anzeige oder Verarbeitung wieder zu Gleitkommazahlen zusammensetzen. Die einfachste Client-App war für mich die Verwendung von EvoThings.

Schritt 5: Smartphone-App

Smartphone-App
Smartphone-App

Die Evo Things-Beispiel-App ist sehr nah an dem, was ich brauchte, mit nur geringem Aufwand, um die zusätzlichen Anzeigeelemente hinzuzufügen, um das 3-Kanal-Temperaturmessgerät zu vervollständigen.

Die Installation und der grundlegende Betrieb der EvoThings-Plattform ist auf der Evo Things-Website sehr gut dokumentiert, daher lohnt es sich nicht, dies hier zu wiederholen. Alles, was ich hier behandeln werde, sind die spezifischen Änderungen, die ich an ihrem Beispielcode vorgenommen habe, um 3 Kanäle mit Temperaturinformationen anzuzeigen, die aus dem Bluetooth-Scratch-Datenbereich extrahiert wurden.

Nachdem Sie die EvoThings Workbench installiert haben, finden Sie hier das Lightblue Bean Beispiel (auf Windows 64 Bit Computern):

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

Sie können die Dateien index.html und app.js durch die an diesen Schritt angehängten Dateien ersetzen. Die an der Javascript-Datei vorgenommenen Änderungen extrahieren die 3 Gleitkomma-Temperaturwerte aus dem Scratch-Datenbereich und den inneren HTML-Code der neuen Elemente, die in der HTML-Datei erstellt wurden.

Funktion onDataReadSuccess (Daten) {

var temperatureData = new Float32Array(data);

var bytes = new Uint8Array(data);

var temperature = temperatureData[0];

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

}

Schritt 6: Gehäuse

Gehege
Gehege
Gehege
Gehege
Gehege
Gehege
Gehege
Gehege

Das Gehäuse ist eine einfache 3D-gedruckte Box. Ich habe Cubify Design verwendet, um das Design zu erstellen, aber jedes 3D-Modellierungsprogramm reicht aus. Die STL-Datei ist angehängt, damit Sie Ihre eigene ausdrucken können. Wenn ich es noch einmal machen müsste, würde ich die Wände etwas dicker machen als sie jetzt sind und das Clip-Design ändern, das die Platine an Ort und Stelle hält. Die Clips brechen sehr leicht, da die Spannung in der Smae-Ebene wie bei den 3D-gedruckten Schichten liegt, was die schwächste Ausrichtung für 3D-gedruckte Teile ist. Die Wände sind sehr dünn, so dass der Schnappmechanismus etwas schwach ist. Ich habe durchsichtiges Klebeband verwendet, um die Box geschlossen zu halten, weil die Wände zu dünn waren - nicht elegant, aber es funktioniert!

Schritt 7: PC-Einstellungen und Bluetooth-Konfiguration

PC-Einstellungen und Bluetooth-Konfiguration
PC-Einstellungen und Bluetooth-Konfiguration

Der Firmware-Build- und Upload-Zyklus für die Bean erfolgt über Bluetooth. Es kann immer nur eine aktive Bluetooth-Verbindung bestehen. Der Bean Loader ist im Windows App Store erhältlich

Der grundlegende Zyklus, den ich zum Koppeln und Verbinden (und zum Reparieren und Wiederverbinden, wenn etwas schief geht) verwende, ist wie folgt: Über die Systemsteuerung/Bluetooth-Einstellungen sollten Sie den folgenden Bildschirm sehen:

Bild
Bild

Irgendwann meldet Windows "Bereit zum Koppeln". An dieser Stelle können Sie auf das Bean-Symbol klicken und nach einigen Sekunden fordert Windows Sie auf, einen Passcode einzugeben. Der Standard-Passcode für die Bohne ist 00000

Bild
Bild

Wenn der Passcode richtig eingegeben wurde, zeigt Windows an, dass das Gerät richtig angeschlossen ist. Sie müssen sich in diesem Zustand befinden, um die Bean programmieren zu können.

Bild
Bild

Sobald Sie gekoppelt und verbunden sind, verwenden Sie den Bean Loader, um die Firmware auf die Bean zu laden. Ich stellte fest, dass dies häufiger fehlschlug und es schien mit der Nähe zu meinem Computer zusammenzuhängen. Bewegen Sie die Bohne, bis Sie einen Ort finden, der für Sie geeignet ist. Manchmal funktioniert nichts und der Bean Loader schlägt vor, das Gerät erneut zu koppeln. Normalerweise wird die Verbindung wiederhergestellt, wenn Sie den Pairing-Prozess erneut durchlaufen. Sie müssen das Gerät entfernen, bevor Sie es erneut koppeln.

Bild
Bild

Der Betrieb des Bohnenladers ist unkompliziert und auf ihrer Website gut dokumentiert. Wählen Sie bei geöffnetem Bean Loader den Menüpunkt "Programm", um einen Dialog zu öffnen, um zur Hex-Datei zu navigieren, die im Firmware-Schritt dieser Anleitung bereitgestellt wird.

Bild
Bild

Sobald die Firmware geladen ist, SCHLIESSEN Sie den Bean Loader, damit die Verbindung zwischen dem Bean Loader und der Bean-Hardware getrennt wird. Sie können immer nur eine Verbindung haben. Öffnen Sie nun die EvoThings Workbench und starten Sie den EvoThings Client auf dem Smartphone oder Tablet.

Bild
Bild

Wenn Sie auf die Schaltfläche "Ausführen" klicken, lädt der EvoThings-Client automatisch die HTML-Seite für das Thermometer. Klicken Sie auf die Schaltfläche Verbinden, um eine Verbindung mit der Bean herzustellen, und Sie sollten die angezeigten Temperaturen sehen. Erfolg!

Schritt 8: Fazit

Abschluss
Abschluss

Wenn alles richtig gebaut und konfiguriert ist, sollten Sie über ein funktionierendes System verfügen, mit dem Sie die Temperaturen mit 2 Sonden sowie die Temperatur des BMA250-Sensors auf dem Bean-Entwicklungsboard überwachen können. Mit EvoThings kann noch mehr getan werden - ich habe nur an der Oberfläche gekratzt, also überlasse ich dieses Experimentieren für Sie! Danke fürs Lesen! Wenn etwas schief geht, hinterlassen Sie einfach Kommentare und ich werde helfen, wo ich kann.

Empfohlen: