ΤΕΙ ΚΡΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Επιβλέπων : Κορνάρος Γεώργιος. Επίκουρος Καθηγητής

Σχετικά έγγραφα
Ενσωµατωµένα Συστήµατα

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

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

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

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

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

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

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

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

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

WIRELESS SENSOR NETWORKS (WSN)

Διπλωματική Εργασία ΟΙΚΙΑΚΟΣ ΑΥΤΟΜΑΤΙΣΜΟΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΗ

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

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

Εισαγωγή στο KNX. Ανακαλύψτε το KNX

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

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

Μαθαίνοντας το hardware του αναπτυξιακού

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

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

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

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects)

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

devolo dlan powerline technology Σύντομη παρουσίαση dlan WiFi ac

WDT και Power Up timer

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

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

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

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

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

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

«ΑΣΥΡΜΑΤΟ ΣΥΣΤΗΜΑ ΕΠΙΤΗΡΗΣΗΣ, ΚΑΤΑΓΡΑΦΗΣ & ΕΛΕΓΧΟΥ ΑΝΤΛΙΟΣΤΑΣΙΩΝ» Τεχνική έκθεση Προδιαγραφές Προϋπολογισμός

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

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

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

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

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

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

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

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

Αθήνα 29 ΝΟΕ, 2016 ΘΕΜΑ: ΑΙΤΗΜΑ ΑΓΟΡΑΣ ΥΛΙΚΩΝ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΣΥΛΛΟΓΗΣ & ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο

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

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

ZigBee. Φοιτητής: Μόσχογλου Στυλιανός Επιβλέπων καθηγητής: κ. Δοκουζγιάννης Σταύρος

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

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

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση και ανάπτυξη οχήματος που ακολουθεί μια γραμμή

Εφαρμογές μικροελεγκτών

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Β : Επικοινωνία Υπολογιστή με Μικροελεγκτή

Ανατομία ενός πομποδέκτη σταθμού βάσης HSDPA (Node-B)

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

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

ΣΥΝΘΕΤΑ ΣΥΣΤΗΜΑΤΑ ΑΥΤΟΜΑΤΙΣΜΟΥ. Μετά την ολοκλήρωση της ενότητας αυτής θα μπορείτε:

Κεφάλαιο 4. Διδακτικοί Στόχοι. Για την αναγκαιότητα, τον τρόπο συνεργασίας, τις δυνατότητες και τον τρόπο εγκατάστασης των περιφερειακών συσκευών.

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

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

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

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

Μάθημα 3: Τοπολογίες Δικτύων

Το υλικό του υπολογιστή

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

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή

Μαλούτα Θεανώ Σελίδα 1

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

ΤΟ ΕΣΩΤΕΡΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ

Μάθημα 1 ΑΙΣΘΗΤΗΡΕΣ Ο Αισθητήρας Δύναμης. Επανεξέταση των βασικών εννοιών της C και του προγραμματισμού.

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

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Ethernet Ethernet ΙΕΕΕ CSMA/CD

ΚΕΦΑΛΑΙΟ 5 ΠΡΟΣΟΜΟΙΩΤΗΣ PLC SIMATIC S7-300

Κεφάλαιο 2.4: Εργασία με εικονίδια

ΠΛΗΡΟΦΟΡΙΚΗ. Β Γυμνασίου Σχολικό έτος

Μάθημα 4.7 Θύρες περιφερειακών

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Συνδεσιμότητα κινητού τηλεφώνου

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

ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά

Κεφάλαιο 3 Πολυπλεξία

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

Το εσωτερικό του Υπολογιστή. Χρήστος Ρέτσας 1

Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα)

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Τροφοδοσία : 3,3V, 5V Αυτή η πινακίδα επιτρέπει τη σύνδεση και των 8 απολήξεων (pins) μίας θύρας E- blocks με καλώδια με τη χρήση τερματισμών με

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

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

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

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

ΚΕΦΑΛΑΙΟ 1 ΥΛΙΚΟ ΥΠΟΛΟΓΙΣΤΩΝ

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

"Έξυπνο σπίτι" ΚΝΧ και αντλίες θερμότητας (Α/Θ)

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

Transcript:

ΤΕΙ ΚΡΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Επιβλέπων : Κορνάρος Γεώργιος Επίκουρος Καθηγητής ΟΙΚΙΑΚΟΣ ΑΥΤΟΜΑΤΙΣΜΟΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΗ Ζουριδάκης Εμμανουήλ ΑΜ:2383 Ηράκλειο 2016

2

3

4

Περίληψη Ζούμε στην εποχή του «έξυπνου» (smart-) έξυπνα κινητά τηλέφωνα, έξυπνες τηλεοράσεις, έξυπνα αυτοκίνητα κ.ο.κ. Δεν θα μπορούσε, λοιπόν, να μην έχουμε και έξυπνα σπίτια, σπίτια, δηλαδή, που θα παίρνουν αποφάσεις και θα ενεργούν μόνα τους χωρίς την ανάγκη της παρουσίας του ανθρώπινου παράγοντα. Τις τελευταίες δεκαετίες έχουν αποκτήσει εξαιρετική δυναμική οι τεχνολογίες αυτοματισμών και επικοινωνιών που αφορούν στην έννοια της «έξυπνης κατοικίας». Η εξέλιξη της τεχνολογίας αυτής είναι αλματώδης με αποτέλεσμα η έννοια της «έξυπνης κατοικίας» να διευρύνει τα χαρακτηριστικά και τις δυνατότητές η πορεία αυτή είναι βέβαιο ότι θα συνεχιστεί βαθιά στο μέλλον. Σε αυτή την πτυχιακή μελετήσαμε και κατασκευάσαμε ένα πρωτότυπο σύστημα οικιακού αυτοματισμού για τον απομακρυσμένο έλεγχο συσκευών βασισμένο σε μια πλατφόρμα μικροελεγκτών ανοικτού κώδικα και στον αίτιοαποτελεσματικό προγραμματισμό. Το οποίο έχει την δυνατότητα του απομακρυσμένου ελέγχου των οικιακών συσκευών μέσω κινητού τηλεφώνου και διαδικτύου. Παράλληλα δίνει την δυνατότητα στον χρήστη να δημιουργήσει μέσω εφαρμογών κινητού τηλεφώνου κανόνες αυτόματης λειτουργίας των συσκευών. Πιο συγκεκριμένα, στο πρώτο κεφάλαιο ορίζεται η έννοια του έξυπνου σπιτιού και στη συνέχεια αναφέρονται διεξοδικά οι τεχνικές δικτύωσης που χρησιμοποιούνται σε αυτό. Στο δεύτερο κεφάλαιο, το οποίο αποτελεί και το βασικό κομμάτι της εργασίας, αναλύεται το σύστημα που υλοποιήθηκε. Εξηγούνται λεπτομερώς και διεξοδικά τα στάδια που ακολουθήθηκαν κατά την υλοποίηση από την αρχή (σύλληψη της ιδέας), έως και το τέλος (τελική κατασκευή). Τέλος, στο τρίτο κεφάλαιο παρατίθενται τα συμπεράσματα της εργασίας, καθώς και οι δυνατότητες μελλοντικής βελτίωσης και επέκτασης της συγκεκριμένης υλοποίησης. 5

Περιεχόμενα ΚΕΦΑΛΑΙΟ 1 Ο ΕΙΣΑΓΩΓΗ... 7 1.1 Τί είναι ένα «έξυπνο σπίτι»... 7 1.2. Χ10..... 9 1.2.1 ΚΝΧ... 9 1.2.2 Bluetooth...10 1.2.3 IEEE 802.11... 11 1.2.4 ZigBee...12 1.2.5 RFID 13 1.3 ΙΔΕΑ-ΣΥΣΤΗΜΑ ΠΡΟΣ ΥΛΟΠΟΙΗΣΗ...13 1.3.1Arduino....15 1.3.2Ιστορική Αναδρομή Arduino...15 1.3.3 Η πλατφόρμα Arduino...17 1.3.4 Επεκτάσεις Arduino.18 ΚΕΦΑΛΑΙΟ 2 Ο - ΥΛΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΟΣ...23 2.1 ΘΕΩΡΗΤΙΚΗ ΑΝΑΛΥΣΗ...23 2.2 ΑΝΑΠΤΥΞΙΑΚΟ ΜΙΚΡΟΕΛΕΓΚΤΗ...25 2.2.1 Μικροελεγκτές - Γενικά...25 2.2.2 Αναπτυξιακό Arduino Uno AVR ATmega328p...26 2.2.3 Συνδεσμολογία Arduino Uno...31 2.2.4 Προγραμματισμός Arduino Uno...33 2.3 ΕΠΙΚΟΙΝΩΝΙΑ UART-TCP...43 2.3.1 Module USR- WIFI232-B...43 2.3.2 Ρυθμίσεις modem/router...44 2.4 ΕΦΑΡΜΟΓΕΣ ΣΥΣΚΕΥΩΝ ΤΕΛΙΚΟΥ ΧΡΗΣΤΗ...45 2.4.1 Εφαρμογή για Η/Υ...45 2.4.2 Εφαρμογή για κινητό τηλέφωνο...53 ΚΕΦΑΛΑΙΟ 3 Ο ΣΥΜΠΕΡΑΣΜΑΤΑ...53 6

