Κατασκευή συστήματος ελέγχου ηλεκτρικών συσκευών μέσα από το διαδίκτυο (System manufacture for electrical appliance control via internet)



Σχετικά έγγραφα
Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

Γνωριμία με το Arduino

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα

Σχεδιασμός και υλοποίηση κυκλώματος μέτρησης κατανάλωσης ισχύος

Εφαρμογές Σειριακής Επικοινωνίας

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών

Προγραμματισμο ς σε Arduino

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

Ενσωµατωµένα Συστήµατα

Σχεδιασμός και υλοποίηση μια έξυπνης ενσωματωμένης κεντρικής μονάδας συναγερμού IP

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016)

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1. Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά

Ενσωματωμένα Συστήματα

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ

ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ

Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 3 Μέτρηση Θερμοκρασίας Σύστημα Ελέγχου Θερμοκρασίας. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Lab 1: Experimenting on Arduino & AI Sense

Εφαρμογές αναλογικών / Ψηφιακών

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation)

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW.

ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 4. Οδηγώντας έναν DC Κινητήρα. Το κύκλωμα της Λειτουργίας DC Κινητήρα

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

ΕΛΕΓΧΟΣ ΑΝΤΛΙΟΣΤΑΣΙΟΥ ΜΕ ΔΕΞΑΜΕΝΗ ΜΕΣΩ GSM CHECK IN TANK PUMPING THROUGH GSM

Arduino Teachers Workshop

Σχεδιασμός και Υλοποίηση οχήματος ελεγχόμενου μέσω Bluetooth

LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ

Η δυναμική του Arduino στο μάθημα της Τεχνολογίας. Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2

ΟΚΙΜΑΣΤΙΚΟ MS 48 NS Σύντοµες οδηγίες χρήσης

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ I. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

«ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ

Βασικά χαρακτηριστικά

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Εγχειρίδιο Χρήσης Μετατροπέα Τάσης / Φορτιστή Συσσωρευτών

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

ΑΣΚΗΣΗ 8 Tutorial by TeSLa Συνδεσμολογία κυκλώματος Διαδικασία Προγραμματισμού

Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED

XAMPP Apache MySQL PHP javascript xampp

Ασύρματος αυτοματισμός σε συρόμενη καγκελόπορτα που ελέγχεται από PLC.

Μάθημα 1 Πρώτα Βήματα στη Σχεδίαση μίας Εγκατάστασης: Απαιτούμενες Ηλεκτρικές Γραμμές και Υπολογισμοί

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

Το κύκλωμα σε breadboard

ΣΥΝΔΕΣΗ ΣΕ ΣΕΙΡΑ ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: 1 ΣΚΟΠΟΣ 1 2 ΘΕΩΡΗΤΙΚΟ ΥΠΟΒΑΘΡΟ 1 3 ΕΞΟΠΛΙΣΜΟΣ 7 4 ΕΞΑΡΤΗΜΑΤΑ 7

ΚΥΚΛΩΜΑΤΑ AC-DC. ΚΕΦΑΛΑΙΟ 1ο ΒΑΣΙΚΑ ΚΥΚΛΩΜΑΤΑ ΚΑΙ ΕΞΑΡΤΗΜΑΤΑ - ΑΠΛΑ ΓΡΑΜΜΙΚΑ ΚΥΚΛΩΜΑΤΑ

WiFi V-Timer ΕΚΔΟΣΗ 2Η

ΚΕΦΑΛΑΙΟ Α. ΗΛΕΚΤΡΟΝΟΜΟΙ ( ΡΕΛΕ ) ή ΤΗΛΕΧΕΙΡΙΖΟΜΕΝΟΙ ΔΙΑΚΟΠΤΕΣ ΓΕΝΙΚΑ

Κεφάλαιο 3. Λογικές Πύλες

Εγκατάσταση του Arduino IDE

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Φύλλο εργασίας 3 - Χριστουγεννιάτικα φωτάκια (σταδιακή αύξηση και μείωση φωτεινότητας ενός LED) Το κύκλωμα σε breadboard

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα

Ιατρικά Ηλεκτρονικά. Χρήσιμοι Σύνδεσμοι. ΙΑΤΡΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ - ΔΙΑΛΕΞΗ 2η. Σημειώσεις μαθήματος: E mail:

Διπλωματική Εργασία. Επιβλέπων καθηγητής: Δρ. Μηνάς Δασυγένης. Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών

για τις ρυθμίσεις LabView μέσα από το κανάλι και του καλωδίου USB.

ΟΔΗΓΙΕΣ ΧΡΗΣΕΩΣ Κ3-3 ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ ΠΡΟΣΒΑΣΗΣ

Κωνσταντίνος Γκαλονάκης. Arduino: Προγραμματισμός στην πράξη

MT-3102 Μίνι ψηφιακή αμπεροτσιμπίδα 3 1/2 2A

ΝΟΜΟΣ ΤΟΥ OHM ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: 1 ΣΚΟΠΟΣ 1 2 ΘΕΩΡΗΤΙΚΟ ΥΠΟΒΑΘΡΟ 1 3 ΕΞΟΠΛΙΣΜΟΣ 5 4 ΕΞΑΡΤΗΜΑΤΑ 5

Relay Module. Relay. Στο πλαίσιο αυτής της προσπάθειας λοιπόν, ένα relay module είναι σχεδόν σίγουρο πως θα μας χρειαστεί.

Profitstore.gr ΡΟΛΟΙ ΚΑΜΕΡΑ KJ402. Εισαγωγή: Περιγραφή Ψηφιακού Ρολογιού:

ΣΥΣΤΗΜΑ ΤΗΛΕΔΙΑΧΕΙΡΙΣΗΣ & ΤΗΛΕ-ΕΛΕΓΧΟΥ ΔΙΚΤΥΟΥ ΗΛΕΚΤΡΟΦΩΤΙΣΜΟΥ

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1. Προγραμματισμός Φυσικών Συστημάτων. Νέα Ψηφιακά Αντικείμενα

ΚΕΦΑΛΑΙΟ 2: Ηλεκτρικό Ρεύμα Μέρος 1 ο

Αυτόματος κλιμακοστασίου με τη χρήση PLC. 1 Θεωρητικό μέρος

Ηλεκτρικό ρεύμα ονομάζουμε την προσανατολισμένη κίνηση των ηλεκτρονίων ή γενικότερα των φορτισμένων σωματιδίων.

ΕΝΟΤΗΤΑ ΤΗΛΕΦΩΝΙΑ ΕΙΣΑΓΩΓΗ

ARDUINO ΟΔΗΓΟΣ ΓΙΑ ΑΡΧΑΡΙΟΥΣ

8. ιακοπτική Λειτουργία Τρανζίστορ- Ι.Σ. Χαλκιάδης διαφάνεια 1. ιακοπτική λειτουργία: περιοχή κόρου: ON ΤΕΙ - ΧΑΛΚΙ ΑΣ. περιοχή αποκοπής: OFF

Ενσωματωμένα Συστήματα

EOS FP Σύστημα ελέγχου πρόσβασης με δακτυλικό αποτύπωμα. Οδηγίες Λειτουργίας

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

-I/O-SYSTEM 750 BMS ΕΛΕΓΧΟΣ ΚΤΙΡΙΑΚΩΝ ΕΓΚΑΤΑΣΤΑΣΕΩΝ ΚΑΙ ΚΛΙΜΑΤΙΣΜΟΥ

Stagnoli ACNSEM3L - Ηλεκτρονικός πίνακας ελέγχου για φωτεινούς σηματοδότες

Σημειώσεις : Χρήστος Μουρατίδης. Κάντε κλικ για έναρξη

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

[Πληκτρολογήστε τον τίτλο του 2013 εγγράφου]

Εγχειρίδιο Χρήσης. GSC-SJ1 Ηλιακή Φαροσειρήνα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ ΕΣΠΕΡΙΝΩΝ

Παράρτημα. Πραγματοποίηση μέτρησης τάσης, ρεύματος, ωμικής αντίστασης με χρήση του εργαστηριακού εξοπλισμού Άσκηση εξοικείωσης

Transcript:

Τμήμα Ηλεκτρολόγων Μηχανικών του ΤΕΙ Ανατολικής Μακεδονίας και Θράκης Κατασκευή συστήματος ελέγχου ηλεκτρικών συσκευών μέσα από το διαδίκτυο (System manufacture for electrical appliance control via internet) Επιμέλεια: Καρακολίδου Ελένη, ΑΕΜ: 4548 Επιβλέπων καθηγητής: Δρ. Μαγκαφάς Λυκούργος Πτυχιακή εργασία που υποβάλλεται στο πλαίσιο της μερικής εκπλήρωσης των απαιτήσεων για την απόκτηση του Πτυχίου στην Ηλεκτρολογία. Καβάλα, 2013-2014 Σελίδα 1

Ε Υ Χ Α Ρ Ι Σ Τ Ι Ε Σ Θα ήθελα να εκφράσω τις ευχαριστίες μου στον Δρ. Μαγκαφά Λυκούργο για την δυνατότητα που μου έδωσε να πραγματοποιήσω την πτυχιακή μου εργασία, για την καθοδήγηση και την υποστήριξη του καθ όλη την διάρκεια διεκπεραίωσης της παρούσας πτυχιακής. Σελίδα 2

Περιεχόμενα Περίληψη 6 Abstract 6 Κεφ. 1. Εισαγωγή 7 Κεφ. 2. Arduino 9 2.1 Μοντέλα Arduino 10 2.2 Χαρακτηριστικά του Arduino uno 15 Κεφ. 3. Σχεδίαση της κατασκευής του συστήματος ελέγχου ηλεκτρικών συσκευών 21 3.1 Ηλεκτρονόμοι 21 3.2 Απαιτήσεις ηλεκτρικών συσκευών 24 3.3 Συνδεσμολογία ηλεκτρικών συσκευών με το σύστημα ελέγχου 25 Κεφ. 4. Παρουσίαση εναλλακτικών προτάσεων κατασκευής του συστήματος ελέγχου ηλεκτρικών συσκευών 30 4.1 Σύστημα ελέγχου ηλεκτρικών συσκευών με εσωτερική συνδεσμολογία του relay με τις ηλεκτρικές συσκευές 30 4.2 Σύστημα ελέγχου ηλεκτρικών συσκευών με συνδεσμολογία του relay με ένα πολύμπριζο 32 4.3 Σύστημα ελέγχου φωτιστικού με συνδεσμολογία του relay εσωτερικά στο διακόπτη 33 Κεφ. 5. Υλοποίηση- πρώτος τρόπος λειτουργίας του συστήματος ελέγχου ηλεκτρικών συσκευών μέσα από το διαδίκτυο 36 5.1 Εργαλεία και γλώσσες προγραμματισμού 36 5.1.1 Arduino IDE 36 5.1.2 Γλώσσες προγραμματισμού 42 5.2 Αρχιτεκτονική 43 5.3 Κώδικας 49 5.3.1 Βάση δεδομένων 49 5.3.2 Χρήση του συστήματος από διαφορετικές οικίες 50 5.3.3 Κώδικας ελέγχου της εισόδου στην εφαρμογή 50 5.3.4 Κώδικας της εφαρμογής 51 5.3.5 Κώδικας arduino 58 Σελίδα 3

5.3.6 Κώδικας Java στο εργαλείο Processing 2 58 Κεφ. 6. Δεύτερος τρόπος λειτουργίας του arduino 60 Κεφ. 7. Παρουσίαση της εφαρμογής 62 Κεφ. 8. Ασφάλεια της εφαρμογής 64 8.1 Συναρτήσεις κατακερματισμού 64 8.2 Ασφάλεια συνόδου 66 8.3 Μέτρα ασφάλειας από sql injection επιθέσεις 67 Κεφ. 9. Δυνατότητα επέκτασης 69 Κεφ. 10. Συμπεράσματα 70 Βιβλιογραφία 71 Παράρτημα Α - Κώδικας από το αρχείο login.html 75 Παράρτημα Β - Κώδικας από το αρχείο clogin.php 77 Παράρτημα Γ - Κώδικας από το αρχείο tryagain.html 79 Παράρτημα Δ - Κώδικας από το αρχείο logout.html 81 Παράρτημα Ε - Κώδικας από το αρχείο index.php 83 Παράρτημα ΣΤ - Κώδικας από το αρχείο control.php 85 Παράρτημα Ζ - Κώδικας από το αρχείο AAAA.php 90 Παράρτημα H - Κώδικας από το αρχείο Arduino 93 Παράρτημα Θ - Κώδικας Java στο εργαλείο Processing 2 94 Παράρτημα Ι - Κώδικας Arduino 2 95 Περιεχόμενα εικόνων Σχήμα 2.1: Μοντέλα Arduino.... 14 Σχήμα 2.2: ATmega328.... 15 Σχήμα 2.3: Συστατικά μέρη του Arduino uno.... 16 Σχήμα 2.4: Ανάλυση ακροδεκτών Arduino uno.... 17 Σχήμα 2.5: Arduino uno.... 17 Σχήμα 3.1: Relay..... 21 Σχήμα 3.2: Δίοδος..... 23 Σχήμα 3.3: Πόλωση διόδου.... 23 Σχήμα 3.4: To relay του arduino..... 24 Σχήμα 3.5: Καλώδιο PVC 3 x 2.5 mm 2... 25 Σχήμα 3.6: Συνδεσμολογία Relay..... 27 Σχήμα 3.7: Σύνδεση του router με την Ethernet shield..... 27 Σχήμα 3.8: Πλαστικό στεγανό κουτί.... 28 Σχήμα 3.9: Συνδεσμολογία συστήματος ελέγχου ηλεκτρικών συσκευών 28 Σελίδα 4

Σχήμα 3.10: Συνδεσμολογία συστήματος ελέγχου ηλεκτρικών συσκευών.... 29 Σχήμα 4.1: Σύνδεση φωτιστικού..... 30 Σχήμα 4.2: Σύνδεση φωτιστικού με το relay..... 31 Σχήμα 4.3: Συνδεσμολογία φωτιστικού γραφείου με το relay..... 31 Σχήμα 4.4: Σύνδεση φωτιστικού με το relay1..... 32 Σχήμα 4.4: Σύνδεση πολύπριζου με relay.... 33 Σχήμα 4.5: Συνδεσμολογία λάμπας με διακόπτη..... 34 Σχήμα 4.6: Διακόπτης..... 34 Σχήμα 4.7: Συνδεσμολογία relay..... 35 Σχήμα 5.1: Arduino IDE.... 37 Σχήμα 5.2: Έτοιμα παραδείγματα κώδικα στο Arduino..... 37 Σχήμα 5.3: Ρύθμιση της θύρας επικοινωνίας με το arduino στην διαχείριση συσκευών στα windows..... 41 Σχήμα 5.4: Ρύθμιση της σειριακής θύρας στο Arduino Uno..... 41 Σχήμα 5.5:Αρχιτεκτονικής συστήματος..... 46 Σχήμα 5.6: Διάγραμμα ροής για την σύνδεση του arduino με το διαδίκτυο... 47 Σχήμα 5.7: Αλληλεπίδραση του συστήματος..... 48 Σχήμα 5.8: Βάση δεδομένων loghome..... 49 Σχήμα 5.9: Αρχιτεκτονική λειτουργίας αρχείων ελέγχου εισόδου και εξόδου. 51 Σχήμα 5.10: Σύνδεση της διαχείρισης των ιστοσελίδων..... 53 Σχήμα 7.1: Εικόνες εισόδου/ εξόδου..... 62 Σχήμα 7.2: Εικόνα της διαχείρισης των ηλεκτρικών συσκευών..... 63 Σχήμα 8.1: Εμφάνιση των hash κωδικών στη βάση δεδομένων..... 66 Περιεχόμενα πινάκων Πίνακας I: Χαρακτηριστικά των μοντέλων του Arduino.... 10 Πίνακας II: Χαρακτηριστικά των μοντέλων του Arduino.... 12 Πίνακας III: Χαρακτηριστικά Arduino uno.... 18 Πίνακας IV: Συναρτήσεις Arduino IDE... 38 Πίνακας V: Δυνατότητες των server... 44 Πίνακας VI: Οι συνδυασμοί των on/off... 52 Πίνακας VII : Παράμετροι διαχείρισης του αρχείου κειμένου στην γλώσσα php.... 54 Σελίδα 5

