
Vorwort
Wenn Sie meinen vorherigen Artikel ( Running Line auf Arduino ) lesen , wissen Sie wahrscheinlich bereits, dass wir die Möglichkeit haben, Hardware-Kursprojekte an unserer Universität durchzuführen. Und ich, inspiriert von meiner früheren Arbeit, beschloss, noch einmal zu versuchen, etwas mit meinen eigenen Händen zu tun. Erst jetzt hätte das Thema ernster sein sollen. Übrigens habe ich mir überlegt, was ich in den Winterferien, also vor dem Semester, tun soll. Ich wollte gleichzeitig etwas Interessantes und Nützliches tun.Suche nach einer Idee
Einmal hatten wir in einem Paar über die Grundlagen des Informationsschutzes ein Thema im Zusammenhang mit geistigem Eigentum und Patenten. Der Lehrer gab uns die Aufgabe, ein Patent für jedes Gerät gemäß allen Anforderungen zu erteilen, und führte als Beispiel einen WLAN-Wasserkocher an.Sagte er - und vergaß. Und alle haben es vergessen, aber in meinem Kopf blieb dieses Thema. Und als es an der Zeit war, darüber nachzudenken, was ich im nächsten Semester als Kursarbeit tun sollte, erinnerte ich mich an diese Teekanne.Das erste, was ich sehen wollte, ist, was bereits getan wurde. Und was war meine Überraschung, als ich sah, dass es nur drei Modelle von Dummies mit WiFi-Steuerungsunterstützung gibt, von denen zwei zur selben Firma gehören. Dies waren Smarter iKettle 1.0 und 2.0 sowie der russische Polaris PWK 1792CGL.
Es ist interessant, dass fast jedes Haus gewöhnliche Wasserkocher hat und es so wenige intelligente gibt. Beim Vergleich der von iKettle und Polaris angebotenen Funktionen habe ich eine Liste der wichtigsten erstellt. Folgendes ist passiert:- Ein- und Ausschalten von einem Smartphone aus;
- Einstellen einer beliebigen Temperatur zum Erhitzen von Wasser;
- die Fähigkeit, die aktuelle Temperatur herauszufinden;
- Verfolgung des aktuellen Wasservolumens im Wasserkocher;
- Warnung und Schutz gegen Einschalten mit wenig Wasser;
- Einstellen der automatischen Weckzeit;
- Bereitschaftsmitteilung;
Es scheint echt auszusehen, es ist Zeit, zur Sache zu kommen.Suchen Sie nach erforderlichen Komponenten
Da es nicht möglich war, einen komplett neuen Wasserkocher herzustellen, wurde beschlossen, einen vorgefertigten normalen elektrischen Wasserkocher zu modifizieren. Zu Hause war ein verwaister Wasserkocher mit einem kaputten Schalter.Das Fundament ist also schon da, dachte ich.Jetzt musste ich nach Komponenten für die Hardware suchen. Da es bereits wenig Erfahrung mit Arduino gab, habe ich beschlossen, alles darauf zu implementieren. Darüber hinaus sind Arduin selbst und Module dafür kostengünstig.Da ich den gesamten Teil der Steuerung des Kessels in den Kessel einführen musste, fiel die Wahl auf den Arduino Nano. Es ist klein und verfügt im Gegensatz zum Pro Mini über eine Schnittstelle zum Anschließen eines Kabels, die über UART geflasht werden muss.
Die Hauptkomponente eines WLAN-Wasserkochers ist natürlich ein WLAN-Modul. Das Durchsuchen des Internets nach etwas Erschwinglichem und vielen Tutorials stieß auf den ESP8266. In Version 01 sah es nämlich günstig aus (ca. 2 US-Dollar) und es gab viele Anweisungen zum Anschließen. Hielt an. Was das Modul selbst betrifft, ist der Satz hier gut: billig und fröhlich. Aber dazu später mehr.
Um die Temperatur zu regeln, brauchten wir eine Art wasserdichten Temperatursensor. Ich habe einen wasserdichten NTC-Thermistor auf aliexpress gefunden, der Temperaturen von mehr als 100 Grad standhält. Ich habe auch ein Beispiel für die Arbeit mit ihm gefunden, also habe ich mich hier schnell entschieden.
Es war notwendig zu entscheiden, wie der Wasserkocher zu einem bestimmten Zeitpunkt eingeschaltet werden soll. Natürlich können Sie die Programmuhr auf Arduino einstellen und den Wasserkocher einschalten, wenn die Zeit zusammenfällt. Dies würde jedoch instabil funktionieren, und wenn das Programm versehentlich zurückgesetzt wird, läuft alles schief. Daher kam hier eine Echtzeituhr zur Rettung. Nämlich DS1307. Sie haben eine unabhängige Stromversorgung (von einer 3-V-Batterie) und es gab auch einen 32-K-Bit-EEPROM-Speicherchip auf dem Modul, an dem ich angehalten habe, wodurch ich Zeit gespart habe.
Oh ja, da sich der Wasserkocher jetzt programmgesteuert einschalten sollte, benötigte er auch ein 1-Kanal-Relais.
Der Flüssigkeitsstandsensor musste manuell durchgeführt werden. Details unten.Im Übrigen wurden noch mehrere Widerstände unterschiedlicher Nennwerte benötigt, ein Steckbrett für Tests, eine Leiterplatte für die eigentliche Installation, Verkabelung, ein Lötkolben mit Flussmittel und Lötmittel und der Löwenanteil der Geduld.Entwicklungsstart
Da es sich bei dem Projekt um einen WLAN-Wasserkocher handelt, wollte und musste ich mich als erstes mit dem WLAN-Modul befassen. Sobald das Paket angekommen war, packte ich es sofort aus und begann mich zu verbinden.Ich habe eine Reihe von Beispielen im Internet gefunden. Alles ist wie es sollte, 3,3 V Spannungsregler, Spannungsteiler für RX und TX. Ich habe alles anhand eines Beispiels gesammelt, ich verbinde es - es ist nicht geflogen! Wie sich herausstellte, wurde auf dem COM-Port-Monitor eine Reihe von Texten angezeigt. Das Modul wurde ständig zurückgesetzt. Es reagiert nicht auf gesendete AT-Befehle. Der Autor des Artikels arbeitet, ich nicht.Was ist los? Ich habe versucht, nach anderen Verbindungsschemata usw. zu suchen, aber das Modul ist immer noch entweder zurückgesetzt oder zeigt nichts an. Und überall ist es in roter Schrift geschrieben: "Nicht auf das 5-V-Modul anwenden, sonst schlägt es fehl." Die Suche nach Lösungen dauerte manchmal abends. Ich dachte bereits über den Kauf eines anderen Moduls nach, entschied mich jedoch, die Spannung mit einem Multimeter zu überprüfen.Es stellte sich heraus, dass beim Anschließen des Moduls an 3,3 V die Spannung unter 3,2 V abfällt. Es scheint, dass sie abfällt und abfällt. Ich entschied mich für eine Stromversorgung über eine andere Stromquelle und es stellte sich heraus, dass das Modul normal mit einer Spannung über 3,2 V arbeitet und darunter nicht ausreicht und es ständig zurückgesetzt wird.Infolgedessen habe ich es auf eigene Gefahr und Gefahr an 5 V angeschlossen und alles hat funktioniert und funktioniert immer noch einwandfrei.
Es gab keine derartigen Probleme mit anderen Komponenten.Nachdem ich WLAN herausgefunden hatte, musste ich mich entscheiden, was ich mit dem Flüssigkeitsstandsensor machen sollte. Beim Googeln fand ich einen Artikel, in dem der Autor einen Bodenfeuchtesensor herstellte. Wenn der Boden trocknet, steigt der Widerstand des Sensors und die Spannung am analogen Anschluss von Arduino steigt an. Durch Erfassen einer Spannungsänderung kann das Auftreten einer Flüssigkeit erfasst werden. Anstelle von zwei Kontakten wurde 6 verwendet, um den Flüssigkeitsstand in meinem Projekt zu bestimmen. Einer davon ist mit dem 5-V-Ausgang verbunden, der Rest mit den Analogeingängen und 10-kΩ-Widerständen mit GND.Hier sind Fotos der Tests.
Hier ist der Füllstandsensor das Ergebnis.
Das nächste, was ich getestet habe, ist die Echtzeituhr. Aber mit ihnen zu arbeiten ist grundsätzlich einfach. Um die Zeit einzustellen und Informationen darüber zu erhalten, habe ich ausschließlich Beispiele aus der Bibliothek für die Arbeit mit DS1307 verwendet.Als alles auf einem Steckbrett montiert war, hatten wir eine solche Kreuzung zwischen Drähten und Modulen. Auf diesen Fotos befindet sich übrigens ein weiterer Temperatursensor.
Erste Schritte
Jetzt musste alles auf die Leiterplatte gelötet werden. Es gibt nichts Besonderes zu kommentieren, also nur ein Foto. Wie Sie sehen, wurde eine weitere Taste hinzugefügt, mit der Sie den Wasserkocher nicht nur von einem Smartphone aus, sondern auch auf die übliche Weise einschalten können.