Κεφάλαιο 1 ο Εισαγωγή Στις μέρες μας τα πάντα τείνουν να αυτοματοποιηθούν. Σε ένα τέτοιο πλαίσιο αυτοματοποίησης δε θα μπορούσε να μην πάρει μέρος η καθημερινότητα μας, το ίδιο μας το σπίτι δηλαδή. Ο Αυτοματισμός, είναι το πεδίο της επιστήμης και της τεχνολογίας που ασχολείται με την επιβολή επιθυμητής συμπεριφοράς στα φαινόμενα και με την κατανόηση των μηχανισμών μέσω των οποίων καθορίζεται η λειτουργία ενός φαινομένου. Το αντικείμενο του Αυτοματισμού, είναι γενικό και πολύπλευρο, για αυτό και εφαρμογές του βρίσκονται πολυάριθμες στην καθημερινή ζωή και στη βιομηχανία. Οι εφαρμογές του απλώνονται σε όλες τις περιοχές της φυσικής και τεχνολογικής πραγματικότητας. Δεκάδες εφαρμογές του αυτοματισμού ελέγχουν τη λειτουργία απλών συσκευών, τις οποίες χρησιμοποιούμε καθημερινά. Μια διάταξη αυτοματισμού, για παράδειγμα, εξασφαλίζει ότι ο θερμοσίφωνας έχει την επιθυμητή συμπεριφορά, δηλαδή διατηρεί το νερό στην κατάλληλη για οικιακή χρήση θερμοκρασία. Επίσης, χάρη στον κατάλληλο αυτοματισμό η φρυγανιέρα διακόπτει τη θέρμανση και απομακρύνει το ψωμί, όταν αυτό ψηθεί, όταν δηλαδή αποκτήσει τις επιθυμητές ιδιότητες. Σκοπός της παρούσας πτυχιακής είναι η πρόταση και παρουσίαση μιας τέτοιας καινοτομικής εκδοχής της «έξυπνης κατοικίας», σύμφωνα με την οποία ελέγχονται όλες οι συσκευές του σπιτιού, ακόμα και μέσω ενός σύγχρονου κινητού τηλεφώνου. 1.1Τί είναι ένα «έξυπνο σπίτι» Επισήμως η λέξη «έξυπνο» χρησιμοποιήθηκε πρώτη φορά κατά τη δεκαετία του 70 ως προσδιορισμός τεχνολογικών επιτευγμάτων. Συγκεκριμένα, αναφερόταν σε στρατιωτικά προϊόντα, όπως βόμβες ή πυραύλους που καθοδηγούσαν τον εαυτό τους προς το στόχο («έξυπνες βόμβες»). Η φράση "έξυπνο σπίτι" ("smarthome") είναι ευρέως διαδεδομένη, αφού χρησιμοποιείται για να περιγράψει οποιαδήποτε οικία που ενσωματώνει σε μικρότερο ή μεγαλύτερο βαθμό τη δυνατότητα ρύθμισης κάποιων παραμέτρων των δυνατοτήτων και των ανέσεων που παρέχει. Κορυφαίο χαρακτηριστικό της τεχνολογίας «έξυπνο σπίτι» συνιστά ο απομακρυσμένος έλεγχος, καθώς παρέχει τη δυνατότητα στους ενοίκους να ενημερώνονται για την κατάσταση της κατοικίας και να παρεμβαίνουν στη λειτουργία της από οπουδήποτε κι αν βρίσκονται, αρκεί να διαθέτουν τρόπο επικοινωνιακής πρόσβασης (ενσύρματο ή ασύρματο). Όταν μάλιστα τα άτομα που διαμένουν στο «έξυπνο σπίτι» είναι με ειδικές ανάγκες, ο απομακρυσμένος έλεγχος παροχών, διατάξεων και συσκευών μπορεί να αποβεί σωτήριος σε πιθανή περίπτωση κινδύνου.οι λειτουργίες που μπορεί να ενσωματώνει ένα «έξυπνο σπίτι» σχετίζονται σχεδόν με το σύνολο των ανθρώπινων δραστηριοτήτων όπως εργασία, καθημερινές ασχολίες, ψυχαγωγία (βλ. σχήμα 1). Για παράδειγμα, κατά τη διάρκεια του ύπνου το "έξυπνο" σπίτι θα ελέγχει την θερμοκρασία του δωματίου και την προσαρμόζει με βάση την επιθυμητή για τον ένοικο ή βέλτιστη τιμή. Επίσης, το «έξυπνο σπίτι» θα μπορούσε να παρακολουθείτο δελτίο πρόγνωσης του καιρού μέσω διαδικτύου, 7

ώστε να σχεδιάζει το πότισμα ή μη του κήπου. Ακόμα είναι δυνατό να ρυθμίζει την αφύπνιση ανάλογα με το ημερήσιο πρόγραμμα κάθε ατόμου και να θέτει σε λειτουργία ενεργοβόρες οικιακές συσκευές κατά το νυχτερινό τιμολόγιο ηλεκτρικού ρεύματος, το οποίο είναι οικονομικότερο. Επιπροσθέτως, κατά την ώρα της αφύπνισης των ενοίκων, θα μπορούσε να δυναμώνει σταδιακά την ένταση του (φυσικού) φωτισμού, να ενεργοποιεί την παραγωγή καφέ, να ρυθμίζει την τηλεόραση ή το ραδιόφωνο στο επιθυμητό πρωινό κανάλι ή ραδιοφωνικό σταθμό και να προβάλλει τα νέα που τους ενδιαφέρουν και τα οποία εντόπισε κατά τη διάρκεια της νύκτας στο διαδίκτυο. Στην περίπτωση απουσίας ή εξόδου των ενοίκων από το σπίτι, θα σβήνει τα φώτα και θα ρυθμίζει τη θέρμανση με τέτοιο τρόπο ώστε να εξοικονομείται ενέργεια, αλλά και θα ενεργοποιεί το σύστημα πυρασφάλειας και το σύστημα συναγερμού. Τέλος, όταν οι ιδιοκτήτες απουσιάζουν επί μακρόν, π.χ. για διακοπές ή οποιοδήποτε άλλο λόγο, θα μπορούσε να ελέγχει την ομαλή λειτουργία Εικόνα 1 Παράδειγμα έξυπνου σπιτιού θα σβήνει τα φώτα και θα ρυθμίζει τη θέρμανση με τέτοιο τρόπο ώστε να εξοικονομείται ενέργεια, αλλά και θα ενεργοποιεί το σύστημα πυρασφάλειας και το σύστημα συναγερμού. Τέλος, όταν οι ιδιοκτήτες απουσιάζουν επί μακρόν, π.χ. για διακοπές ή οποιοδήποτε άλλο λόγο, θα μπορούσε να ελέγχει την ομαλή λειτουργία κάθε υποσυστήματος και να αποστέλλει λεπτομερή μηνύματα μέσω ηλεκτρονικού ταχυδρομείου στους ιδιοκτήτες, περιγράφοντας κάθε πρόβλημα που ενδεχομένως ήθελε προκύψει. 8

Στη συνέχεια γίνεται αναφορά σε κάποιες τεχνολογίες επικοινωνίας που χρησιμοποιούνται στα έξυπνα σπίτια. Κάθε μια από αυτές έχει τα πλεονεκτήματα και τα μειονεκτήματα της. Έτσι λοιπόν δεν υπάρχει η βέλτιστη επιλογή, αλλά η καλύτερη δυνατή που καλύπτει τις εκάστοτε ανάγκες του τελικού χρήστη. 1.2 Χ10 Πρόκειται για μία μέθοδο επικοινωνίας που εφευρέθηκε το 1975, οπότε είναι προφανώς και μια από τις παλαιότερες τεχνολογίες που εφαρμόζονται σήμερα στο έξυπνο σπίτι. Η συγκεκριμένη τεχνολογία βασίζεται στην ηλεκτρική καλωδίωση που είναι ήδη εγκατεστημένη στο κάθε σπίτι. Πρόκειται δηλαδή για μια ενσύρματη μέθοδο. Αναμφίβολα το πλεονέκτημα της X10 τεχνολογίας είναι ότι χρησιμοποιεί το υπάρχον ηλεκτρικό δίκτυο του σπιτιού για τη μεταφορά δεδομένων, το ότι, δηλαδή, δεν χρειάζεται πρόσθετη ειδική καλωδίωση. Η μετάδοση των δεδομένων επιτυγχάνεται μέσω της αποστολής πληροφοριών με ένα σήμα των 120 ΚHz διαμέσου των πριζών του σπιτιού. Τα δεδομένα χωρίζονται σε τέσσερα bit κώδικα σπιτιού και σε τέσσερα bit κώδικα μονάδας και ακολουθούνται από μια εντολή που μπορεί να έχει μήκος εώς τέσσερα bit. Οι συνδυασμοί του κώδικα σπιτιού και μονάδας επιτρέπουν να έχουμε 256 ξεχωριστές συσκευές. Αν χρειαστεί πάντως το X10 μας επιτρέπει να κάνουμε χρήση της ίδιας διεύθυνσης για πολλαπλές συσκευές. Παρόλο που η τεχνολογία X10 επιτρέπει σε οποιαδήποτε συσκευή να συνδεθεί στο οικιακό ηλεκτρικό δίκτυο και να επικοινωνήσει, έχει ως μέθοδος κάποια σημαντικά μειονεκτήματα. Τα σημαντικότερα από αυτά είναι το περιορισμένο εύρος ζώνης (bandwidth) του πρωτοκόλλου που χρησιμοποιεί καθώς και η έλλειψη αξιοπιστίας. Το περιορισμένο εύρος ζώνης του X10 το αποκλείει ως λύση για εφαρμογές, όπως η περιήγηση στο διαδίκτυο ή η άμεση εκπομπή και διανομή οπτικοακουστικού σήματος μέσα στο σπίτι. 1.2.1 KNX Το πιο δυναμικό, και ευρύτερα διαδεδομένο στην Ευρώπη σύστημα διαχείρισης κτιρίων, είναι το σύστημα KNX (Konnex). Είναι η εξέλιξη και ενσωμάτωση του EIB, το οποίο ξεκίνησε να αναπτύσσεται από το 1987 και επισημοποιήθηκε το 1990. Είναι το μόνο σύστημα με αρχιτεκτονική ανοικτού πρωτοκόλλου και βρίσκεται στην κορυφή των συστημάτων διαχείρισης κτιρίων. Έχει αναπτυχθεί από την KNX Association (Ένωση KNX) με έδρα τις Βρυξέλες του Βελγίου, η οποία δημιουργήθηκε και υποστηρίζεται από όλους πλέον τους μεγάλους Ευρωπαίους και μη κατασκευαστές ηλεκτρομηχανολογικού εξοπλισμού έχοντας ταυτόχρονα επιτύχει και παγκόσμια 9

εξάπλωση. Οι δυνατότητες του συστήματος είναι πρακτικά απεριόριστες, από το άναμμα ενός λαμπτήρα έως τον έλεγχο και τον χειρισμό των Η/Μ εγκαταστάσεων μεγάλων κτιριακών συγκροτημάτων ή και άλλων εφαρμογών. Σήμερα, δραστηριοποιούνται σήμερα πάνω από 170 εταιρίες, σι οποίες διαθέτουν στην αγορά περίπου 7.000 υλικά απολύτως εναρμονισμένα μεταξύ τους μέσω κοινού πρωτοκόλλου επικοινωνίας. Μερικές από αυτές τις εταιρίες είναι οι Siemens, ΑΒΒ, Merten, Jung, GIRA, Miele, Daikin κ.λ.π. Είναι δεδομένο ότι καμία εταιρία δεν διαθέτει πλήρη γκάμα υλικών από μόνη της και για αυτόν τον λόγο ένας σχεδιαστής συστήματος θα πρέπει να επιλέγει τα κατάλληλα υλικά για εφαρμογή από περισσότερες εταιρίες. Αυτό καθιστά την τεχνική KNX, ανεξάρτητη από κάποιον κατασκευαστή, σε αντίθεση με αρκετά συστήματα τα οποία δεσμεύουν τον ιδιοκτήτη με μία μόνο εταιρία. Η επικοινωνία του ΚΝΧ με τις επιθυμητές συσκευές μπορεί να γίνει μέσω καλωδίωσης συνεστραμμένου ζεύγος καλωδίων, ραδιοσυχνοτήτων (RF), powerline και δικτύου Ethernet. 1.2.2 Bluetooth Το Bluetooth είναι μια ασύρματη τεχνολογία που αρχικά σχεδιάστηκε για να αντικαταστήσει τα καλώδια κατά τις συνδέσεις κινητών τηλεφώνων ή laptop. H τεχνολογία αυτή πήρε το όνομα της από έναν μεσαιωνικό βασιλιά της Νορβηγίας τον Harald Blåtand (=Bluetooth) Gormson, που είχε προσπαθήσει να ενοποιήσει τα τότε βόρεια σκανδιναβικά βασίλεια. Έτσι και το Bluetooth σαν τεχνολογία προσπάθησε να ενοποιήσει τα ήδη υπάρχοντα ασύρματα πρότυπα, για να καθιερωθεί τελικά ως μια βασική τεχνολογία για την ασύρματη σύνδεση σε μικρές αποστάσεις. Από τεχνικής πλευράς, το Bluetooth δουλεύει στα 2.4 GHz, που είναι το μη αδειοδοτημένο φάσμα ISM (Industrial Scientific Medical). Πρόκειται για φάσμα ανοιχτό στον οποιοδήποτε, με αποτέλεσμα όλα τα συστήματα που το χρησιμοποιούν να πρέπει να είναι έτοιμα για «διαμάχες» με άλλες συσκευές. Το Bluetooth για να αντιμετωπίσει τέτοιου είδους προβλήματα χρησιμοποιεί την τεχνολογία FHSS(Frequency Spectrum Hopping Technology), κάτι που σημαίνει ότι δύο συνδεδεμένες συσκευές Bluetooth μετά την αποστολή κάθε πακέτου, αλλάζουν περιοδικά κανάλι επικοινωνίας. Στην πράξη αυτό σημαίνει ότι εάν ένα κανάλι είναι δεσμευμένο από μια άλλη συσκευή, οι συσκευές Bluetooth θα αλλάξουν αυτόματα κανάλι με αποτέλεσμα η επικοινωνία τους να επηρεαστεί ελάχιστα. Η τεχνολογία FHSS διασφαλίζει ακόμη ότι πολλαπλά δίκτυα Bluetooth μπορούν να συνυπάρχουν ταυτόχρονα χωρίς να διαταράσσονται οι επιμέρους συνδέσεις. Οι συσκευές που είναι συνδεδεμένες με Bluetooth μπορούν να δημιουργήσουν δίκτυα γνωστά ως piconets, που αποτελούνται από δύο εώς οκτώ συσκευές. Από αυτές τις συσκευές μία δρα ως κύρια συσκευή (master) και είναι υπεύθυνη για τη διευθέτηση της κυκλοφορίας δεδομένων σε όλο το piconet. Οι υπόλοιπες συσκευές του piconet λειτουργούν ως «σκλάβοι» (slaves). Μόνο μια 10