Περίληψη Στην πτυχιακή αυτή διερευνώνται οι δυνατότητες της πλατφόρμας arduino στον τομέα της διαχείρισης συσκευών μέσω του διαδικτύου. Το προτεινόμενο σύστημα αποτελείται από δύο κύρια μέρη: το πρώτο μέρος είναι o web server, ο οποίος παρουσιάζει το κεντρικό σύστημα που διαχειρίζεται, ελέγχει και παρακολουθεί το σπίτι των χρηστών και το δεύτερο μέρος είναι η μονάδα διασύνδεσης υλικού, η οποία παρέχει κατάλληλες διεπαφές και ενεργοποιητή για το σύστημα αυτοματισμού του σπιτιού. Για τη διασφάλιση των ηλεκτρικών συσκευών, μελετήθηκαν μέθοδοι διασφάλισης της επικοινωνίας του arduino με την ιστοσελίδα διαχείρισης των συσκευών. Ειδικότερα, χρησιμοποιήθηκαν μέθοδοι κρυπτογραφίας, ελέγχου εισόδου πρόσβασης, καθώς και συναρτήσεις αποφυγής επιθέσεων των βάσεων δεδομένων, όπως της sql injection. Τέλος, στην εργασία αυτή παρουσιάζεται το πρωτότυπο του συστήματος ελέγχου ηλεκτρικών συσκευών μέσα από το διαδίκτυο βασισμένο στην πλατφόρμα arduino και η ιστοσελίδα απομακρυσμένης διαχείρισης τους. Abstract In this project we investigate the capabilities of the arduino platform in the field of controlling household electric appliances over the Internet. The proposed system consists of two main components: the first part is the web server, which presents system core that manages, controls, and monitors users home and the second part is hardware interface module, which provides appropriate interface and actuators of home automation system. For the safety of home appliance, I studied methods of ensuring communication with the arduino site management of electronic devices. Especially, it used methods of cryptography, access control and functions to avoid data base attacks, such as sql injection. Finally, in this paper is presented the prototype of remotely control home appliances through the Internet based on the arduino platform and remote site management. Σελίδα 6

Κεφ. 1. Εισαγωγή Η νέα γενιά ηλεκτρονικών συστημάτων υλοποιείται με δυνατότητες διασύνδεσης στο διαδίκτυο. Αυτό οδήγησε και στην ανάγκη για αύξηση του αριθμού των ip διευθύνσεων και την χρήση του ipv6. Η ανάγκη του ελέγχου των ηλεκτρονικών συσκευών μέσω του διαδικτύου δημιουργήθηκε από την αυξανόμενη τάση χρήσης του διαδικτύου και των κινητών, καθώς και την υλοποίηση πλήθους συναλλαγών και υπηρεσιών μέσω του διαδικτύου. Σε πολλές περιπτώσεις η σύνδεση της ηλεκτρικής συσκευής στο διαδίκτυο προσδίδει νέα χαρακτηριστικά που απουσίαζαν από την συσκευή π.χ. έξυπνο ψυγείο κ.α. Η τάση της διασύνδεσης των συσκευών αναφέρεται συχνά με τον όρο αντικείμενα του διαδικτύου κατά τον οποίο κάθε συσκευή έχει μια μοναδική ταυτότητα και μπορεί να ελεγχθεί ή να ερωτηθεί για την κατάστασή της μέσω του διαδικτύου. Ο απομακρυσμένος έλεγχος μέσω διαδικτύου μπορεί να υλοποιηθεί σε όλες τις συσκευές. Ανάλογα με την διαχείριση της συσκευής αλλάζουν οι απαιτήσεις καθώς και το κόστος της υλοποίησης και της εγκατάστασης. Στην διαχείριση των συσκευών οικιακής χρήσης τα δεδομένα είναι διαχειρίσιμα καθώς χρησιμοποιούν μηχανές με λιγότερες απαιτήσεις ελέγχου από ότι σε μια βιομηχανική εγκατάσταση. Οι εμπορικές λύσεις παρουσιάζουν μειονεκτήματα: στο επίπεδο της ασφάλειας, τους κόστους και της συμβατότητας με όλες τις πλατφόρμες. Στην παρούσα πτυχιακή εργασία, θα αντιμετωπίσουμε αυτό το πρόβλημα δημιουργώντας μια συσκευή που με μικρό κόστος θα ελέγχει τις ηλεκτρονικές οικιακές συσκευές με γραφικό περιβάλλον διαχείρισης και θα έχει συμβατότητα με όλες τις πλατφόρμες. Η συσκευή αυτή θα χρησιμοποιήσει το Arduino, το οποίο συνδέεται με την κάρτα επέκτασης «ethernet», μέσα σε ειδικά προστατευμένη συσκευασία. Το arduino χρησιμοποιήθηκε για να στέλνει περιοδικά τις μετρήσεις σε ένα κεντρικό εξυπηρετητή. Ο εξυπηρετητής φέρει ένα ειδικά σχεδιασμένο ιστοχώρο στη δημοφιλή γλώσσα προγραμματισμού διαδικτυακών εφαρμογών PHP με βάση δεδομένων σε mysql και συγκεντρώνει τα δεδομένα. Εκτός από τη συγκέντρωση των δεδομένων υπάρχει ο έλεγχος εισόδου του χρήστη και οι συναρτήσεις που προσφέρουν ασφάλεια για την διατήρηση της ασφάλειας της Σελίδα 7

επικοινωνίας και του ελέγχου των συσκευών. Η ιστοσελίδα σχεδιάστηκε για χρήση οικιακής διαχείρισης συσκευών. Οι συσκευές που διαχειρίζεται είναι η τηλεόραση, η καφετιέρα, ο θερμοσίφωνας και η λάμπα. Η διαχείριση συσκευών με παρόμοιες απαιτήσεις είναι εφικτή χωρίς την ανάγκη τροποποιήσεων. Ο ιστοχώρος σχεδιάστηκε σύμφωνα με τα πιο πρόσφατα πρότυπα ανάπτυξης εφαρμογών διαδικτύου (HTML, CSS, PHP, JavaScript (βιβλιοθήκη Jquery), mysql), και ελέγχθηκε με επιτυχία με τεστ ασφάλειας. Η πτυχιακή εργασία χωρίζεται σε δέκα κεφάλαια. Στην πρώτη ενότητα γίνεται μια συνοπτική ανάλυση της εργασίας και δίνονται οι στόχοι. Στη δεύτερη ενότητα παρουσιάζονται τα μοντέλα του arduino και τα χαρακτηριστικά του arduino uno. Στη συνέχεια στη τρίτη ενότητα δίνεται η σχεδίαση της κατασκευής του συστήματος ελέγχου των ηλεκτρικών συσκευών, ενώ στην τέταρτη ενότητα παρουσιάζονται εναλλακτικές προτάσεις κατασκευής του συστήματος ελέγχου ηλεκτρικών συσκευών. Στην πέμπτη ενότητα αναλύεται ο πρώτος τρόπος υλοποίησης της εφαρμογής με τη χρήση υπολογιστή και arduino, ο κώδικας και η αρχιτεκτονική του συστήματος και στην έκτη ενότητα παρουσιάζεται ο δεύτερος τρόπος, ο οποίο δίνει ανεξαρτησία στο arduino από τον υπολογιστή και θεωρείται καταλληλότερος για την διαχείριση των οικιακών συσκευών. Έπειτα, παρουσιάζεται η εφαρμογή στο έβδομο κεφάλαιο και η ασφάλεια της εφαρμογής στο επόμενο κεφάλαιο. Στο όγδοο κεφάλαιο παρουσιάζονται οι δυνατότητες επέκτασης της εφαρμογής και στο τελευταίο τα συμπεράσματα. Σελίδα 8

Κεφ. 2. Arduino Το arduino δημιουργήθηκε το 2005, για την εκμάθηση ηλεκτρονικών μέσα από μια συσκευή για τον έλεγχο προγραμμάτων διαδραστικών σχεδίων από μαθητές, με χαμηλό κόστος. Το όνομα του το πήρε από τους ιδρυτές του: τον Massimo Banzi και τον David Cueartielles, οι οποίοι ονόμασαν την πλατφόρμα από τον Arduin της Ivrea (η Ιβρέα είναι κωμόπολη της επαρχίας του Τορίνο στην βορειοδυτική Ιταλία). «Το σχέδιο Arduino είναι μία διακλάδωση της πλατφόρμας Wiring για λογισμικό ανοικτού κώδικα και προγραμματίζεται χρησιμοποιώντας μια γλώσσα βασισμένη στο Wiring, παρόμοια με την C++/C (με απλοποιήσεις και αλλαγές), καθώς και ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE)». Η πλατφόρμα Arduino είναι ένα ανοικτού υλικού και ανοικτού κώδικα σύστημα ανάπτυξης ηλεκτρονικών πρωτοτύπων, βασισμένο σε ευέλικτο και εύκολο στη χρήση υλικό και λογισμικό. Συγκεκριμένα, είναι μια υπολογιστική πλατφόρμα βασισμένη σε μια απλή μητρική πλακέτα με ενσωματωμένο μικροελεγκτή και εισόδους/ εξόδους. Μικροελεγκτής είναι ένα προγραμματιζόμενο ολοκληρωμένο κύκλωμα το οποίο διαθέτει επεξεργαστή, μνήμη, διάφορα περιφερειακά κυκλώματα καθώς επίσης και θύρες εισόδου/ εξόδου για επικοινωνία με εξωτερικές συσκευές [1, 2, 3]. Σελίδα 9

2.1 Μοντέλα Arduino Η πλακέτα arduino ανάλογα το μοντέλο, διαφοροποιείται στους αναλογικούς και ψηφιακούς ακροδέκτες, στον μικροελεγκτή, στην τάση λειτουργίας, στις μνήμες και στην ταχύτητα του ρολογιού. Στη συνέχεια παραθέτονται δύο πίνακες με την σύγκριση των πλακετών. Η αυθεντική πλακέτα Arduino κατασκευάζεται κυρίως από την Ιταλική εταιρία Smart Projects, ενώ μερικές από τις πλακέτες έχουν σχεδιαστεί από την Αμερικάνικη εταιρία SparkFun Electronics [4-20]. Πίνακας I: Χαρακτηριστικά των μοντέλων του Arduino. Μοντέλα/ πλακέτες arduino Μοντέλα Arduino uno Arduino Leonardo Arduino Due Arduino Yún Arduino Micro Arduino Robot Arduino Esplora Arduino ADK Arduino Ethernet Arduino Mega 2560 Μικροελεγκτής Τάση Λειτουργίας ATmega3 ATmega32 AT91SAM ATmega32 ATmega32 ATmega32 ATmega3 28 u4 3X8E u4 u4 u4 2u4 ATmega2 ATmega32 ATmega2 560 8 560 5V 5V 3.3 V 5V 5V 5V 5V 5V 5V 5V Τάση Εισόδου 7-12V 7-12V 7-12V 5V 7-12V 5V 7-12V 7-12V 7-12V Όρια Τάσης 6-20V 6-20V 6-16V - 6-20V - 6-20V 6-20V 6-20V 14 (από 54 (από 54 (από 14 (από τα 54 (από Ψηφιακοί τα οποία τα οποία τα οποία οποία 4 τα οποία ακροδέκτες 20 20 20 5 6 12 12 παρέχουν 15 εισόδου/ εξόδου παρέχουν παρέχουν παρέχουν έξοδο παρέχουν Σελίδα 10

έξοδο PWM ) έξοδο PWM ) έξοδο PWM ) PWM ) έξοδο PWM ) Κανάλια PWM 6 7 12 7 7 6 12 4 15 12 και 2 Αναλογικοί (DAC) ακροδέκτες 6 12 ακροδέκτε εισόδου ς εξόδου 12 12 4 16 6 16 DC ρεύμα ανά είσοδο/ έξοδο 40 ma 40 ma 130mA 40 ma 40 ma 40 ma - 40 ma 40 ma 40 ma Ακροδέκτη DC ρεύμα για 3.3V Ακροδέκτη 50 ma 50 ma 800mA 50 ma 50 ma - - 50 ma 50 ma 50 ma Μνήμη Flash 32 KB 32 KB 512KB 32 KB 32 KB 32 KB 32 KB 256KB 32 KB 256KB SRAM 1 KB 2.5 KB 96KB (64KB και 2.5 KB 2.5 KB 2.5 KB 2.5 KB 8KB 2KB 8KB 32KB) EEPROM 1 ΚΒ 1 ΚΒ - 1 ΚΒ 1 ΚΒ 1 ΚΒ 1 ΚΒ 4KB 1KB 4KB Ταχύτητα Ρολογιού 16 MHz 16 MHz 84MHz 16 MHz 16 MHz 16 MHz 16 MHz 16MHz 16MHz 16MHz Σελίδα 11

Πίνακας II: Χαρακτηριστικά των μοντέλων του Arduino. Μοντέλα/ πλακέτες arduino Μοντέλα Arduino Mini LilyPad Arduino USB LilyPad Arduino Simple και LilyPad Arduino SimpleSnap LilyPad Arduino Arduino Nano Arduino Pro Mini Arduino Pro Arduino Fio Μικροελεγκτής ATmega168 Atmel Atmel ATmega32 V or ATmega168 ATmega1 ATmega ATmega32u4 ATmega328 ATmega168 or 8 ATmega328 or 68 328P ATmega328 V ATmega328 Τάση Λειτουργίας 5V 3.3V 2.7-5.5 V 2.7-5.5 V 5V 3.3V ή 5V 3.3V ή 5V 3.3V 3.35-12 V (3.3V 3.35-12 V Τάση Εισόδου 7-9V 3.8-5V 2.7-5.5 V 2.7-5.5 V 7-12V μοντέλο) (3.3V μοντέλο) 3.35-12 ή 5-12 V ή 5-12 V (5V V (5V μοντέλο) μοντέλο) Όρια Τάσης - - - - 6-20V - 3.7-7 V 14 (από τα 14 (από τα 14 (από τα 14 (από 14 (από τα 14 (από 9 (από τα οποία Ψηφιακοί ακροδέκτες οποία 6 οποία 6 οποία 6 τα οποία οποία 6 τα οποία 9 5 παρέχουν εισόδου/ εξόδου παρέχουν παρέχουν παρέχουν 6 παρέχουν 6 έξοδο PWM ) έξοδο έξοδο PWM ) έξοδο PWM ) παρέχουν έξοδο PWM ) παρέχο Σελίδα 12

PWM) έξοδο PWM ) υν έξοδο PWM ) Κανάλια PWM 6 4 5 6 6 6 6 6 Αναλογικοί ακροδέκτες εισόδου 8 4 4 6 8 8 6 8 DC ρεύμα ανά είσοδο/ έξοδο Ακροδέκτη 40 ma 40 ma 40 ma 40 ma 40 ma 40 ma 40 ma 40 ma Μνήμη Flash 32 KB 32 KB 32 KB 16 KB 16 KB 16 KB 16 KB 32 KB SRAM 2 KB 2.5 KB 2 KB 1 ΚΒ 1 ΚΒ 1 ΚΒ 1 ΚΒ 2 ΚΒ EEPROM 1 ΚΒ 1 ΚΒ 1 ΚΒ 512 bytes 512 bytes 512 bytes 512 bytes 1 ΚΒ Ταχύτητα Ρολογιού 16 MHz 8 MHz 8 MHz 8 MHz 16 MHz 8MHz ή 8MHz ή 16 MHz 16 MHz 8MHz Σελίδα 13

