Πίνακας περιεχομένων:

EF230 Έργο Smart Home: 7 βήματα
EF230 Έργο Smart Home: 7 βήματα

Βίντεο: EF230 Έργο Smart Home: 7 βήματα

Βίντεο: EF230 Έργο Smart Home: 7 βήματα
Βίντεο: EF230: MATLAB RVR Speech Recognition Demonstration 2024, Ιούλιος
Anonim
EF230 Έργο Smart Home
EF230 Έργο Smart Home

Απαιτούμενα μέρη και υλικά:

  • 1 Arduino 1000 MKR
  • 3 Breadboards
  • 2 μίνι φωτοκύτταρα
  • 1 τρανζίστορ NPN
  • 1 Mini Power Switch
  • 1 LED - RGB (4 ακροδέκτες)
  • 1 LED (χρώμα της επιλογής σας)
  • 1 Δίοδος 1N4148
  • 1 αντιστάσεις 10K Ohm
  • Αντίσταση 5 100 Ohm
  • 1 Αισθητήρας θερμοκρασίας TMP36
  • 1 DAGU 48: 1 Αναλογία Gearmotor
  • 25 Jumper Wires
  • Καλώδιο USB
  • Πρόγραμμα MATLAB
  • Οδηγός πειράματος SIK για τον πίνακα Arduino 101/Genuino 101 - Σύνδεσμος οδηγού πειράματος SIK

Αυτό το έργο περιγράφει λεπτομερώς τον εννοιολογικό σχεδιασμό ενός συστήματος έξυπνου σπιτιού που θα χρησιμοποιούσε δεδομένα για να βοηθήσει τους ιδιοκτήτες σπιτιού να βελτιστοποιήσουν τη χρήση ενέργειας και την ασφάλειά τους. Περιλαμβάνει έναν αισθητήρα φωτός για να ανάβει τα εξωτερικά φώτα τη νύχτα, έναν αισθητήρα φωτός για ασφάλεια και έναν αισθητήρα θερμοκρασίας και έναν ανεμιστήρα για τον έλεγχο της εσωτερικής θερμοκρασίας.

Βήμα 1: LED ευαίσθητο στο φως

  • Η φωτοευαίσθητη ρύθμιση LED προορίζεται να αντιπροσωπεύει τα εξωτερικά φώτα σε ένα σπίτι που ανάβει τη νύχτα.
  • Όταν το μίνι φωτοκύτταρο αντιληφθεί μια μειωμένη ποσότητα φωτός, το LED θα ανάψει.
  • Για ένα έξυπνο σπίτι αυτό έχει επιπτώσεις στην ενέργεια και την ασφάλεια. Θα εξοικονομήσει ενέργεια αφήνοντας τα φώτα σβηστά κατά τη διάρκεια της ημέρας και θα προσφέρει αυξημένη ασφάλεια τη νύχτα.
  • Η ακριβής καλωδίωση και η ρύθμιση για αυτό το μέρος του έργου μπορείτε να βρείτε στο πείραμα 7 στον Οδηγό πειράματος SIK.

Βήμα 2: Mini Power Switch

  • Ο διακόπτης είναι το πρώτο βήμα στη διαδικασία ασφάλειας του έξυπνου σπιτιού.
  • Όταν είναι ενεργοποιημένος, ο διακόπτης θα ξεκινήσει μια απάντηση που θα ρωτάει τον χρήστη εάν επιθυμεί να εισέλθει στη λειτουργία «Σπίτι» ή «Εκτός».
  • Εάν επιλεγεί η λειτουργία "Home", η ασφάλεια θεωρείται αφοπλισμένη, αλλά η επιλογή της λειτουργίας "Away" θα οπλίσει το σύστημα ασφαλείας.
  • Η καλωδίωση για αυτό το τμήμα του έργου μπορεί να βρεθεί στο πείραμα 6 στον Οδηγό πειράματος. Για τους σκοπούς του έξυπνου σπιτιού, τα LED και τα καλώδια σύνδεσης που βρέθηκαν στο πείραμα 6 δεν χρειάζεται να συμπεριληφθούν.

