Φτιάχνοντας ένα Έξυπνο Σπίτι, και έλεγχος από το Android (μέρος 6ο)
- Τρίτη, 14 Μαΐου 2013 18:33
Συνεχίζοντας το project μας για την κατασκευή ενός Smart Home το οποίο θα ελέγχουμε απ' το Android, θα δούμε την χρήση ενός ακόμα αισθητήρα, και συγκεκριμένα ενός που μετράει το φως σε ένα δωμάτιο.
Το photoresistor που θα χρησιμοποιήσουμε μεταβάλλει την αντίστασή του αναλόγως της έντασης του φωτός, το οποίο θα εκμεταλλευτούμε στο project μας. (προηγούμενα βήματα: 1, 2, 3, 4, 5)
Τι νέο θα χρειαστούμε σε αυτό το βήμα
Ένα ή και περισσότερα Photoresistors. (Αγορά)
Ένα ή περισσότερα LED και τις αντίστοιχες αντιστάσεις (Αγορά)
Τι θέλουμε να καταφέρουμε
Σε αυτό το μέρος θέλουμε να φτιάξουμε ένα σύστημα, το οποίο θα μετράει το πόσο έντονο είναι το φως σε ένα δωμάτιο, και αν η μέτρηση πέσει κάτω από κάποιο όριο να ενεργοποιεί αυτόματα τα φώτα.
Σε πρώτη φάση στο κύκλωμα θα ενεργοποιούμε ένα Led, ενώ στην συνέχεια θα στέλνουμε trigger 5V σε ένα ac relay ώστε να ανάβει το φώτα σε ένα δωμάτιο.
Το κύκλωμά μας δηλαδή θα είναι ως εξής:
Ο κώδικας για το Arduino
Θα δούμε βήμα βήμα τον κώδικα (στην πιο απλή μορφή του) που χρησιμοποιήσαμε στο Arduino. Αρχικά δηλώνουμε τις μεταβητές light_sensor και yellow_led στις οποίες βάζουμε το αναλογικό Pin 0, και το ψηφιακό PIN 13 του Arduino. (τα Pin είναι αριθμημένα στην πλακέτα.)
Η συνάρτηση void setup εκτελείται μία φορά κατά την εκκίνηση, ενώ η void loop εκτελείται κατ' επανάληψη.
Το Serial.begin(9600) ορίζει ότι θα χρησιμοποιήσουμε το Serial Monitor (κυρίως το θέλουμε για Debugging), με ταχύτητα 9600bps.
Στην συνέχεια στην μεταβλητή light_reading τύπου int, βάζουμε την μέτρηση που διαβάζουμε από τον αισθητήρα φωτός που είναι συνδεδεμένος στο αναλογικό Pin 0.
Ακόμα, ορίζουμε αν η τιμή της μεταβλητής πέσει κάτω από ένα όριο if (light_reading<600), να ανάβει το LED, αλλάζοντας την κατάστασή του σε HIGH.
Τέλος, βάζουμε να εμφανίζεται η τιμή της μεταβλητής light_reading στο Serial Monitor για Debugging.
int light_sensor = A0; //analogiko pin 0 int yellow_led = 13; //digital pin 13 void setup(){ Serial.begin(9600); //serial gia debug pinMode(yellow_led, OUTPUT); } void loop(){ int light_reading = analogRead(light_sensor); if (light_reading<600) { digitalWrite(yellow_led, HIGH); //anavw to led } else { digitalWrite(yellow_led,LOW); //svinw to led } Serial.println(light_reading); //serial gia debug delay(300); //ena mikro delay gia kalitero output }
Μεταφέροντας την ένδειξη στο Android
Έχουμε δείξει πώς να εμφανίσετε μία ένδειξη από έναν αισθητήρα στο Arduino, και σε Web Browser, αλλά και σε Android εφαρμογή.
Κάνουμε λοιπόν τις απαραίτητες αλλαγές στο project μας και παίρνουμε την ένδειξη στην Android εφαρμογή μας. Ο κώδικάς μας:
Κώδικας Arduino για Smart Home
Ο κώδικας για την Android εφαρμογή είναι ο ίδιος που είχαμε δει και σε προηγούμενο μέρος, καθότι αλλάξαμε μόνο το "server-side" κομμάτι.
Οπότε μέσα σ αυτήν παίρνουμε την ένδειξη του φωτός, αλλά και την κατάσταση του led.
Κάντε Like το GreeceAndroid.gr στο Facebook!
Γίνετε μέλος της Ελληνική Κοινότητας του Android στο G+