Σχήμα 2.1: Μοντέλα Arduino [21]. Σελίδα 14

2.2 Χαρακτηριστικά του Arduino uno Στην εργασία χρησιμοποιήθηκε το μοντέλο arduino uno. Το μοντέλο αυτό έχει κάποια συγκεκριμένα χαρακτηριστικά που κρίνεται σκόπιμο να αναλυθούν για να παρουσιαστούν οι δυνατότητες του arduino. Το arduino uno βασίζεται στην τεχνολογία ATmega328, διαθέτει 14 ψηφιακούς ακροδέκτες εισόδου/ εξόδου (εκ των οποίων 6 μπορεί να χρησιμοποιηθούν ως PWM εξόδους), 6 αναλογικές εισόδους, μια σύνδεση USB, υποδοχή τροφοδοσίας και ένα κουμπί επαναφοράς. Σχήμα 2.2: ATmega328 [22]. Η usb θύρα χρησιμοποιείται για τη σύνδεση του υπολογιστή με το arduino και τον προγραμματισμό του. Ο έλεγχος των εισόδων/ εξόδων γίνεται μέσω των εντολών συναρτήσεων της γλώσσας που υποστηρίζει το arduino όπως: pinmode(), digitalwrite() και digitalread(). Λειτουργεί στα 5V με δυνατότητα διαχείρισης 40mA σε κάθε είσοδο/ έξοδο ακροδέκτη. Κάθε ακροδέκτης διαθέτει εσωτερικό αντιστάτη Pull-up με τιμή αντίστασης 20-50KΩ. Αξίζει να αναφερθούν οι ακροδέκτες σειριακής λειτουργίας: ο 0 (RX) και ο 1 (TX), οι οποίοι χρησιμοποιούνται για τη λήψη (RX-receive) και εκπομπή (TX-transmit) σειριακών δεδομένων. Ακόμα, οι διακόπτες 2 και 3 έχουν την λειτουργία των εξωτερικών διακοπών. Οι ακροδέκτες αυτοί χρησιμοποιούνται Σελίδα 15

για την ενεργοποίηση διακοπών αν ανιχνευθεί παλμός χαμηλής τάσης. Η ενεργοποίηση των διακοπών πραγματοποιείται με την εφαρμογή της συνάρτησης attachinterrupt(). Η ενεργοποίηση των διακοπών μπορεί να γίνεται στο λογικό 0,1. Οι ακροδέκτες 10-SS, 11-MOSI, 12-MISO, 13-SCK δίνουν δυνατότητα για επικοινωνία SPI, η οποία αν και παρέχεται από το υλικό δεν είναι ακόμα διαθέσιμη στην γλώσσα προγραμματισμού του Arduino. Στον ακροδέκτη 13, υπάρχει ένα ενσωματωμένο LED, το οποίο ανάβει για την τιμή high και σβήνει για την τιμή low. Σχήμα 2.3: Συστατικά μέρη του Arduino uno [23]. Οι αναλογικοί ακροδέκτες έχουν την δυνατότητα να διαβάσουν μια αναλογική τιμή και να την μετατρέψουν σε ένα αριθμό από 0-1023. Αξίζει να σημειωθεί ότι 6 από τους 14 ψηφιακούς ακροδέκτες οι: P3, P5, P6, P9, P10 και P11 έχουν την δυνατότητα να προγραμματιστούν ώστε να λειτουργούν ως αναλογικές έξοδοι. Στην εικόνα που ακολουθεί βλέπουμε τους ακροδέκτες του arduino uno. Αξίζει να σημειωθεί ότι με 0V αναπαριστά το GND, δηλαδή την γείωση. Σελίδα 16

Σχήμα 2.4: Ανάλυση ακροδεκτών Arduino uno [24]. Σχήμα 2.5: Arduino uno [25]. Η σειριακή θύρα χρησιμοποιείται για την επικοινωνία του Arduino με άλλες συσκευές. Η επικοινωνία γίνεται με τους ψηφιακούς ακροδέκτες RX και TX και με τον υπολογιστή μέσω του USB. Όμως αν χρησιμοποιηθεί το USB, δεν μπορούν ταυτόχρονα να χρησιμοποιηθούν οι ακροδέκτες 0 και 1 για ψηφιακή είσοδο ή έξοδο. Αξίζει να τονιστεί ότι ο μικροελεγκτής είναι προγραμματισμένος από την κατασκευή του με ένα bootloader (φορτωτής εκκίνησης), έτσι ώστε να μην χρειάζεται εξωτερικός προγραμματιστής. Η τροφοδοσία του μπορεί να γίνεται είτε από το καλώδιο του ρεύματος είτε από το καλώδιο usb με την σύνδεση του με ένα υπολογιστή. Το arduino uno είναι ένας μικροελεγκτής Atmega 328. Τα χαρακτηριστικά του δίνονται στον πίνακα που ακολουθεί. Σελίδα 17

Πίνακας III: Χαρακτηριστικά Arduino uno. Arduino uno Τάση Λειτουργίας 5V Τάση Εισόδου 7-12V Όρια Τάσης 6-20V Ψηφιακοί Ακροδέκτες 14 (από τα οποία 6 παρέχουν εισόδου/ εξόδου έξοδο PWM) Αναλογικοί Ακροδέκτες 6 Εισόδου/ εξόδου DC ρεύμα ανά είσοδο/ έξοδο 40 ma ακροδέκτη DC ρεύμα για 3.3V ακροδέκτη 50 ma Μνήμη Flash 32 KB (ATmega328) SRAM 1 KB (ATmega328) EEPROM 1 ΚΒ (ATmega328) Ταχύτητα Ρολογιού 16 MHz Έχει συμβατότητα με τα λειτουργικά συστήματα linux, windows και android. Ακόμα μπορεί να επικοινωνεί με ένα άλλο Arduino ή άλλους μικροελεγκτές. Η επικοινωνία του μπορεί να γίνει και ασύρματα με διάφορες μεθόδους όπως με Bluetooth, wifi κ.α. Το ATmega328 παρέχει 32ΚB μνήμης flash για την αποθήκευση κώδικα μείον 0.5 KB τα οποία χρησιμοποιούνται από τον bootloader. Ακόμα, διαθέτει 2 KB SRAM και 1 ΚΒ μνήμες EEPROM. Στην μνήμη Flash είναι αποθηκευμένο το πρόγραμμα που καλείται να εκτελεστεί και με τον φορτωτή εκκίνησης. Η μνήμη SRAM (στατική μνήμη τυχαίας προσπέλασης) αποθηκεύει προσωρινά τα στατικά και μεταβλητά δεδομένα του προγράμματος που εκτελείται. Η μνήμη ΕEPROM κρατάει αποθηκευμένες τις τιμές των μεταβλητών όταν η πλατφόρμα σβήσει. Χρησιμοποιείται για την αποθήκευση ρυθμίσεων και άλλων παραμέτρων, όπως: το Reset του Arduino. Οι μνήμες flash και EEPROM κρατούν τα δεδομένα που είναι αποθηκευμένα σε αυτές και μετά την απενεργοποίηση του ρεύματος, ενώ στην μνήμη SRAM οι πληροφορίες χάνονται όταν διακοπεί η παροχή του ρεύματος [4, 27, 28]. Το Arduino uno τροφοδοτείται είτε από εξωτερική τροφοδοσία είτε από την θύρα USB. Η αναγνώριση της τροφοδοσίας γίνεται στο μοντέλο αυτό Σελίδα 18

αυτόματα από το arduino. Ως εξωτερική τροφοδοσία μπορεί να χρησιμοποιηθεί μια μπαταρία, είτε ένας μετασχηματιστής. Η μπαταρία συνδέεται στις υποδοχές του Arduino Vin και στη GND (γείωση) όπου τοποθετούνται ο θετικός και ο αρνητικός πόλος αντίστοιχα. Οι ακροδέκτες τροφοδοσίας είναι οι εξής: Ακροδέκτης VIN: Ακροδέκτης για μη σταθεροποιημένη τάση που συνήθως συνδέεται με μια εξωτερική πηγή τροφοδοσίας. Ακροδέκτης 5V: Ακροδέκτης σταθεροποιημένης τάσης 5Volt. Χρησιμοποιείται για την τροφοδοσία του μικροελεγκτή ή άλλων ηλεκτρονικών στοιχείων. Ακροδέκτης 3V3. Το ολοκληρωμένο FTDI που βρίσκεται στην πλακέτα του Arduino παράγει τάση των 3.3V με μέγιστο ρεύμα 50mA. Ακροδέκτης GND ( Γείωσης). Ακόμα, μπορούν να επεκταθούν οι δυνατότητες του arduino uno αν συνδεθεί με shields. Τα shield είναι ολοκληρωμένες πλακέτες που είναι σχεδιασμένες ώστε να κουμπώνουν πάνω στο Arduino επεκτείνοντας την λειτουργικότητά του. Μερικά από τα πιο δημοφιλή shield για το Arduino είναι: Ethernet shield: Δίνει στο Arduino την δυνατότητα να συνδεθεί σε τοπικό δίκτυο ή στο διαδίκτυο μέσω ενός καλωδίου Ethernet. WiFi shield: Δίνει στο Arduino την δυνατότητα να συνδεθεί σε τοπικό δίκτυο ή στο διαδίκτυο μέσω του ασύρματου δικτύου. Shield οθόνης: Προσθέτουν οθόνη στο Arduino. Wave shield: Δίνει στο Arduino την δυνατότητα να παίζει ήχους/μουσική από κάρτες SD. GPS shield: Δίνει τη δυνατότητα στο arduino να παρέχει τον εντοπισμό της θέσης που βρίσκεται μέσω του Global Positioning System (GPS, παγκόσμιο σύστημα εντοπισμού θέσης). Motor Shields: Δίνει την δυνατότητα στο arduino να διαχειριστεί κινητήρες ( DC, servo κ.λπ.). ProtoShield: Μια προσχεδιασμένη πλακέτα πρωτοτυποποίησης, συμβατή στις διαστάσεις του Arduino και χωρίς εξαρτήματα για να κατασκευάζει ο χρήστης το δικό του shield. Σελίδα 19

Ακόμα, το arduino έχει συμβατότητα με πολλούς αισθητήρες κίνησης, θερμοκρασίας, υγρασίας, φωτός, καπνού, ήχου κ.α. Οι αισθητήρες αυτοί προγραμματίζονται και συνδέονται με το arduino δημιουργώντας ένα πλήρη και χρηστικό μικροελεγκτή για όλες τις εφαρμογές που μπορούμε να σκεφτούμε όπως: μετεωρολογία, αυτόματο πότισμα, συναγερμό, σύστημα παρακολούθησης, αυτοματισμούς σπιτιού, αντικλεπτικά συστήματα κ.α. [29, 30, 31]. Σελίδα 20

Κεφ. 3. Σχεδίαση της κατασκευής του συστήματος ελέγχου ηλεκτρικών συσκευών 3.1 Ηλεκτρονόμοι Οι ηλεκτρονόμοι είναι σημαντικό στοιχείο του αυτοματισμού. Για την εφαρμογή μας αποτελεί αναπόσπαστο κομμάτι του ελέγχου των ηλεκτρικών συσκευών καθώς ενεργοποιούμε το relay (ηλεκτρονόμο) από το arduino και διαχειριζόμαστε το σύστημα. Γενικότερα, οι ηλεκτρονόμοι δίνουν την δυνατότητα σύνδεσης και αποσύνδεσης μεγάλων φορτίων στα ελεγχόμενα κυκλώματα, με το χειρισμό βοηθητικών κυκλωμάτων ή κυκλωμάτων αυτοματισμού. Τα κυκλώματα αυτά μπορούν να λειτουργούν με τάση ανεξάρτητη της τάσεως λειτουργίας των ελεγχόμενων φορτίων. Λόγω αυτών των χαρακτηριστικών δίνεται η δυνατότητα να ελέγχουμε μεγάλα φορτία από απόσταση. Ο χειρισμός αυτός γίνεται με ασφάλεια καθώς μπορούμε να έχουμε χαμηλή τάση, ως τάση λειτουργίας του κυκλώματος αυτοματισμού. Σχήμα 3.1: Relay. 6 Η παραπάνω εικόνα παρουσιάζει πέντε συστατικά στοιχεία του relay. Στο σημείο 1, απεικονίζει το πηνίο, το οποίο αποτελεί το κεντρικό στοιχείο του ηλεκτρονόμου. 'Όταν το πηνίο βρεθεί υπό τάση, δημιουργεί γύρω του μαγνητικό πεδίο. H τάση λειτουργίας του πηνίου είναι ανεξάρτητη από την τάση λειτουργίας των ελεγχομένων φορτίων, δηλαδή του κυκλώματος ισχύος. Υπάρχουν ηλεκτρονόμοι με τάσεις όπως 380 V, 220 V, 110 V, 42 V, 24 V, 12 Σελίδα 21

