Das Handy ist eine revolutionäre Erfindung des Jahrhunderts. Es wurde hauptsächlich zum Tätigen und Empfangen von Anrufen und Textnachrichten entwickelt, ist aber nach dem Erscheinen des Smartphones zur ganzen Welt geworden. In diesem Projekt bauen wir ein Hausautomationssystem auf, bei dem man die Haushaltsgeräte mit dem einfachen GSM-basierten Telefon steuern kann, indem man einfach SMS über sein Telefon sendet. In diesem Projekt wird kein Smartphone benötigt, nur das alte GSM-Telefon kann elektronische Haushaltsgeräte von überall aus ein- und ausschalten. Sie können hier auch weitere Projekte zur drahtlosen Hausautomation überprüfen: IR-ferngesteuerte Hausautomation mit Arduino, Bluetooth-gesteuerte Hausautomation zusammen mit DTMF-basierter Hausautomation, PC-gesteuerte Hausautomation mit Arduino.
Arbeitserklärung
In diesem Projekt wird Arduino zur Steuerung des gesamten Prozesses verwendet. Hier haben wir die drahtlose GSM-Kommunikation zur Steuerung von Haushaltsgeräten verwendet. Wir senden einige Befehle wie "# A.light on *", "# A.light off *" usw. zur Steuerung von AC-Haushaltsgeräten. Nach dem Empfang gegebener Befehle von Arduino über GSM sendet Arduino ein Signal an Relais, um die Haushaltsgeräte mithilfe eines Relaistreibers ein- oder auszuschalten.
Schaltungskomponenten:
- Arduino UNO
- GSM-Modul
- ULN2003
- Relais 5 Volt
- Glühbirne mit Halter
- Kabel anschließen
- Brotbrett
- 16x2 LCD
- Energieversorgung
- Mobiltelefon
Hier haben wir ein Präfix in der Befehlszeichenfolge verwendet, das "#A" ist. Dieses Präfix wird verwendet, um zu identifizieren, dass der Hauptbefehl daneben steht, und * am Ende der Zeichenfolge zeigt an, dass die Nachricht beendet wurde.
Wenn wir SMS per Handy an das GSM-Modul senden, empfängt GSM diese SMS und sendet sie an Arduino. Jetzt liest Arduino diese SMS und extrahiert den Hauptbefehl aus der empfangenen Zeichenfolge und speichert sie in einer Variablen. Danach vergleicht Arduino diese Zeichenfolge mit einer vordefinierten Zeichenfolge. Wenn eine Übereinstimmung aufgetreten ist, sendet Arduino über den Relaistreiber ein Signal an das Relais, um die Haushaltsgeräte ein- und auszuschalten. Das relative Ergebnis wird auch mit geeigneten Befehlen auf einem 16x2-LCD gedruckt.
Hier in diesem Projekt haben wir 3 Null-Watt-Lampen zur Demonstration verwendet, die auf Lüfter, Licht und Fernseher hinweisen.
Unten finden Sie eine Liste der Nachrichten, die wir per SMS senden, um den Lüfter, das Licht und den Fernseher ein- und auszuschalten:
S.no. |
Botschaft |
Betrieb |
1 |
# A.fan am * |
Lüfter EIN |
2 |
# A.fan aus * |
Lüfter AUS |
3 |
# A. Licht an * |
Licht an |
4 |
# A. Licht aus * |
Licht aus |
5 |
# A.tv auf * |
TV EIN |
6 |
# A.tv aus * |
TV aus |
7 |
# A.all on * |
Alles an |
8 |
# A.all off * |
Alles aus |
GSM-Modul:
Das GSM-Modul wird in vielen Kommunikationsgeräten verwendet, die auf der GSM-Technologie (Global System for Mobile Communications) basieren. Es wird verwendet, um über einen Computer mit dem GSM-Netz zu interagieren. Das GSM-Modul versteht nur AT-Befehle und kann entsprechend reagieren. Der grundlegendste Befehl ist "AT". Wenn GSM in Ordnung antwortet, funktioniert es gut, andernfalls antwortet es mit "ERROR". Es gibt verschiedene AT-Befehle wie ATA zum Beantworten eines Anrufs, ATD zum Wählen eines Anrufs, AT + CMGR zum Lesen der Nachricht, AT + CMGS zum Senden der SMS usw. Auf AT-Befehle sollte Wagenrücklauf folgen, dh \ r (0D in hex), wie "AT + CMGS \ r". Wir können das GSM-Modul mit den folgenden Befehlen verwenden:
ATE0 - Für Echo aus
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Handynummer"
>> Jetzt können wir unsere Nachricht schreiben
>> Nach dem Schreiben einer Nachricht
Strg + Z Befehl zum Senden einer Nachricht (26 in Dezimalzahl).
ENTER = 0x0d in HEX
Das SIM900 ist ein komplettes Quad-Band- GSM / GPRS-Modul, das eine GSM / GPRS-Leistung von 850/900/1800 / 1900MHz für Sprache, SMS und Daten bei geringem Stromverbrauch bietet.
Schaltungsbeschreibung
Die Anschlüsse dieser GSM-basierten Hausautomationsschaltung sind recht einfach. Hier wird eine Flüssigkristallanzeige zur Anzeige des Status von Haushaltsgeräten verwendet, die im 4-Bit-Modus direkt mit Arduino verbunden ist. Die Datenpins des LCD, nämlich RS, EN, D4, D5, D6, D7, sind mit dem digitalen Arduino-Pin Nr. 6, 7, 8, 9, 10, 11 verbunden. Der Rx- und Tx-Pin des GSM-Moduls ist direkt mit Tx und Rx verbunden Pin von Arduino jeweils. Das GSM-Modul wird über einen 12-Volt-Adapter mit Strom versorgt. 5-Volt-SPDT-3-Relais dienen zur Steuerung von LICHT, LÜFTER und Fernseher. Die Relais sind über den Relaistreiber ULN2003 mit dem Arduino-Pin Nr. 3, 4 und 5 verbunden, um LICHT, LÜFTER bzw. TV zu steuern.
Code Beschreibung
Im Programmierteil dieses Projekts schließen wir zunächst die Bibliothek für die Flüssigkristallanzeige ein und definieren dann Daten und Steuerstifte für LCD- und Haushaltsgeräte.
#einschließen
Danach wird die serielle Kommunikation mit 9600 Bit / s initialisiert und gibt dem verwendeten Pin die Richtung vor.
void setup () {lcd.begin (16,2); Serial.begin (9600); PinMode (LED, OUTPUT); PinMode (Lüfter, AUSGANG); pinMode (Licht, AUSGANG); PinMode (TV, OUTPUT);
Für den seriellen Empfang von Daten haben wir zwei Funktionen verwendet: Serial.available, mit denen überprüft wird, ob serielle Daten eingehen, und Serial.read, mit dem die seriell eingehenden Daten gelesen werden.
while (Serial.available ()) {char inChar = Serial.read ();
Nachdem wir die Daten seriell empfangen haben, haben wir sie in einer Zeichenfolge gespeichert und warten dann auf Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); Verzögerung (1000); digitalWrite (LED, LOW); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; if (inChar == '*') {temp = 1; Rückkehr; }}
Wenn Enter kommt, startet das Programm den Vergleich der empfangenen Zeichenfolge mit der bereits definierten Zeichenfolge. Wenn die Zeichenfolge übereinstimmt, wird eine relative Operation ausgeführt, indem ein entsprechender Befehl verwendet wird, der im Code angegeben ist.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); Verzögerung (200); } else if (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); Verzögerung (200); }}