συσκευή μπορεί να είναι master κάθε στιγμή, αλλά αυτή η συσκευή μπορεί να αλλάξει αν μια συσκευή slave επιθυμεί να γίνει master. Η συσκευή master όχι μόνο αποτελεί το κέντρο του δικτύου, αλλά επίσης παίρνει όλες τις αποφάσεις με αποτέλεσμα να ορίζει και το συνολικό εύρος ζώνης του piconet. Όταν μία ή περισσότερες συσκευές του piconet συνδεθούν σε ένα άλλο piconet, τότε έχουμε ένα scatternet. Οι συσκευές Bluetooth μπορεί να συμπεριφέρονται σαν σκλάβοι σε διάφορα piconet, αλλά master μπορούν να είναι αυστηρά μόνο σε ένα. Οι συσκευές αυτές που ανήκουν σε πολλά piconet μπορούν να δράσουν σαν συνδετικός κρίκος μεταξύ των υποδικτύων για τη μεταφορά δεδομένων. Η μέση εμβέλεια για τις συσκευές Bluetooth είναι περίπου δέκα μέτρα, αλλά πιο ισχυρές συσκευές μπορούν να φτάσουν ακόμη και τα εκατό μέτρα. Σε γενικές γραμμές μπορούμε να πούμε ότι το Bluetooth είναι μια τεχνολογία με μικρή εμβέλεια, ειδικά σε σύγκριση με ασύρματες τεχνολογίες της κατηγορίας IEEE 802.11. Ωστόσο, η μικρή εμβέλεια των δικτύων Bluetooth κάποιες φορές αποτελεί πλεονέκτημα. Για παράδειγμα μία κινητή συσκευή που χρησιμοποιεί το δίκτυο Bluetooth είναι σίγουρα πολύ κοντά στο δέκτη, γεγονός που μπορεί να θεωρηθεί θετικό όσον αφορά την ασφάλεια. Η τεχνολογία Bluetooth μπορεί να χρησιμοποιηθεί επιτυχώς στο σύγχρονο έξυπνο σπίτι. Κάτι τέτοιο επιτυγχάνεται με την τοποθέτηση δεκτών διάσπαρτα μέσα στο σπίτι, οι οποίες εντοπίζουν το χρήστη μέσω του κινητού του τηλεφώνου και κατόπιν παρέχουν υπηρεσίες σε αυτόν ανάλογα με το που βρίσκεται (follow me content). 1.2.3 IEEE 802.11 Η οικογένεια ασύρματων προτύπων IEEE 802.11 έχει γνωρίσει χαρακτηριστική αποδοχή και ανάπτυξη τα τελευταία χρόνια. Συνήθως αποκαλείται WiFi ή πιο απλά WLAN. Τα πλεονεκτήματα της είναι αρκετά. Βασικότερο αυτών είναι η ικανοποίηση της ανάγκης που υπήρχε και υπάρχει για αντικατάσταση της παραδοσιακής καλωδιακής δικτύωσης των σπιτιών, των γραφείων και άλλων χώρων όπως οι καφετέριες κ.τ.λ. Ένα άλλο πλεονέκτημα είναι το χαμηλό κόστος των προϊόντων που είναι συμβατά με τα πρότυπα 802.11, όπως τα σημεία πρόσβασης (Access Points) και οι επαναλήπτες σήματος (Repeaters). Επίσης, τα πιο πρόσφατα πρότυπα της οικογένειας ΙΕΕΕ 802.11 παρέχουν αρκετά μεγάλες ταχύτητες μετάδοσης δεδομένων. Για παράδειγμα το πρότυπο 802.11n μπορεί να επιτύχει ρυθμό μετάδοσης δεδομένων πάνω από 500 Mbps. Η διάδοση αυτής της τεχνολογίας έφερε στο χρήστη εύκολη και πολλές φορές δωρεάν πρόσβαση στο διαδίκτυο σε διάφορους δημόσιους χώρους. Τέλος, τα πρότυπα IEEE 802.11 λειτουργούν και αυτά στο μη αδειοδοτημένο φάσμα ISM (Industrial Scientific Medical) στη συχνότητα των 2.4 GHz. Η τοπολογία δικτύου 11

που χρησιμοποιείται είναι «κεντροποιημένη». Αυτό πρακτικά σημαίνει ότι όλοι οι πελάτες (clients) ενός δικτύου συνδέονται σε μια κεντρική οντότητα, που συχνά αναφέρεται ως σημείο πρόσβασης. Αυτή η οντότητα λαμβάνει δεδομένα από τους πελάτες και κατόπιν τα δρομολογεί. Σήμερα γίνεται προσπάθεια παροχής δικτύων «mesh». Με ένα τέτοιο δίκτυο οι συσκευές δε θα χρειάζονταν μια κεντρική οντότητα. Αντιθέτως, θα δρουν αυτόνομα προωθώντας τα αντίστοιχα δεδομένα μεταξύ τους. Πρέπει να σημειωθεί εδώ ότι οι ανάγκες σε ενέργεια για τις διάφορες συσκευές με κάρτες που υποστηρίζουν τα πρότυπα IEEE 802.11 κυμαίνονται μεταξύ 2.06W και 0.14W όταν αυτές είναι σε αναμονή. Το τελευταίο αυτό χαρακτηριστικό αποτελεί και το βασικότερο μειονέκτημα της συγκεκριμένης τεχνολογίας όσον αφορά την ευρεία χρησιμοποίησή της στα έξυπνα σπίτια. Και αυτό γιατί οι αισθητήρες που αποτελούν βασικό συστατικό ενός έξυπνου σπιτιού δεν πρέπει να καταναλώνουν μεγάλα ποσά ενέργειας. Τη λύση σε αυτό το πρόβλημα τη δίνει η επόμενη τεχνολογία δικτύωσης έξυπνων σπιτιών, η τεχνολογία ZigBee. 1.2.4 ZigBee Είναι βασισμένη στο πρότυπο IEEE 802.15.4 και όπως και άλλες προαναφερθείσες ασύρματες τεχνολογίες λειτουργεί στο φάσμα ISM των 2.4GHz και έχει εμβέλεια μετάδοσης μέχρι 100 μέτρα με μέγιστη ταχύτητα τα 250 Kbps. To ZigBee μπορεί να λειτουργήσει και στις συχνότητες των 868MHz, καθώς και των 915ΜHz. Ο στόχος του ZigBee είναι να παρέχει επικοινωνιακές δυνατότητες σε συσκευές ελέγχου και αισθητήρες που δεν χρειάζονται μεγάλο εύρος ζώνης, αλλά απαιτούν μεγάλους χρόνους αυτόνομης λειτουργίας (με χρήση μπαταριών συνήθως), καθώς και ευέλικτες τοπολογίες δικτύου. Για να καταστεί δυνατή η κατασκευή των συσκευών που έχουν χαμηλότερες απαιτήσεις σε ενέργεια, οι συσκευές ZigBee βγαίνουν σε δύο ξεχωριστές εκδόσεις: συσκευές πλήρους λειτουργικότητας (FFD Full Function Devices), καθώς και συσκευές μειωμένης λειτουργικότητας (RFD Reduced Function Devices). Οι πρώτες συσκευές είναι πάντα ενεργοποιημένες με αποτέλεσμα να καταναλώνουν πολύ περισσότερη ενέργεια από τις δεύτερες που συνήθως τίθενται αυτόματα σε αναμονή (sleep mode) και μεταδίδουν δεδομένα μόνο όταν υπάρξει κάποιο συμβάν. Οι συσκευές RFD μπορούν να λειτουργήσουν μόνο ως τερματικά σημεία (end points) ενός δικτύου και χρειάζονται τουλάχιστον μια συσκευή FFD για να επικοινωνήσουν. Αυτό σημαίνει ότι ένα δίκτυο με μια συσκευή FFD και με πολλαπλές RFD μπορεί να δημιουργήσει μόνο σε τοπολογία αστέρα, όπου όλες οι RFD συνδέονται σε μια κεντρική συσκευή. Ωστόσο, με τη χρήση πολλαπλών FFD μπορούμε να έχουμε και ένα δίκτυο mesh ή ένα δίκτυο peer-to-peer. Σε αυτά τα δίκτυα οι συσκευές FFD δρουν ως δρομολογητές που μεταδίδουν δεδομένα μεταξύ κλάδων του δικτύου, με μια FFD να συμπεριφέρεται ως ο συντονιστής του δικτύου. Η τεχνολογία ZigBee, λοιπόν, έρχεται να λύσει το πρόβλημα της κατανάλωσης ενέργειας και χρησιμοποιείται ευρέως στην ασύρματη δικτύωση 12