V. Στο σημείο 2 απεικονίζεται ο μαγνήτης, ο οποίος λειτουργεί ως πυρήνας του ηλεκτρομαγνήτη, που δημιουργείται, όταν το πηνίο του ηλεκτρονόμου βρεθεί υπό τάση. Σκοπός αυτού του ηλεκτρομαγνήτη είναι να μετατρέπει την ηλεκτρική ενέργεια σε μηχανική, έλκοντας προς αυτόν τον οπλισμό του ηλεκτρονόμου. Στο τρίτο σημείο απεικονίζεται ο οπλισμός, ο οποίο έλκεται από τον ηλεκτρομαγνήτη και κινεί τις κινητές επαφές του ηλεκτρονόμου. Στο σημείο τέσσερα απεικονίζονται οι κινητές επαφές οι οποίες όταν φτάσουν τις σταθερές επαφές λόγω της κίνησης του οπλισμού θα κλείσουν το κύκλωμα και θα αποκαταστήσουν την αγώγιμη σύνδεση των επαφών. Τέλος, στο σημείο πέντε έχουμε τις σταθερές επαφές στις οποίες συνδέονται οι αγωγοί τροφοδοσίας των φορτίων. Η λειτουργία του ηλεκτρονόμου ξεκινά από το πηνίο που όταν βρεθεί υπό τάση, τότε δημιουργείται γύρω από αυτό μαγνητικό πεδίο. Ο μαγνήτης έλκει τον οπλισμό του ηλεκτρονόμου προς τον μαγνήτη. Αυτή η κίνηση του οπλισμού μεταφέρεται με κατάλληλη μηχανική σύνδεση στις κινητές επαφές του ηλεκτρονόμου, η κίνηση των οποίων έχει σαν αποτέλεσμα την αγώγιμη σύνδεση των σταθερών ή κύριων επαφών Α και Β μέσω των οποίων τροφοδοτείται το ελεγχόμενο φορτίο. Εκτός από τις κύριες επαφές στους ηλεκτρονόμους υπάρχουν και οι βοηθητικές επαφές. Οι κυριότερες βοηθητικές επαφές είναι η COM, η ΝO (κανονικά ανοικτή) και η NC (κανονικά κλειστή). Σε κατάσταση ηρεμίας οι επαφές αυτές έχουν την αρχική τους συνθήκη και μόλις ενεργοποιηθεί ο ηλεκτρονόμος αλλάζουν κατάσταση. Μόλις ο ηλεκτρονόμος απενεργοποιηθεί, οι βοηθητικές επαφές επανέρχονται στην αρχική τους κατάσταση. Αξίζει να σημειωθεί ότι οι βοηθητικές επαφές χρησιμοποιούνται κυρίως για κυκλώματα αυτοματισμού καθώς το ρεύμα που διέρχεται μέσω αυτών είναι σχετικά μικρό, σε αντίθεση από το ρεύμα των κύριων επαφών. Το relay του arduino παρουσιάζεται στην εικόνα που ακολουθεί. Από την μία πλευρά έχει τις τρεις επαφές COM, NO και NC και από την άλλη πλευρά τις επαφές σύνδεσης με το arduino. Οι επαφές σύνδεσης με το arduino είναι η γείωση, η τάση και ο ακροδέκτης του arduino. Στη συνδεσμολογία σημαντικό ρόλο έχει η δίοδος, καθώς προστατεύει το σύστημα. Η επαφή p n επιτρέπει τη διέλευση του ρεύματος μόνο κατά τη μια φορά και ονομάζεται δίοδος. Η δίοδος είναι ένας τύπος ημιαγωγού, Σελίδα 22

κατασκευάζεται κυρίως από πυρίτιο και γερμάνιο. Αποτελείται από δύο τμήματα, το P (positive, θετικό) στο οποίο οι φορείς είναι οι οπές και ένα τμήμα N (Negative, Αρνητικό) στο οποίο φορείς είναι τα ηλεκτρόνια. Το τμήμα P είναι η άνοδος και το τμήμα N η κάθοδος. Η δίοδος άγει όταν τα δύο τμήματα βρεθούν σε διαφορά δυναμικού. Η πολικότητα που εφαρμόζουμε στα άκρα της διόδου καθορίζει την συμπεριφορά της διόδου. Σχήμα 3.2: Δίοδος. 7 Σχήμα 3.3: Πόλωση διόδου. 8 Στην προσέγγιση μας η δίοδος τοποθετείται παράλληλα με το πηνίο του relay (δηλαδή η κάθοδος στο + και η άνοδος στο -) και ο ρόλος της είναι να απορροφά την τάση που δημιουργείται στο πηνίο του relay κατά την απενεργοποίηση του λόγω αυτεπαγωγής. Η δίοδος στο κύκλωμα του relay συνδέεται με το τρανζίστορ. Το τρανζίστορ είναι ένα στοιχείο το οποίο αποτελείται από τρία τμήματα: τον εκπομπό (E), την βάση (B) και τον συλλέκτη (C). Αν οι περιοχές του εκπομπού και του συλλέκτη είναι τύπου n και η βάση τύπου p, τότε το διπολικό τρανζίστορ ονομάζεται τύπου npn. Όταν οι περιοχές του εκπομπού και του συλλέκτη είναι τύπου p και η βάση τύπου n, τότε το τρανζίστορ χαρακτηρίζεται ως τύπου pnp. Η λειτουργία του τρανζίστορ μπορεί να είναι είτε ως ενισχυτή είτε ως διακόπτη. Στην προσέγγιση μας το τρανζίστορ που αποτελεί στοιχείο του relay αποτελείται από 3 επαφές Ν-Ρ-Ν γερμανίου ή πυριτίου. Οι επαφές του ονομάζονται Βάση (Β), Συλλέκτης (C) και Εκπομπός (Ε). Σελίδα 23

Σχήμα 3.4: To relay του arduino. 9 10 3.2 Απαιτήσεις ηλεκτρικών συσκευών Οι ηλεκτρικές συσκευές που θα ελέγχουμε είναι το φωτιστικό γραφείου/λάμπα, η τηλεόραση, η καφετιέρα και το θερμοσίφωνο. Για να υπάρχει δυνατότητα εναλλαγής του συστήματος και να μην δεσμεύεται ανάλογα με τη συσκευή επιλέξαμε εύκαμπτα καλώδια με μόνωση και μανδύα από PVC. Ανάλογα με τις απαιτήσεις των ηλεκτρικών συσκευών επιλέχτηκε το ανάλογο relay. Το φωτιστικό γραφείου που χρησιμοποιήσαμε έχει ισχύ λαμπτήρα 20W. Για αυτό το λόγο επιλέξαμε relay με ονομαστική ένταση λειτουργίας 10A και τάση λειτουργίας 250V για AC, ώστε να καλύπτει τις ανάγκες του φωτιστικού γραφείου αλλά παράλληλα να μπορεί να χρησιμοποιηθεί και για συσκευές με μεγαλύτερες ενεργειακές ανάγκες. Ακόμα, το Arduino uno παρέχει τάση 5V, οπότε είναι κατάλληλο το relay με 5VDC. Η καφετιέρα που ελέγχθηκε έχει ισχύ 1000W. Το relay (10A και τάση λειτουργίας 250V) καλύπτει τις ανάγκες της καφετιέρας αλλά παράλληλα να μπορεί να χρησιμοποιηθεί και για συσκευές με μεγαλύτερες ενεργειακές ανάγκες. Για τη τηλεόραση χρησιμοποιήθηκε το relay με ονομαστική ένταση λειτουργίας 10A και τάση λειτουργίας 250V για AC. Το relay είναι κατάλληλο για έλεγχο τηλεόρασης 40W. Σελίδα 24

Για τον θερμοσίφωνα χρησιμοποιήθηκε το relay με ονομαστική ένταση λειτουργίας 16A και τάση λειτουργίας 250V για AC. Το relay είναι κατάλληλο για έλεγχο θερμοσίφωνα 3000W. Για να υπολογίσουμε την ένταση λειτουργίας των ηλεκτρικών συσκευών χρησιμοποιήσαμε τον τύπο Ι=P/U*συνφ. Έστω, συνφ o συντελεστής ισχύος, P η ισχύ, I η ένταση και U η τάση. Το συνφ ισούται με τη μονάδα. Η τάση του δικτύου είναι 230 V, διότι αναφερόμαστε σε μονοφασικό δίκτυο. Η ένταση των ηλεκτρικών συσκευών που χρησιμοποιήθηκαν είναι: Καφετιέρα: I=4,37Α, διότι I=1000/230*1=4,37Α. Θερμοσίφωνας: I=13A, διότι I=3000/230*1=13A. Τηλεόραση: I=0,17A, διότι I=40/230*1=0,17A. Φωτιστικό γραφείου: I=0,08A, διότι I=20/230*1=0,08A. Για να έχουμε την δυνατότητα χρήσης του συστήματος για μελλοντικές υψηλότερες ενεργειακές ανάγκες επιλέξαμε το καλώδιο PVC 3X1,5mm 2 για τις δύο συσκευές και PVC 2X0,75mm 2 για το φωτιστικό γραφείου. Ωστόσο, στο θερμοσίφωνα δεν χρησιμοποιήσαμε επιπλέον καλώδιο, αλλά η σύνδεση με το arduino έγινε εσωτερικά του συστήματος. Σχήμα 3.5: Καλώδιο PVC 3 x 1.5 mm 2.11 3.3 Συνδεσμολογία ηλεκτρικών συσκευών με το σύστημα ελέγχου Για την εργασία χρησιμοποιήθηκαν το arduino uno, καλώδια, 4 Relay, ένα usb καλώδιο, ένας υπολογιστής (πρώτος τρόπος λειτουργίας του arduino) ή Ethernet Shield (δεύτερος τρόπος λειτουργίας του arduino) και τέσσερα καλώδια τροφοδοσίας. Το A/C Relay είναι μία συσκευή, η οποία ανοίγει ή κλείνει ένα A/C κύκλωμα, αναλόγως αν λαμβάνει (ή όχι) ένα (μικρότερο) DC σήμα. Για την κατασκευή του ελέγχου ηλεκτρικών συσκευών από το σπίτι, Σελίδα 25

χρησιμοποιήθηκαν τέσσερα Relay 5V DC, για να είναι συμβατά με την τάση που μπορεί να δεχτεί το Arduino. Η μία πλευρά του relay με τους ακροδέκτες συνδέεται με το Arduino, ενώ η άλλη συνδέεται με το καλώδιο τροφοδοσίας και στη συνέχεια με την αντίστοιχη ηλεκτρική συσκευή. Η σύνδεση με το καλώδιο γίνεται κόβοντας και συνδέοντας το καφέ καλώδιο για να παρεμβάλουμε το AC relay ανάμεσα στις κομμένες άκρες του καφέ καλωδίου. Στην πρώτη από τις τέσσερις υποδοχές του relay (NO) ενώνουμε το καφέ τμήμα του καλωδίου που μεταφέρει την τάση εισόδου, ενώ στην τέταρτη (COM) θα συνδέσουμε το καφέ καλώδιο που είναι πιο κοντά στην λάμπα. Η συνδεσμολογία του relay με το arduino γίνεται από την πλευρά με τους ακροδέκτες. Συνδέουμε τον ακροδέκτη γείωσης και τάσης με τα αντίστοιχα σημεία στο arduino. Στη συνέχεια συνδέουμε τον ακροδέκτη του relay (IN) με τον ψηφιακό ακροδέκτη του arduino για να ελέγχουμε την ψηφιακή έξοδο. Στην ουσία ελέγχεται η εντολή που δεχόμαστε από την ιστοσελίδα και αποδίδεται στην ψηφιακή έξοδο του arduino και στη συνέχεια στο relay που λειτουργεί ως διακόπτης. Για την εργασία επιλέχτηκε να χρησιμοποιήσουμε τέσσερα relay, όμως μπορεί να χρησιμοποιηθεί και κάθε relay σε δυάδα και δύο ξεχωριστά καθώς και ένα relay σε τριάδα και ένα ξεχωριστό με άλλες απαιτήσεις και αντοχές για την σύνδεση με τον θερμοσίφωνα. Λόγω της απόστασης Θα χρησιμοποιηθούν όσα arduino είναι αναγκαία για να επικοινωνούν με το σύστημα. Στην εικόνα που ακολουθεί παρουσιάζεται η συνδεσμολογία του κυκλώματος και μερικών εναλλακτικών προσεγγίσεων. Σελίδα 26

Σχήμα 3.6: Συνδεσμολογία Relay.12 Λόγω των διαφορετικών απαιτήσεων κάθε οικίας και διαρρύθμισης του χώρου της, υπάρχει η δυνατότητα για χρήση διαφορετικών relay και arduino για κάθε συσκευή. Στην περίπτωση της σύνδεση στο διαδίκτυο μέσω της Ethernet shield συνδέουμε την Ethernet shield του arduino μέσω Ethernet καλωδίου με το router. Αντί της Ethernet shield θα μπορούσαμε να χρησιμοποιήσουμε μια wifi shiled για περισσότερη αυτονομία. Υπάρχει ανάγκη για αυτονομία λόγω της απόστασης του router από τις ηλεκτρικές συσκευές. Σχήμα 3.7: Σύνδεση του router με την Ethernet shield. 13 Σελίδα 27

Για την προστασία του κυκλώματος χρησιμοποιήθηκαν πλαστικά στεγανά κουτιά, τα οποία παρουσιάζονται στην εικόνα που ακολουθεί. Σχήμα 3.8: Πλαστικό στεγανό κουτί. 14 Στην εικόνα που ακολουθεί βλέπουμε ένα κύκλωμα διαχείρισης ηλεκτρικής συσκευής. Το arduino με το usb καλώδιο συνδέεται με τον υπολογιστή για να αποκτήσει πρόσβαση στο διαδίκτυο, εναλλακτικά θα μπορούσαμε να συνδεθούμε μέσω της Ethernet shield. Στη συνέχεια, το relay συνδέεται με το arduino σε τρία σημεία στον ακροδέκτη από τον οποίο δίνει τα σήματα εξόδου στο relay (άνοιγμα/ κλείσιμο του κυκλώματος, μωβ χρώμα καλωδίου), στην γείωση (GND, πράσινο χρώμα καλωδίου) και στην τάση (5V, μαύρο χρώμα καλωδίου). Στην άλλη πλευρά του relay συνδέουμε το καλώδιο ρεύματος. Τις δύο άκρες του καφέ καλωδίου τις συνδέουμε στις εισδοχές NO και COM αντίστοιχα. Σχήμα 3.9: Συνδεσμολογία συστήματος ελέγχου ηλεκτρικών συσκευών. 15 Στο σχήμα που ακολουθεί παρουσιάζεται συνολικά η συνδεσμολογία του συστήματος ελέγχου ηλεκτρικών συσκευών. Ωστόσο, η σύνδεση του relay με τις συσκευές διαφέρει ανάλογα με την διαρρύθμιση του χώρου. Σελίδα 28

Σχήμα 3.10: Συνδεσμολογία συστήματος ελέγχου ηλεκτρικών συσκευών. 16 Σελίδα 29

Κεφ. 4. Παρουσίαση εναλλακτικών προτάσεων κατασκευής του συστήματος ελέγχου ηλεκτρικών συσκευών 4.1 Σύστημα ελέγχου ηλεκτρικών συσκευών με εσωτερική συνδεσμολογία του relay με τις ηλεκτρικές συσκευές Για την κατασκευή του συστήματος ελέγχου ηλεκτρικών συσκευών μπορεί να μην χρησιμοποιηθεί επιπλέον καλώδιο, αλλά να γίνεται η διακοπή του κυκλώματος και η σύνδεση με το relay εσωτερικά στη συσκευή. Ωστόσο, αυτό μειώνει τη δυνατότητα φορητότητας και ανεξαρτησίας του συστήματος. Ενδεικτικά θα παρουσιάσουμε τον έλεγχο ενός φωτιστικού γραφείου. Η διαδικασία απεικονίζεται στις εικόνες που ακολουθούν. Ειδικότερα, ανοίγουμε τη βάση του φωτιστικού και κόβουμε τα δύο καλώδια, το μπλε και το καφέ. Απογυμνώνουμε τις άκρες τους και ενώνουμε μέσα στα προστατευτικά το μπλε καλώδιο του ουδετέρου. Το καφέ καλώδιο είναι της φάσης. Σχήμα 4.1: Σύνδεση του φωτιστικού. 17 Το καφέ καλώδιο το ενώνουμε με το relay A/C. Το relay χρησιμοποιείται σαν διακόπτης, καθώς ανοίγει ή κλείνει το κύκλωμα, μόλις λάβει το DC σήμα. Στην περίπτωση μας, μόλις το arduino στείλει στο relay 5V θα κλείσει το κύκλωμα και θα ανάψει η λάμπα. Σελίδα 30

Η πάνω μεριά του relay συνδέεται με το arduino και περιέχει ακίδες, ενώ η κάτω πλευρά (πράσινη πλευρά) έχει υποδοχές για το καλώδιο του ρεύματος. Η συνδεσμολογία παρουσιάζετε στις εικόνες που ακολουθούν. Σχήμα 4.2: Σύνδεση φωτιστικού με το relay. 18 Το καφέ καλώδιο μεταφέρει τη τάση εισόδου και το συνδέουμε στην υποδοχή NO. Η πλευρά του καλωδίου που συνδέθηκε είναι αυτή που είναι πιο κοντά στη πρίζα. Στην τέταρτη υποδοχή COM συνδέουμε το καφέ καλώδιο. Τοποθετούμε μονωτική ταινία για ασφάλεια. Στα παρακάτω σχήματα παρουσιάζεται η συνδεσμολογία του relay με την πρίζα και εσωτερικά το κύκλωμα του relay. Σχήμα 4.3: Συνδεσμολογία φωτιστικού γραφείου με το relay. 19 Στην άλλη πλευρά του relay ενώνω τα τρία καλώδια χρώματος πράσινου, μαύρου και κόκκινου για την γείωση, την τάση και την είσοδο των Σελίδα 31

ενδείξεων. Συνδέω τα καλώδια με jumper καλώδια ίδιων χρωμάτων για να μπορούν να συνδεθούν με το arduino. Στο arduino συνδέουμε το μαύρου καλώδιο στο PIN τροφοδοσίας +5V, το πράσινο στο GND, ενώ το κόκκινο στο PIN7, το οποίο θα λειτουργεί ως "Trigger". Για παράδειγμα όταν το PIN7 στείλει σήμα 5V, το relay ενεργοποιείται και κλείνει το κύκλωμα. Με το κλείσιμο του κυκλώματος έχουμε ως αποτέλεσμα να ενεργοποιηθεί το φως. Σχήμα 4.4: Σύνδεση φωτιστικού με το relay1. 20 4.2 Σύστημα ελέγχου ηλεκτρικών συσκευών με συνδεσμολογία του relay με ένα πολύμπριζο Για να συνδέσουμε τις ηλεκτρικές συσκευές με το σύστημα ελέγχου μπορούμε να χρησιμοποιήσουμε ένα πολύπριζο. Η εναλλακτική αυτή προσφέρει τη προστασία του κυκλώματος καθώς το relay συνδέεται εσωτερικά στο πολύπριζο. Η λογική είναι η ίδια, ελέγχουμε τη τροφοδοσία. Το arduino στέλνει στο relay σήμα 5V για να κλείσει το κύκλωμα. Στις εικόνες που ακολουθούν παρουσιάζεται η συνδεσμολογία. Το relay αποκόπτει την φάση σε δύο μέρη. Με την παροχή σήματος κλείνει το κύκλωμα. Η γείωση και ο ουδέτερος δεν επηρεάζονται. Η υπόλοιπη συνδεσμολογία είναι η ίδια με το προηγούμενο παράδειγμα. Σελίδα 32

Σχήμα 4.4: Σύνδεση πολύπριζου με relay. 21 4.3 Σύστημα ελέγχου φωτιστικού με συνδεσμολογία του relay εσωτερικά στο διακόπτη Στην ενότητα αυτή θα παρουσιάσουμε τη συνδεσμολογία κατευθείαν στον διακόπτη. Η συνδεσμολογία διακόπτη με τον λαμπτήρα παρουσιάζεται σχηματικά στην εικόνα που ακολουθεί. Στη συνέχεια, για την απεικόνιση του εσωτερικού του διακόπτη παρουσιάζονται οι παρακάτω εικόνες. Σελίδα 33

Σχήμα 4.5: Συνδεσμολογία λάμπας με διακόπτη. 22 Έχοντας λάβει τα απαραίτητα μέτρα ασφάλειας ανοίγουμε το καπάκι και ξεβιδώνουμε το εσωτερικό του διακόπτη για να αποδεσμεύσουμε τα καλώδια. Στη συνέχεια, συνδέουμε το relay στα καλώδια. Σχήμα 4.6: Διακόπτης. 23 Το relay παρεμβάλλεται στα καλώδια που θα συνδέαμε στο διακόπτη για να ανοίγει και να κλείνει το κύκλωμα όταν το πατάμε. Η σύνδεση γίνεται βάζοντας το ένα καλώδιο στο com και το άλλο στο NO του relay. Από την άλλη πλευρά συνδέουμε τα καλώδια στις τρεις υποδοχές γείωση, τάση και είσοδο (συνδέεται με τους ακροδέκτες εξόδου του arduino). Όταν το relay λάβει σήμα των 5V, θα κλείσει το κύκλωμα και θα ενεργοποιήσει τα φώτα. Σελίδα 34

Σχήμα 4.7: Συνδεσμολογία relay. 24 Το κύκλωμα στο Arduino είναι ακριβώς το ίδιο με αυτό που αναλύεται στην ενότητα «4.1 Σύστημα ελέγχου ηλεκτρικών συσκευών με εσωτερική συνδεσμολογία του relay με τις ηλεκτρικές συσκευές». Σελίδα 35

Κεφ. 5. Υλοποίηση- πρώτος τρόπος λειτουργίας του συστήματος ελέγχου ηλεκτρικών συσκευών μέσα από το διαδίκτυο 5.1 Εργαλεία και γλώσσες προγραμματισμού 5.1.1 Arduino IDE Το λογισμικό του προγραμματισμού του Arduino ονομάζεται sketches, είναι γραμμένο σε Java, παρέχοντας συμβατότητα σε πολλά λειτουργικά συστήματα. Διαθέτει ένα επεξεργαστή κώδικα και μεταγλωττιστή, αναγνωρίζει την θύρα που συνδέεται το arduino και μεταφέρει το πρόγραμμα μέσω σειριακής θύρας από τον υπολογιστή στην πλακέτα. Το περιβάλλον ανάπτυξης είναι βασισμένο στην Processing, ένα περιβάλλον ανάπτυξης σχεδιασμένο για αρχάριους χρήστες. Η γλώσσα προγραμματισμού που μεταγλωττίζει είναι σαν την C/C++ με λίγες διαφορές. Η γλώσσα προγραμματισμού ονομάζεται Wiring. Το arduino IDE παρουσιάζει τα προγράμματα (sketch, με Arduino IDE και σύνδεση με τον υπολογιστή) με συντακτική χρωματική σήμανση και διαθέτει βιβλιοθήκες για προέκταση της γλώσσας και για διαχείριση των εξαρτημάτων που μπορούν να συνδεθούν στο Arduino. Στην εικόνα που ακολουθεί φαίνεται το arduino IDE και οι επιλογές του. Σελίδα 36

Σχήμα 5.1: Arduino IDE25 Σχήμα 5.2: Έτοιμα παραδείγματα κώδικα στο Arduino.26 Σελίδα 37

Οι συναρτήσεις που χρησιμοποιεί το περιβάλλον ανάπτυξης είναι παρόμοιες με τις συναρτήσεις της γλώσσας C και εμπλουτισμένες με ειδικές συναρτήσεις για την διαχείριση του arduino. Μερικές συναρτήσεις παρουσιάζονται στον πίνακα που ακολουθεί [32, 33, 34]. Πίνακας IV: Συναρτήσεις Arduino IDE Όρισμα Είδος Τύπος Παράμετροι Περιγραφή LOW Σταθερά Int - HIGH Σταθερά Int - INPUT Σταθερά Int - OUTPUT Σταθερά Int - Έχει την τιμή 0 και είναι αντίστοιχη του λογικού false. Έχει την τιμή 1 και είναι αντίστοιχη του λογικού true. Έχει την τιμή 0 και είναι αντίστοιχη του λογικού false. Έχει την τιμή 1 και είναι αντίστοιχη του λογικού true. pinmode Εντολή - (pin, mode) Καθορίζει αν το συγκεκριμένο ψηφιακό pin θα είναι pin εισόδου ή pin εξόδου ανάλογα με την τιμή που δίνεται στην παράμετρο mode (INPUT ή OUTPUT αντίστοιχα). digitalwrite Εντολή - (pin, pinstatus) Θέτει την κατάσταση pinstatus (HIGH ή LOW) στο συγκεκριμένο ψηφιακό pin. digitalread Συνάρτηση Int (pin) Επιστρέφει την κατάσταση του συγκεκριμένου ψηφιακού pin (0 για LOW και 1 για HIGH) εφόσον αυτό είναι pin εισόδου. analogreference Εντολή - (type) Δέχεται τις τιμές DEFAULT, INTERNAL ή EXTERNAL στην παράμετρο type για να καθορίσει την τάση αναφοράς (V ref) των αναλογικών εισόδων (5V, 1.1V ή η εξωτερική τάση με την οποία τροφοδοτείται το pin AREF αντίστοιχα) Σελίδα 38

analogread Συνάρτηση int (pin) Επιστρέφει έναν ακέραιο από 0 έως 1023, ανάλογα με την τάση που τροφοδοτείται το συγκεκριμένο pin αναλογικής εισόδου στην κλίμακα 0 ως V ref. analogwrite Εντολή - (pin, value) Θέτει το συγκεκριμένο ψηφιακό pin σε κατάσταση ψευδο αναλογικής εξόδου (PWM). Η παράμετρος value καθορίζει το πλάτος του παλμού σε σχέση με την περίοδο του παραγόμενου σήματος στην κλίμακα από 0 ως 255 (π.χ. με value 127, το πλάτος του παλμού είναι ίσο με μισή περίοδο). Μετρητής που επιστρέφει το χρονικό διάστημα σε ms από την στιγμή που άρχισε η εκτέλεση του προγράμματος. millis Συνάρτηση unsigned long () Λάβετε υπόψη ότι λόγω του τύπου μεταβλητής (unsigned long δηλ. 32bit) θα γίνει overflow σε 2^32ms δηλαδή περίπου σε 50 μέρες, οπότε ο μετρητής θα ξεκινήσει πάλι από το μηδέν. delay Εντολή - (time) Σταματά προσωρινά την ροή του προγράμματος για time ms. Η παράμετρος time είναι unsigned long (από 0 ως 2^32). Σημειώστε ότι παρά την προσωρινή παύση, συναρτήσεις των οποίων η εκτέλεση ενεργοποιείται από interrupt θα εκτελεστούν κανονικά κατά την διάρκεια μιας καθυστέρησης (delay). attachinterrupt Εντολή - (interrupt, function, triggermode) Θέτει σε λειτουργία το συγκεκριμένο interrupt, ώστε να ενεργοποιεί την συνάρτηση (function), κάθε φορά που ικανοποιείται η συνθήκη που ορίζεται από την παράμετρο triggermode: LOW (ενεργοποίηση όταν η κατάσταση του pin που αντιστοιχεί στο συγκεκριμένο interrupt γίνει Σελίδα 39

LOW) RISING (όταν από LOW γίνει HIGH) FALLING (όταν από HIGH γίνει LOW) CHANGE (όταν αλλάξει κατάσταση γενικά) detachinterrupt Εντολή - (interrupt) nointerrupts Εντολή - () Απενεργοποιεί το συγκεκριμένο interrupt. Σταματά προσωρινά την λειτουργία όλων των interrupt interrupts Εντολή - () Επαναφέρει την λειτουργία των interrupt που διακόπηκε προσωρινά από μια εντολή nointerrupts. Serial.begin Μέθοδος κλάσης - (datarate) Θέτει τον ρυθμό μεταφοράς δεδομένων του σειριακού interface (σε baud) Διοχετεύει τα δεδομένα data για Serial.println Μέθοδος κλάσης - (data) αποστολή μέσω του σειριακού interface. Η παράμετρος data μπορεί να είναι είτε αριθμός είτε αλφαριθμητικό. Κατά την εγκατάσταση του Arduino IDE πρέπει να ρυθμιστεί η σειριακή θύρα που επικοινωνεί το arduino με τον υπολογιστή. Στις δύο εικόνες που ακολουθούν παρατηρούμε δύο σημείο που πρέπει να ρυθμίσουμε την θύρα που δίνει ο υπολογιστής για τη σύνδεση και μετά τη θύρα που δίνει το λογισμικό. Σελίδα 40

Σχήμα 5.3: Ρύθμιση της θύρας επικοινωνίας με το arduino στην διαχείριση συσκευών στα windows. 27 Σχήμα 5.4: Ρύθμιση της σειριακής θύρας στο Arduino Uno.28 Η δομή κάθε προγράμματος του arduino περιέχει δύο συναρτήσεις την setup και την loop. Ειδικότερα, η συνάρτηση setup() εκτελείται στην αρχή του προγράμματος και για μία μόνο φορά. Περιλαμβάνει τις αρχικοποιήσεις Σελίδα 41

των μεταβλητών, τις δηλώσεις των ακροδεκτών π.χ. αν ένας ακροδέκτης είναι εισόδου ή εξόδου και τις αρχικοποιήσεις των βιβλιοθηκών. Ενώ η συνάρτηση loop(), είναι ένας βρόγχος επανάληψης, οπότε ο κώδικας που γράφεται μέσα στη συνάρτηση αυτή επαναλαμβάνεται συνεχώς δίνοντας την δυνατότητα στο πρόγραμμα μας να αλλάζει τιμές και το Arduino να ανταποκρίνεται ανάλογα [35, 36]. Ένα πρόγραμμα του Arduino έχει την εξής δομή: // δηλώσεις μεταβλητών void setup() { // αρχικοποιήσεις } void loop() { //... } // Υπόλοιπες συναρτήσεις... 5.1.2 Γλώσσες προγραμματισμού Για το γραφικά στοιχεία της ιστοσελίδας και το διαχειριστικό τμήμα υλοποιήθηκε κώδικας σε τρεις γλώσσες προγραμματισμού. Αρχικά, με την HTML υλοποιήθηκαν τα κουμπιά και η δόμηση της σελίδας και των εικόνων. Η HTML (HyperText Markup Language ή Γλώσσα Σήμανσης Υπερκειμένου) αποτελεί μια γλώσσα σήμανσης ιστοσελίδων, η οποία δίνει τα δομικά στοιχεία των ιστοσελίδων. Βασικά στοιχεία της σύνταξής της αποτελούν οι ετικέτες που χρησιμοποιούνται ανά ζεύγη και δίνουν τα χαρακτηριστικά τους στα στοιχεία που περιέχουν. Οι ετικέτες αυτές μπορούν να ορίζουν μια ενέργεια, μια μορφοποίηση ένα είδος αντικειμένου κ.α. Με την χρήση των ετικετών τοποθετούνται τα αντικείμενα της ιστοσελίδας, όπως το κείμενο, η εικόνα, οι φωτογραφίες και δίνονται οι διαστάσεις, οι μορφοποιήσεις κ.α. Ο φυλλομετρητής (web browser), διαβάζει τα έγγραφα HTML και συνθέτει τις ιστοσελίδες. Για την συγγραφή σε γλώσσα html μπορεί να χρησιμοποιηθεί ένα απλό αρχείο κειμένου ή να χρησιμοποιηθούν ειδικά λογισμικά που προσφέρουν πρόσθετες ιδιότητες και ευκολίες, όπως το Σελίδα 42

dreamweaver. Οι ετικέτες δεν εμφανίζονται, αλλά χρησιμοποιούνται από τον φυλλομετρητή για να ερμηνεύσει το περιεχόμενο της ιστοσελίδας. Συνήθως, η γλώσσα HTML χρησιμοποιείται με γλώσσες που προσφέρουν ενέργειες και αλληλεπίδραση μέσω σεναρίων, όπως η JavaScript. Ειδικότερα, μια γλώσσα scripting είναι μια ελαφριά γλώσσα προγραμματισμού που υποστηρίζει τη συγγραφή σεναρίων. Σενάρια είναι γραμμές κώδικα που μπορούν να ερμηνεύονται και να εκτελούνται χωρίς μεταγλώττιση. Στην HTML εισάγεται σύνδεση ή απλά ενσωματώνονται τα CSS (Cascading Style Sheets, Διαδοχικά Φύλλα Στυλ). Τα CSS χρησιμοποιούνται για τον έλεγχο της εμφάνισης ενός εγγράφου. Τα CSS είναι μια γλώσσα που δίνει την δυνατότητα διαμόρφωσης των χρωμάτων της στοίχισης κ.α., είτε για ξεχωριστά χαρακτηριστικά της σελίδας, είτε για την ίδια την σελίδα. H PHP είναι μια γλώσσα προγραμματισμού, βασισμένη σε σενάρια. Χρησιμοποιείται για την ανάπτυξη διαδικτυακών εφαρμογών και προσφέρει ένα πλήθος συναρτήσεων. Ακόμα, δίνει τη δυνατότητα για σύνδεση και διαχείριση των βάσεων δεδομένων. Η Javascript είναι αντίστοιχη της γλώσσας php. Χρησιμοποιείται σε ιστοσελίδες, με την συνεργασία της html. Η javascript δημιουργεί και εκτελεί σενάρια και η HTML τα παρουσιάζει. Βασικές λειτουργίες της javascript είναι ο χειρισμός CSS, η δυναμική αλλαγή ετικετών και περιεχομένου HTML, η αποθήκευση και η ανάκτηση πληροφοριών στον υπολογιστή του χρήστη, η εκτέλεση μετά από συμβάν και η επικοινωνία με php, xml, json αρχεία, αλλά και με άλλες ιστοσελίδες. Για τις απαιτήσεις της εργασίας χρησιμοποιήθηκε η jquery, η οποία είναι μια βιβλιοθήκη JavaScript που δημιουργήθηκε το 2006. Είναι σχεδιασμένη να απλοποιήσει την υλοποίηση σεναρίων (scripting) στη πλευρά του πελάτη (client-side) της HTML (37, 38, 39). 5.2 Αρχιτεκτονική Η κατασκευή συστήματος ελέγχου ηλεκτρικών συσκευών μέσα από το διαδίκτυο αποτελείται από το υλικό και το λογισμικό. Για το λογισμικό Σελίδα 43

χρησιμοποιήθηκαν γλώσσες προγραμματισμού για την κατασκευή ιστοσελίδας και την δυναμική διαχείριση του συστήματος από τους χρήστες. Εκτός από το διαδικτυακό κομμάτι, προγραμματίστηκε το arduino για τη σύνδεση του κυκλώματος με την ιστοσελίδα και την απάντηση στα αιτήματα διαχείρισης. Ειδικότερα, υλοποιήθηκε η αναγνώριση συσκευών και η σύνδεση μεταξύ των συσκευών, του κυκλώματος με τον μικροελεγκτή [40]. Το διαδικτυακό τμήμα του συστήματος έχει αναπτυχθεί με χρήση Php, MySql, HTML, JavaScript (βιβλιοθήκη Jquery) και CSS. Όλες οι ρυθμίσεις που χρειάζονται για τον έλεγχο εισόδου στην εφαρμογή βρίσκονται στο αρχείο clogin.php. Για την ανάρτηση της σελίδας στο διαδίκτυο χρησιμοποιήθηκε ένας δωρεάν πάροχος υπηρεσιών: o heliohost. Για την συμβατότητα με τις συναρτήσεις που δημιουργήθηκαν και ελέγχθηκαν τοπικά στο wamp προτιμήθηκε ο εξυπηρετητής Stevie. Πίνακας V: Δυνατότητες των server Stevie Johnny Current Uptime 24/7 Network Monitoring Current Load Full Battery (UPS) Backup Unlimited Sub-domains Unlimited Addon Domains Unlimited Parked Domains Softaculous Script Installer Control Panel Type cpanel cpanel cpanel Version 11.30.5 11.34.1 MySQL MySQL Version 5.1.56 5.5.27 Remote MySQL Access MySQL One-click Backups phpmyadmin PostgreSQL PostgreSQL Version 9.0.7 8.1.23 Remote PostgreSQL Access phppgadmin Browser File Manager FTP sftp Webdisk PHP PHP Version 5.3.8 5.3.17 PHP Safemode Disabled Σελίδα 44

PHP curl w/ssl PHP Sockets PHP GD2 PHP XML-RPC PHP intl - ImageMagick CGI Perl Python Django C CGI C++ CGI Ruby Yourname@yourdomain Email Storage 500 MB 500 MB Στο σχήμα που ακολουθεί παρουσιάζεται η αρχιτεκτονική του συστήματος. Το arduino συνδέεται με το relay και τις ηλεκτρικές συσκευές για να τις ελέγχει. Από την άλλη πλευρά συνδέεται με το διαδίκτυο μέσω της Ethernet shield και του router. Μέσω του διαδικτύου επικοινωνεί με την ιστοσελίδα. Η ιστοσελίδα δέχεται τις αιτήσεις των χρηστών και δίνει τα αντίστοιχα αποτελέσματα. Σελίδα 45

Σχήμα 5.5:Αρχιτεκτονικής συστήματος. 29 Στο παρακάτω σχήμα απεικονίζεται το διάγραμμα ροής της επικοινωνίας του arduino με την εφαρμογή και τον χρήστη. Σελίδα 46

Σχήμα 5.6: Διάγραμμα ροής για την σύνδεση του arduino με το διαδίκτυο. 30 Η εφαρμογή/ ιστοσελίδα δημιουργήθηκε για συσκευές που θα διαχειρίζονται τις ηλεκτρικές συσκευές του σπιτιού από απόσταση. Στην Σελίδα 47

εικόνα που ακολουθεί αναλύεται η επικοινωνία του συστήματος με μια συσκευή (π.χ. τηλεφώνου) συνδεδεμένη σε άλλο δίκτυο. Σχήμα 5.7: Αλληλεπίδραση του συστήματος. 31 Η λειτουργία της εφαρμογής έχει ως εξής: 1. Τo arduino συνδέεται με τον υπολογιστή. 2. Ο υπολογιστής μέσω του arduino IDE εγκαθιστά το πρόγραμμα στο arduino. 3. To arduino τίθεται σε λειτουργία και απαντά ότι έχει επιτευχθεί η σύνδεση. 4. Ο χρήστης πλοηγείται στην ιστοσελίδα της εφαρμογής. Πραγματοποιεί login στην εφαρμογή. Στέλνει το αίτημα για να ανοίξει ή να κλείσει μια ηλεκτρική συσκευή του σπιτιού. 5. Ο υπολογιστής μέσω του Processing IDE γίνεται ο δέκτης των μηνυμάτων από τον server στο arduino. 6. Ο υπολογιστής στέλνει στο arduino την επιλογή του χρήστη για διαχείριση της συσκευής. 7. To arduino δέχεται το αίτημα και ενημερώνει για την επιτυχημένη αλλαγή της κατάστασης της ηλεκτρικής συσκευής. 8. Ο υπολογιστής στέλνει το αίτημα στον server (ιστοσελίδα της εφαρμογής). 9. Ο server στέλνει την αλλαγή στην κατάσταση της ηλεκτρικής συσκευής. Σελίδα 48