Βήμα 3: Δεύτερο Photocell

Δεύτερο Φωτοκύτταρο
Δεύτερο Φωτοκύτταρο
  • Το δεύτερο φωτοκύτταρο χρησιμεύει ως αισθητήρας κίνησης για το σύστημα ασφαλείας του έξυπνου σπιτιού.
  • Ο αισθητήρας χρησιμοποιείται μόνο όταν το σύστημα τεθεί σε λειτουργία «Εκτός» όπως περιγράφεται στο προηγούμενο βήμα.
  • Εάν το φωτοκύτταρο παρουσιάσει μείωση της ποσότητας φωτός που λαμβάνει, το αναγνωρίζει ως κίνηση μέσα στο σπίτι.
  • Η ρύθμιση για αυτό το μέρος του έργου βρίσκεται στο πείραμα 7 στον Οδηγό πειράματος SIK. Ωστόσο, μόνο το φωτοκύτταρο και τα καλώδια σύνδεσής του πρέπει να συμπεριληφθούν στην καλωδίωση.

Βήμα 4: LED RGB

  • Το LED RGB χρησιμοποιείται σε συνδυασμό με το μίνι διακόπτη τροφοδοσίας και το δεύτερο φωτοκύτταρο για το σύστημα ασφαλείας του έξυπνου σπιτιού.
  • Τα τρία διαφορετικά χρώματα χρησιμοποιούνται ως δείκτες για τον έξυπνο σπίτι.
  • Όταν το σύστημα τοποθετηθεί στη λειτουργία «Αρχική σελίδα», η λυχνία LED γίνεται μπλε. Όταν το σύστημα τοποθετηθεί στη λειτουργία «Εκτός», η λυχνία LED γίνεται πράσινη. Όταν το φωτοκύτταρο που χρησιμοποιείται ως αισθητήρας κίνησης σβήσει, το φως αναβοσβήνει κόκκινο.
  • Η καλωδίωση για το LED RGB βρίσκεται στο πείραμα 3 του Οδηγού πειράματος SIK.

Βήμα 5: Αισθητήρας θερμοκρασίας

  • Ο αισθητήρας θερμοκρασίας είναι το κύριο μέρος της εξοικονόμησης ενέργειας στο έξυπνο σπίτι.
  • Ο κάτοικος μπορεί να εισάγει την επιθυμητή θερμοκρασία για το σπίτι του όταν χρησιμοποιείται το έξυπνο σπίτι.
  • Ο αισθητήρας θερμοκρασίας είναι το πώς το σύστημα γνωρίζει πόσο μακριά είναι η πραγματική θερμοκρασία από την επιθυμητή θερμοκρασία.
  • Η ρύθμιση για τον αισθητήρα θερμοκρασίας βρίσκεται στο πείραμα 9 του Οδηγού πειράματος SIK.

Βήμα 6: DAGU Gearmotor

DAGU Gearmotor
DAGU Gearmotor
  • Ο κινητήρας επιτρέπει στο έξυπνο σπίτι να ρυθμίζει τη θερμοκρασία στο σπίτι με βάση την επιθυμητή θερμοκρασία και τις ενδείξεις του αισθητήρα θερμοκρασίας.
  • Λειτουργώντας ως μονάδα εναλλασσόμενου ρεύματος στο σπίτι, ο κινητήρας περιστρέφεται με διαφορετικές ταχύτητες με βάση το πόσο υψηλότερη είναι η πραγματική θερμοκρασία από την επιθυμητή θερμοκρασία. Όσο μεγαλύτερη είναι η διαφορά, τόσο πιο γρήγορα γυρίζει ο κινητήρας.
  • Η καλωδίωση για τον κινητήρα βρίσκεται στον Οδηγό πειράματος στο πείραμα 11.