των έξυπνων σπιτιών σε συνδυασμό βέβαια και με άλλες τεχνολογίες. 1.2.5 RFID Το RFID χρησιμοποιείται ως όρος για να περιγράψει τεχνολογία που σκοπό έχει την ταυτοποίηση αντικειμένων μέσα από τη χρήση ραδιοκυμάτων. Ένα τυπικό σύστημα αποτελείται από τρία μέρη: μια συσκευή RFID, έναν αναγνώστη RFID με μια κεραία και μια υπάρχουσα σύνδεση σε ένα σύστημαhost. Σήμερα οι συσκευές RFID είναι περισσότερο γνωστές ως «tags». Συνήθως ανήκουν σε δύο κατηγορίες: ενεργά ή παθητικά tags. Τα ενεργά έχουν τη δική τους παροχή ενέργειας, ενώ τα παθητικά δουλεύουν με την ενέργεια που αποστέλλεται από τον αναγνώστη RFID. Τα ενεργητικά έχουν δυνατότητα ανάγνωσης, αλλά και εγγραφής, ενώ τα παθητικά είναι μόνο για ανάγνωση. Ακόμη υπάρχουν και ημιπαθητικά tags που έχουν δική τους παροχή ενέργειας για το εσωτερικό τους κύκλωμα, αλλά χρησιμοποιούν και ενέργεια από τον αναγνώστη RFID όποτε κάτι τέτοιο είναι δυνατό. Σε σχέση με την έρευνα για το έξυπνο σπίτι τα RFID tags χρησιμοποιούνται περισσότερο για την ταυτοποίηση των χρηστών μέσα στο σπίτι και την παροχή ανάλογων υπηρεσιών. Για παράδειγμα το 2004 η Samsung παρουσίασε μία υλοποίηση έξυπνης συσκευής η οποία υπενθύμιζε στους κατοίκους του σπιτιού την ατζέντα τους κάθε φορά που άνοιγαν την εξώπορτα. Η συσκευή ήξερε ποιος ήταν στην εξώπορτα κάθε φορά και επίσης γνώριζε πληροφορίες όπως η ημερομηνία, η ώρα και τα περιεχόμενα της ηλεκτρονικής τους ατζέντας. Το δυνατό σημείο της συγκεκριμένης υλοποίησης ήταν η αναγνώριση των χρηστών, γεγονός που επιτεύχθηκε με χρήση RFID tags που έφερε πάνω του ο κάθε χρήστης. 1.3 Ιδέα- Σύστημα προς υλοποίηση Σε όλους μας έχει συμβεί να έχουμε φύγει από το σπίτι μας και να αναρωτιόμαστε αν έχουμε ξεχάσει αναμμένο τον φούρνο, το μάτι της κουζίνας, τα φώτα κ.τ.λ. Επίσης, πόσες φορές δεν έχουμε ευχηθεί να μπορούσαμε να ανάψουμε τον θερμοσίφωνα του σπιτιού μας από μακριά ώστε όταν επιστρέψουμε να μας περιμένει ζεστό νερό. Όλα τα παραπάνω αποτέλεσαν την αφορμή για την ενασχόληση μου με μια εφαρμογή οικιακού αυτοματισμού στα πλαίσια της διπλωματικής μου εργασίας. Ο στόχος που τέθηκε ήταν : «Η υλοποίηση ενός οικιακού αυτοματισμού από την αρχή μέχρι το τέλος, χωρίς υπάρχουσα υποδομή» Το μοντέλο προς υλοποίηση (Σχήμα 2) έχει ως εξής: Ο τελικός χρήστης 13

χρησιμοποιώντας τερματικές συσκευές - όπως για παράδειγμα έναν υπολογιστή ή ένα κινητό τηλέφωνο - θα έχει πρόσβαση και θα ελέγχει μέσω internet κάποιες οικιακές συσκευές. Σχήμα 2. Μοντέλο προς υλοποίηση 14

Για την πιλοτική υλοποίηση αυτής της ιδέας γίνεται χρήση ενός μικροελεγκτή arduino ο οποίος αποτελεί και την «καρδιά» του αναπτυχθέντος συστήματος, καθώς και ομάδα αισθητήρων που θα αναφερθούν αναλυτικά παρακάτω. 1.3.1 Arduino Το Arduino αποτελεί μια υπολογιστική πλατφόρμα βασισμένη σε μια απλή μητρική πλακέτα που διαθέτει έναν ενσωματωμένο μικροελεγκτή και εισόδους/εξόδους η οποία μπορεί να προγραμματιστεί με τη γλώσσα Wiring (ουσιαστικά πρόκειται για τη C++ με κάποιες μετατροπές). Το Arduino μπορεί να χρησιμοποιηθεί για την ανάπτυξη ανεξάρτητων διαδραστικών αντικειμένων και έχει τη δυνατότητα σύνδεσης με υπολογιστή μέσω προγραμμάτων σε Processing, Max/MSP, Pure Data, SuperCollider. Εικόνα 3- Πλακέτα Arduino 1.3.2 Ιστορική Αναδρομή Arduino Το 2005, ξεκίνησε ένα σχέδιο προκειμένου να φτιαχτεί μία συσκευή για τον έλεγχο προγραμμάτων διαδραστικών σχεδίων από μαθητές, η οποία θα κόστιζε λιγότερο σε σχέση με άλλα πρωτότυπα συστήματα που ήταν διαθέσιμα εκείνη την χρονική περίοδο. Οι Massimo Banzi και David Cueartielles ονόμασαν το έργοarduino της Ivrea και ξεκίνησαν να παράγουν πλακέτες σε ένα μικρό εργοστάσιο στην Ivrea, κωμόπολη της επαρχίας Τορίνο στην περιοχή Πεδεμόντιο της βορειοδυτικής Ιταλίας - την ίδια περιοχή στην οποία στεγαζόταν η εταιρία υπολογιστών Olivetti. 15

Το Arduino δομήθηκε γύρω από το έργο Wiring του Hernando Barragan. ΤοWiring ήταν η ακαδημαϊκή εργασία του Hernando στο Interaction Design Institute της Ivrea. Σκόπευε να ήταν μια ηλεκτρονική μορφή της επεξεργασίας που χρησιμοποιούνταν στα προγραμματιστικά περιβάλλοντα και είχε ως πρότυπο την Processing syntax. Τον Σεπτέμβρη του 2006ανακοινώθηκε το Arduino Mini Τον Οκτώβρη του 2008 ανακοινώθηκε ανακοινώθηκε το Arduino Duemilanove. Αρχικά βασίστηκε στο Atmel Atmega168, αλλά μετά στάλθηκε με το ATmega328. Τον Μάρτη του 2009 ανακοινώθηκε το Arduino Mega. Ήταν βασισμένο στο Atmel ATmega1280. Από τον Μάη του 2011 περισσότερα από 300,000 Arduino ήταν σε χρήση σε όλο τον κόσμο. Τον Ιούλη του 2012, ανακοινώθηκε το Arduino Leonardo. Ήταν βασισμένο στο Atmel ATmega32u4. Τον Οκτώβριο του 2012, ανακοινώθηκε το Arduino Due. Ήταν βασισμένο στο Atmel SAM3X8E, που είχε πυρήνα ARM Cortex- M3. Τον Νοέμβριο του 2012 ανακοινώθηκε το Arduino Micro. Ήταν βασισμένο στο Atmel ATmega32u4. Τον Μάη του 2013ανακοινώθηκε το Arduino Robot. Ήταν βασισμένο στο Atmel ATmega32u4 και ήταν το πρώτο επίσημο Arduino με ρόδες. Τον Μάη του 2013 ανακοινώθηκε το Arduino Yun. Ήταν Βασισμένο στο ATmega32u4 και στο Atheros AR9331 και ήταν το πρώτο προϊόν wifi που συνδύαζε το Arduino με την Linux. 16

1.3.3 Η πλατφόρμα Arduino Μία πλακέτα Arduino αποτελείται από ένα μικροελεγκτή Atmel AVR (ATmega328 και ATmega168 στις νεότερες εκδόσεις, ATmega8 στις παλαιότερες) και συμπληρωματικά εξαρτήματα για την διευκόλυνση του χρήστη στον προγραμματισμό και την ενσωμάτωση του σε άλλα κυκλώματα. Όλες οι πλακέτες περιλαμβάνουν ένα γραμμικό ρυθμιστή τάσης 5V και έναν κρυσταλλικό ταλαντωτή 16MHz (ή κεραμικό αντηχητή σε κάποιες παραλλαγές). Ο μικροελεγκτής είναι προγραμματισμένος από τον κατασκευή του με ένα bootloader, έτσι ώστε να μην χρειάζεται εξωτερικός προγραμματιστής. Γενικά όλες οι πλακέτες είναι προγραμματισμένες μέσω μιας σειριακής σύνδεσης RS-232, αλλά ο τρόπος με τον οποίο αυτό υλοποιείται ποικίλει ανάλογα με την έκδοση. Οι σειριακές πλακέτες Arduino περιέχουν ένα απλό κύκλωμα αντιστροφής για την μετατροπή ανάμεσα στα σήματα των επιπέδων RS-232 και TTL. Οι πλακέτες Arduino που κυκλοφορούν σήμερα στην αγορά, συμπεριλαμβανόμενης και της Diecimila, προγραμματίζονται μέσω USB, εφαρμόζοντας ένα τσιπ προσαρμογέα USB-to-serial όπως το FTDI FT232. Κάποιες παραλλαγές, όπως το Arduino mini και το ανεπίσημο Boarduino, χρησιμοποιούν προσαρμογέα USB-to-serial σε μορφή πλακέτας ή καλωδίου. Η πλακέτα του Arduino έχει εκτεθειμένες τις περισσότερες επαφές εισόδου/εξόδου για χρήση με άλλα κυκλώματα. Το Diecimila, για παράδειγμα, παρέχει 14 ψηφιακές επαφές εισόδου/εξόδου, από τις οποίες οι 6 μπορούν να παράγουν σήματα PWM, και 6 αναλογικές εισόδους. Αυτές οι επαφές είναι διαθέσιμες στην κορυφή της πλακέτας μέσω θηλυκών συνδέσεων μεγέθους 0,1 ιντσών. 17

Επίσης είναι διαθέσιμες στο εμπόριο διάφορες plug-in πλακέτες εφαρμογών γνωστές σαν shields («επεκτάσεις»). Εικόνα 4 - Πλακέτα Εφαρμογής 1.3.4 Επεκτάσεις Arduino Η πλατφόρμα του arduino κατασκευάστηκε με σκοπό να μπορεί με χαμηλό κόστος να μπορεί ο εκάστοτε χρήστης ανάλογα με τις απαιτήσεις του να την τροποποιεί. Αυτό επιτυγχάνεται μέσω των επεκτάσεων που τοποθετούνται απλά πάνω στην πλατφόρμα και δίνουμε νέες δυνατότητες στην πλατφόρμα, όπως σύνδεση στο διαδίκτυο (μέσω Ethernet, wi-fi ή GSM) διαχείριση μοτέρ ισχύος, επέκταση αποθηκευτικού χώρου μέσω καρτών SD ή usb, καθώς και πολλές άλλες δυνατότητες ανάλογα τιε επιθυμίες του χρήστη. Το θετικό είναι ότι δεν υπάρχει περιορισμός στην χρήση των επεκτάσεων μέρος των οποίων παρουσιάζεται αναλυτικά παρακάτω. Arduino GSM Shield Το Arduino GSM shieldεπιτρέπει στο Arduino να συνδεθεί στο διαδίκτυο, εκτελεί και λαμβάνει φωνητικές κλήσεις και αποστέλλει/λαμβάνει μηνύματα SMS. Για τη διασύνδεση με το δίκτυο κινητής τηλεφωνίας, απαιτείται η ύπαρξη μιας κάρτας SIM που παρέχεται από τον λειτουργό του δικτύου. 18

