Το κινητό τηλέφωνο είναι μια επαναστατική εφεύρεση του αιώνα. Σχεδιάστηκε κυρίως για την πραγματοποίηση και λήψη κλήσεων και μηνυμάτων κειμένου, αλλά έχει γίνει ολόκληρος ο κόσμος μετά την εμφάνιση του έξυπνου τηλεφώνου. Σε αυτό το έργο χτίζουμε ένα σύστημα οικιακού αυτοματισμού, όπου μπορεί κανείς να ελέγξει τις οικιακές συσκευές, χρησιμοποιώντας το απλό τηλέφωνο με βάση το GSM, απλά στέλνοντας SMS μέσω του τηλεφώνου του. Σε αυτό το έργο, δεν απαιτείται έξυπνο τηλέφωνο, απλώς το παλιό τηλέφωνο GSM θα λειτουργήσει για να ΕΝΕΡΓΟΠΟΙΗΣΕΙ και να απενεργοποιεί οποιεσδήποτε οικιακές ηλεκτρονικές συσκευές, από οπουδήποτε. Μπορείτε επίσης να ελέγξετε κάποια περισσότερα έργα ασύρματου οικιακού αυτοματισμού εδώ: IR Remote Controlled Home Automation χρησιμοποιώντας Arduino, Bluetooth Controlled Home Automation μαζί με DTMF Home Automation, PC Controlled Home Automation χρησιμοποιώντας Arduino
Επεξήγηση εργασίας
Σε αυτό το έργο, το Arduino χρησιμοποιείται για τον έλεγχο ολόκληρης της διαδικασίας. Εδώ έχουμε χρησιμοποιήσει την ασύρματη επικοινωνία GSM για τον έλεγχο οικιακών συσκευών. Στέλνουμε μερικές εντολές όπως "# A.light on *", "# A.light off *" και ούτω καθεξής για τον έλεγχο οικιακών συσκευών AC. Αφού έλαβε συγκεκριμένες εντολές από το Arduino μέσω GSM, το Arduino στέλνει σήμα σε ρελέ, για να ενεργοποιήσετε ή να απενεργοποιήσετε τις οικιακές συσκευές χρησιμοποιώντας ένα πρόγραμμα οδήγησης ρελέ.
Εξαρτήματα κυκλώματος:
- Arduino UNO
- Ενότητα GSM
- ULN2003
- Ρελέ 5 volt
- Λάμπα με βάση
- Σύνδεση καλωδίων
- Πίνακας ψωμιού
- LCD 16x2
- Παροχή ηλεκτρικού ρεύματος
- Κινητό τηλέφωνο
Εδώ έχουμε χρησιμοποιήσει ένα πρόθεμα στη συμβολοσειρά εντολών που είναι "#A.". Αυτό το πρόθεμα χρησιμοποιείται για να αναγνωρίσει ότι η κύρια εντολή έρχεται δίπλα του και * στο τέλος της συμβολοσειράς υποδεικνύει ότι το μήνυμα έχει τερματιστεί.
Όταν στέλνουμε SMS στη μονάδα GSM μέσω κινητού, τότε το GSM λαμβάνει αυτό το SMS και το στέλνει στο Arduino. Τώρα ο Arduino διαβάζει αυτό το SMS και εξάγει την κύρια εντολή από τη ληφθείσα συμβολοσειρά και αποθηκεύει σε μια μεταβλητή. Μετά από αυτό, το Arduino συγκρίνει αυτήν τη συμβολοσειρά με προκαθορισμένη συμβολοσειρά. Εάν συμβεί αντιστοιχία, τότε το Arduino στέλνει σήμα στο ρελέ μέσω του προγράμματος οδήγησης ρελέ για ενεργοποίηση και απενεργοποίηση των οικιακών συσκευών. Και το σχετικό αποτέλεσμα εκτυπώνεται επίσης σε οθόνη LCD 16x2 χρησιμοποιώντας κατάλληλες εντολές.
Εδώ σε αυτό το έργο χρησιμοποιήσαμε λάμπα 3 μηδενικών βατ για επίδειξη που δείχνει ανεμιστήρα, φως και τηλεόραση.
Παρακάτω είναι η λίστα των μηνυμάτων που στέλνουμε μέσω SMS, για να ενεργοποιήσετε και να απενεργοποιήσετε τον ανεμιστήρα, το φως και την τηλεόραση:
S.no. |
Μήνυμα |
Λειτουργία |
1 |
# A.fan σε * |
Ο ανεμιστήρας είναι ενεργοποιημένος |
2 |
# A.fan off * |
Ανεμιστήρας ΑΝΕΝΕΡΓΟΣ |
3 |
#Βρίσκω τυχαία* |
ΦΩΤΕΙΝΟ |
4 |
# Α. Απενεργοποίηση * |
ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ |
5 |
# A.tv σε * |
Ενεργοποίηση τηλεόρασης |
6 |
# A.tv off * |
Απενεργοποίηση τηλεόρασης |
7 |
# Α. Όλα σε * |
Όλα ΕΝΕΡΓΟ |
8 |
# A. όλα μακριά * |
Όλα OFF |
Ενότητα GSM:
Η μονάδα GSM χρησιμοποιείται σε πολλές συσκευές επικοινωνίας που βασίζονται στην τεχνολογία GSM (Παγκόσμιο Σύστημα για Κινητές Επικοινωνίες). Χρησιμοποιείται για την αλληλεπίδραση με το δίκτυο GSM χρησιμοποιώντας έναν υπολογιστή. Η μονάδα GSM κατανοεί μόνο τις εντολές AT και μπορεί να ανταποκριθεί ανάλογα. Η πιο βασική εντολή είναι "AT", εάν το GSM ανταποκρίνεται εντάξει τότε λειτουργεί καλά διαφορετικά αποκρίνεται με "ERROR". Υπάρχουν διάφορες εντολές AT, όπως ATA για να απαντήσετε σε μια κλήση, ATD για να καλέσετε μια κλήση, AT + CMGR για να διαβάσετε το μήνυμα, AT + CMGS για να στείλετε το sms κ.λπ.), όπως "AT + CMGS \ r". Μπορούμε να χρησιμοποιήσουμε τη μονάδα GSM χρησιμοποιώντας αυτές τις εντολές:
ATE0 - Για απενεργοποίηση της ηχούς
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Αριθμός κινητού"
>> Τώρα μπορούμε να γράψουμε το μήνυμά μας
>> Μετά τη σύνταξη μηνύματος
Ctrl + Z αποστολή μηνύματος εντολή (26 σε δεκαδικό).
ENTER = 0x0d σε HEX
Το SIM900 είναι μια ολοκληρωμένη μονάδα GSM / GPRS Quad-band που παρέχει απόδοση GSM / GPRS 850/900/1800 / 1900MHz για φωνή, SMS και δεδομένα με χαμηλή κατανάλωση ενέργειας.
Περιγραφή κυκλώματος
Οι συνδέσεις αυτού του κυκλώματος οικιακού αυτοματισμού με βάση το GSM είναι αρκετά απλές, εδώ χρησιμοποιείται μια οθόνη υγρών κρυστάλλων για την εμφάνιση της κατάστασης των οικιακών συσκευών που συνδέεται άμεσα με το arduino σε λειτουργία 4-bit. Οι καρφίτσες δεδομένων της LCD, συγκεκριμένα RS, EN, D4, D5, D6, D7 συνδέονται με τον ψηφιακό ακροδέκτη arduino με αριθμό 6, 7, 8, 9, 10, 11. Και οι ακροδέκτες Rx και Tx της μονάδας GSM συνδέονται απευθείας σε Tx και Rx καρφίτσα του Arduino αντίστοιχα. Και η μονάδα GSM τροφοδοτείται χρησιμοποιώντας έναν προσαρμογέα 12 volt. 5 ρελέ SPDT 3 ρελέ χρησιμοποιούνται για τον έλεγχο LIGHT, FAN και TV. Και τα ρελέ συνδέονται με τον αριθμό pin 3, 4 και 5 του arduino μέσω του προγράμματος οδήγησης ρελέ ULN2003 για τον έλεγχο LIGHT, FAN και TV αντίστοιχα.
Περιγραφή κωδικού
Στο πρόγραμμα προγραμματισμού αυτού του έργου, πρώτα απ 'όλα στον προγραμματισμό περιλαμβάνεται βιβλιοθήκη για οθόνη υγρών κρυστάλλων και στη συνέχεια ορίζουμε δεδομένα και καρφίτσες ελέγχου για LCD και οικιακές συσκευές.
#περιλαμβάνω
Μετά από αυτήν την σειριακή επικοινωνία αρχικοποιείται στα 9600 bps και δίνει κατεύθυνση στον χρησιμοποιημένο πείρο.
άκυρη ρύθμιση () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); pinMode (Ανεμιστήρας, ΕΞΟΔΟΣ); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
Για τη λήψη σειριακών δεδομένων έχουμε χρησιμοποιήσει δύο συναρτήσεις μία είναι Serial.available που ελέγχει αν έρχονται σειριακά δεδομένα και άλλη είναι Serial.read που διαβάζει τα δεδομένα που έρχονται σειριακά.
while (Serial.available ()) {char inChar = Serial.read ();
Αφού λάβουμε σειριακά δεδομένα τα έχουμε αποθηκεύσει σε μια συμβολοσειρά και μετά περιμένουμε το Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); καθυστέρηση (1000) digitalWrite (led, LOW); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; αν (σεChar == '*') {temp = 1; ΕΠΙΣΤΡΟΦΗ; }
Όταν το Enter έρχεται το πρόγραμμα αρχίζει να συγκρίνει τη ληφθείσα συμβολοσειρά με ήδη καθορισμένη συμβολοσειρά και εάν η συμβολοσειρά ταιριάζει τότε εκτελείται μια σχετική λειτουργία χρησιμοποιώντας την κατάλληλη εντολή που δίδεται στον κώδικα.
άκυρος έλεγχος () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); καθυστέρηση (200) } αλλιώς εάν (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); καθυστέρηση (200) }