5.3 Κώδικας 5.3.1 Βάση δεδομένων Για την λειτουργία της εισόδου του χρήστη δημιουργήθηκε μια βάση δεδομένων loghome με ένα πίνακα members. Ο πίνακας αυτός αποτελείται από τις στήλες id, name, username, password, last_name και r_date. Για τον έλεγχο της εισόδου χρησιμοποιείται το όνομα χρήστη (username) και ο κωδικός πρόσβασης (password). Σχήμα 5.8: Βάση δεδομένων loghome.32 Ο κώδικας sql που δίνεται στη βάση δεδομένων για τη δημιουργία του πίνακα members είναι ο ακόλουθος [41]. CREATE TABLE IF NOT EXISTS 'members' ('id' int(4) NOT NULL AUTO_INCREMENT, 'name' varchar (12) CHARACTER SET utf8 COLLATE utf_8_unicode_ci NOT NULL, 'username' varchar (20) CHARACTER SET utf8 COLLATE utf_8_unicode_ci NOT NULL DEFAULT '','password' varchar (40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 'lastname' varchar (25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, rdate datetime NOT NULL, PRIMARY KEY ('id') ) ENGINE=MyISAM DEFAULT CHARSET=greek AUTO_INCREMENT=1; Σελίδα 49

5.3.2 Χρήση του συστήματος από διαφορετικές οικίες Η διαχείριση των ηλεκτρικών συσκευών μπορεί να γίνει από όλα τα μέλη της οικίας. Τα μέλη της οικίας με κωδικό μπορούν να εισέρχονται στο σύστημα και να ελέγχουν τις συσκευές του σπιτιού από το διαδίκτυο. Για να επεκταθεί το σύστημα και σε διαφορετικές οικίες δημιουργείται ένα στιγμιότυπο των αρχείων για την δεύτερη οικία. Οπότε, δημιουργείται για κάθε οικία ένας διαφορετικός φάκελος και διαφορετικός κωδικός στη βάση. Με αυτό τον τρόπο δεν αλληλεπιδρούν τα αρχεία και δεν υπάρχει περιορισμός ούτε στους χρήστες που θα συνδέονται με το σύστημα, ούτε στις οικίες που οι συσκευές θα ελέγχονται από το διαδίκτυο. 5.3.3 Κώδικας ελέγχου της εισόδου στην εφαρμογή Λόγω της κρισιμότητας των ηλεκτρικών συσκευών, δημιουργήθηκε στην αρχή του προγράμματος η υπηρεσία της πιστοποίησης της ταυτότητας του χρήστη. Πριν την είσοδο στο πρόγραμμα διαχείρισης των ηλεκτρικών συσκευών ελέγχεται αν ο χρήστης έχει εξουσιοδοτημένη πρόσβαση. Λόγω της αύξησης των επιθέσεων στις ιστοσελίδες λήφθηκαν υπόψη μέτρα ασφάλειας κατά την κατασκευή της εφαρμογής αυτής [37]. Η λειτουργία ελέγχου εισόδου και εξόδου διενεργείται από 4 αρχεία ελέγχου το login.html, το clogin.php, το tryagain.html και το logout.php. Το αρχείο index.php αποτελεί το πρώτο αρχείο που ανακατευθύνει την εφαρμογή ανάλογα με τις ενδείξεις που έχει το σύστημα για τον έλεγχο των συσκευών. Ο κώδικας των αρχείων αυτών παρατίθεται στα παραρτήματα Α-Δ. Στο σχήμα που ακολουθεί παρουσιάζονται οι αλληλεπιδράσεις των αρχείων που ελέγχουν την είσοδο και την έξοδο του συστήματος. Αρχικά το αρχείο login.html δέχεται μέσω φόρμας τον κωδικό και το όνομα χρήστη και τα στέλνει στο αρχείο clogin.php για να ελεγχθούν τα στοιχεία με τη βάση. Το αρχείο clogin.php δημιουργεί σύνδεση με τη βάση και ελέγχει τα στοιχεία του χρήστη που είναι καταχωρημένα στη βάση με τα στοιχεία που δόθηκαν. Αν ο έλεγχος είναι επιτυχημένος ανακατευθύνει το χρήστη στη σελίδα της εφαρμογής, αλλιώς ζητά να δοθούν ξανά τα στοιχεία και ανακατευθύνει το χρήστη στη σελίδα tryagain.html. Μετά την είσοδο και Σελίδα 50

την διαχείριση του συστήματος ο χρήστης με την επιλογή «έξοδος» κατευθύνεται στο αρχείο logout.php. Στο αρχείο αυτό ενημερώνεται για την επιτυχημένη αποσύνδεση και του δίνεται η δυνατότητα να ξανασυνδεθεί εφόσον το επιθυμεί, γράφοντας ξανά τα στοιχεία πρόσβασης. Σχήμα 5.9: Αρχιτεκτονική λειτουργίας αρχείων ελέγχου εισόδου και εξόδου. 33 5.3.4 Κώδικας της εφαρμογής Ο κώδικας σε php προστίθεται για την ενίσχυση της ασφάλειας. Η προστασία της εφαρμογής εφαρμόζεται όταν κάποιος κακόβουλος χρήστης προσπαθήσει να συνδεθεί στην εφαρμογή, είτε όταν έχει αποσυνδεθεί ο χρήστης, είτε παρακάμπτοντας την σύνδεση. Αν ο χρήστης δεν έχει πραγματοποιήσει την είσοδο, τότε δεν μπορεί να πλοηγηθεί κάποιος στο αρχείο index.php. Αν το δοκιμάσει τον οδηγεί πάλι στην σελίδα εισόδου και ζητάει κωδικό και όνομα χρήστη. <?php session_start(); if(!isset($_session['myusername'])){ header("location:clogin.php"); die(); }?> Σελίδα 51

Με την επιλογή της αποσύνδεσης, η εφαρμογή οδηγεί τον χρήστη στη σελίδα logout.php στην οποία κλείνει η σύνοδος (session). <?php session_start(); session_destroy();?> Για την αρχιτεκτονική της ιστοσελίδας χρησιμοποιούνται οι ιστοσελίδες php και html με διασυνδέσεις μεταξύ τους. Ειδικότερα, για τη διαχείριση του αρχείου κειμένου χρησιμοποιήθηκαν οι συναρτήσεις της php για την εγγραφή σε αρχεία κειμένου και την ανάγνωση του κειμένου. Η πολυπλοκότητα του κώδικα αυξήθηκε για την εμφάνιση των φωτεινών ενδείξεων σε περίπτωση που ο διακόπτης της ηλεκτρικής συσκευής είναι κλειστός, δηλαδή έχουμε σε λειτουργία την συσκευή αυτή. Για να πετύχουμε όλες τις πιθανές καταστάσεις του διακόπτη, υπολογίσαμε 2 4 αποτελέσματα. Ο διακόπτης είναι είτε ανοιχτός είτε κλειστός. Οπότε έχουμε δύο καταστάσεις. Επειδή έχουμε τέσσερις συσκευές αυξάνονται οι συνδυασμοί εμφάνισης σε 16 (2 4 ). Για να εμφανίζουμε όλες τις καταστάσεις δημιουργήθηκαν 16 αρχεία php με διαφορετικούς συνδυασμούς. Τα 16 αυτά αρχεία εμφανίζουν διαφορετικές καταστάσεις των κουμπιών αλλά έχουν την ίδια λειτουργικότητα. Οι καταστάσεις αυτές παρουσιάζονται στον πίνακα που ακολουθεί, ως Α είναι η συσκευή σε λειτουργία και ως Κ είναι η συσκευή όταν είναι κλειστή. Πίνακας VI: Οι συνδυασμοί των on/off AAAA KAKK AKKK KKKK AKKA KAKA AKAK KAAA KKAA KKKA KKAK KAAK AAAK AAKK AKAA AAKA Αξίζει να σημειωθεί ότι πρέπει να δημιουργηθεί μια αρχική κατάσταση. Δηλαδή, μόλις κάνει login ο χρήστης να είναι αποθηκευμένες οι προηγούμενες επιλογές του. Ύστερα η σελίδα να τον οδηγεί στις υπόλοιπες. Ως αρχική σελίδα δημιουργήσαμε το index.php το οποίο είναι ένα αρχείο ελέγχου των προηγούμενων καταστάσεων που είναι αποθηκευμένες στο αρχείο κειμένου Σελίδα 52

και ανάλογα με τα στοιχεία που υπάρχουν σε αυτό συνδέεται ο χρήστης στην σελίδα που θα εμφανίσει τα αποτελέσματα. Αν δεν υπήρχε αυτή η επιλογή κάθε φορά που θα έβγαινε από την εφαρμογή ο χρήστης δεν θα είχε τις ενδείξεις των επιλογών του και θα έπρεπε να θυμάται τι συσκευές είχε ανοίξει. Στην περίπτωση που θέλει να ελέγξει αν είναι ανοιχτός ο θερμοσίφωνα, επειδή δεν θα μπορούσε να το δει χωρίς αυτό το αρχείο, θα έπρεπε να τον κλείσει για να το επιβεβαιώσει. Στην εικόνα που ακολουθεί παρουσιάζεται η διασύνδεση του control.php με τις ιστοσελίδες. Αυτή η διασύνδεση αφορά και τις 16 ιστοσελίδες που παρουσιάζουν τις διαφορετικές καταστάσεις των διακοπτών on/off. Σχήμα 5.10: Σύνδεση της διαχείρισης των ιστοσελίδων.34 Στην πρώτη σελίδα που εμφανίζεται θέλουμε να παρουσιάζονται οι καταστάσεις των ηλεκτρικών συσκευών του σπιτιού ακόμα και αν έχει αποσυνδεθεί ο χρήστης και έχει ξανασυνδεθεί. Αυτό προϋποθέτει ένα σύστημα μνήμης των ενδείξεων των ηλεκτρικών συσκευών. Για την καταγραφή και αποθήκευση των ενδείξεων αυτών χρησιμοποιήθηκε το αρχείο κειμένου LED.txt. Το αρχείο αυτό αποθηκεύτηκε στο server. Σελίδα 53

Μόλις συνδεθεί ο χρήστης στο σύστημα το clogin.php μετά από τον έλεγχο του κωδικού του και την επαλήθευση του κωδικού εισάγει τον χρήστη στην ιστοσελίδα index.php. Η ιστοσελίδα αυτή είναι μια ιστοσελίδα php χωρίς html στοιχεία και λειτουργεί απλά ως ελεγκτικός μηχανισμός και ως σύστημα προώθησης. Αναλυτικότερα, η index.php διαβάζει το αρχείο κειμένου για να δει τις καταστάσεις των ηλεκτρικών συσκευών. Μόλις διαβάσει τις καταστάσεις αυτές ελέγχει ποιο αρχείο ικανοποιεί τον συνδυασμό τους και το εμφανίζει παραπέμποντας στην τοποθεσία που είναι αποθηκευμένο. Για την ανάγνωση του αρχείου χρησιμοποιούνται οι συναρτήσεις της γλώσσας php. Αρχικά, ορίζεται η τοποθεσία του αρχείο δίνοντας την τοποθεσία και το όνομα του αρχείου. Στη συνέχεια, δημιουργείται μια μεταβλητή διαχείρισης του αρχείου, η οποία ορίζει ότι το αρχείο θα ανοίξει μόνο για ανάγνωση. Οι επιλογές που έχει η php για διαχείριση του αρχείου δίνονται στον πίνακα που ακολουθεί. Με την σωστή χρήση των επιλογών αυτών μπορεί να διατηρηθεί το επίπεδο της ασφάλειας αν δεν δίνονται δικαιώματα διαχείρισης των αρχείων χωρίς λόγο. Για την ανάγνωση του αρχείου κειμένου επιλέχτηκε η παράμετρος «r». Η παράμετρος αυτή ανοίγει το αρχείο μόνο για ανάγνωση και επιλέγει το δείκτη του κειμένου στην αρχή του κειμένου. Μόλις, εκτελεστούν όλες οι εντολές που αναφέρονται στο αρχείο, χρησιμοποιείται η συνάρτηση fclose για να κλείσει το αρχείο κειμένου. $ledstate = "LED.txt"; $filelocation = "$ledstate"; $fp = fopen($filelocation, 'r ') or die("something went wrong!"); fclose($fp); Πίνακας VII : Παράμετροι διαχείρισης του αρχείου κειμένου στην γλώσσα php [42]. Παράμετροι διαχείρισης του αρχείου κειμένου στην γλώσσα php r Σημασία της χρήσης των παραμέτρων αυτών Άνοιγμα του αρχείου μόνο για ανάγνωση. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Σελίδα 54

r+ w w+ a a+ x x+ c c+ Άνοιγμα του αρχείου για γραφή και ανάγνωση. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Άνοιγμα του αρχείου για γραφή. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Διαγράφει τα προηγούμενα δεδομένα του αρχείου. Αν δεν υπάρχει το αρχείο, τότε προσπαθεί να το δημιουργήσει. Άνοιγμα του αρχείου για γραφή και ανάγνωση. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Διαγράφει τα προηγούμενα δεδομένα του αρχείου. Αν δεν υπάρχει το αρχείο, τότε προσπαθεί να το δημιουργήσει. Άνοιγμα του αρχείου για γραφή. Τοποθετεί τον δείκτη του αρχείου στο τέλος του κειμένου. Διαγράφει τα προηγούμενα δεδομένα του αρχείου. Αν δεν υπάρχει το αρχείο, τότε προσπαθεί να το δημιουργήσει. Άνοιγμα του αρχείου για γραφή και ανάγνωση. Τοποθετεί τον δείκτη του αρχείου στο τέλος του κειμένου. Διαγράφει τα προηγούμενα δεδομένα του αρχείου. Αν δεν υπάρχει το αρχείο, τότε προσπαθεί να το δημιουργήσει. Δημιουργία και άνοιγμα του αρχείου για γραφή. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Αν υπάρχει το αρχείο, τότε εμφανίζει μήνυμα λάθους. Δημιουργία και άνοιγμα του αρχείου για γραφή και ανάγνωση. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Αν υπάρχει το αρχείο, τότε εμφανίζει μήνυμα λάθους. Άνοιγμα του αρχείου για γραφή. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Αν δεν υπάρχει το αρχείο, τότε το δημιουργεί. Άνοιγμα του αρχείου για γραφή και ανάγνωση. Τοποθετεί τον δείκτη του αρχείου στην αρχή του κειμένου. Αν δεν υπάρχει το αρχείο, τότε το δημιουργεί. Για να γίνει ανακατεύθυνση στη σωστή ιστοσελίδα πρέπει τα δεδομένα του κειμένου να είναι ταξινομημένα. Για την ταξινόμηση τους χρησιμοποιήθηκε Σελίδα 55

η συνάρτηση sort. Όμως η συνάρτηση αυτή δέχεται ως όρισμα array. Οπότε για να την χρησιμοποιήσουμε επιλέγουμε κάθε χαρακτήρα του αρχείου κειμένου και τον τοποθετούμε στη συμβολοσειρά result. Για να επιλέξουμε κάθε χαρακτήρα χρησιμοποιούμε την συνάρτηση substr [43]. Με την πρόταση substr("$trled", -1); επιλέγουμε κάθε φορά τον τελευταίο χαρακτήρα του περιεχομένου της μεταβλητής και τον απομονώνουμε. Στη συνέχεια με την πρόταση $trled=substr("$trled", 0, -1) αφαιρούμε τον χαρακτήρα αυτό από το περιεχόμενο της μεταβλητής για να πάρουμε την επόμενη φορά πάλι τον τελευταία χαρακτήρα από την νέα τιμή. Για την ανακατεύθυνση στη σωστή ιστοσελίδα ελέγχονται οι 16 συνδυασμοί των κουμπιών αν ταυτίζονται με το αποτέλεσμα από το αρχείο κειμένου. Η ανακατεύθυνση γίνεται με την εντολή header("location: KKKK.php"). Επειδή η εντολή αυτή είναι αρκετά ευαίσθητη και πολλές φορές μπορεί να εμφανίσει προβλήματα buffer, για αυτό χρησιμοποιούμε σε κάθε κλήση της την εντολή exit, για να μην επεξεργαστεί τον κώδικα που έπεται. Ακόμα, πρέπει να προσέξουμε τα κενά πριν την κλήση της <?php καθώς και αυτά μπορούν να προκαλέσουν προβλήματα στο buffer όταν καλέσουμε την εντολή header("location: KKKK.php"). Τέλος, τα μηνύματα echo είναι και αυτά υπεύθυνα για το μήνυμα σφάλματος και καλό είναι να αποφεύγονται όταν υπάρχει η εντολή header("location: KKKK.php"). Ο κώδικας από το αρχείο index.php παρατίθεται στο παράρτημα Ε. Το αρχείο control.php είναι το βασικότερο αρχείο, καθώς επιτελεί όλες τις ανακατευθύνσεις και την διαχείριση των κειμένων. Ο κώδικας του χρησιμοποιεί την ίδια λογική με τον κώδικα στο index.php και επεκτείνει τον κώδικα για να καλύψει επιπλέον ανάγκες. Αξίζει να σημειωθεί ότι διαχειρίζεται δύο αρχεία, στο πρώτο καταχωρεί στοιχεία για την εμφάνιση της ιστοσελίδας και στο δεύτερο για την διαχείριση του arduino. Το arduino διαβάζει τα δεδομένα του αρχείου κειμένου για να δει την ανανέωση της κατάστασης της ηλεκτρονικής συσκευής και να την εφαρμόσει. Το αρχείο του arduino δέχεται μόνο ένα αριθμό και μόλις δεχτεί ένα νέο αριθμό αντικαθιστά τον προηγούμενο. Η πράξη αυτή υλοποιείται με την πρόταση $fh = fopen($filelocation, 'w ') or die("something went wrong!"). Το w δίνει την δυνατότητα να γίνει εγγραφή στο αρχείο σβήνοντας το προηγούμενο στοιχείο. Σελίδα 56

Η πρόταση «if(isset($_get["state"])) {$onoroff = $_GET["state"];} else {$onoroff ="0"; }» ελέγχει αν στάλθηκε κάποια νέα κατάσταση για τις ηλεκτρικές συσκευές. Η νέα κατάσταση στέλνεται με την επιλογή του κουμπιού On ή Off για κάθε ηλεκτρική συσκευή. Αυτός ο έλεγχος είναι σημαντικός καθώς χρησιμοποιήθηκε για να μην ελέγχονται συνέχεια όλες οι συνθήκες χωρίς να πραγματοποιείται αλλαγή της κατάστασης. Με αυτό τον τρόπο βελτιώνουμε τον φόρτο και αυξάνουμε την ταχύτητα της επικοινωνίας. Για να αποφευχθούν οι πολλαπλές εγγραφές στο αρχείο και να παραμένει τεσσάρων καταστάσεων (όσες και οι ηλεκτρικές συσκευές) δόθηκαν τέσσερις συνθήκες. Η πρώτη «if($trimmer=="$onoroff"){» αφορά επιλογή κουμπιού που δεν προσφέρει αλλαγή κατάστασης αλλά προέκυψε από λανθασμένο διπλό πάτημα. Στην περίπτωση αυτή δεν αλλάζουν τα δεδομένα στο αρχείο κειμένου. Όμως επειδή δόθηκε πρωτύτερα ο περιορισμός της μη εκτέλεσης των εντολών σε περίπτωση που δεν δοθεί κάποια αλλαγή κατάστασης, για αυτό απλά διαβάζεται σε αυτό το σημείο το περιεχόμενο του κειμένου για να εμφανιστεί η ανάλογη σελίδα. Στην δεύτερη και τρίτη συνθήκη αν είναι στο αρχείο κειμένου η συμπληρωματική κατάσταση, (για ανοικτή ένδειξη να δίνεται η κλειστή και το αντίστροφο) τότε δεν αποθηκεύει στο αρχείο κειμένου τη νέα κατάσταση αλλά αντικαθιστά το υπάρχον με το συμπληρωματικό του αριθμό. Στην τελευταία συνθήκη, εφόσον δεν ισχύουν οι προηγούμενες γράφει ξανά το κάθε αριθμό από το αρχείο κειμένου σε μια νέα μεταβλητή. Αυτό συμβαίνει για να προσθέσουμε απλά την νέα είσοδο στο τέλος από τους τρεις αριθμούς που θα έχουν συγκεντρωθεί στη μεταβλητή led. if($trimmer=="$onoroff"){ } else if (((($trimmer=="1")&&($onoroff=="8")) (($trimmer=="8")&&($onoroff=="1"))) ((($trimmer=="3")&&($onoroff=="2")) (($trimmer=="2")&&($onoroff=="3")))){ } else if (((($trimmer=="5")&&($onoroff=="4")) (($trimmer=="4")&&($onoroff=="5"))) ((($trimmer=="6")&&($onoroff=="7")) (($trimmer=="7")&&($onoroff=="6")))){ } Σελίδα 57

} else { $led.= "$trimmer"; } Ο κώδικας των αρχείων control.php και ΑΑΑΑ.php παρατίθεται στα παραρτήματα ΣΤ και Ζ. Αξίζει να σημειωθεί ότι για την καλύτερη απεικόνιση σε κινητές συσκευές, δημιουργήθηκαν τα ίδια αρχεία, αλλά με δυνατότητα Responsive, συνδέοντας τις λειτουργικότητες εμφάνισης που έδινε το css αρχείο με τα αρχεία php και html. 5.3.5 Κώδικας arduino Στο arduino προγραμματίζεται ο έλεγχος των 4 συσκευών. Του φωτιστικού γραφείου/ λάμπας, της καφετιέρας, του θερμοσίφωνα και της τηλεόρασης. Κάθε συσκευή μέσω του relay συνδέεται με το arduino για να ελεγχθεί η κατάσταση της. Μέσω του arduino δίνονται οι εντολές για το άνοιγμα και το κλείσιμο της συσκευής. Μέσα στην συνάρτηση setup η οποία εκτελείται μόνο μια φορά, αρχικοποιείται η σειριακή επικοινωνία και ορίζονται οι ακροδέκτες ως ακροδέκτες εξόδου. Στην συνάρτηση loop διαχειρίζονται οι συσκευές. Το arduino δέχεται την σειριακή είσοδο στην μεταβλητή incomingbyte και την συγκρίνει με τις τιμές που έχουν οριστεί για τους ακροδέκτες. Μόλις ανιχνεύσει μια αλλαγή στην τιμή, αλλάζει την κατάσταση του ακροδέκτη από on σε off και αντίστροφα. Η συνάρτηση αυτή ελέγχεται συνέχεια [44-48]. Ο κώδικας του arduino παρατίθεται στο παράρτημα Η. 5.3.6 Κώδικας Java στο εργαλείο Processing 2 Για την επικοινωνία του arduino με τον δρομολογητή χρησιμοποιήθηκε ένας υπολογιστής. Στον υπολογιστή εγκαταστάθηκε το processing 2 για να μπορεί το arduino να συνδεθεί με την σειριακή θύρα και να αλληλεπιδρά με την ιστοσελίδα στο διαδίκτυο. Η γλώσσα προγραμματισμού που υποστηρίζει είναι η Java. Σελίδα 58

Ο υπολογιστής χρησιμοποιείται για να έχει πρόσβαση το arduino μέσω της κάρτας δικτύου του υπολογιστή στο διαδίκτυο. Αρχικά, στο κώδικα πρέπει να επικοινωνήσει ο υπολογιστής με το arduino. Η επικοινωνία γίνεται με το άνοιγμα της σειριακής θύρας με την εντολή «port = new Serial(this, Serial.list()[1], 9600);». Στη συνέχεια δίνεται η διεύθυνση της ιστοσελίδας, για να αποκτήσει πρόσβαση στο αρχείο με την κατάσταση των ηλεκτρικών συσκευών. Η πρόσβαση στο αρχείο δίνεται με την εντολή «String onoroff[] = loadstrings("http://techome.heliohost.org/ledstate.txt");». Μετά από την ανάγνωση του αρχείου και την αποθήκευση της τιμής στην μεταβλητή onoroff πραγματοποιείται ο έλεγχος με την συνθήκη if και την παράμετρο «onoroff[0].equals("0") == true». Στην περίπτωση που η συνθήκη είναι αληθής τότε στέλνει στη θύρα την τιμή H, δηλαδή το arduino λαμβάνει την τιμή H και κλείνει το κύκλωμα. Αντίθετα στη περίπτωση που είναι αληθής η συνθήκη «onoroff[0].equals("1") == true», τότε στέλνει στο arduino την τιμή L και το arduino ανοίγει το κύκλωμα, δηλαδή απενεργοποιεί την συνδεδεμένη συσκευή. Αντίστοιχα, δημιουργούνται άλλες έξι συνθήκες ελέγχου για τις τρεις συσκευές. Ανάλογα με τους ελέγχους, δίνονται στο arduino οι τιμές «A-E». Στο τέλος, δίνεται η εντολή «delay(100)», η οποία δίνει καθυστέρηση σε milliseconds. Όσο αυξάνουμε την καθυστέρηση, θα αργεί η απόκριση του συστήματος. Ωστόσο, είναι αναγκαία μια μικρή καθυστέρηση. Ο κώδικας του παρατίθεται στο παράρτημα Θ. Σελίδα 59

Κεφ. 6. Δεύτερος τρόπος λειτουργίας του arduino Σημαντικό είναι σε ένα περιβάλλον που ελέγχονται οικιακές συσκευές, να περιοριστούν τα μηχανήματα διαχείρισης και αλληλεπίδρασης. Με την χρήση της Ethernet Shield μπορεί να παραμετροποιηθεί το arduino ως client και να επικοινωνεί με την ιστοσελίδα διαχείρισης οικιακών ηλεκτρικών συσκευών χωρίς να χρειάζεται η χρήση του ηλεκτρονικού υπολογιστή, όπως στο πρώτο τρόπο λειτουργίας της εφαρμογής. Το arduino μετά τον προγραμματισμό του με τη χρήση του ηλεκτρονικού υπολογιστή, είναι αυτόνομο και λειτουργεί χωρίς περαιτέρω συνδέσεις. Το σχήμα της αρχιτεκτονικής διαφοροποιείται μόνο στο σημείο της χρήσης του υπολογιστή. Ο κώδικας στο arduino αλλάζει για να αποκτήσει τις λειτουργίες της Ethernet Shield. Αρχικά, χρησιμοποιεί τη βιβλιοθήκη #include <Ethernet.h>. Στη συνέχεια, δηλώνεται η ιστοσελίδα του server με την πρόταση char server[] = "techome.heliohost.org". O arduino μπορεί να χρησιμοποιηθεί είτε ως server είτε ως client. Για τις ανάγκες της εφαρμογής θα τον θέσουμε client και με την εντολή «EthernetClient client» και θα διαχειριστούμε όλες τις συναρτήσεις που μας προσφέρει η Ethernet shield για client. Για να αναγνωρίσει το arduino τις συναρτήσεις αυτές χρησιμοποιήθηκε η βιβλιοθήκη «#include <Ethernet.h>». Αξίζει να σημειωθεί ότι δεν αναγνωρίζουν όλες οι Ethernet shields τις ίδιες βιβλιοθήκες. Οι εντολές του client μπορούν να χρησιμοποιηθούν μόνο κατά την διάρκεια της σύνδεσης του client με τον server. Για να ελεγχθεί αν έχει επιτευχθεί η σύνδεση αυτή εισάγεται η συνθήκη «if (client.connect(server, 80))». Για να προστεθούν ενέργειες που θα εκτελούνται μόνο κατά την διάρκεια που είναι διαθέσιμος ο client εισάγεται ο βρόχος επανάληψης «while (client.available())». Με την συνάρτηση «client.read()» το arduino διαβάζει τα δεδομένα εισόδου από τα αιτήματα που θέτει στον client. Ένα αίτημα μπορεί να έχει την μορφή «client.println("get http:// techome.heliohost.org/control/ledstate.txt HTTP/1.0")». Το συγκεκριμένο αίτημα ζητάει από τον server http:// techome.heliohost.org τα περιεχόμενα του αρχείου κειμένου LEDstate.txt. Σελίδα 60

Για να μην αλλάζει συνέχεια η τοπική διεύθυνση που έχει ο arduino, ορίζουμε σταθερή την διεύθυνση ip 192.168.1.65 και απενεργοποιούμε την δυναμική διευθυνσιοδότηση στο τοπικό δίκτυο. Οι διευθύνσεις αυτές δεν είναι public (δημόσιες), οπότε δεν είναι ορατές στο διαδίκτυο. Στον κώδικα που ακολουθεί χρησιμοποιήθηκε η συνάρτηση atoi(&c) για να μετατρέψει τα αλφαριθμητικά στοιχεία σε ένα ακέραιο αριθμό. Σημαντικό σημείο αποτελεί η δήλωση στην συνάρτηση setup της πρότασης «pinmode(pin1, OUTPUT)». Με την πρόταση αυτή δηλώνεται ως ακροδέκτης εξόδου ο Pin1. Χωρίς αυτή την δήλωση ο ακροδέκτης δεν λειτουργεί. Για να θέσουμε σε λειτουργία την ηλεκτρική συσκευή που είναι συνδεδεμένη στον ακροδέκτη Pin1 προσθέτουμε την πρόταση «digitalwrite(pin1, HIGH)». Αν θέλουμε να κλείσουμε τον διακόπτη αλλάζει μόνο μια λέξη στην πρόταση, οπότε η πρόταση γίνεται «digitalwrite(pin1, LOW)». Με αυτό τον τρόπο ελέγχουμε τις τέσσερις ηλεκτρικές οικιακές συσκευές που έχουμε συνδέσει στο κύκλωμα μας. Η συνάρτηση atoi χρησιμοποιήθηκε για να μετατρέψει μια αλφαριθμητική τιμή σε ακέραιο αριθμό για να συγκριθεί μέσω της συνθήκης με τους ακέραιους αριθμούς που δίνονται. Τέλος, για να δοθεί χρόνος στο server να επεξεργαστεί τα δεδομένα εισάγουμε μια συνάρτηση που εισάγει μια καθυστέρηση μετρημένη σε milliseconds, η συνάρτηση αυτή είναι η delay(100). Τα υπόλοιπα χρησιμοποιούν την σύνταξη της γλώσσας C [49, 50, 51, 52]. Σελίδα 61

Κεφ. 7. Παρουσίαση της εφαρμογής Η εφαρμογή λόγω της τεχνολογίας που δημιουργήθηκε είναι συμβατή με όλα τα λειτουργικά συστήματα. Στις εικόνες που ακολουθούν παρουσιάζονται οι βασικές εικόνες που εμφανίζονται στον χρήστη. Σχήμα 7.1: Εικόνες εισόδου/ εξόδου. 35 Σελίδα 62

Σχήμα 7.2: Εικόνα της διαχείρισης των ηλεκτρικών συσκευών.36 Σελίδα 63

Κεφ. 8. Ασφάλεια της εφαρμογής Η ασφάλεια στη χρήση ηλεκτρικών συσκευών είναι σημαντική. Είναι απαραίτητη η χρήση κωδικού πρόσβασης και ονόματος πρόσβασης για τη χρήση των ηλεκτρικών συσκευών μόνο από τους εξουσιοδοτημένους χρήστες. Το σύστημα αυτό αν επεκταθεί μπορεί να ελέγχει με κάμερα ασφάλειας το σπίτι, με τροποποιήσεις στον κώδικα της εφαρμογής. Οπότε, η ασφάλεια διαχείρισης της οπτικής εικόνας καθιστά αναγκαία τα μέτρα ασφάλειας. Ωστόσο, και για τις υπόλοιπες ηλεκτρικές συσκευές είναι σημαντική η ασφάλεια. Στην ενότητα αυτή, παρουσιάζονται τα μέτρα ασφάλειας που εφαρμόστηκαν στον κώδικα. Αρχικά, δίνεται η έννοια των συναρτήσεων κατακερματισμού και η εφαρμογή της, στη συνέχεια παρουσιάζεται η ασφάλεια στη σύνοδο και τέλος μελετώνται και καταγράφονται τα μέτρα προστασίας για επιθέσεις sql injection. 8.1 Συναρτήσεις κατακερματισμού Οι συναρτήσεις κατακερματισμού (hash functions) είναι μονόδρομες συναρτήσεις. Παράγουν σαν έξοδο μια σύνοψη από ένα μήνυμα που τους δίνεται στην είσοδο. Το μήνυμα εισόδου μπορεί να έχει οποιαδήποτε μήκος, αλλά η έξοδος έχει πάντα σταθερό μήκος, το οποίο αλλάζει ανάλογα με τη συνάρτηση κατακερματισμού. Για να θεωρείται μια συνάρτηση κατακερματισμού αξιόπιστη πρέπει να μην παράγουν δύο διαφορετικά μηνύματα την ίδια έξοδο. Οι συναρτήσεις αυτές ονομάζονται μονόδρομες καθώς είναι μαθηματικά αποδεδειγμένο ότι δεν μπορεί να αντιστραφεί η διαδικασία παραγωγής. Ο μόνος τρόπος να αναγνωριστεί το κείμενο είναι να δοθούν πολλά κείμενα σαν είσοδο και να συγκρίνονται οι έξοδοι. Ωστόσο, στο παρελθόν έχουν βρεθεί κάποιοι αλγόριθμοι αυτής της κατηγορίας ως αναξιόπιστοι, καθώς βρέθηκαν οι ευπάθειες τους. Οπότε δεν είναι αδύνατο να βρεθεί το αποτέλεσμα αλλά καλείται «υπολογιστικά δύσκολο» να βρεθεί. Η συνάρτηση κατακερματισμού πολλές φορές χρησιμοποιείται για να ανιχνεύσουμε τυχόν αλλαγές στο μήνυμα. Οι κανόνες που πρέπει να πληροί η συνάρτηση κατακερματισμού είναι: Σελίδα 64

Να είναι υπολογιστικά ανέφικτο να βρεθεί μήνυμα που να ταιριάζει στο συγκεκριμένο hash (one-way property). Nα είναι υπολογιστικά αδύνατο να βρεθούν δυο μηνύματα που να δίνουν το ίδιο hash (collision-free property). Οι χρήσεις των συναρτήσεων κατακερματισμού είναι: Στη δημιουργία ενός αρχείου με τα hash των passwords. Έτσι αποθηκεύουμε το hash του password και όχι το ίδιο το password. Στην ανίχνευση εισβολής και ανίχνευση ιών. Ως ψευδοτυχαια συνάρτηση ή γεννήτρια ψευδοτυχαιων αριθμών. Στην εξακρίβωση αν το μήνυμα έχει υποστεί αλλαγές. Ένας αλγόριθμος σύνοψης είναι ο SHA-1. Ο Secure Hash Algorithm (SHA) σχεδιάστηκε το 1993 και αναθεωρήθηκε το 1995 ως SHA-1. Είναι πρότυπο στις ΗΠΑ για χρήση με τον αλγόριθμο ψηφιακών υπογράφων DSA και παράγει εξόδους hash των 160-bits [53]. Στην παρούσα εργασία χρησιμοποιήθηκε η συνάρτηση κατακερματισμού sha1 για τον έλεγχο της τιμής του hash κωδικού που είναι αποθηκευμένο στη βάση δεδομένων. Με αυτό τον τρόπο αν κάποιος κακόβουλος επιτεθεί στην βάση δεδομένων και καταφέρει να δει τους κωδικούς δεν θα μπορεί να τους χρησιμοποιήσει. Στη συνέχεια παρουσιάζεται ο κώδικας που χρησιμοποιήθηκε για την κρυπτογράφηση του κωδικού εισόδου και τη σύγκριση της σύνοψης με τον αποθηκευμένο κωδικό της βάσης. Ειδικότερα, χρησιμοποιήθηκε η συνάρτηση της php η οποία μετατρέπει το αλφαριθμητικό ή τον ακέραιο αριθμό σε hash αυτόματα. Έπειτα, ελέγχθηκε η σύνοψη «$encrypted_mypassword» για την σύγκριση με τον κωδικό που είναι αποθηκευμένος στη βάση [54]. $encrypted_mypassword= sha1($mypassword); $sql="select * FROM $tbl_name WHERE username='$myusername' and password='$encrypted_mypassword'"; Σελίδα 65

Σχήμα 8.1: Εμφάνιση των hash κωδικών στη βάση δεδομένων. 37 8.2 Ασφάλεια συνόδου Η σύνοδος στην php συμβολίζεται ως «$_SESSION». Συγκεκριμένα αποτελεί μια μεταβλητή που δίνει τα στοιχεία της συνεδρίας, καθώς χρησιμοποιείται για την αποθήκευση πληροφοριών, ή για την αλλαγή των ρυθμίσεων, για μια συνεδρία. Οι μεταβλητές συνεδρίας, πρέπει να τοποθετούνται σε όλες τις ιστοσελίδες σε μια εφαρμογή. Οι πληροφορίες συνεδρίας, είναι προσωρινές και είναι ασφαλές να διαγράφονται, αφού ο χρήστης έχει αποχωρήσει από το δικτυακό τόπο. Στην παρούσα εργασία χρησιμοποιήθηκε στην αρχή της κάθε ιστοσελίδας μια συνθήκη ελέγχου με την χρήση της γλώσσας php. Ο έλεγχος διεξάγεται για να εντοπίσει χρήστες που δεν είναι εξουσιοδοτημένοι και προσπαθούν χωρίς να έχουν εισάγει κωδικό να εντοπίσουν κενά σημεία για να επιτύχουν την είσοδο στην εφαρμογή. Ο παρακάτω κώδικας εντοπίζει τον μη εξουσιοδοτημένο χρήστη και τον παραπέμπει στην ιστοσελίδα εισόδου για να δηλώσει τον κωδικό του και το όνομα χρήστη και να εισαχτεί, εφόσον είναι ο εξουσιοδοτημένος χρήστη [37]. <?php session_start(); if(!isset($_session['myusername'])){ header("location:clogin.php"); die(); }?> Σελίδα 66