Το Παγκόσμιο Σύστημα Κινητών Επικοινωνιών (Global System for Mobile communications συντ. GSM) που χρησιμοποιεί για τη διασύνδεση είναι ένα κοινό Ευρωπαϊκό ψηφιακό σύστημα κινητής τηλεφωνίας. Το GSM είναι ένα κυψελοειδές ψηφιακό σύστημα κινητής τηλεφωνίας δεύτερης γενιάς (2G). Χρησιμοποιεί ηλεκτρομαγνητικά σήματα και την τεχνική πολλαπλής πρόσβασης με διαχωρισμό του διαθέσιμου φάσματος συχνοτήτων σε ένα πλήθος καναλιών και την διαίρεση αυτών σε χρονοθυρίδες για την μετάδοση των σημάτων. Εικόνα 5 Arduino GSM Shield Arduino Ethernet Shield Το Arduino Ethernet shield συνδέει το Arduino στο διαδίκτυο σε λίγα λεπτά. Συνδέοντας απλώς αυτό το shieldστο Arduino μπορείτε να συνδεθείτε στο δίκτυο με ένα καλώδιο. Επιπλέον δίνει την δυνατότητα επέκτασης μνήμης μέσω του ενσωματωμένου microsd cardslot ώστε ο χρήστης να έχει τη δυνατότητα να κάνει διαμοιρασμό των αρχείων που έχει αποθηκεύσει στην κάρτα μνήμης, μέσω δικτύου. Τα τεχνικά χαρακτηριστικά του shield είναι: Ethernet Controller: W5100 με εσωτερική 16K ρυθμιστικό Ταχύτητα σύνδεσης: 10/100Mb Σύνδεση με Arduino στη θύρα SPI. 19

Onboard micro-sd card slot Εικόνα 6 Arduino Ethernet Shield Arduino WiFi Shield Το Arduino WiFi συνδέει το Arduino στο διαδίκτυο με ασύρματο τρόπο. Η λογική είναι η ίδια με αυτή του Ethernet shield απλά στην προκειμένη περίπτωση συνδεόμαστε ασύρματα στο δίκτυο. 20

Τα τεχνικά χαρακτηριστικά του shield είναι: Σύνδεση μέσω: 802.11b/g δίκτυα Τύποι κρυπτογράφησης: WEP και WPA2 Personal Σύνδεση με Arduino στη θύρα SPI Σύνδεση FTDI για σειριακό εντοπισμό σφαλμάτων του WiFi Mini-USB για την ενημέρωση WiFi ασπίδα firmware. Εικόνα 7- Arduino WiFi Shield Wireless SD Shield Το Wireless SD shield επιτρέπει στο Arduino την ασύρματη επικοινωνία, χρησιμοποιώντας μια ασύρματη μονάδα. Βασίζεται στις ενότητες Xbee από την Digi, αλλά μπορεί να χρησιμοποιήσει οποιαδήποτε ενότητα με το ίδιο αποτύπωμα. Η μονάδα μπορεί να επικοινωνήσει μέχρι 100 μέτρα σε εσωτερικούς χώρους ή 300 πόδια σε εξωτερικούς χώρους (με line-of-sight). Μπορεί να χρησιμοποιηθεί ως αντικατάσταση σειριακή/usb. Εικόνα 8 Arduino Wireless SD Shield Arduino USB Host Shield 21

Το Arduino USB Host Shield επιτρέπει να συνδεθεί μια συσκευή USB στο Arduino. Βασίζεται στον ελεγκτή MAX3421E ο οποίος είναι ένας ελεγκτής USB περιφερειακών/υποδοχής που περιέχει την ψηφιακή λογική και το αναλογικό κύκλωμα που απαιτείται για την εφαρμογή full-speed USB περιφερειακών ή πλήρους υποδοχής/χαμηλής ταχύτητας συμβατές με USB προδιαγραφές rev 2.0. Το shield είναι TinkerKit συμβατό, πράγμα που σημαίνει ότι μπορείτε να δημιουργήσετε γρήγορα κάποιο έργο, συνδέοντας μονάδες TinkerKit πάνω στην πλακέτα. Οι ακόλουθες κατηγορίες συσκευών υποστηρίζονται από το shield: HID συσκευές: πληκτρολόγια, ποντίκια, χειριστήρια, κλπ. Ελεγκτές παιχνιδιών: Sony PS3, Nintendo Wii, Xbox360. USB σε σειριακή μετατροπείς: FTDI, PL-2303, ACM, καθώς και ορισμένα κινητά τηλέφωνα και δέκτες GPS. ADK-ικανό Android τηλέφωνα και τραπέζια. Ψηφιακές φωτογραφικές μηχανές: Canon EOS, Powershot, Nikon φωτογραφικές μηχανές DSLR και P & S, καθώς και γενικές PTP. Συσκευές μαζικής αποθήκευσης: USB sticks, συσκευές ανάγνωσης καρτών μνήμης, εξωτερικοί σκληροί δίσκοι, κλπ Dongles Bluetooth. Το Arduino επικοινωνεί με το MAX3421E χρησιμοποιώντας τον δίαυλο SPI (μέσα από την επικεφαλίδα ICSP). Εικόνα9 Arduino USB Host Shield 22

Arduino Motor Shield Το Arduino Motorshield βασίζεται στο L298, το οποίο είναι μια γέφυραδιπλού οδηγού σχεδιασμένη για να οδηγεί επαγωγικά φορτία όπως relay, πηνία, DC και step-up κινητήρες. Αυτό επιτρέπει την οδήγηση δύο κινητήρων συνεχούς ρεύματος με Arduino, ελέγχοντας ξεχωριστά την ταχύτητα και την κατεύθυνση του καθενός.επίσης, έχει τη δυνατότητα να μετρήσει το ρεύμα απορρόφησης κάθε κινητήρα, μεταξύ άλλων χαρακτηριστικών γνωρισμάτων. Εικόνα 10 Arduino Motor Shield Κεφάλαιο 2 ο Υλοποίηση Συστήματος 2.1 Θεωρητική ανάλυση Η προσέγγιση που ακολουθήθηκε στην παρούσα διπλωματική εργασία είναι η υλοποίηση απομακρυσμένου ελέγχου οικιακών συσκευών μέσω σημείων πρόσβασης στο internet. Το διάγραμμα ενός τέτοιου συστήματος φαίνεται στο Σχήμα 2.1. 23

Σχήμα2.1Διάγραμμα του Συστήματος Στα πλαίσια της εργασίας επελέγη η υλοποίηση ενός συστήματος βασισμένου σε μικροελεγκτή, ο οποίος θα ελέγχει δύο συσκευές και θα διαβάζει μέσω ενός αισθητήρα τη θερμοκρασία του χώρου. Η επικοινωνία με τον μικροελεγκτή θα γίνεται μέσω της σειριακής του θύρας (UART-Universal Asynchronous Receiver/Transmitter). Μια ξεχωριστή περιφερειακή συσκευή (Διεπαφή-TCP) θα πραγματοποιεί «διαφανή» επικοινωνία του μικροελεγκτή με το modem/router του σπιτιού. Γίνεται φανερό λοιπόν ότι η ανάπτυξη του προαναφερθέντος συστήματος χωρίζεται σε τέσσερα στάδια: 1. Επιλογή Αναπτυξιακού Προγραμματισμός του Μικροελεγκτή 2. Επιλογή διεπαφής UART TCP Ρυθμίσεις 3. Ανάπτυξη εφαρμογών τελικού χρήστη: Εφαρμογή για PC Windows Εφαρμογή για κινητό Android Όπως προκύπτει από το διάγραμμα του συστήματος, αλλά και από την περιγραφή του, το σύστημα είναι πλήρως επεκτάσιμο οι συσκευές που μπορούν να ελεγχθούν από τον χρήστη δεν είναι μόνο δύο, αλλά όσες αυτός επιθυμεί. Επίσης, εκτός από τον αισθητήρα θερμοκρασίας, μπορεί να χρησιμοποιηθεί οποιοσδήποτε αισθητήρας (υγρασίας, πίεσης κ.λπ.) ανάλογα με τις απαιτήσεις του χρήστη. Με μικρές τροποποιήσεις στη συνδεσμολογία και στο λογισμικό που αναπτύχθηκε (κώδικας μικροελεγκτή, εφαρμογές τελικού χρήστη) μπορεί κάποιος να τροποποιήσει το παραπάνω σύστημα στις δικές του ανάγκες. 24

2.2 Αναπτυξιακό Μικροελεγκτή 2.2.1 Μικροελεγκτές - Γενικά Η σχεδίαση ενός μικροϋπολογιστικού συστήματος, ενός συστήματος δηλαδή βασισμένο σε μικροεπεξεργαστή, ο οποίος ελέγχει μια πληθώρα από περιφερειακές συσκευές, περιλαμβάνει, το ολοκληρωμένο κύκλωμα του μικροεπεξεργαστή και τις περιφερειακές συσκευές όπως μνήμες, συσκευές εισόδου/εξόδου, αισθητήρες κ.τ.λ. Η σύνδεση και ο συγχρονισμός των διαφόρων συσκευών με τον μικροεπεξεργαστή καθιστά πολύπλοκη τη σχεδίαση του συστήματος. Μια λύση στο πρόβλημα θα ήταν να υπήρχε ένα ολοκληρωμένο κύκλωμα, το οποίο να ενσωματώνει κάποιες απαραίτητες περιφερειακές συσκευές. Ένα τέτοιο κύκλωμα είναι ο μικροελεγκτής (microcontroller) (Σχήμα 3). Σχήμα 3. Σχέση μικροεπεξεργαστή με μικροελεγκτή Ένας μικροελεγκτής έχει ενσωματωμένη μνήμη και θύρες Εισόδου/Εξόδου (I/O), ενώ αντίθετα σε ένα μικροεπεξεργαστή χρειάζεται να συνδέσουμε τα παραπάνω σαν πρόσθετα περιφερειακά κυκλώματα. Οι μικροελεγκτές είναι το κύριο στοιχείο σε πολλά είδη ηλεκτρονικού εξοπλισμού. Ένα τυπικό σπίτι στο δυτικό κόσμο είναι πιθανό να περιλαμβάνει μόνο έναν ή δύο γενικού σκοπού μικροεπεξεργαστές, αλλά περισσότερους από είκοσι μικροελεγκτές. Μικροελεγκτές απαντώνται σε οποιονδήποτε τύπο ηλεκτρικής συσκευής, πλυντήρια ρούχων, φούρνους μικροκυμάτων, τηλέφωνα κ.λπ. 25

Οι περισσότεροι μικροελεγκτές βασίζονται στην αρχιτεκτονική Von Neumann, η οποία καθόρισε σαφώς τα τέσσερα βασικά συστατικά που απαιτoύνται για ένα ψηφιακό σύστημα. Αυτά περιλαμβάνουν έναν επεξεργαστικό πυρήνα (CPU), τη μνήμη για το πρόγραμμα και τα δεδομένα (RAM), χώρο μόνιμης αποθήκευσης (FLASH σε έναν Μικροελεγκτή), καθώς επίσης και τις θύρες I/O για επικοινωνία με εξωτερικές περιφερειακές μονάδες - όλο αυτά σε ένα ενιαίο ολοκληρωμένο κύκλωμα. Εικόνα 1 : Ο PIC της MICROCHIP Εικόνα 2 : Ο AT91 της ATMEL Οι μικροελεγκτές συνήθως περιλαμβάνουν θύρες Ι/Ο για σύνδεση με ποικίλες συσκευές εισόδου/εξόδου, όπως αναλογικές (με ενσωματωμένους μετατροπείς από αναλογικό σε ψηφιακό), UARTs ή ειδικευμένα σειριακά interface επικοινωνιών όπως το I²C, το SPI και το Controller Area Network (CAN). Μερικοί σύγχρονοι μικροελεγκτές έχουν ενσωματωμένη και μία υψηλού επιπέδου γλώσσα προγραμματισμού όπως η BASIC. 2.2.2 Αναπτυξιακό Arduino Uno AVR ATmega328p Στο σύστημα που υλοποιήθηκε χρησιμοποιήθηκε ο μικροελεγκτής AVR της ATMEL, και ειδικότερα ο ATmega328p, λόγω των πολλών δυνατοτήτων του, αλλά και της χαμηλής τιμής του. Εικόνα 3 : Ο ATmega328p Τα βασικά χαρακτηριστικά του συγκεκριμένου μικροελεγκτή είναι: Αναβαθµισµένη RISC αρχιτεκτονική 26

131 ολύ ισχυρές εντολές οι ερισσότερες ααιτούν µόνο ένα κύκλο ρολογιού για την εκτέλεση τους 32 καταχωρητές µεγέθους 8-bit γενικής χρήσης Μέχρι 20 MIPS στα 16MHz On chip ολλαλασιαστής 2 κύκλων Μνήµη ρογράµµατος και δεδοµένων 32 KB Αυτορογραµµατιζόµενη µνήµη flash 1 KB EEPROM µνήµη 2 KB εσωτερική SRAM Πλήθος εριφερειακών 2 timers 8-bit µε ξεχωριστά ρολόγια 1 timer 16-bit µε ξεχωριστό ρολόι Μετρητής ραγµατικού χρόνου µε εξωτερικό κρύσταλλο 14 γραµµές για ψηφιακή είσοδο/έξοδο (6 εκ των οοίων υοστηρίζουν PWM) 6 γραµµές για αναλογική είσοδο (µε 10-bit αναλογο-ψηφιακό µετατρο έα ADC) Master/Slave SPI λειτουργία Σειριακή θύρα µε δυνατότητες σύγχρονης και ασύγχρονης λειτουργίας Watchdog timer µε ξεχωριστό κρύσταλλο On-chip αναλογικό συγκριτή Ειδικά χαρακτηριστικά Reset αυτόµατα µε την τροφοδότηση Εσωτερικό ρολόι Εσωτερικές και εξωτερικές διακο ές 6 sleep modes για εξοικονόµηση ενέργειας Ταχύτητα έως 16MHz Το αναπτυξιακό που επιλέχθηκε για την υλοποίηση του συστήματος και ενσωματώνει τον ATmega328p είναι το Arduino Uno. Εικόνα 4 : Arduino Uno (Οι δύο όψεις του) Πρόκειται για μια ηλεκτρονική πλατφόρμα ανοιχτού λογισμικού. Μπορεί να χρησιμοποιηθεί από οποιονδήποτε που ενδιαφέρεται να δημιουργήσει διαδραστικές εφαρμογές. Μπορεί να δεχθεί σαν είσοδο μια ποικιλία από αναλογικά ή ψηφιακά σήματα και να ελέγχει σύμφωνα με τα σήματα αυτά 27

κάποιες περιφερειακές συσκευές που θα είναι συνδεδεμένες σε αυτόν, όπως LEDs, διακόπτες, κινητήρες κ.τ.λ. Ο μικροελεγκτής του προγραμματίζεται χρησιμοποιώντας την γλώσσα προγραμματισμού Arduino (βλέπε παράρτημα 1). Στην παρακάτω εικόνα (Εικόνα 5) φαίνεται η αντιστοίχηση των ακροδεκτών (pins) του ολοκληρωμένου κυκλώματος του μικροελεγκτή με τους ακροδέκτες του αναπτυξιακού -Arduino Uno. Εικόνα 5 : Pin Mapping Βασικά χαρακτηριστικά του Arduino Uno - Ψηφιακά pins (Digital Pins) Το Arduino Uno έχει 14 ψηφιακά pins (Εικόνα 6) τα οποία μπορούν να οριστούν είτε σαν είσοδοι, είτε σαν έξοδοι. Από τα 14 αυτά ψηφιακά pins κάποια εκτός από τη λειτουργία Ι/Ο έχουν και άλλες επιπρόσθετες λειτουργίες : Digital pins 1, 2 : για σειριακή εικοινωνία UART Digital pins 3, 5, 6, 9, 10, 11 : PWM (Pulse Width Modulation), για να έχουµε ψηφιακούς αλµούς µεταβλητού λάτους (βλέε αράγραφο PWM). Είναι σημαντικό επίσης, να αναφερθεί ότι και οι αναλογικές είσοδοι (analog inputs) μπορούν να χρησιμοποιηθούν σαν ψηφιακά pins. 28

Εικόνα 6 : Digital pins Ιδιότητες των pins που ορίζονται σαν είσοδοι (INPUT) Όλα τα pins του μικροελεγκτή λειτουργούν εξ ορισμού σαν είσοδοι, οπότε δεν χρειάζεται να δηλώνεται η συγκεκριμένη λειτουργία στον κώδικα του μικροελεγκτή. Αυτό σημαίνει ότι η κατάσταση μιας εισόδου μπορεί να αλλάξει και από κάποια τυχαία αιτία. Κάτι τέτοιο βέβαια εγκυμονεί κινδύνους. Για παράδειγμα, αν ένα pin είναι στον αέρα ή είναι συνδεδεμένο με ένα μη οδηγούμενο καλώδιο, μπορεί ανά πάσα στιγμή, λόγω εξωτερικού θορύβου, στατικού ηλεκτρισμού, επιρροής πεδίου κ.τ.λ να αλλάξει η κατάστασή του. Όπως είναι φυσικό αυτό αποτελεί μια ανεπιθύμητη λειτουργία. Γι αυτό λοιπόν ένα pin εισόδου τοποθετείται σε μια γνωστή κατάσταση αν δεν οδηγείται από κάποιο σήμα εισόδου. Αυτό μπορεί να επιτευχθεί τοποθετώντας μια αντίσταση (pullup) μεταξύ του pin και της γραμμής τροφοδοσίας του μικροελεγκτή. Συγκεκριμένα, τοποθετούνται εσωτερικά σε κάθε pin αντιστάσεις 20ΚΩ, οι οποίες ενεργοποιούνται ή απενεργοποιούνται προγραμματιστικά κλείνοντας ή ανοίγοντας ένα διακόπτη. Με αυτόν τον τρόπο αποφεύγουμε ανεπιθύμητες εισόδους. Ιδιότητες των pins που ορίζονται σαν έξοδοι (OUTPUT) Τα pins που ορίζονται ως έξοδοι μπορούν να οδηγήσουν ένα κύκλωμα που θα συνδεθεί σε αυτά. Τα pins του Atmega μπορούν να δώσουν μέχρι 40mA σε κάποιο κύκλωμα. Αυτό είναι αρκετό να ανάψει ένα LED ή να ενεργοποιηθούν κάποιοι αισθητήρες, αλλά δεν επαρκεί να ενεργοποιηθούν ρελέ ισχύος ή κινητήρες. Γι αυτό το λόγο συνιστάται να συνδέεται σε κάθε έξοδο μια αντίσταση 470Ω ή 1ΚΩ για προστασία του μικροελεγκτή. Σε αντίθετη περίπτωση μπορεί να έχουμε καταστροφή κάποιου pin του μικροελεγκτή. - Αναλογικά pins (Analog Input Pins) A/D Converter Το Arduino board έχει 6 γραμμές για αναλογική είσοδο, σε καθεμία από τις οποίες συνδέεται ένας μετατροπέας από αναλογικό σε ψηφιακό (Analog to Digital Converter - ADC). Ο κάθε μετατροπέας έχει 10 bit ανάλυσης, με αποτέλεσμα να επιστρέφει ακεραίους από 0 έως 1023, ενώ η βασική λειτουργία των αναλογικών pins είναι να διαβάζουν αναλογικές εισόδους π.χ. αισθητήρες. Μπορούν επίσης να χρησιμοποιηθούν σαν ψηφιακές γραμμές εισόδου/εξόδου γενικού σκοπού, όπως ακριβώς και τα pins 0-13. 29

Εικόνα 7 : Analog input pins Διαμόρφωση Πλάτους Παλμών (PWM) Η διαμόρφωση Πλάτους Παλμών, PWM, μας δίνει τη δυνατότητα να παράγουμε ψηφιακούς παλμούς μεταβλητού πλάτους. Η διάρκεια που ο παλμός είναι στο λογικό «1» (5V) ονομάζεται πλάτος του παλμού (pulse width), ενώ το ποσοστό του πλάτους του παλμού στο διάστημα μιας περιόδου ονομάζεται duty cycle (Σχήμα 4). Ο ATmega που φιλοξενεί το Arduino board μας δίνει τη δυνατότητα να μεταβάλλουμε το duty cycle των παλμών εξόδου στις PWM ψηφιακές γραμμές. Η χρησιμότητα των γραμμών με δυνατότητα παραγωγής παλμών μεταβλητού πλάτους θα γίνει αντιληπτή από το ακόλουθο παράδειγμα: δίνοντας παλμούς με μεταβαλλόμενο duty cycle σε ένα LED, το αποτέλεσμα θα είναι να αλλάζει η φωτεινότητα του LED σαν να οδηγούνταν από μια αναλογική τάση μεταξύ 0-5 Volt. Χρησιμοποιώντας δηλαδή PWM παλμούς μπορούμε να πάρουμε αναλογικό αποτέλεσμα (έξοδο) από ψηφιακούς παλμούς (τους PWM). Σχήμα 4. Πλάτος παλμού - Προγραμματίζοντας το Arduino - Δομή ενός σχεδίου (Sketch) Η λέξη Sketch (σχέδιο) χρησιμοποιείται για να δηλώσει την έννοια του προγράμματος σε ένα Arduino board. 30

