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

Σύστημα έξυπνου σπιτιού Arduino: 7 βήματα
Σύστημα έξυπνου σπιτιού Arduino: 7 βήματα

Βίντεο: Σύστημα έξυπνου σπιτιού Arduino: 7 βήματα

Βίντεο: Σύστημα έξυπνου σπιτιού Arduino: 7 βήματα
Βίντεο: Arduino & Processing αυτοματισμος σπιτιου 2024, Νοέμβριος
Anonim
Σύστημα έξυπνου σπιτιού Arduino
Σύστημα έξυπνου σπιτιού Arduino
Σύστημα έξυπνου σπιτιού Arduino
Σύστημα έξυπνου σπιτιού Arduino

Σε αυτό το Instructable θα σας δείξουμε πώς να δημιουργήσετε το δικό σας σύστημα έξυπνου σπιτιού με το App Designer της MATLAB με έναν πίνακα Sparkfun Red. Αυτό το Instructable μπορεί να χρησιμοποιηθεί για να αποκτήσει μια βασική κατανόηση του MATLAB's App Designer, καθώς και χρησιμοποιώντας μια φωτοαντίσταση, σερβοκινητήρα και έναν αισθητήρα κίνησης PIR.

Βήμα 1: Για αρχή: Υλικά

Αυτό το έργο απαιτεί τα ακόλουθα υλικά:

- Arduino Uno (Για αυτό το έργο χρησιμοποιήσαμε έναν πίνακα Sparkfun Red)

- Μία φωτοαντίσταση

- Ένας μίνι σερβοκινητήρας

- Ένας συνεχόμενος σερβοκινητήρας

- Ένας αισθητήρας κίνησης PIR

- Ένας αισθητήρας θερμοκρασίας

- 2 LED

- Σύρματα και αντιστάσεις όπως απαιτείται

Βήμα 2: Βήμα 2: Προσέγγιση του προβλήματος προς επίλυση

Ο κύριος στόχος αυτού του έργου ήταν να δημιουργήσει ένα εύχρηστο σύστημα έξυπνου σπιτιού κωδικοποιώντας έναν πίνακα Arduino Uno με MATLAB. Αρχικά σκεφτήκαμε να δουλέψουμε μόνο με έναν αισθητήρα θερμοκρασίας και υγρασίας, ωστόσο αν μείναμε με αυτούς τους δύο αισθητήρες, το σύστημα έξυπνου σπιτιού μας δεν θα ήταν εύκολα εμπορεύσιμο σε ένα γενικό κοινό. Αποφασίσαμε ότι θέλουμε να δημιουργήσουμε ένα συνολικό έξυπνο ενεργειακό σύστημα στο σπίτι που θα λειτουργεί ως έξυπνος θερμοστάτης και σύστημα ασφαλείας. Τέλος, θέλαμε να συνεργαστούμε με το AppDesigner του MATLAB, ώστε ο χρήστης να μπορεί εύκολα να αλλάξει το έξυπνο σπίτι όπως θέλει.

Βήμα 3: Βήμα 3: Διαμόρφωση του GUI και του Basic Code Flow

Βήμα 3: Διαμόρφωση του GUI και του Basic Code Flow
Βήμα 3: Διαμόρφωση του GUI και του Basic Code Flow

Για να ξεκινήσετε, θα πρέπει να ανοίξετε το MATLABs AppDesigner και να τοποθετήσετε τα ακόλουθα:

Δύο αριθμητικά πεδία επεξεργασίας για μια εισαγωγή κατωφλίου θερμού και κρύου

Ένα κουμπί για να ξεκλειδώσετε την πόρτα

Και τέσσερις ενδεικτικές λυχνίες για το τζάκι, την πόρτα, τον ανεμιστήρα και τον προβολέα.

Δύο ετικέτες για επικοινωνία με τον χρήστη.

Για αυτό το έργο βρήκαμε ευκολότερο να δουλέψουμε με καθολικές μεταβλητές και τη λειτουργία εκκίνησης εντός του σχεδιαστή. Θα χρειαστείτε αυτές τις μεταβλητές στη λειτουργία εκκίνησης:

παγκόσμιο α

a = arduino («COM3», «uno», «Βιβλιοθήκες», «Servo»); global s global p global hotUI global coldUI global unlock global temp global curr_temp global int_light

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

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

Σημείωση: Δεν δώσαμε οδηγίες καλωδίωσης για το σύστημα. Αναφερθήκαμε στο εγχειρίδιο που συνοδεύει τον πίνακα SparkFun Red.

Βήμα 4: Βήμα 3: Ρύθμιση του συστήματος θερμοστάτη

Βήμα 3: Ρύθμιση του συστήματος θερμοστάτη
Βήμα 3: Ρύθμιση του συστήματος θερμοστάτη
Βήμα 3: Ρύθμιση του συστήματος θερμοστάτη
Βήμα 3: Ρύθμιση του συστήματος θερμοστάτη

Η λειτουργία του θερμοστάτη λειτουργεί ως εξής:

Ο χρήστης θα εισάγει ποια θερμοκρασία θεωρεί ότι είναι πολύ ζεστή ή πολύ κρύα. Μόλις το θερμόμετρο πάρει μια ένδειξη, εάν το σπίτι είναι πολύ κρύο τότε το "τζάκι" (ένα κόκκινο LED) θα ανάψει και θα ζεστάνει το σπίτι. Εάν το σπίτι είναι πολύ ζεστό, τότε ένας "ανεμιστήρας" (συνεχής σερβοκινητήρας) θα ενεργοποιήσει την ψύξη του σπιτιού.

Για να κωδικοποιήσετε το σύστημα θερμοστάτη:

Θα ξεκινήσουμε μέσα στη λειτουργία εκκίνησης για να εμφανίσουμε την τρέχουσα θερμοκρασία και θα αφήσουμε τον χρήστη να εισάγει τα κρύα και ζεστά κατώφλια του.

p = 'A0' %ακίδα φωτοαντίστασης

volt = readVoltage (a, temp)? celc = (volt-0.5).*100; curr_temp = celc*9/5+32; app. Label_4. Text = num2str (curr_temp); %Ο αριθμός ετικέτας μπορεί να αλλάξει παύση (10). %Μπορεί να θέλει να αλλάξει !!!!!

Στη συνέχεια, θα ολοκληρώσουμε το σύστημα θερμοστάτη εντός της ιδιότητας Timer.

καθολική curr_temp

global coldUI global a global hotUI if curr_temp hotUI app. FanStateLamp. Color = [0,47 0,67 0,19]; %Γυρίζει πράσινη λυχνία GUI εγγραφή 0,90 0,90 0,90]; %Αυτό απενεργοποιεί όλες τις λάμπες GUI και την εφαρμογή τζακιού. FanStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D13', 0); τέλος

Βήμα 5: Βήμα 4: Ρύθμιση του συστήματος πόρτας

Βήμα 4: Ρύθμιση του συστήματος πόρτας
Βήμα 4: Ρύθμιση του συστήματος πόρτας

Η λειτουργία της πόρτας λειτουργεί ως εξής:

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

Για να διαμορφώσετε τον σερβοκινητήρα και τη φωτοαντίσταση:

Για να κωδικοποιήσετε το σύστημα πόρτας:

Θα ξεκινήσουμε μέσα στη λειτουργία εκκίνησης για να λάβουμε τις αρχικές ενδείξεις φωτός.

s = servo (a, 'D9') %Το Pin μπορεί να αλλάξει με βάση την καλωδίωση

app. Label_4. Text = 'Ανοίξτε την πόρτα για να βαθμονομήσετε το σύστημα'; παύση (15)? %Αυτό δίνει χρόνο στο χρήστη να ανοίξει την πόρτα int_light = readVoltage (a, p); app. Label_4. Text = 'Μπορείτε να αφαιρέσετε το δάχτυλό σας';

Στη συνέχεια, θα συμπληρώσουμε τον κωδικό εντός της ιδιότητας Χρονοδιακόπτη

καθολικό ξεκλείδωμα

global int_light global s global a %Λάβετε μια τρέχουσα ανάγνωση φωτός για σύγκριση curr_light = readVoltage (a, p); % - Κλείδωμα πόρτας - εάν int_light <curr_light writePosition (s, 1) % Οι θέσεις σερβομηχανισμού μπορεί να διαφέρουν ανά παύση κινητήρα (0,5). app. DoorStateLamp. Color = [0,47 0,67 0,19]; τέλος % - Ξεκλείδωμα πόρτας - εάν ξεκλειδώσετε == 1234 παύση (0,5). writePosition (s,.52) app. DoorStateLamp. Color = [0,85 0,33 0,10]; τέλος

Τέλος θα δημιουργήσουμε το κουμπί ξεκλειδώματος επανάκλησης. Μόλις ο χρήστης πατήσει το κουμπί ξεκλειδώματος, στο καθολικό ξεκλείδωμα της μεταβλητής θα εκχωρηθεί ένας αριθμός που θα μπορεί να ολοκληρώσει την τελική πρόταση if στην ιδιότητα Χρονοδιακόπτη.

καθολικό ξεκλείδωμα

ξεκλείδωμα = 1234;

Βήμα 6: Βήμα 6: Ρύθμιση του συστήματος Flood Light

Βήμα 6: Ρύθμιση του συστήματος Flood Light
Βήμα 6: Ρύθμιση του συστήματος Flood Light

Η λειτουργία για το φανάρι λειτουργεί ως εξής:

Όταν ξεκινάτε τον κωδικό MATLAB, ο αισθητήρας κίνησης PIR θα αρχίσει να ανιχνεύει κίνηση. Μόλις εντοπίσει κάποιο είδος κίνησης, θα κόψει ένα σήμα ισχύος. Μόλις κοπεί αυτό το σήμα, θα ανάψει ένα φως πλημμύρας έξω από το σπίτι.

Για να διαμορφώσετε το σύστημα προβολέων:

Για να κωδικοποιήσετε το σύστημα προβολέων:

Αυτή τη φορά μπορούμε να μεταβούμε στην ιδιότητα Χρονοδιακόπτη επειδή δεν χρειάζεται να γράψουμε επιπλέον μεταβλητές.

human_detected = readDigitalPin (a, 'D2'); Το %Pin μπορεί να αλλάξει με βάση τη διαμόρφωση αν το human_detected == 0 writeDigitalPin (a, 'D7', 1) %Pin μπορεί να αλλάξει app. FloodLightStateLamp. Color = [0,47 0,67 0,19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D7', 0) τέλος

Βήμα 7: Συμπέρασμα

Τώρα που έχετε ένα προσχέδιο του GUI σας με το App Designer και τον κωδικό σας για το Arduino, είστε έτοιμοι να κάνετε τις δικές σας αλλαγές ή να συνδέσετε το Arduino σας και να φύγετε!

Συνιστάται: