Inhaltsverzeichnis:

IoT-Wasseralarm - Gunook
IoT-Wasseralarm - Gunook

Video: IoT-Wasseralarm - Gunook

Video: IoT-Wasseralarm - Gunook
Video: [TuyaSmart IoT] WiFi Water Sensor Intelligent Leak Detector 2024, Juli
Anonim
IoT-Wasseralarm
IoT-Wasseralarm

Ich habe vor kurzem eine Küchenabflusssicherung erlebt. Wäre ich zu dem Zeitpunkt nicht zu Hause gewesen, hätte es in meiner Wohnung Boden- und Trockenbauschäden gegeben. Glücklicherweise war ich mir des Problems bewusst und bereit, das Wasser mit einem Eimer herauszuschöpfen. Das hat mich dazu gebracht, einen Hochwassermelder zu kaufen. Ich habe viele erschwingliche Produkte bei Amazon entdeckt, aber die mit Internetverbindung hatten einen erheblichen Prozentsatz negativer Bewertungen, hauptsächlich aufgrund von Problemen mit proprietären Benachrichtigungsdiensten. Aus diesem Grund habe ich mich entschieden, meinen eigenen IoT-Wasseralarm zu entwickeln, der vertrauenswürdige Benachrichtigungsmittel meiner Wahl verwendet.

Schritt 1: Funktionsprinzip

Funktionsprinzip
Funktionsprinzip

Der Alarm hat einen AVR ATtiny85 Mikrocontroller als Gehirn. Es nimmt Spannungswerte von der Batterie und dem Wassersensor und vergleicht sie mit vordefinierten Werten, um das Vorhandensein von Wasser oder einen niedrigen Batteriezustand zu erkennen.

Der Wassersensor besteht einfach aus zwei Drähten, die ungefähr 1 mm voneinander entfernt sind. Einer der Drähte ist mit 3,3 V verbunden, und der andere ist mit einem Sensor-Pin des Mikrocontrollers verbunden, der ebenfalls über einen 0,5 MOhm-Widerstand mit Masse verbunden ist. Normalerweise ist der Widerstand zwischen den Sensordrähten sehr hoch (deutlich über 10 MOhm), sodass der Sensorstift bis auf 0 V heruntergezogen wird. Wenn jedoch Wasser zwischen den Drähten vorhanden ist, sinkt der Widerstand auf weniger als 1 MOhm, und der Sensorstift sieht eine Spannung (in meinem Fall etwa 1,5 V). Wenn ATtiny85 diese Spannung am Sensor-Pin erkennt, aktiviert es einen MOSFET, um einen Summer einzuschalten, und sendet das Wecksignal an das ESP8266-Modul, das für das Senden von Warnungen (E-Mail- und Push-Benachrichtigungen) verantwortlich ist. Nach einer Minute Summen ist der Alarm deaktiviert und kann nur durch Aus- und Einschalten zurückgesetzt werden.

Dieses Gerät wird mit zwei Alkali- oder NiMH-Zellen betrieben. Der Mikrocontroller schläft die meiste Zeit, um die Batterien zu schonen, und wacht zeitweise auf, um den Wassersensor sowie die Spannung der Batterien zu überprüfen. Wenn die Batterien schwach sind, weckt der Mikrocontroller das ESP8266-Modul auf, um eine Warnung bei schwacher Batterie zu senden. Nach der Warnung wird der Alarm deaktiviert, um eine Tiefentladung der Batterie zu verhindern.

Da das ESP8266-Modul sowohl für das Senden von Warnungen bei niedrigem Batteriestand als auch für Überschwemmungswarnungen verantwortlich ist, benötigt es ein Steuersignal von ATiny85. Aufgrund der begrenzten Anzahl von verfügbaren Pins wird dieses Steuersignal von demselben Pin erzeugt, der für die Batterie-LED-Anzeige verantwortlich ist. Während des normalen Betriebs (der Alarm ist scharf und die Batterien sind geladen) blinkt die LED intermittierend. Wenn ein schwacher Batteriezustand erkannt wird, schaltet sich die LED ein, um ein High-Signal an den RX-Pin des ESP-Moduls zu liefern. Wenn Wasser erkannt wird, ist die Batterie-LED aus, während der ESP8266 wach ist.