Η βασική δομή ενός σχεδίου είναι: - Η λειτουργία setup(), η οοία καλείται στην αρχή κάθε σχεδίου. Σε αυτή δηλώνονται οι µεταβλητές, οι βιβλιοθήκες, οι λειτουργίες των pins κ.τ.λ. Εκτελείται µόνο µία φορά, όταν ενεργοοιείται το Arduino board ή µετά αό κάοιο reset. - Η λειτουργία loop() εκτελείται µετά την setup() και όως δηλώνει και το όνοµά της, εκτελείται συνέχεια. Ουσιαστικά µεταξύ των άγκιστρων της λειτουργίας loop() ρέει να τοοθετήσουµε το ρόγραµµα ου θέλουµε να εκτελεστεί. Παρακάτω φαίνεται αυτή η δομή: void setup() { //Εδώ γίνονται οι δηλώσεις του προγράµµατος και εκτελείται µια φορά. } void loop() { //Εδώ γράφεται το κυρίως πρόγραµµα και εκτελείται επαναλαµβανόµενα } 2.2.3 Συνδεσμολογία Arduino Uno Το πρώτο στάδιο της υλοποίησης του συστήματος, έπειτα από την επιλογή της πλατφόρμας μικροελεγκτή, ήταν να συνδεθούν οι προς έλεγχο συσκευές και να προγραμματιστεί κατάλληλα ώστε να μας δίνει τα επιθυμητά αποτελέσματα. Τα υλικά που χρησιμοποιήθηκαν ήταν τα εξής: Breadboard 3 Αντιστάσεις (450Ω, 450Ω, 4,71ΚΩ) 2 κόκκινα LEDs (προσομοιώνουν τις συσκευές και θα αντικατασταθούν στη συνέχεια) 1 NTC 10K (Negative Temperature Coefficient Thermistor αισθητήρας θερμοκρασίας) Καλώδια για συνδέσεις Το breadboard ήταν η βάση πάνω στην οποία έγιναν όλες οι συνδεσμολογίες. Τα δύο LED χρησιμοποιήθηκαν αρχικά για να προσομοιώσουν τις προς έλεγχο συσκευές, ενώ το NTC (Negative Temperature Coefficient) χρησιμοποιήθηκε για να διαβάζει τη θερμοκρασία του χώρου σαν μια αναλογική τιμή. Οι δύο ψηφιακές έξοδοι που χρησιμοποιήθηκαν για τις δύο προς έλεγχο συσκευές ήταν τα 7 και 8 digital pins και η αναλογική είσοδος για τη θερμοκρασία, η Analog In 0. Η συγκεκριμένη συνδεσμολογία φαίνεται στο Σχήμα 5. 31

Σχήμα 5. Αρχική Συνδεσμολογία Το κάθε Led (συσκευή προς έλεγχο) συνδέεται σε σειρά με μια αντίσταση των 450Ω και ανάβει όταν η ψηφιακή έξοδος είναι ενεργοποιημένη (5V) ενώ σβήνει όταν η ψηφιακή έξοδος είναι απενεργοποιημένη (0V) (Σχήμα 6, α-β). Το NTC αντίστοιχα συνδέεται σε σειρά με την αντίσταση των 4,71ΚΩ σχηματίζοντας έναν διαιρέτη τάσης, ενώ η αναλογική είσοδος (Analog In 0) συνδέεται παράλληλα με την 4,71ΚΩ ώστε να διαβάζει την αλλαγή της τάσης στα άκρα της όταν αλλάζει η αντίσταση της, ως φυσικό επακόλουθο της αλλαγής της θερμοκρασίας του χώρου (Σχήμα 6, γ). Σχήμα 6. Ισοδύναμα κυκλώματα Η αντιστοίχιση της μεταβαλλόμενης αντίστασης του NTC σε σχέση με την αλλαγή της θερμοκρασίας του χώρου γίνεται με τύπους οι οποίοι προκύπτουν από την ανάλυση του ισοδύναμου κυκλώματος (Σχήμα 6, γ) καθώς και από το datasheet του NTC (Παράρτημα 3). Το ζητούμενο είναι να εξαχθεί η σχέση που θα συνδέει την αντίσταση του NTC (NTC_Res) με την τιμή που διαβάζει το Arduino στην αναλογική του είσοδο Analog In 0 (RawADC). 32

Αναλύοντας το ηλεκτρικό κύκλωμα του σχήματος 6,γ, για να υπολογίσουμε την τάση που έχει η αντίσταση των 4.71ΚΩ στα άκρα της χρησιμοποιούμε τη σχέση του διαιρέτη τάσης και έχουμε: V R 4.71K (1) Vcc 4.71 NTC _ Re s Επίσης, η τάση αυτή σε σχέση με την τιμή που διαβάζει η Analog In 0 είναι: V RawADC (2) Vcc R 1023 Από τις δύο παραπάνω σχέσεις προκύπτει: (1),(2) NTC _ Re s 4.71K 1023 4.71K (3) RawADC Αυτή η τιμή θα πρέπει να αντιστοιχίζεται με μια θερμοκρασία που να αντικατοπτρίζει τη θερμοκρασία του χώρου. Για να γίνει αυτός ο υπολογισμός πρέπει να συμβουλευτούμε τους πίνακες του NTC (Παράρτημα 3). Σύμφωνα λοιπόν με το φυλλάδιο του NTC o τύπος που κάνει αυτή την αντιστοίχηση είναι: ( A B ln NTC _ Re s C ln 2 NTC _ Re s D ln 3 NTC _ Re s ) 1 (4) NTC _ Re s 1 1 1 1 Όπου: R Re f R Re f R Re f - Α1, Β1, C1, D1 οι τιμές που προκύπτουν από τον πίνακα του NTC 10K (Παράρτημα 3) και - RRef = 10000Ω γιατί το NTC είναι 10ΚΩ Οι τύποι (3) και (4) θα πρέπει να ληφθούν υπόψη κατά τον προγραμματισμό του μικροελεγκτή ώστε να έχουμε τιμές θερμοκρασίας που να ανταποκρίνονται στην πραγματικότητα. 2.2.4 Προγραμματισμός Arduino Uno Για τον προγραμματισμό του Arduino Uno χρησιμοποιήθηκε η γλώσσα Arduino (Παράρτημα 1). Η φιλοσοφία του προγραμματισμού ήταν: Η επικοινωνία του χρήστη με τον μικροελεγκτή να γίνεται μέσω της σειριακής θύρας (UART), digital pins 0, 1. Ο χρήστης στέλνει ένα πακέτο από Ν bytes που αποτελείται από: Byte 1: 1 ή 0 (Μόνο αναφορά ή και ενέργεια) ή 9 (σύνδεση πρώτη φορά) Byte 2: Το πλήθος των bytes που είναι το password

Byte 3- (τιμή του Byte 2)+2: το password Δύο τελευταία Bytes οι ενέργειες που θέλουμε να κάνουμε (0/1 - ON/OFF) Ο μικροελεγκτής αφού επεξεργαστεί το πακέτο αυτό των Ν Bytes, θα πρέπει: - Να ελέγξει το password και αν δεν είναι σωστό να επιστρέψει κατάλληλο μήνυμα. Το password αποθηκεύεται στη μνήμη του μικροελεγκτή και χρησιμοποιείται ώστε να μην αποκτούν πρόσβαση στο σύστημα μη εξουσιοδοτημένοι χρήστες.

- Αν γίνει επαλήθευση του password να «δει» αν πρέπει μόνο να στείλει την κατάσταση των εξόδων του, δηλαδή των συσκευών (leds) που ελέγχει, (αναφορά- byte 1= 1 ) ή να εκτελέσει κάποια ενέργεια πρώτα (άναμμασβήσιμο ενός led) και έπειτα να στείλει την κατάσταση των εξόδων του. - Να υπολογίσει την τιμή της θερμοκρασίας που αντιστοιχεί στην αντίσταση του NTC, όπως αναφέρθηκε στην πιο πάνω παράγραφο. Παράδειγμα 1 ο : Ας υποθέσουμε ότι ο χρήστης επιθυμεί να δει μόνο την κατάσταση των συσκευών. Τότε θα πρέπει να στείλει το εξής πακέτο bytes: 14****xx (υποθέτοντας password μήκους 4 bytes). Ο μικροελεγκτής θα αναλύσει το πακέτο, θα κάνει επαλήθευση του password, θα υπολογίσει τη θερμοκρασία και θα στείλει πίσω την κατάσταση των εξόδων του. Συνεπώς θα στείλει: 11#18.4 (Υποθέτουμε ότι τα led είναι αναμμένα και η θερμοκρασία είναι 18.4 ο C). Παράδειγμα 2 ο : Ας υποθέσουμε ότι ο χρήστης επιθυμεί να σβήσει τις δύο συσκευές (Led 1, Led 2). Τότε θα πρέπει να στείλει το εξής πακέτο bytes: 04****00 (υποθέτοντας password μήκους 4 bytes). Ο μικροελεγκτής θα αναλύσει το πακέτο, θα κάνει επαλήθευση του password, θα υπολογίσει τη θερμοκρασία, θα ενεργήσει απενεργοποιώντας τις δύο εξόδους του και θα επιστρέψει την κατάσταση των εξόδων του. Συνεπώς θα στείλει: 00#18.4 (Τα Led έσβησαν και η θερμοκρασία είναι 18.4 ο C) Το σχέδιο (sketch) που γράφτηκε και φορτώθηκε στο Arduino Uno παρατίθεται παρακάτω. Ο κώδικας σχολιάζεται τμηματικά για την κατανόηση του σχεδίου (sketch) από τον αναγνώστη. #include <Arduino.h> // Η ακριβής τιμή της R2 #define R2 4712.0 // Τιμή του NTC στους 25 βαθμούς Celcius #define Rn 10000.0

// A, B, C και D σταθερές του NTC. // Παράρτημα 3 #define A 0.003354016 #define B 0.000256985 #define C 0.000002620131 #define D 0.00000006383091 //Δήλωση Ι/Ο #define Out1 7 #define Out2 8 #define ADC0 A0 // Δήλωση arrays χαρακτήρων για λήψη- αποστολή δεδομένων & password char received[30]; char transmit[30]; char password[10]; uint8_t i; uint8_t debug; //Δήλωση συναρτήσεων εγγραφής, αποστολής, υπολογισμού θερμοκρασίας void pin_write(void); void transmit_data(void); double adc2temp(int RawADC); int adc_val=0;

Εδώ τελειώνουν οι δηλώσεις σταθερών, μεταβλητών και συναρτήσεων. Πρέπει να σημειωθεί ότι η τιμή της αντίστασης R2 έχει μετρηθεί με πολύμετρο ακριβείας (4712Ω) ώστε η τιμή της να δηλωθεί σωστά στο πρόγραμμα του μικροελεγκτή για ακριβή υπολογισμό της θερμοκρασίας. void setup() { //Απενεργοποίηση led στο pin 13 pinmode(13,output); digitalwrite(13,low); // Αρχικοποίηση επικοινωνίας UART στα 9600 bps: Serial.begin(9600); // Ορισμός Ι/Ο pinmode(out1,output); pinmode(out2,output); pinmode(adc0,input); } Το κομμάτι αυτό του προγράμματος εκτελείται μόνο μία φορά κατά την εκκίνηση του μικροελεγκτή. Εδώ αρχικοποιείται η ταχύτητα της επικοινωνίας και ορίζονται ποια pin του μικροελεγκτή θα είναι είσοδοι και έξοδοι. void loop() { //Έλεγχος αν υπάρχουν διαθέσιμα δεδομένα στη UART if (Serial.available() > 0) { i=0; debug=0; //Όσο υπάρχουν διαθέσιμα δεδομένα while (Serial.available() > 0){ received[i] = Serial.read(); i++; debug++; }; received[i]='\0';

Όσο υπάρχουν δεδομένα στη σειριακή είσοδο γεμίζει ο πίνακας received[]. /* received[byte 0: "1": only report "0": action & report "9": check password when connecting byte 1: password_length byte 2 to byte (2+password_length): password byte (2+password_length+1) to byte (2+password_length+1+1): pins data E.g. password=1234 Byte: 0 1 2 3 4 5 6 7 received[ 0/1 4 1 2 3 4 0/1 0/1 ] */

//Εξαγωγή του password //ASCII to int e.g. ASCII '2' = 50-48 (Παράρτημα 2) for (i=0;i<(received[1]-48);i++) { password[i]=received[i+2]; }; password[i]='\0'; Από τον πίνακα received[] εξάγονται μόνο τα bytes που αποτελούν το password και αποθηκεύονται σε έναν άλλο πίνακα password[]. //Έλεγχοι... if (received[0]=='9'){ if ((String) password == "1234") { } transmit_data(); } else {Serial.println("Wrong Password!");}; else if (debug == received[1]-48+4+2) { if ((String) password == "1234") { if (received[0]=='1') { transmit_data(); }else if (received[0]=='0') { //Call function pin_write to control your devices pin_write(); delay(100);

//Call the function transmit_data to confirm your status transmit_data(); }; } else {Serial.println("Unknown error");}; }; }; delay(1000); } Η διαδικασία των ελέγχων είναι η πιο σημαντική στον προγραμματισμό του μικροελεγκτή. Ελέγχεται αρχικά το πρώτο byte. Αν αυτό είναι ίσο με «9» σημαίνει ότι γίνεται σύνδεση για πρώτη φορά και τότε γίνεται έλεγχος του password. Αν δεν είναι σωστό ο μικροελεγκτής επιστρέφει κατάλληλο μήνυμα στη σειριακή του θύρα, ενώ στην αντίθετη περίπτωση στέλνει την κατάσταση των εξόδων του. Έπειτα ελέγχεται αν η ποσότητα των λαμβανόμενων bytes (μεταβλητή debug) είναι η σωστή (bytes που αποστέλλονται από τις εφαρμογές του χρήστη: Ν+2, τα δύο επιπλέον bytes προκύπτουν κατά τη χρήση βιβλιοθηκών αποστολής δεδομένων μέσω Internet, που χρησιμοποιούνται για την υλοποίηση των εφαρμογών του τελικού χρήστη). Αν ναι, ξαναελέγχουμε το password για επιπλέον ασφάλεια και ανάλογα με την τιμή του πρώτου byte ( 1 ή 0 ) εκτελούνται οι αντίστοιχες λειτουργίες.

//Αποστολή δεδομένων στη σειριακή θύρα void transmit_data (void){ if (digitalread(out1)==high) transmit[0]='1'; else transmit[0]='0'; if (digitalread(out2)==high) transmit[1]='1'; else transmit[1]='0'; transmit[2]='\0'; adc_val=analogread(adc0); Serial.print(transmit); Serial.print("#"); Serial.println(adc_to_temp(adc_val),1); } //Εκτέλεση ενεργειών void pin_write () { if (received[received[1]-48+2]=='1') digitalwrite(out1,high); else digitalwrite(out1,low); if (received[received[1]-48+3]=='1') digitalwrite(out2,high); else digitalwrite(out2,low); } Οι δύο αυτές συναρτήσεις υλοποιούν τις ενέργειες που εκτελεί ο μικροελεγκτής. Η πρώτη γράφει στη σειριακή θύρα την κατάσταση των εξόδων και την τιμή της θερμοκρασίας, ενώ η δεύτερη δίνει τις εντολές στις αντίστοιχες εξόδους του μικροελεγκτή.

//Υπολογισμός θερμοκρασίας σε βαθμούς Celcius double adc_to_temp(int RawADC) { double NTC_Res, celsius; double tmp; // Προσωρινή μεταβλητή. // Υπολογισμός της αντίσταση από την τιμή του ADC. NTC_Res=((1023.0 * R2 / RawADC) - R2); tmp = log(ntc_res/rn); tmp = (A+(B*tmp)+(C*tmp*tmp)+(D*tmp*tmp*tmp)); celsius = (1.0/tmp)-273; // Μετατροπή βαθμών Κέλβιν σε Κελσίου. return celsius; } Η συνάρτηση αυτή υλοποιεί τους τύπους (3) και (4) σύμφωνα με την τεκμηρίωση του NTC 10Κ. Σημειώνεται ότι στη γλώσσα Arduino η συνάρτηση log() ισοδυναμεί με την ln().

Αυτό που έχει επιτευχθεί μέχρι τώρα είναι η σωστή επικοινωνία με τον μικροελεγκτή μέσω της σειριακής του θύρας, καθώς και η σωστή λειτουργία του όσον αφορά τον έλεγχο των συσκευών. Δηλαδή, μπορεί κάποιος να ελέγξει, να σβήσει ή να ανάψει, κάποιο Led στέλνοντας τα κατάλληλα bytes μέσω μιας θύρας UART. Εικόνα 8 : Αρχική συνδεσμολογία 2.3 Επικοινωνία UART- TCP 2.3.1 Module USR- WIFI232-B Ένα από τα πιο σημαντικά βήματα της ανάπτυξης του συστήματος, συνεπώς, αφορούσε το πως θα μπορέσει να γίνει ο έλεγχος όχι από κοντά, αλλά από απόσταση. Δηλαδή ο χρήστης να μην χρειάζεται να είναι στον ίδιο χώρο με τον μικροελεγκτή, αλλά να μπορεί από μακριά να «μιλάει» μαζί του. Στο ερώτημα αυτό ήρθε να δώσει απάντηση το module USR-WIFI232-B, το οποίο αναλαμβάνει να πραγματοποιήσει «διαφανή» επικοινωνία ανάμεσα σε μια UART και σε μια TCP σύνδεση. Με τον όρο «διαφανή επικοινωνία» εννοούμε ότι ο μικροελεγκτής δεν ασχολείται καθόλου με το κομμάτι του δικτύου και απλά προωθεί και λαμβάνει δεδομένα από τη σειριακή του θύρα. Εικόνα 9 : USR-WIFI232-B Το συγκεκριμένο module συνδέεται εύκολα με το Arduino Uno. Τροφοδοτείται από το board του Arduino με 5V dc και η σειριακή του θύρα συνδέεται με την αντίστοιχη σειριακή του Arduino (digital pins 0, 1). Αυτή η σύνδεση αφορά το κομμάτι του υλικού,

ενώ το κομμάτι των ρυθμίσεων (λογισμικού) πρέπει να υλοποιηθεί μέσα από το web interface του module. Η σύνδεση στο web interface του USR-WIFI232-B πραγματοποιείται ως εξής: - Τροφοδοτούµε το USR-WIFI232-B - Αναζητούμε διαθέσιμα ασύρματα δίκτυα - Εντοπίζουμε το HF-A11x_AP - Συνδεόμαστε σε αυτό με όνομα χρήστη και συνθηματικό: admin, admin - Παραμετροποιούμε το module 2.3.2 Ρυθμίσεις modem/router Οι ρυθμίσεις που πρέπει να γίνουν σε αυτό το σημείο εξαρτώνται βέβαια από το εκάστοτε modem/router. Στο σύστημα της εργασίας χρησιμοποιήθηκε ο router της Thomson TG585 v8, μέσα από το web interface του οποίου θα πρέπει να γίνει η κατάλληλη προώθηση των πακέτων, καθώς και η τοποθέτηση ενός hostname DNS. 1. Προώθηση πακέτων (Port Forwarding) Θα πρέπει οποιοδήποτε πακέτο αναφέρεται στην πόρτα 2222 (ίδια με την πόρτα που ρυθμίστηκε το USR-WIFI232-B) να δρομολογείται στο HF-A11. Παρατίθεται ενδεικτικά ένα screenshot, επειδή η διαδικασία του port forwarding ποικίλει από router σε router. 1. Hostname DNS Το hostname DNS χρειάζεται για να έχουμε πρόσβαση από μακριά στο modem/router του εκάστοτε σπιτιού χωρίς να πρέπει να γνωρίζουμε κάθε φορά την IP του. Έτσι λοιπόν θα πρέπει να γίνει εγγραφή σε έναν πάροχο Hostname DNS. Η εγγραφή για τη συγκεκριμένη εργασία έγινε στο DtDNS με ένα απλό registration. Αφού γίνει η εγγραφή, αυτό το hostname θα πρέπει να περαστεί στον router μέσω του web interface του. Στο παρακάτω screenshot φαίνεται η διαδικασία αυτή. Η επικοινωνία πλέον έχει επιτευχθεί από άκρη σε άκρη. Οποιοσδήποτε χρήστης με

πρόσβαση στο internet μπορεί να εγκαθιδρύσει μια σύνδεση στο socket zoy_ris@yahoo.gr:2222 και να επικοινωνήσει μέσω του HF-A11 με τον μικροελεγκτή και να ελέγξει τις συσκευές που επιθυμεί. Το σύστημα πλέον έχει την ακόλουθη μορφή: Εικόνα 10 : Τελική συνδεσμολογία 2.4 Εφαρμογές συσκευών τελικού χρήστη Το τελικό στάδιο της υλοποίησης του συστήματος είχε σαν στόχο να γίνει προσιτή προς τον τελικό χρήστη η επικοινωνία με τον μικροελεγκτή. Ο χρήστης, δηλαδή, πρέπει να τρέχει κάποια εφαρμογή, είτε από τον υπολογιστή του, είτε από το κινητό του τηλέφωνο και να ελέγχει τις συσκευές του σπιτιού του. Αναπτύχθηκαν δύο εφαρμογές για αυτόν τον σκοπό, μία για χρήστες προσωπικού υπολογιστή με λειτουργικό της Microsoft και μια για χρήστες κινητού τηλεφώνου με λειτουργικό Android. 2.4.1 Εφαρμογή για Η/Υ Για τον προγραμματισμό της εφαρμογής χρησιμοποιήθηκε η πλατφόρμα Microsoft, Visual Studio 2010. Η διεπαφή χρήστη και Η/Υ φαίνεται στην Εικόνα 11. της

Εικόνα 11 : Διεπαφή χρήστη- Η/Υ Ο χρήστης πληκτρολογεί το hostname, την πόρτα και το password, συνδέεται και έπειτα ελέγχει τις δύο συσκευές, ενώ βλέπει τη θερμοκρασία που έχει το δωμάτιο στο οποίο έχει τοποθετηθεί ο αισθητήρας. Η θερμοκρασία έχει προγραμματιστεί να αποστέλλεται κάθε 10 δευτερόλεπτα. Αυτό επιτυγχάνεται με έναν timer που τρέχει κάθε 10 sec και στέλνει ένα πακέτο Ν Bytes με το πρώτο byte να έχει την τιμή «1», δηλαδή, ζητά από τον μικροελεγκτή να στείλει μόνο αναφορά χωρίς να εκτελέσει κάποια άλλη ενέργεια. Ο κώδικας που γράφτηκε στο Visual Studio 2010 παρατίθεται παρακάτω. Ο κώδικας σχολιάζεται τμηματικά για την καλύτερη κατανόηση του από τον αναγνώστη. Imports System.IO Imports System.Net.Sockets Imports System.Text Imports System.Text.RegularExpressions Σε αυτό το τμήμα εισάγονται οι απαραίτητες βιβλιοθήκες.