Βήμα 7: Κωδικός

  • Ο κωδικός για το έξυπνο σπίτι περιλαμβάνει πολλαπλές διεπαφές χρήστη που επιτρέπουν στον κάτοικο να καταλάβει εύκολα πώς λειτουργεί και να αλλάζει εύκολα τις ρυθμίσεις.
  • Με το σύστημα έξυπνου σπιτιού, ο κάτοικος θα λαμβάνει ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου εάν ο αισθητήρας κίνησης είναι απενεργοποιημένος ενώ λείπουν.
  • Η μόνη αλλαγή που πρέπει να γίνει είναι η εισαγωγή των πληροφοριών για το email του αποστολέα και τη διεύθυνση email του παραλήπτη.

σαφής α? σαφές s? σαφές m? clc? κλείσ'τα όλα; % Εκκαθάριση μεταβλητών arduino και servo, ώστε να μπορούν να επαναπροσδιορίζονται κάθε φορά, έτσι ώστε ο κώδικας να λειτουργεί αποτελεσματικά (το "clear m" είναι απαραίτητο για να λειτουργήσει σωστά ένας από τους βρόχους while) a = arduino (); % Ορίστε τη μεταβλητή arduino

s = servo (a, 'D6'); % Ορίστε τη σερβο μεταβλητή

% Αρχικοποίηση μεταβλητών email για προειδοποιητικό μήνυμα ηλεκτρονικού ταχυδρομείου συστήματος ασφαλείας

emails = {'εισαγωγή διεύθυνσης παραλήπτη'}; % Διάταξη μηνυμάτων ηλεκτρονικού ταχυδρομείου στα οποία πρέπει να σταλεί το email ασφαλείας

% Ρυθμίσεις προτίμησης email απαραίτητες για τη χρήση ενός Gmail για αποστολή μηνυμάτων από

setpref («Διαδίκτυο», «E_mail», «διεύθυνση ηλεκτρονικού ταχυδρομείου αποστολέα»)

setpref («Διαδίκτυο», «SMTP_Username», «όνομα χρήστη αποστολέα»)

setpref («Διαδίκτυο», «SMTP_Password», «κωδικός πρόσβασης αποστολέα»)

props = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'true');

props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

% Μεταβλητές θέματος και κειμένου ηλεκτρονικού ταχυδρομείου

subj = 'Ειδοποίηση εισβολέα στο σπίτι σας';

text = 'Γεια σας, αυτό είναι το σύστημα ασφαλείας Smart Home που σας ενημερώνει ότι εντοπίστηκε κίνηση έξω από το σπίτι σας. Έχουμε λάβει τα απαραίτητα μέτρα και επικοινωνήσαμε με τις αρχές για εσάς. Μείνε ασφαλής.';

ενώ ισχύει

προτροπή = {'Εισαγάγετε την επιθυμητή θερμοκρασία στο σπίτι (μεταξύ 65F και 85F):'}; % Προτροπή για το μενού εισαγωγής χρήστη

dlgtitle = 'Επιλογή θερμοκρασίας'; % Τίτλος για το μενού εισαγωγής χρήστη

dims = [1 30]; % Διαστάσεις για το μενού εισαγωγής χρήστη

definput = {'72'}; % Προεπιλεγμένη είσοδος που εμφανίζεται κατά το πρώτο άνοιγμα του μενού

tempsel_array = inputdlg (προτροπή, dlgtitle, dims, definput); % Αναδυόμενο μενού εισαγωγής χρήστη που θα αποθηκεύσει τον εισαγόμενο αριθμό σε έναν πίνακα

εάν ~ isempty (tempsel_array) % Εάν ο πίνακας ΔΕΝ είναι κενός

tempsel_char = cell2mat (tempsel_array); % Μετατροπή του πίνακα σε συμβολοσειρά χαρακτήρων

tempsel = str2double (tempsel_char); % Μετατρέψτε τη συμβολοσειρά χαρακτήρων σε αριθμούς

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1)? % Γράψτε την επιλεγμένη θερμοκρασία στο κανάλι σας ThingSpeak