Schritt 2: Design und Montage

Konstruktion und Montage
Konstruktion und Montage
Konstruktion und Montage
Konstruktion und Montage
Konstruktion und Montage
Konstruktion und Montage

Ich habe die Schaltung so entworfen, dass sie auf einem doppelseitigen 4x6 cm Protoboard aufgebaut wird, wobei hauptsächlich 0805 SMD-Teile verwendet werden. Die vorgestellten Schaltpläne basieren auf diesem Build, können jedoch leicht für Durchsteckbauteile angepasst werden (Tipp: um den Platz zu minimieren, Durchsteckwiderstände vertikal löten).

Folgende Teile werden benötigt:

- Widerstände: 330 Ω x 1; 470 Zoll x 1; 680 x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - Ein 10 µF Keramikkondensator - Ein N-Kanal-MOSFET mit Logikpegel (zB RFP30N06LE oder AO3400) - Eine rote und eine gelbe LED (oder andere Farben, wenn Sie möchten).- Zweiadrige Schraubklemmenanschlüsse x 3 (sie sind nicht.) unbedingt notwendig, erleichtern aber das An- und Abklemmen der Peripherie während des Tests) - Ein lauter Piezo-Summer, der gut für 3,3 V ist - Einen ATtiny85-Mikrocontroller (PDIP-Version) - Eine 8-polige PDIP-Buchse für den Mikrocontroller - Ein ESP-01-Modul (es kann durch ein anderes ESP8266-basiertes Modul ersetzt werden, aber in diesem Fall wird es viele Änderungen im Layout geben) - Ein 3,3-V-DC-DC-Aufwärtswandler, der 200 mA (500 mA Burst) Ströme bei 2,2 V. liefern kann Eingang. (Ich empfehle https://www.canton-electronics.com/power-converter… wegen seines extrem niedrigen Ruhestroms) - Eine 3-polige Buchsenleiste - Zwei 4-polige Buchsenleisten oder eine 2x4-Stiftleiste - 22 AWG Massivdrähte für den Wassersensor - 22 AWG Litzendraht (oder eine andere Art von dünnem freiliegendem Draht, um Spuren zu erzeugen)

Ich empfehle die oben aufgeführten Widerstandswerte, aber Sie können die meisten von ihnen durch ähnliche Werte ersetzen. Je nach Art der LEDs, die Sie verwenden möchten, müssen Sie möglicherweise die strombegrenzenden Widerstandswerte anpassen, um die gewünschte Helligkeit zu erhalten. Der MOSFET kann entweder ein Durchgangsloch oder ein SMT (SOT23) sein. Lediglich die Ausrichtung des 330 Ohm Widerstands wird durch den Typ des MOSFET beeinflusst. Eine PTC-Sicherung (z. B. für 1 A ausgelegt) wird empfohlen, wenn Sie diese Schaltung mit NiMH-Akkus verwenden möchten. Bei Alkalibatterien wird sie jedoch nicht benötigt. Tipp: Die für diesen Alarm benötigten Teile können günstig bei ebay oder aliexpress erworben werden.

Darüber hinaus benötigen Sie ein Steckbrett, mehrere 10k-Durchsteckwiderstände, mehrere Stecker-Stecker- und Buchse-Stecker-Jumper ("Dupont")-Drähte und einen USB-UART-Adapter, um das ESP-01-Modul zu programmieren.

Der Wassersensor kann auf verschiedene Weise hergestellt werden, aber die einfachste besteht aus zwei 22 AWG-Drähten mit freiliegenden Enden (1 cm lang) im Abstand von etwa 1 mm. Ziel ist es, bei Wasser weniger als 5 MΩ Widerstand zwischen den Sensorkontakten zu haben.

Die Schaltung ist auf maximale Batterieökonomie ausgelegt. Es zieht nur 40-60 µA im Überwachungsbereich (bei entfernter Power-LED am ESP-01-Modul). Sobald der Alarm ausgelöst wird, zieht der Stromkreis 300-500 mA (bei 2,4 V Eingang) für eine Sekunde oder weniger, und danach fällt der Strom unter 180 mA. Sobald das ESP-Modul mit dem Senden von Benachrichtigungen fertig ist, sinkt der Stromverbrauch auf unter 70 mA, bis der Summer erlischt. Dann deaktiviert sich der Alarm selbst und die Stromaufnahme liegt unter 30 µA. Somit kann ein Satz AA-Batterien den Stromkreis viele Monate lang (wahrscheinlich über ein Jahr) mit Strom versorgen. Wenn Sie einen anderen Aufwärtswandler verwenden, beispielsweise mit einem Ruhestrom von 500 µA, müssen die Batterien viel häufiger gewechselt werden.

Montagetipps:

Verwenden Sie einen Permanentmarker, um alle Leiterbahnen und Komponenten auf dem Protoboard zu beschriften, um das Löten zu erleichtern. Ich empfehle, in folgender Reihenfolge vorzugehen:

- Oberseite SMT-LEDs und isolierte Drahtbrücken

- Oberseiten-MOSFET (Hinweis: Wenn Sie einen SOT-23-MOSFET haben, platzieren Sie ihn diagonal wie auf dem Foto. Wenn Sie einen Durchgangsloch-MOSFET verwenden, platzieren Sie ihn horizontal mit dem Gate-Pin in Position I3.)

- Oberseite Durchgangslochteile (Hinweis: der Summer ist nicht verlötet und muss nicht einmal auf die Platine montiert werden)

- Rückseite SMT-Teile und Leiterbahnen (z. B. Einzellitzen aus AWG22-Draht)

Schritt 3: Firmware

C-Code für ATtiny85

Main.c enthält den Code, der kompiliert und auf den Mikrocontroller hochgeladen werden muss. Wenn Sie ein Arduino-Board als Programmierer verwenden möchten, finden Sie den Schaltplan in diesem Tutorial. Sie müssen nur die folgenden Abschnitte befolgen (den Rest ignorieren):

– Konfigurieren von Arduino Uno als ISP (In-System Programming)

– Verbinden von ATtiny85 mit Arduino Uno.

Zum Kompilieren und Hochladen der Firmware benötigen Sie entweder CrossPack (für Mac OS) oder AVR-Toolchain (für Windows). Der folgende Befehl muss ausgeführt werden, um den Code zu kompilieren:

avr-gcc -Os -mmcu=attiny85 -c main.c; avr-gcc -mmcu=attiny85 -o main.elf main.o; avr-objcopy -j.text -j.data -O ihex main.elf main.hex

Um die Firmware hochzuladen, führen Sie Folgendes aus:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U flash:w:main.hex

Anstelle von "/dev/cu.usbmodem1411" müssen Sie wahrscheinlich den seriellen Port einfügen, an den Ihr Arduino angeschlossen ist (Sie finden ihn in der Arduino IDE: Tools Port).

Der Code enthält mehrere Funktionen. deep_sleep() lässt den Mikrocontroller für ungefähr 8 Sekunden in einen Zustand mit sehr geringem Stromverbrauch wechseln. read_volt() wird verwendet, um die Batterie- und Sensorspannungen zu messen. Die Batteriespannung wird gegen die interne Spannungsreferenz (2,56 V plus oder minus ein paar Prozent) gemessen, während die Sensorspannung gegen Vcc = 3,3 V gemessen wird. Die Messwerte werden mit BATT_THRESHOLD und SENSOR_THRESHOLD verglichen, die als 932 bzw. 102 definiert sind, was. entspricht ~2,3 und 0,3 V. Möglicherweise können Sie den Akku-Schwellenwert für eine längere Akkulebensdauer verringern, dies wird jedoch nicht empfohlen (ausführliche Informationen finden Sie unter Überlegungen zum Akku).

activate_alarm() benachrichtigt das ESP-Modul über die Wassererkennung und ertönt den Summer. low_batt_notification() benachrichtigt das ESP-Modul, dass die Batterie schwach ist und ertönt auch der Summer. Wenn Sie nicht mitten in der Nacht geweckt werden möchten, um die Batterie zu wechseln, entfernen Sie " | 1< " in low_batt_notification().

Arduino-Skizze für ESP-01

Ich habe mich dafür entschieden, das ESP-Modul mit Arduino HAL zu programmieren (folgen Sie dem Link für die Einrichtungsanweisungen). Außerdem habe ich die folgenden zwei Bibliotheken verwendet:

ESP8266 E-Mail senden von Górász Péter

ESP8266 Pushover vom Arduino Hannover Team

Die erste Bibliothek stellt eine Verbindung zu einem SMTP-Server her und sendet eine Warnung an Ihre E-Mail-Adresse. Erstellen Sie einfach ein Gmail-Konto für Ihren ESP und fügen Sie die Anmeldeinformationen zum Code hinzu. Die zweite Bibliothek sendet Push-Benachrichtigungen über den Pushover-Dienst (Benachrichtigungen sind kostenlos, aber Sie müssen einmal bezahlen, um die Anwendung auf Ihrem Telefon/Tablet zu installieren). Laden Sie beide Bibliotheken herunter. Legen Sie den Inhalt der E-Mail senden-Bibliothek in Ihren Skizzenordner (arduino erstellt ihn, wenn Sie die Arduino-Skizze zum ersten Mal öffnen). Installieren Sie die Pushover-Bibliothek über die IDE (Skizze -> Bibliothek einschließen ->. ZIP-Bibliothek hinzufügen).

Um das ESP-01-Modul zu programmieren, können Sie dem folgenden Tutorial folgen: https://www.allaboutcircuits.com/projects/breadbo… Sie müssen sich nicht um das Umlöten einer Stiftreihe kümmern, wie in der Anleitung gezeigt - verwenden Sie einfach einen weiblichen-männlichen Dupont Drähte, um die Pins des Moduls mit dem Steckbrett zu verbinden. Vergessen Sie nicht, dass der Aufwärtswandler und der USB-UART-Adapter eine gemeinsame Masse haben müssen (Hinweis: Sie können möglicherweise den 3,3-V-Ausgang des USB-UART-Adapters anstelle des Aufwärtswandlers verwenden, aber höchstwahrscheinlich nicht genug Strom ausgeben können).

Schritt 4: Überlegungen zum Akku

Der mitgelieferte Firmware-Code ist so vorkonfiguriert, dass er eine Warnung bei schwacher Batterie sendet und bei ~2,3 V abschaltet. Diese Schwelle basiert auf der Annahme, dass zwei NiMH-Batterien in Reihe verwendet werden. Es wird nicht empfohlen, eine einzelne NiMH-Zelle unter 1 V zu entladen. Unter der Annahme, dass beide Zellen die gleiche Kapazität und Entladecharakteristik haben, werden beide bei ~1,15 V abgeschaltet - weit im sicheren Bereich. NiMH-Zellen, die seit vielen Entladezyklen im Einsatz sind, neigen jedoch dazu, sich in der Kapazität zu unterscheiden. Bis zu 30% Kapazitätsunterschied können toleriert werden, da dies immer noch zu einem Abschaltpunkt der niedrigsten Zellenspannung von etwa 1 V führen würde.

Es ist zwar möglich, den Schwellenwert für einen niedrigen Batteriestand in der Firmware zu verringern, dies würde jedoch die Sicherheitsmarge entfernen und könnte zu einer Tiefentladung und Beschädigung der Batterie führen, während nur eine geringfügige Erhöhung der Batterielebensdauer zu erwarten ist (eine NiMH-Zelle ist > 85% entladen bei 1,15 V).

Ein weiterer Faktor, der berücksichtigt werden muss, ist die Fähigkeit des Aufwärtswandlers, bei schwachen Batterien mindestens 3,0 V (2,5 V gemäß anekdotischer Beweise) bei 300-500 mA Spitzenstrom bereitzustellen. Der niedrige Innenwiderstand von NiMH-Akkus verursacht nur einen vernachlässigbaren Abfall von 0,1 V bei Spitzenströmen, so dass ein Paar NiMH-Zellen, die auf 2,3 V entladen sind (Leerlauf), mindestens 2,2 V an den Aufwärtswandler liefern können. Bei Alkalibatterien ist es jedoch komplizierter. Bei einem Paar AA-Batterien mit 2,2-2,3 V (Leerlauf) ist bei Spitzenströmen mit einem Spannungsabfall von 0,2-0,4 V zu rechnen. Obwohl ich überprüft habe, dass die Schaltung mit dem empfohlenen Aufwärtswandler mit nur 1,8 V bei Spitzenströmen funktioniert, führt dies wahrscheinlich dazu, dass die Ausgangsspannung vorübergehend unter den vom Espressiff vorgeschlagenen Wert fällt. Somit lässt die Abschaltschwelle von 2,3 V bei Alkalibatterien nur wenig Sicherheitsspielraum (bedenken Sie, dass eine vom Mikrocontroller durchgeführte Spannungsmessung nur auf plus oder minus einige Prozent genau ist). Um sicherzustellen, dass das ESP-Modul bei schwachen Alkalibatterien nicht ausbricht, empfehle ich, die Abschaltspannung auf 2,4 V zu erhöhen (#define BATT_THRESHOLD 973). Bei 1,2 V (Leerlauf) wird eine Alkalizelle zu ca. 70 % entladen, das sind nur 5-10 Prozentpunkte weniger als der Entladegrad bei 1,15 V pro Zelle.

Sowohl NiMH- als auch Alkalizellen haben für diese Anwendung Vor- und Nachteile. Alkaline-Batterien sind sicherer (können bei Kurzschluss kein Feuer fangen) und haben eine viel geringere Selbstentladungsrate. NiMH-Akkus garantieren jedoch dank ihres geringen Innenwiderstands einen zuverlässigen Betrieb des ESP8266 bei einem niedrigeren Abschaltpunkt. Aber letztendlich kann jeder Typ mit einigen Vorsichtsmaßnahmen verwendet werden, es ist also nur eine Frage der persönlichen Vorlieben.

Schritt 5: Haftungsausschluss

Diese Schaltung wurde von einem Laien nur für Hobbyanwendungen entwickelt. Dieses Design wird in gutem Glauben weitergegeben, jedoch ohne jegliche Gewährleistung. Verwenden Sie es und teilen Sie es mit anderen auf eigenes Risiko. Durch die Wiederherstellung der Schaltung erklären Sie sich damit einverstanden, dass der Erfinder nicht für Schäden (einschließlich, aber nicht beschränkt auf Vermögens- und Personenschäden) haftbar gemacht wird, die direkt oder indirekt durch Fehlfunktionen oder normale Verwendung dieser Schaltung entstehen. Wenn die Gesetze Ihres Landes diesen Haftungsausschluss aufheben oder verbieten, dürfen Sie dieses Design nicht verwenden. Wenn Sie dieses Design oder eine modifizierte Schaltung basierend auf diesem Design teilen, müssen Sie den ursprünglichen Erfinder gutschreiben, indem Sie die URL dieses instructable angeben.

Empfohlen: