Inhaltsverzeichnis:
- Schritt 1: Erstellen Sie die Xbee-Empfänger
- Schritt 2: Das Thermometer
- Schritt 3: Was ist ein Spannungsteiler?
- Schritt 4: Was ist ein Thermistor?
- Schritt 5: Senderschaltung
- Schritt 6: Zuhause, Zuhause, hat keine Reichweite
- Schritt 7: Software
- Schritt 8: Nächste Schritte
Video: Tweet-A-Temp - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:23
Von Z0tZot's Homebrew ExperimentsFolgen Sie mehr vom Autor:
Mein ältester Sohn (Minion #1) und ich begannen mit dem Bau eines Tweet-A-Watt und befolgten die Anweisungen nicht richtig, nämlich dass wir beide Receiver als Standard-Receiver gemacht haben, anstatt nur einen und dann den zweiten XBee-Receiver halb bestücken Wir hatten zwei Möglichkeiten, entweder die zusätzlichen Teile abzuschneiden oder etwas anderes. Da ich vor Ort noch kein Kill-A-Watt gefunden habe und ich dieses externe / interne Thermometer hatte, das ich seit 10 Jahren computerisieren wollte, wusste ich, was ich tun musste: Ich musste das Thermometer verwenden, um zu messen die Temperatur meines Whirlpools und twittere ihn dann! Ich hatte Minion #1 kürzlich den Auftrag gegeben, einen Whirlpool-Controller ohne Grenzen zu beschreiben. Er erwähnte, wir könnten es drahtlos machen, aber nein, das ist albern … Ich liebe es, wenn ein 10-Jahres-Plan in Erfüllung geht. Siehe es auf Twitter
Schritt 1: Erstellen Sie die Xbee-Empfänger
Bauen Sie zwei XBEE-Empfänger. Ich habe die Empfänger von Lady Ada verwendet, jeder Empfänger ist ausreichend. Sie benötigen Zugriff auf den VREF- und AD0-Pin des XBee. Der Trick beim Tweet-A-Watt ist die Konfiguration. Tatsächlich stellen Sie eines der Geräte so ein, dass es die Werte aus dem Kill-A-Watt wiederholt mit: ATMY=1, SM=4, ST=3, SP=C8, D4=2, D0=2, IT=13, IR=1 Dies stellt die Adresse (1) ein, stellt den Schlafmodus, den Timer und die Periode ein und setzt dann die Pins 4 und 2 auf den Analogeingangsmodus (2), der 0x13 (19 dezimal) Pakete sendet, 1 ms zwischen den Abtastungen. Der Trick hier ist der Analogeingang. Kleine Spannungen (0-5V) können Sie direkt vom XBee ablesen. Im Tweet-A-Watt würden Sie die Pins 4 und 0 so einstellen, dass die vom Kill-A-Watt gemessenen Ampere und Volt gesendet werden. In Wirklichkeit sendet es das nicht, es sendet die kleine Spannung, die von den Chips im Kill-A-Watt gemessen wird, an den Empfänger XBee, der an einen Computer angeschlossen ist. Die Software am Computer liest ständig die empfangenen Pakete und berechnet die tatsächliche Spannung und Stromstärke neu und berechnet dann die Wattzahl.
Schritt 2: Das Thermometer
Ich habe vor etwa 10 Jahren zwei dieser Innen- / Außenthermometer vom Heimdepot gekauft. Ich war immer fasziniert davon, dass das äußere "Thermometer" mit etwas, das wie ein normaler Audiostecker aussah, an die Basiseinheit angeschlossen wurde. Ich habe mich immer gefragt, ob ich die Temperatur messen könnte, indem ich das an eine Mikrofonbuchse eines Computers anschließe.
Es stellte sich heraus, dass ich es wahrscheinlich zum Laufen bringen könnte, aber es wäre schwierig. Der Stecker ist eigentlich ein 3/32 -Klinkenstecker anstelle eines 1/8-Audiosteckers. Dies ist der Standardstecker für Mobiltelefone für externe Mikrofone. Dies stellte ein Problem dar, da ich in meinem Müllhaufen keine Mikrofonstecker finden konnte waren nicht auf der Oberfläche montiert. Ich musste ein Set von Radio Shack (2 $) kaufen, was das Projekt erheblich verzögerte (zu einer Hütte zu gelangen war nicht einfach). Ich nahm eine Einheit auseinander, bevor mir plötzlich klar wurde, wie das Ding funktionierte, es war ein Spannungsteiler! Es war klar, als ich darüber nachdachte. Es machte das Leben sehr einfach.
Schritt 3: Was ist ein Spannungsteiler?
Einer der besten Orte, um mehr über Elektronik zu erfahren, ist Wisconsin Online-Teiler werden auf dieser Seite (unten rechts) erklärt, oder Sie können die Wikipedia-Seite für Spannung besuchen. Kurz gesagt, wenn Sie zwei Widerstände in Reihe haben, beträgt der Spannungsabfall an jedem Widerstand proportional zur Größe des Widerstands. Wenn Sie Spannung V über einen Stromkreis von R(1) + R(2) haben, dann ist V = V(1) + V(2). Wenn V=3V und V(2) = 2V sind, wissen Sie, dass V(1) = 1V ist. Die Grundlage des Ohmschen Gesetzes ist nun, dass der Strom (I) V/R ist. In einer Reihenschaltung ist der Strom überall gleich, also ist der Strom durch A und B für den gesamten Stromkreis gleich. Daher I = V1/R1 = V2/R2. Wir wissen V2 = V - V1, Einstecken sehen wir V1/R1 = (V-V1)/R2. Auflösen erhalten wir R2 = R1*(V-V1)/V1 Wenn wir also wissen, ob wir V(1), V und R(2) kennen, können wir nach R2 auflösen. Wenn wir R2 haben, kennen wir den Wert von Thermistor!
Schritt 4: Was ist ein Thermistor?
Ein Thermistor ist ein Widerstand, der seinen Widerstand mit der Temperatur ändert. Mit den Techniken des Spannungsteilers zur Bestimmung des Widerstands können wir feststellen, welche Temperatur es ist. Das Problem ist, dass ich einen billigen Thermistor in einem Gehäuse eines 10 Jahre alten Produkts habe. Wie sollte ich eine Funktion erstellen, um von einem Widerstand zu einer Temperatur zu gelangen? Nun, ich habe ein Thermometer, in das es eingesteckt wird! Also habe ich viel gemessen. Ich habe die Temperatur nach unten kopiert und dann den Widerstand des Thermistors gemessen. Ich habe es in den Kühlschrank gestellt, dann lege ich es in warmes Wasser. Später würde ich Zimmertemperaturen nehmen, da ich Zeit hatte. Ich dachte, ich hätte die Wikipedia-Plage lesen können, versucht, die a- und b-Faktoren zu erraten, aber ich nahm an, dass ich eine nichtlineare, möglicherweise fehlerhafte Komponente verwendete, die nicht mehr zu ihrer Herstellung passte Spezifikationen. Oh, und ich bin faul. Also habe ich alle Werte in Excel gedumpt und dann grafisch dargestellt. Ich war ursprünglich besorgt, dass ich mich an die tiefe dunkle Mathematik von etwas wie "Least Squared Fit" erinnern musste, als ich entdeckte, dass Excell dies tun wird ich! Offensichtlich fehlen mir Lücken in der Grafik, aber ich habe viele gute Daten zu den Whirlpool-Temperaturen (100-105 ° F) erhalten. Bei der Überprüfung der Raumtemperaturbereiche ist mir etwas aufgefallen, das meine Arbeit fast wertlos macht. Das Thermometer "Precise Temp" meldete einen Fehler von 3-7 Grad zwischen "innen" und "außen", wenn der Thermistor nur wenige Zentimeter entfernt war! Dies könnte daran liegen, dass ich den Thermistor zwischen den Geräten gemischt und abgestimmt habe, aber ich wette, es hat mehr mit der Qualität eines 10 Jahre alten Artikels im Wert von 10 US-Dollar zu tun. Unabhängig von der "Genauigkeit" der Temperatur brauchte ich Präzision und mehrere Tests desselben Bereich zeigte sehr enge Ergebnisse über Tage. Auf lange Sicht werde ich den Thermistor wahrscheinlich an einem Rohr befestigen, das in den Whirlpool führt, also brauche ich sowieso einen Versatz. Wenn ich also Excel dazu bringe, die Gleichung anzuzeigen, füge ich sie in den Code ein, und bis jetzt ist es " nah dran."
Schritt 5: Senderschaltung
Die Senderschaltung ist einfach. Ich wählte einen 100-kOhm-Widerstand für R2, da es so aussah, als würde er in den Bereich aus dem Diagramm passen, und ich hatte einen Reservewiderstand, um verschiedene Dinge mit den Minions zu entlöten. Ich verbinde dies in Reihe mit dem Thermistor über einen Stecker. Dann habe ich einen Akku hinzugefügt. Ich lief 3 V an VREF und die Oberseite des Spannungsteilers und an den Xbee +3V-Eingang. Ich lege den GND (Battery Negative) an den GND-Eingang und an die Unterseite des Teilers. Ich habe dann AD0 (Volt in) mit der Mitte der Spannungsteilerschaltung verbunden.
AD0 liest eine relative Spannung von VREF zu V(1). Wenn die Batterie abnimmt, sollte die relative Spannung gleich sinken. Irgendwann werde ich das Gerät mit einer lokalen Stromquelle versorgen. Das fertige Gerät hat gut funktioniert, wir haben alles mit Krokodilklemmen verbunden, was es zerbrechlich gemacht hat. Nachdem ich den weiblichen 3/32"-Anschluss bekommen habe, lege ich den Sender in eine beliebige Plastikwanne, die wir hatten (einen ehemaligen Hummus-Behälter). Dies sollte ihn vor Witterungseinflüssen schützen. Da ich "Panel Mount"-Steckverbinder gekauft habe, war es genauso einfach B. ein Loch in den Kunststoff bohren, um den Stecker mit einer ziemlich wasserdichten Verbindung nach außen zu bringen. Als wir das hatten, war es Zeit zum Testen.
Schritt 6: Zuhause, Zuhause, hat keine Reichweite
Eines der ersten Dinge, die uns auffielen, war, dass die Range einen schrecklichen Tod starb, sobald wir mit dem Sender das Büro verließen. Wir haben es von einem anderen Zimmer aus versucht und die Ergebnisse waren schrecklich. 1 Meter entfernt ist es kaputt gegangen. Es ist an der Zeit, nach Lösungen zu suchen. Mir fiel ein, dass wir bei unseren Tests 4 WLAN-Quellen in einem Umkreis von 5 Fuß hatten, alle im 2,5-GHz-Bereich wie der Xbee. Außerdem haben wir den Xbee überhaupt nicht "gezielt". Nach Recherchen habe ich festgestellt, dass ich ein leistungsstärkeres Xbee-Radio (ca. 23 US-Dollar) kaufen oder Antennen hinzufügen könnte. Eines der Dinge, die ich brauchte, war ein guter Reichweitentest hat einen "Range Test" eingebaut, aber es hat nichts gebracht. Ich habe einige Zeit damit verbracht herauszufinden, wie es funktioniert. Das war eigentlich einfacher als gesagt. Ich brauchte den X-CTU-Test nicht wirklich, nur die "RX Signal Strength Indicator" (RSSI) -Wert. Ich habe in xbee.pyTweet-A-Watt nachgesehen und genau dort, Zeile 39: [code]self.rssi = p[3][/code]Was bedeutet, dass es Teil ist des Xbee-Rückgabewerts! (xb.rssi in wattcher), also habe ich eine Debug-Zeile für meinen Hack modifiziert: print str(counter) +": RSSI: " + str(xb.rssi) + " | " + time.strftime("%Y %m %d, %H:%M")+ ", " + ": Spannung: " + str(CalcualtedVolts) + " avgv " + str(avgv) + " Thermistor: " + str(x) + " Temperatur: " + str(Temperatur) Das erzeugt eine Linie wie diese: 373: RSSI: 82 | 2009 04 26, 11:18,: Spannung: 1.80100585938 avgv 593 Thermistor: 71.2276559865 Temperatur: 78.6813444881 Sie können Siehe auch RSSI mit Verarbeitung von Tom's Igoe's Seite. Obwohl Sie die Paketlänge (oben) ändern möchten, da sich Processing über das Schreiben über das Ende der Paketpuffergröße beschwerte. Ich glaube, Sie müssen größer als 2 * erwartet sein Paketlänge. Toms Code sucht rückwärts für ein vorheriges Paket, was bedeutet, dass es eine Weile laufen kann, wenn es den Ox7E-Paketindikator verfehlt. Da ich mich nahe dem äußeren Rand des Messbereichs befinde, kann es für eine Weile passieren. Ich stelle meinen auf 600 und es hörte auf, mir die Meldung "Fehler, deaktivieren serialEvent()" zu geben. Toms Code druckt nur die neueste Einstellung, was für mich nicht so nützlich ist. Meine Debug-Zeile lässt mich verfolgen ändert sich, als Minion #1 sich wundert. Jetzt hatten wir einen guten Weg zum Messen, mehr als "Hey Papa, wir haben ein Paket" war es an der Zeit, ein paar selbstgebräunte Antennenideen auszuprobieren! Unter Verwendung von Ideen von https://www.usbwifi.orconhosting.net.nz/ habe ich festgestellt, dass der Corner Cube einen dB-Abfall gemessen hat, obwohl er in der Praxis nicht zu helfen schien, ein getrenntes Paar zu verbinden. Der Vegatible Steamer war tatsächlich der beste zum Zielen und Wiederverbinden. Das Setup von USB Wifi unterscheidet sich stark von einigen anderen Leuten. Die Steamer haben einen Stiel in der Mitte, der eine einfache XBee-Platzierung ermöglicht. Eine Pho-Schale mit Alufolie sieht ebenfalls vielversprechend aus (obwohl wir die Alufolie später einfach entfernt und befestigt haben). Wir haben auch versucht, eine Parabel mit einem gebogenen Stück heißer Räder "Track" zu machen, aber es schien nicht zu helfen. Eines der Probleme ist, dass wir am äußeren Rand des Bereichs getestet haben. Die meisten 2,5-GHz-Radios, insbesondere XBee, verwenden Spread Spectrum, was bedeutet, dass sie ein Aber zum "Synchronisieren" nehmen können und dann sucht die XBee-Software nach dem Anfang eines XBee-Pakets, bevor sie ausgelöst wird. Dies bedeutet, dass Sie einen Alles-oder-Nichts-Effekt erhalten. Entweder rasten die Funkgeräte aufeinander ein oder nicht. Manchmal scheint es Glück zu sein, aber tatsächlich sind Sie in diesen Entfernungen eine Antenne und können die Ergebnisse beeinflussen. Ich habe zwei Dampfer gekauft, aber dann festgestellt, dass die Kosten für einen Dampfer aus dem örtlichen Supermarkt 10 US-Dollar betrugen, und für den Preis von 2 Dampfern kann ich einen leistungsstärkeren XBee bekommen. Also habe ich mir noch ein paar Stellen angeschaut und ein ziemlich tiefes Sieb gefunden, das noch besser geworden ist. Es waren 7 Dollar. Ich glaube, die Tiefe ist wichtig, da ich auf der sendenden Seite der Dinge bin, spiegelt sie mehr vom Signal wider (gemäß den Anmerkungen in https://www.usbwifi.orconhosting.net.nz/number13.jpg). Endergebnisse, ist das mit einem Gemüsedampfer an einem Ende (muss ausgetauscht werden) und einem Sieb am anderen, ich habe Signal ca. 20-30m, von einem Innenbüro, durch 3-4 Wände, raus zum Whirlpool!Pro-Tipp: Denk dran Bringen Sie das Sieb mit, wenn Sie möchten 1) Ihr Ehepartner bleibt und / oder 2) später gedünstetes Gemüse möchten. Persönlich mag ich das blütenblattartige Aussehen des Gemüsedämpfers.
Schritt 7: Software
Angefangen mit der Tweet-A-Wattsoftware habe ich angefangen, den Python-Code zu hacken. Meistens musste ich die Watt-Konvertierung und die Verlaufsfunktionen entfernen, und dann musste ich eine Reihe von Schutzmaßnahmen zur Division durch 0 hinzufügen (die Tweet-A-Watt gehen davon aus, dass Pakete Daten enthalten). Dann habe ich die Formel aus Excel in das Programm eingefügt und getestet. Ich habe es so eingestellt, dass jedes Paket gedruckt wird, und ich habe viel Debug im Code, um Probleme zu beheben versucht, ein großes Projekt in Python zu machen. Ich konnte nicht alle Bibliotheksabhängigkeiten und Basispakete in weniger als 20 Stunden in Windows, Windows 64, Ubuntu und Fedora zum Laufen bringen. Ich musste schließlich fast alles von Grund auf neu bauen und selbst dann funktionierten einige Funktionen nicht. Ich habe 2.4, 2.5, 2.6 und verschiedene 3. X-Versionen ausprobiert und dann Versionen jeder Bibliothek, die wiederum Abhängigkeiten von anderen Paketen hatten. Während andere vielleicht gegen die Sprache schimpfen, fand ich das bloße Installieren, selbst mit vielen der "einfachen Installateure", bestenfalls entmutigend! Nachdem ich die Temperaturen berechnet hatte, habe ich eine 1-Grad-Anpassung vorgenommen, weil ich dem Whirlpool nicht glauben konnte war bei 106F. Ich glaube wirklich nicht, dass es bei 105 ist. Ich habe dann die Berichterstattung und Twitter-Logik getweekt. Da ich nicht sicher bin, ob ich Pakete oder gute Pakete bekomme, habe ich mich entschieden, die Temperatur einmal pro Stunde zu melden. Ich gehe davon aus, dass ich das in einer Weile zurückschneiden werde. Derzeit läuft das Skript als normaler Benutzer. Ich werde es irgendwann zu einem Dienst verschieben wollen.
Schritt 8: Nächste Schritte
Es gibt einige offensichtliche nächste Schritte:
1) Ersetzen Sie das Gemüsesieb a. Minions brauchen ihr Gemüse! B. Der war sowieso alt. 2) Platzieren Sie die Whirlpool-Antenne unter Deck a. Das Deck könnte es noch "weiter" machen, aber es wird ein hässlicheres Setup ermöglichen. B. Ich kann dann den Thermistor zur Unterseite führen und eine bessere Stelle finden. 3) Weitere Sensoren hinzufügen a. Am einfachsten ist ein Außentemperatursensor. B. Aber es gibt keinen Grund, warum wir den Zustand der Bedienfelder nicht erkennen konnten, insbesondere der Wärmesensor, der auf magische Weise berührt wird, wenn Kinder vorbei sind. C. Andere Wettersensoren (Wind, Feuchtigkeit usw.) d. Es wäre schön, den Whirlpool zu steuern und ich könnte die Heizung für einen Großteil der Nacht und des Tages ausschalten. 4) Ich kann die Software anpassen a. Minions wollen bereits bessere Nachrichten pro Temperatur. B. Wir sollten in der Lage sein, auf Antworten und DMs zu reagieren. C. Ich sollte intelligenter twittern (weniger als einmal pro Stunde). D. Ich habe noch andere lustige Dinge geplant.