break % Διακοπή από το βρόχο while ώστε το μενού να μην εμφανίζεται πολλές φορές

else % Εάν ο χρήστης κάνει κλικ ακύρωση αντί να εισαγάγει μια θερμοκρασία

msg1 = msgbox ("Δεν έχει επιλεγεί θερμοκρασία, προεπιλογή σε 85F", "Προειδοποίηση!"); % Το μήνυμα εμφανίζεται στον χρήστη μετά το κλικ στο κουμπί Ακύρωση

waitfor (msg1); % Περιμένετε να κλείσει το πλαίσιο μηνυμάτων πριν συνεχίσετε

tempsel = 85; % Ρυθμίστε τη θερμοκρασία σε αυτό που αναφέρεται στο πλαίσιο μηνυμάτων

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Γράψτε την επιλεγμένη θερμοκρασία στο κανάλι σας ThingSpeak

break % Διακοπή από το βρόχο while ώστε το μενού να μην εμφανίζεται πολλές φορές

τέλος

τέλος

ενώ ισχύει

chID = 745517; % Αναγνωριστικό καναλιού ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % Κλειδί για πρόσβαση στο κανάλι ThingSpeak

% Αρχικοποίηση αισθητήρων για ανάκτηση δεδομένων

tempread = readVoltage (a, 'A3'); % Διαβάστε την τάση του αισθητήρα θερμοκρασίας

lightl1 = readVoltage (a, 'A2'); % Επίπεδο φωτός για τη φωτοαντίσταση που πηγαίνει στην κόκκινη λυχνία LED

lightl2 = readVoltage (a, 'A5'); % Επίπεδο φωτός για τη φωτοαντίσταση που πηγαίνει στο σύστημα ασφαλείας

switchv = readVoltage (a, 'A0'); % Τιμή για τον διακόπτη

% Μετατρέψτε τα δεδομένα θερμοκρασίας από τάση σε βαθμούς Φαρενάιτ

tempC = (tempread - 0,5) * 100; % Μετατρέψτε την τάση σε θερμοκρασία σε Κελσίου

tempF = (tempC * 9/5) + 32; % Μετατρέψτε τη θερμοκρασία σε Κελσίου σε θερμοκρασία σε Φαρενάιτ

% Αρχικοποιήστε τους αριθμούς καρφιτσών για το πολύχρωμο LED

redp = 'D9'; % Καρφίτσα για κόκκινο φως από LED

greenp = 'D10'; % Καρφίτσα για πράσινο φως από LED

bluep = 'D11'; % Καρφίτσα για μπλε φως από LED

εάν tempsel <tempF % Εάν η επιλεγμένη θερμοκρασία είναι μεγαλύτερη από τη θερμοκρασία δωματίου

writePosition (s, 1); % Servo θα αρχίσει να κινείται

παύση (10) % Το Servo θα συνεχίσει να περιστρέφεται για 10 δευτερόλεπτα για να δηλώσει ότι το AC θα απενεργοποιηθεί μετά από ένα καθορισμένο χρονικό διάστημα

writePosition (s, 0); % Απενεργοποιήστε τον ανεμιστήρα για σκοπούς συνέχισης του κώδικα χωρίς ανεμιστήρα ενεργοποιημένο

tempsel = 150? % Αλλάξτε την τιμή θερμοκρασίας για να ξεφύγετε από τον βρόχο μετά την απενεργοποίηση του ανεμιστήρα, και πάλι μόνο με σκοπό τη συνέχιση του κωδικού

τέλος

αν lightl1 <= 3 % Εάν η πρώτη φωτοαντίσταση ανιχνεύσει χαμηλό επίπεδο φωτισμού

writeDigitalPin (a, 'A1', 1)? % Ενεργοποιήστε το κόκκινο LED που αντιπροσωπεύει τα φώτα εξωτερικού χώρου

else % Εάν το επίπεδο φωτισμού είναι και πάλι υψηλό

