Φτιάχνοντας ένα Έξυπνο Σπίτι, και έλεγχος από το Android (μέρος 6ο)

android smart home

Συνεχίζοντας το project μας για την κατασκευή ενός Smart Home το οποίο θα ελέγχουμε απ' το Android, θα δούμε την χρήση ενός ακόμα αισθητήρα, και συγκεκριμένα ενός που μετράει το φως σε ένα δωμάτιο.

Το photoresistor που θα χρησιμοποιήσουμε μεταβάλλει την αντίστασή του αναλόγως της έντασης του φωτός, το οποίο θα εκμεταλλευτούμε στο project μας. (προηγούμενα βήματα: 1, 2, 3, 4, 5)

 

Τι νέο θα χρειαστούμε σε αυτό το βήμα

Ένα ή και περισσότερα Photoresistors. (Αγορά)

Ένα ή περισσότερα LED και τις αντίστοιχες αντιστάσεις (Αγορά)

  • hardware-arduino-led-photocell

 

Τι θέλουμε να καταφέρουμε

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

Σε πρώτη φάση στο κύκλωμα θα ενεργοποιούμε ένα Led, ενώ στην συνέχεια θα στέλνουμε trigger 5V σε ένα ac relay ώστε να ανάβει το φώτα σε ένα δωμάτιο.

Το κύκλωμά μας δηλαδή θα είναι ως εξής:

  • circuit-arduino-1
  • circuit-arduino-2

 

Ο κώδικας για το 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.

  • arduino-code-1
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

  • arduino-web-server-1

Ο κώδικας για την Android εφαρμογή είναι ο ίδιος που είχαμε δει και σε προηγούμενο μέρος, καθότι αλλάξαμε μόνο το "server-side" κομμάτι.

Οπότε μέσα σ αυτήν παίρνουμε την ένδειξη του φωτός, αλλά και την κατάσταση του led.

  • android-app-1
  • android-app-2

 

Κάντε Like το GreeceAndroid.gr στο Facebook!

Γίνετε μέλος της Ελληνική Κοινότητας του Android στο G+

aByte