Als nächstes müssen Sie alles in den Wasserkocher stellen.


Ein Asbesteinsatz wurde hinzugefügt, um alle Innenseiten vor Überhitzung zu schützen.
Zwar musste das Gehäuse mit einem zusätzlichen Kunststoffeinsatz leicht angehoben werden.

Gehen Sie jetzt zum mobilen Teil.
Da die Anwendung unter dem Android-Betriebssystem entwickelt wurde, war ursprünglich die Verwendung von Android Studio geplant. Um neue Technologien zu untersuchen, wurde beschlossen, eine vorgefertigte Plattform für die Entwicklung von Programmen im Bereich des Internet der Dinge zu verwenden. Infolgedessen fiel die Wahl auf das Evothings-Produkt - Evothings Studio.
Hier sind seine Hauptvorteile:- Eine große Anzahl von Standardbeispielen für die Arbeit mit verschiedenen Modulen (Wifi, Bluetooth);- Anwendungsentwicklung mit JS, HTML, CSS, mit der Sie einen Code schreiben können, der unter Android und iOS gleichermaßen funktioniert, d. H. Die Bindung an nur eine Plattform verschwindet.- Einfaches Testen der Anwendung: Auf dem Smartphone ist eine Anwendung installiert, um eine Vorschau ihrer Entwicklung anzuzeigen, und alle Testmeldungen und Fehlermeldungen werden im Programm auf dem Computer angezeigt.- Eine große Menge an Informationen im Internet über die Entwicklung mit JS, HTML, CSS;In diesem Evothings Studio gab es ein Beispiel für das Einschalten der LED durch Senden einer Einschaltanforderung über den ESP8266. Ich habe mich für dieses Beispiel entschieden, weil es für mich das Wertvollste war - die Kommunikation mit dem WiFi-Modul über eine TCP-Buchse. Und ähnlich wie die Anforderung zum Einschalten der LED übertragen wurde, habe ich eine Anforderung zum Aktualisieren der Sensoren des Wasserkochers, zum Einstellen der Einschaltzeit, zum Einstellen der Temperatur usw. gestellt.Dann habe ich Benachrichtigungen über Bereitschaft und eine kleine Menge Wasser geschraubt, der Vorteil ist, dass alles in unserer Zeit leicht gegoogelt werden kann. Das Ergebnis ist eine solche Anwendung (eine schöne Sache ist es, die Anwendungsoberfläche mit CSS zu erstellen):




Eine kurze Beschreibung der Interaktion von Smartphone und Wasserkocher
Die Kommunikation zwischen Server und Client erfolgt über das WiFi-Modul. Wenn Sie das Kettle-Steuermodul einschalten, beginnt das WiFi-Modul mit der Verteilung eines Netzwerks namens artKettle. Dies erfolgt über AT-Befehle auf der Serverseite. Um das Modul beispielsweise in den Access Point-Modus zu versetzen, muss es den Befehl AT + CWMODE = 2 senden. Als Nächstes müssen Sie mit diesen Befehlen Netzwerkparameter zuweisen, die Verbindung mehrerer Geräte zulassen und die IP-Adresse von WLAN selbst abrufen.Auf der Clientseite erfolgt die Verbindung über einen bestimmten Port und über die IP-Adresse des WLAN-Moduls mit chrome.tcp.socket.Nachdem Sie den Client mit dem Server verbunden haben, können Sie den Wasserkocher von Ihrem Smartphone aus steuern. Betrachten Sie das Beispiel des Einschaltens des Wasserkochers.Wenn Sie in der artKettle-Anwendung auf den Ein- / Ausschalter klicken, wird die entsprechende Funktion der Aufnahme von app.kettleOn () aufgerufen. Innerhalb dieser Funktion werden zwei Zeilen auf die Serverseite übertragen:app.sendString('H');
app.sendString('U');
Als nächstes kommt die Arbeit bereits auf der Seite von Arduino. Nachdem die erste Zeile mit dem Zeichen 'H' eingetroffen ist, wird der folgende Code ausgeführt:if(message.indexOf("H") >= 0 && waterDetected()) {
digitalWrite(POWER_PIN, LOW);
IS_ON = true;
Serial.println("ON");
sendCIPData(0, "ON");
}
Zunächst wird durch Aufrufen der Methode waterDetected () überprüft, ob sich Wasser im Wasserkocher befindet. Ziehen Sie die Option in Betracht, wenn sich Wasser im Wasserkocher befindet.Ein niedriger Spannungspegel wird an den Steuerstift des Relais angelegt, was seinem Einschluss entspricht, d.h. Stromkreis schließt:digitalWrite(POWER_PIN, LOW);
Dann wird das Flag gesetzt, um anzuzeigen, dass der Wasserkocher eingeschaltet ist, und eine Meldung am Ausgang des Monitors für die serielle Schnittstelle wird angezeigt.Danach wird eine Funktion aufgerufen, die eine Antwortnachricht an die Client-Seite sendet, dass die gesamte Aufnahme erfolgreich war:sendCIPData(0, "ON");
Auf der Clientseite wird nach dem Überprüfen der eingehenden Nachricht der Netzschalter auf den Status Ein gesetzt:if (buf.substr(0, 2) == "ON") {
app.setButtonOn();
}
Danach wird die Textnachricht mit dem Zeichen 'U' verarbeitet, das vom Client an den Server gesendet wird. In ähnlicher Weise wie beim Einschluss werden hier Informationen über die aktuelle Temperatur und das aktuelle Flüssigkeitsvolumen im Kessel aktualisiert.Somit ist die bidirektionale Kommunikation zwischen dem Client und dem Server so organisiert, dass jeder von ihnen zu einem bestimmten Zeitpunkt den Status des anderen kennt.Fazit
Als Ergebnis des Kursprojekts wurde eine Modifikation für einen herkömmlichen Wasserkocher entwickelt, mit der er von einem Smartphone über WLAN gesteuert werden kann. Jetzt kann diese Teekanne den Vertretern des Internet der Dinge zugeschrieben werden. Wir haben es geschafft, alle Funktionen vollständig zu implementieren. Daher verfügt dieser Wasserkocher nun über die folgenden Funktionen:- Ein- und Ausschalten über ein Smartphone;- Einstellen einer beliebigen Temperatur zum Erhitzen von Wasser;- die Fähigkeit, die aktuelle Temperatur herauszufinden;- Verfolgung des aktuellen Wasservolumens im Wasserkocher;- Warnung und Schutz gegen Einschalten mit wenig Wasser;- Einstellen der Einschaltzeit;- Benachrichtigung über die Bereitschaft;Die Vorteile des implementierten Projekts sind die Zugänglichkeit der Elementbasis, da alles, was Sie benötigen, in Geschäften für elektronische Komponenten zu finden ist, die Erweiterbarkeit des Projekts. Da im Wasserkocher alle erforderlichen Sensoren installiert sind, kann er programmgesteuert geändert und nicht schlechter als Analoga gemacht werden. Angesichts der Vielseitigkeit des verwendeten WLAN-Moduls können Sie es mit dem Internet verbinden und die Steuerung des Wasserkochers organisieren. Sie können sich überall auf der Welt befinden und mithilfe des Onlinedienstes für die Verarbeitung von SMS-Nachrichten die Aufnahme per SMS organisieren. Das heißt, Das Projekt ist immer noch sehr erweiterbar, es gibt Möglichkeiten dafür, aber sie wurden nicht umgesetzt, da sie nicht Teil der Ziele des zu entwickelnden Projekts waren.Das Projekt hat natürlich auch Nachteile. Der erste ist der instabile Betrieb des Wifi-Moduls. Ein Modul verliert manchmal nur sein Netzwerk, setzt die Einstellungen zurück oder verarbeitet eingehende Signale einfach nicht. Darüber hinaus sind dies beliebte Probleme bei Benutzern dieses Moduls. Der zweite Nachteil ist das Fehlen einer mechanischen Abschaltung des Kessels. Das Herunterfahren ist in der Software implementiert. Wenn der Siedepunkt erreicht ist, bricht der Stromkreis mit Hilfe eines Relais. Wenn das Programm plötzlich abstürzt, schaltet sich der Wasserkocher möglicherweise nicht aus. Der dritte Nachteil ist das Problem der Überwachung der Heiztemperatur. Wenn Sie beispielsweise den Wasserkocher bei einer Temperatur von 60 Grad ausschalten, gibt die Heizung 10 weiterhin Wärme ab, und nach einer Weile beträgt die Wassertemperatur bereits etwa 70 Grad. Dies wird jedoch durch Anpassungen am Programm korrigiert.