Inhaltsverzeichnis:
- Schritt 1: Zu lösende Probleme
- Schritt 2: Die Hardware
- Schritt 3: Der Ansatz
- Schritt 4: Verdrahten
- Schritt 5: Der Arduino-Code, Hauptskizze
- Schritt 6: Hinweise zum Code
- Schritt 7: Der Arduino-Code, Klassen
- Schritt 8: Überwachung des Systems
- Schritt 9: Das Python-Skript
- Schritt 10: Noch zu tun…
- Schritt 11: Update 3/16, "permanenter" Build
- Schritt 12: Update 01.12.2018 - Willkommen im IoT
Video: Crawl Space Monitor (auch bekannt als: Keine gefrorenen Rohre mehr !!) - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Das Wasser zu meinem Haus kommt aus meinem Brunnen durch einen unbeheizten Kriechkeller. Auch die gesamte Küchen- und Badinstallation verläuft durch diesen Raum. (Innere Klempnerarbeiten waren Mitte der 70er Jahre in diesem Haus ein nachträglicher Gedanke!) Ich habe Wärmelampen an Thermostatsteckern für "Lagertanks" verwendet, um eine Temperatur über dem Gefrierpunkt zu halten. Bei dieser Anordnung gab es einige erhebliche Probleme: 1 - Keine Sicht. Das erste Anzeichen für durchgebrannte Glühbirnen sind eingefrorene Rohre!2 - Manchmal ließen sich die Stecker nicht schließen. Das sorgte für böse Überraschungen bei der Stromrechnung.3 - Keine Granularität. Ich hielt 3 Glühbirnen "online" (insgesamt 750 Watt) und es war eine Alles-oder-Nichts-Lösung. (2 Glühbirnen würden nicht immer damit umgehen.) Nachdem ich Arduino vorgestellt hatte und einige der Dinge gesehen hatte, die andere Leute damit machten, beschloss ich, es auszuprobieren. Ich gebe direkt zu, dass ich schamlos Beispielcode aus den Projekten anderer Leute geschnappt und optimiert habe, damit dies funktioniert, obwohl ich letztendlich fast alles neu geschrieben habe. Anfangs habe ich diese "WiFi-Wetterstation" gebaut, die ich auf gefunden habe Adafruit.com und änderte es. Anstatt eine Website zu aktualisieren, habe ich Amazon Web Services verwendet, um mir Status-Updates per SMS zu senden. Ich habe auch die Steuerung einiger 110-V-Relais hinzugefügt (https://www.adafruit.com/products/268). Ich wurde dann „intelligent“und beschloss, es „rauer zu machen“– na ja – irgendwas hat etwas kurzgeschlossen und ich bekam einen Hauch des magischen blauen Rauchs. Alles gebraten… Da ich keinen weiteren CC3000-WLAN-Ausbruch hatte, habe ich es diesmal anders gemacht. Ich habe es so gebaut, dass es über eine serielle Schnittstelle interaktiv überwacht wird, und dann eine EZ-Link Bluetooth FTDI-Schnittstelle hinzugefügt. (Nicht mehr den Laptop für Software-Updates unter das Haus schleppen!!!) Ich habe auch eine Python-Schnittstelle gebaut, die sich über Bluetooth mit dem Gerät verbindet, es regelmäßig abfragt und Statusinformationen auf meinem Mac anzeigt. (Es gibt auch eine "menschliche Schnittstelle", auf die von jeder Terminalemulationssoftware zugegriffen werden kann.) Als Ergebnis des Neuschreibens und Entfernens des gesamten WiFi- und RTC-Codes ist die Größe des Projekts von über 29 K auf kaum 10 K geschrumpft. Es hat auch die Zuverlässigkeit in dem Maße verbessert, dass der Hardware-Watchdog in den paar Wochen, in denen er läuft und ich optimiert habe, überhaupt nicht ausgelöst wurde.
17.02.16 Update/Anmerkung: Beim Versuch, einen Teil des Codes richtig zu formatieren (insbesondere die Einrückung des Python-Codes), wurden die Dinge von hässlich zu unbrauchbar. Ich bin mir sicher, dass das Problem irgendwo bei mir liegt, und ich werde mich bemühen, es herauszufinden. Bis dahin habe ich Links zu den Codedateien über DropBox hinzugefügt. Sie sollten für jedermann zugänglich sein. Wenn nicht, lass es mich wissen, damit ich sie dir auf andere Weise zukommen lassen kann!
Schritt 1: Zu lösende Probleme
Das System musste die folgenden Dinge für mich tun:1 - die Temperatur im Kriechkeller überwachen.2 - Wärmelampen nach Bedarf einschalten, um die Temperatur über dem Gefrierpunkt zu halten.3 - Wenn es nicht in Betrieb ist, testen Sie regelmäßig die Glühbirnen und geben Sie mir Sichtbarkeit ihres Status.4 - Geben Sie mir einen Überblick über die Temperatur und den Systemstatus, einschließlich: - läuft das System? - Wie ist die Temperatur JETZT? - Was ist die kälteste Temperatur? - wie viele Glühbirnen liefen? - Wie viele Glühbirnen testen gut? - Was ist meine Gesamtzeit in "Lichtminuten" (auch bekannt als "Brennzeit")?5 - Führen Sie alle oben genannten Schritte aus, ohne dass ich unter das Haus kriechen muss!!! ein Lichtsensor. Einige andere Probleme, die ich ansprechen wollte, war die Zykluszeit der Lichter. Zu langsam, und ich verbrenne unnötigen Strom. Zu schnell, und ich laufe Gefahr, sie durch all das Ein- und Ausschalten mit dem damit verbundenen Aufheizen und Abkühlen auszubrennen.
Schritt 2: Die Hardware
2 250-Watt-Wärmelampen1 500-Watt-Arbeitslampe (eine meiner Wärmelampen ist verschwunden, daher ist dies ein Stand-in)Arduino UnoDHT22 Temperatur-/FeuchtigkeitssensorGA1A12S202 LichtsensorPowerSwitch 110V-RelaisBluefruit EZ-Link Serial Interface & ProgrammerHigh-Tech-Gehäuse (Rubbermaid-Wanne in Sandwichgröße))Kabelverschraubung1/2-großes SteckbrettAcrylplatte für Steckbrett und ArduinoVerschiedene Überbrückungsdrähte. Coleman 5-Steckdose "Werkstattleiste"Ich habe auch ein Adafruit Trinket als Hardware-Wächter verwendet, aber es hat sich als unnötig erwiesen (Jinx natürlich!) schrieb ein separates instructable darüber, also werde ich das hier nicht wiederholen. Der Coleman-Pigtail war ein schöner Fund, da er mir 4 Steckdosen für meine Wärmelampen PLUS eine Steckdose für das Arduino-Netzteil ohne zusätzliche Splitter oder Steckdosenleisten gab. Bewertet mit vollen 15 Ampere mit einem Schalter und einem internen Unterbrecher, konnte es alles bewältigen, was ich durch eine einzige Steckdose ziehen konnte.
Schritt 3: Der Ansatz
Während das System anwendungserstellt ist, um herumzusitzen und einige Dinge relativ langsam zu erledigen, wollte ich nicht ein System erstellen, bei dem der Controller in delay()-Zyklen saß und nicht reagierte. Ich wollte auch in der Lage sein, die Konfigurationsparameter so schnell wie möglich zu ändern – sicherlich nicht in einer Weise, die das Umschreiben von Code oder das Ausführen von Massensuch- und Ersetzungsoperationen an der Quelle erfordert fand die besten Artikel von Bill Earl zum Thema "Multitasking the Arduino" (hier starten: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) und machte sich an die Arbeit. Durch das Erstellen der Klassen "Timer" und "Heizung" konnte ich alle gewünschten Zeitfunktionen ausführen, ohne delay() zu verwenden (mit nur wenigen Ausnahmen) und die Glühbirnen ("Heizungen") mit einer einzigen Codezeile für jede konfigurieren einer.
Schritt 4: Verdrahten
Das Fritzing-Diagramm enthält nicht den Bluefruit EZ-LinkArduino 5V & Masse zum Steckbrett busDHT22 Pin 1 bis 5V busDHT22 Pin 2 zum Arduino Pin 7DHT22 Pin 4 zur Masse bus10K Widerstand zwischen DHT22 Pins 1 und 2GA1A12S202 VCC Pin zu 5V busGA1A12S202 GND Pin zu Masse busGA1A12S202 OUT-Pin zu Arduino A0Arduino 3V-Pin zu Arduino AREF PinRelay Masse führt zu Masse busRelay 1 Stromkabel zu Arduino A1Relay 2 Stromkabel zu Arduino A2Relay 3 Stromkabel zu Arduino A3Relay 4 Stromkabel zu Arduino A4Die meisten dieser Verbindungen können nach Belieben neu angeordnet werden. Das einzige, was kritisch ist, ist, dass das OUT-Kabel des Lichtsensors zu einem analogen Pin gehen muss. Diese Pinbelegung funktioniert mit meinem geschriebenen Code. Wenn Sie den Hardware-Watchdog verwenden, sehen Sie, dass mein Code den Herzschlag auf Arduino Pin 2 ausgibt.
Schritt 5: Der Arduino-Code, Hauptskizze
CrawlSpace_monitor.ino
Schritt 6: Hinweise zum Code
Die folgenden Codezeilen erstellen die Instanzen der Heizung und definieren die Betriebsparameter::// Heater(relayPin, onTemp(f), offTemp(f), minMinutes, testInterval(minutes), luxDelta)Heizung heat1 = Heater(A1, 38, 43, 20, 1440, 5);Heizung Heizung2 = Heizung(A2, 36, 41, 20, 1440, 5);Heizung Heizung3 = Heizung(A3, 34, 39, 20, 1440, 5);Heizung Heizung4 = Heizung (A4, 32, 37, 20, 1440, 5);(Und ja, ich habe alle 4 Heizungen definiert, obwohl ich im Moment nur 3 betreibe. Ich müsste noch ein weiteres Relais besorgen, aber dann würde das Hinzufügen der 4. so einfach wie das Einstecken sein.) Ich staffele ihre Triggertemperaturen, beginnend bei 38 Grad für den ersten und endend bei 32 für den nicht vorhandenen vierten. Eines der Dinge, die ich fand, als ich anfing, dies zusammenzubasteln, war, dass ich einen Temperaturbereich angeben und eine minimale "Brennzeit" definieren musste, oder ich habe die Lichter wie verrückt ein- und ausgeschaltet. Hier gebe ich jedem von ihnen eine Streuung von 5 Grad sowie eine Mindestbrenndauer von 20 Minuten. Ich habe das Testintervall auf 24 Stunden eingestellt und 5 Lux als Mindestlichtwert eingestellt, um festzustellen, ob eine Glühbirne noch funktioniert. In diesen 4 Codezeilen befindet sich so ziemlich alles, was konfiguriert werden muss.
Schritt 7: Der Arduino-Code, Klassen
Ich habe 3 Klassen für dieses Projekt erstellt. Sie waren "Timer", "Heizung" und "Akku". Mit etwas mehr Überlegung sollte ich den Akku in einen Timer klappen können, habe ich aber noch nicht. Hier sind sie in voller Länge:heater.h
Timer.h
Akkumulator.h
Schritt 8: Überwachung des Systems
Ich habe eine einzige Schnittstelle zu zwei separaten Monitoren erstellt. Es ist eine interaktive Sitzung über die serielle Konsole. In meinem Fall verwende ich den Bluefruit EZ-Link, damit ich auf das System zugreifen kann, ohne unter das Haus zu kriechen oder zu versuchen, ein USB-Kabel zwischen den Bodenbalken zu schlängeln! Ein zusätzlicher Vorteil von EZ-Link ist, dass ich auch neuen Programmcode über Bluetooth auf das Arduino hochladen kann Monitor. Wenn Sie das erste Mal eine Verbindung herstellen, gibt es keine Reaktion, aber die Tastendrücke "u" (für "Update") und "t" (für "Test") erhalten Sie die im Screenshot gezeigte Ausgabe. "m" ("monitor") und "s" ("sys check") liefern Ihnen die gleichen Daten, aber in einem viel weniger lesbaren Format. Diese sollen von einem anderen Programm zur automatischen Anzeige "aussortiert" werden. Ich habe ein Python-Skript zusammengestellt, das genau das tut. Bei jeder anderen Taste wird die angezeigte Fehlermeldung angezeigt. Sie sehen einen Wert für die "Brennzeit" - stellen Sie sich dies wie "Birnenminuten" vor - 1 Glühbirne für 10 Minuten = 10 Minuten, 3 Glühbirnen für 10 Minuten = 30 Minuten.
Schritt 9: Das Python-Skript
crawlspace_gui.py
Schritt 10: Noch zu tun…
Es mag nicht schön oder perfekt sein, aber es ist effektiv und erweist sich als zuverlässig. UND, ich hatte diesen Winter noch keine Probleme mit eingefrorenen Rohren!!! Ich habe eine Hitliste mit Dingen zu tun. Jetzt, wo es funktioniert, kann ich natürlich die meisten dieser Dinge nie schaffen oder auch nicht: Lassen Sie Bluetooth auf einem meiner Raspberry Pis laufen, damit ich einen dedizierten Monitor erstellen kann. Lernen Sie mehr Python - dann bereinigen Sie das Python Schnittstelle. Diese Trennung der Elemente ist nicht beabsichtigt und ich verstehe nicht, warum sie da ist. Fügen Sie eine Schnittstelle zu etwas wie dem E/A-Dienst von Adafruit hinzu, damit ich sie von überall aus überwachen kann. Fügen Sie SMS-Benachrichtigungen hinzu. Wechseln Sie zu einem kleineren Controller (möglicherweise einer Metro). Mini oder ein Trinket Pro?), weniger teure Relais und bessere Verpackung. Holen Sie es von einem Steckbrett und auf ein "Perma Proto" -Board. Konfigurationsparameter im EEPROM. Eine detailliertere Schnittstelle, die anzeigt, welche Glühbirnen gut sind, und möglicherweise sogar Brenndauer für die einzelnen Glühbirnen. Wie ich sie fertig bekomme, werde ich zurückkommen und dieses Instructable aktualisieren.
Schritt 11: Update 3/16, "permanenter" Build
Nachdem ich bei kaltem Wetter eine gute Pause gemacht habe, habe ich das Gerät zurückgeholt und auf einen kleineren Controller verschoben (ich hatte vor, einen Trinket Pro zu verwenden, hatte aber einen Adafruit Metro Mini, der von keinem anderen Projekt beansprucht wurde), und lötete ihn an ein Perma-Proto-Board, und alles in ein besseres Gehäuse. Aufgrund seiner Zuverlässigkeit habe ich den Hardware-Watchdog nicht wieder darauf gesetzt. Ich verwende immer noch nur 3 Lampen / Relais, bei denen das System 4 verarbeiten kann. Das Bluetooth-Modul befindet sich auf einem gelöteten Header, kann also entfernt werden, wenn ich es woanders brauche. Es waren keine Codeänderungen erforderlich, um auf den neuen Controller zu wechseln - eine einfache Neukompilierung und -ladung hatte mich in wenigen Minuten einsatzbereit gemacht. (Der Metro Mini hat eine identische Pinbelegung wie der Arduino Uno und ist auch ein ATMega328-Prozessor.)
Schritt 12: Update 01.12.2018 - Willkommen im IoT
Bei uns hat das System einwandfrei funktioniert. Nach zwei ziemlich strengen Wintern KEINE gefrorenen Rohre. Tatsächlich war das System in der Lage, die Rohre zu warten, ohne jemals mehr als 2 Glühbirnen zu verbrennen. Die dritte Glühbirne online zu haben war eine schöne Versicherung, aber wir haben sie bisher noch nie gebraucht.
Im dritten Jahr des Systems ist das Bluetooth-Modul ausgefallen. Wir haben auch ein neues Haus gebaut, sodass das Überwachungssystem weit außerhalb der Bluetooth-Reichweite liegt. (Das alte Haus bleibt eine Weile, aber nicht für immer.) In der Zwischenzeit habe ich viel mit dem WLAN-fähigen Prozessor ESP8266 gemacht; sowohl im Adafruit Feather-Format als auch im Open-Source-Format "NodeMCU". Die NodeMCU ist im Allgemeinen bei Amazon für etwa 5 US-Dollar erhältlich - viel weniger, wenn Sie in großen Mengen und / oder von jemandem wie AliExpress kaufen.
Diese neue Version behält die serielle Schnittstelle bei, so dass sie weiterhin mit einem Bluetooth-Modul oder einer direkten seriellen USB-Verbindung und dem vorherigen Python-Skript verwendet werden kann. Die neue Version verfügt jedoch über eine Webseiten-Schnittstelle. Wie geschrieben enthält es die folgende Funktion:
Ein WiFi-Netzwerkmanager, um hartcodierte WiFi-Anmeldeinformationen zu eliminieren.
Die Möglichkeit, die Firmware mit der Arduino IDE drahtlos zu aktualisieren (solange Sie sich im selben WLAN-Netzwerk befinden - beachten Sie, dass nach einem USB-Upload auf das Gerät ein Reset erforderlich ist, bevor OTA-Updates funktionieren). BITTE ändern Sie das OTA-Passwort in Zeile 6 so, dass es für Sie eindeutig ist!
Eine Webseite, die die gleichen Daten wie das Python-Skript anzeigt, mit einer automatischen Aktualisierung jede Minute. Ich habe keine Art von Sicherheit auf die Seite gelegt, da sie nur zur Anzeige dient.
Den neuen Code finden Sie hier. Beachten Sie, dass sich die Pin-Namen beim Wechsel zur NodeMCU ändern.
Empfohlen:
Kein Makey Makey? Keine Probleme ! So machen Sie Ihren Makey Makey zu Hause: 3 Schritte
Kein Makey Makey? Keine Probleme ! So machen Sie Ihr Makey Makey zu Hause!: Wollten Sie schon immer am Makey Makey-Wettbewerb für Instructables teilnehmen, aber Sie hatten noch nie einen Makey Makey?! JETZT können Sie! Mit der folgenden Anleitung möchte ich Ihnen zeigen, wie Sie mit einigen einfachen Komponenten, die Sie b
ESP8266 Netzwerkuhr ohne RTC - Nodemcu NTP-Uhr Keine RTC - INTERNET-UHR-PROJEKT: 4 Schritte
ESP8266 Netzwerkuhr ohne RTC | Nodemcu NTP-Uhr Keine RTC | INTERNET-UHRPROJEKT: Im Projekt wird ein Uhrenprojekt ohne RTC erstellt, es wird Zeit vom Internet über WLAN benötigt und auf dem st7735-Display angezeigt
So suchen Sie mit Microsoft Excel-Makros nach Dingen in Google Chrome (KEINE CODIERUNGSKENNTNISSE ERFORDERLICH): 10 Schritte
So suchen Sie in Google Chrome mit Microsoft Excel-Makros (keine Codierungskenntnisse erforderlich): Wussten Sie, dass Sie Ihrer Excel-Tabelle ganz einfach eine Suchfunktion hinzufügen können?!Ich kann Ihnen in wenigen einfachen Schritten zeigen, wie es geht! Dazu benötigen Sie Folgendes: Einen Computer - (PRÜFEN!) Microsoft Excel Google Chrome auf Ihnen installiert
So erstellen Sie einen Großelternkalender & Scrapbook (auch wenn Sie nicht wissen, wie man ein Scrapbook erstellt): 8 Schritte (mit Bildern)
So erstellen Sie einen Großelternkalender & Sammelalbum (auch wenn Sie nicht wissen, wie man Sammelalbum erstellt): Dies ist ein sehr wirtschaftliches (und sehr geschätztes!) Weihnachtsgeschenk für Großeltern. Ich habe dieses Jahr 5 Kalender für weniger als 7 US-Dollar pro Stück gemacht. Materialien: 12 tolle Fotos von Ihrem Kind, Kindern, Nichten, Neffen, Hunden, Katzen oder anderen Verwandten 12 verschiedene Stücke
Mehr Leistung für Ihren PC. (Zweites Netzteil Netzteil): 3 Schritte
Mehr Leistung für Ihren PC. (Zweites Netzteil Netzteil): Diese Anleitung zeigt Ihnen, wie Sie Ihnen ein wenig Spielraum geben können, wenn Ihre Grafikkarte (oder wenn Sie nur eine 12-V-Schiene haben, die sowohl der CPU als auch der Grafikkarte mehr Strom geben kann). Kurz bevor wir beginnen, ist dies nicht die Einrichtung von Master und Slave