writeDigitalPin (a, 'A1', 0)? % Απενεργοποιήστε το κόκκινο LED όταν το επίπεδο φωτισμού είναι αρκετά υψηλό και πάλι

τέλος

εάν switchv> 3 % Εάν ο διακόπτης είναι ενεργοποιημένος

A = υπάρχει ('m', 'var'); % Ελέγξτε για την ύπαρξη της μεταβλητής 'm', αυτό θα αρχικοποιήσει για το βρόχο while και θα επιτρέψει να σπάσει όταν επιλέγεται ένα στοιχείο μενού (γι 'αυτό πρέπει να γίνει σαφές m στην αρχή του κώδικα)

ενώ το A == 0 % Loop θα εκτελεστεί έως ότου υπάρξει η μεταβλητή 'm'

menutext = 'Σε ποια λειτουργία ασφαλείας θα θέλατε να εισέλθετε;'; % Κείμενο για το αναδυόμενο μενού ασφαλείας

επιλογές = {'Σπίτι', 'Εκτός'}; % Επιλογές για το αναδυόμενο μενού ασφαλείας

m = μενού (menutext, επιλογές); % Αναδυόμενο μενού για λειτουργίες συστήματος ασφαλείας

break % Διασφαλίζει ότι ο βρόχος while είναι σπασμένος, ώστε το μενού να μην εμφανίζεται πολλές φορές

τέλος

αν m == 1 % Εάν έχει επιλεγεί η λειτουργία "Αρχική σελίδα"

writeDigitalPin (a, bluep, 1); % Ενεργοποιήστε μόνο το μπλε φως στο LED αλλαγής χρώματος

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % Εάν έχει επιλεγεί η λειτουργία "Εκτός"

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Ενεργοποιήστε μόνο το πράσινο φως στο LED αλλαγής χρώματος

αν lightl2 <= 3 % Εάν το επίπεδο φωτισμού στη δεύτερη φωτοαντίσταση είναι χαμηλό, αντιπροσωπεύει την κίνηση που ανιχνεύεται από το σύστημα ασφαλείας

sendmail (email, subj, κείμενο)? % Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου με τις προηγουμένως καθορισμένες ιδιότητες ηλεκτρονικού ταχυδρομείου writeDigitalPin (a, greenp, 0); % Αναβοσβήνει το κόκκινο χρώμα 2 φορές

writeDigitalPin (a, redp, 1);

παύση (0,3)

writeDigitalPin (a, redp, 0);

παύση (0,3)

writeDigitalPin (a, redp, 1);

παύση (0,3)

writeDigitalPin (a, redp, 0);

παύση (0,3)

writeDigitalPin (a, redp, 1); % Ολοκληρώστε με σταθερό κόκκινο μετά το αναβοσβήσιμο για να δείξετε ότι υπάρχει κίνηση μέχρι το επίπεδο φωτισμού να ανέβει ξανά

msg2 = msgbox ('Ο εισβολέας εντοπίστηκε από το σύστημα ασφαλείας, έχει σταλεί ένα email στους ιδιοκτήτες του σπιτιού για να τους ενημερώσει.', 'ΠΡΟΕΙΔΟΠΟΙΗΣΗ!'); % Κιβώτιο μηνυμάτων για ενημέρωση του χρήστη για κίνηση και για ενημέρωση σχετικά με το μήνυμα ηλεκτρονικού ταχυδρομείου που στάλθηκε waitfor (msg2) % Περιμένετε να κλείσει το πλαίσιο μηνυμάτων πριν συνεχίσετε

αλλού

writeDigitalPin (a, greenp, 1); % Μόλις ανέβει ξανά το επίπεδο φωτισμού, θα γίνει ξανά πράσινο

τέλος

τέλος

elseif switchv <3,3 % Εάν ο διακόπτης είναι απενεργοποιημένος

writeDigitalPin (a, bluep, 0); % Απενεργοποιήστε εντελώς τη λυχνία LED για να δείξετε ότι το σύστημα ασφαλείας είναι απενεργοποιημένο

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

τέλος

τέλος

Συνιστάται: