ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΊΔΡΥΜΑ ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ



Σχετικά έγγραφα
Γνωριμία με το Arduino

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lab 1: Experimenting on Arduino & AI Sense

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

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

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

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

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

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

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

2017 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino

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

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

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

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

WDT και Power Up timer

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

διατίθεται με άδεια χρήσης GPL για πλατφόρμες Linux, MAC και Windows.

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

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

Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου. Το κύκλωμα σε breadboard

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

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

Arduino Teachers Workshop

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

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

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

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

Φύλλο εργασίας 4 - Αυτόματο φωτάκι νυκτός

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

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

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

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

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

Arduino. δουλεύοντας με το... Υλικό αναφοράς και χρήσης της ανοιχτής πλατφόρμας

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

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

Παιδιά κάτω των 13 ετών δε θα πρέπει να χρησιμοποιούν το κιτ χωρίς επίβλεψη. Μη συνδέετε την κύρια πλακέτα σε εξωτερική τροφοδοσία μεγάλης ισχύος.

Ελληνική Έκδ ση. Εισαγωγή. Περιεχόμενα της συσκευασίας. Συνδέσεις. DS010 Sweex Multi Panel & Card Reader 53-in-1

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

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

«Σύστημα ασφάλειας οχήματος με χρήση τεχνολογιών RFID, GPS, 3G/GSM»

Μάθημα 2 Δραστηριότητα 2: Δημιουργώντας το Μετεωρολογικό Σταθμό. Επανεξέταση των βασικών εννοιών της C και του προγραμματισμού.

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

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

ΔΡΑΣΤΗΡΙΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO- 01a

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

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

Εφαρμογή Arduino στη γεωργία

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

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

Μάθημα 4.2 Η μητρική πλακέτα

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

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

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

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

ΡΟΜΠΟΤΙΚΗ ΚΑΙ ΑΥΤΟΜΑΤΙΣΜΟΣ

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

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

Οδηγίες για την Διαδικασία αποθήκευσης στοιχείων ελέγχου πινάκων για επίλυση θέματος Οριοθέτησης.

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

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

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

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

Τεχνολογικό+Eκπαιδευτικό+Ίδρυμα+Kρήτης+ TMHMA+MHXANOΛOΓIAΣ+ (

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

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

Model: ED-CS5000. Ηλεκτρονικός πίνακας ελέγχου για συρόμενες και ανοιγόμενες μονόφυλλες πόρτες.

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 1 ΤO ΡΟΜΠΟΤ INTELLITEK ER-2u

ΣΥΣΚΕΥΗ ΜΕ ΦΩΤΟΒΟΛΤΑΪΚΗ ΚΥΨΕΛΗ ΜΕΤΑΤΡΟΠΕΑ DC σε AC ΚΑΙ ΤΡΟΦΟΔΟΤΙΚΟ UPS

Συστήµατα DAQ. 6.1 Εισαγωγή

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

G&K ELECTRONICS AVR ATMEGA DEVELOPMENT BOARD

Οδηγίες Χρήσης Ασύρματης Φορητής WiFi Κάμερας

ΠΑΝΑΓΙΩΤΗΣ ΚΟΥΤΣΙΩΡΑΣ Α.Μ.: ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά Πρακτικής Εργασίας: Μετατροπέας Κώδικα BCD Σε Κώδικα GRAY

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

Transcript:

v ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΊΔΡΥΜΑ ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Τα έξυπνα φανάρια με Arduino Intelligent lanterns with Arduino Σφονδύλας Αλέξανδρος 5024 Ξενογιαννάκης Γιώργος 5058 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: Κόγιας Παναγιώτης ΚΑΒΑΛΑ 2014

Πρόλογος Η εργασία αυτή αποτελεί το τελευταίο στάδιο της προπτυχιακής πορείας των σπουδών μας στο τμήμα Ηλεκτρολόγων Μηχανικών. Αναφέρεται στα έξυπνα φανάρια με την χρήση Arduino-RFID. Επιπλέον, γίνεται ανάλυση των επιμέρους στοιχείων που χρησιμοποιήθηκαν για την πραγματοποίηση της κατασκευής. Η επιλογή των υλικών έγινε με κύριο κριτήριο το χαμηλό κόστος και η αγορά των υλικών έγινε μέσω internet. Η επιλογή των υλικών έγινε με κριτήριο την καλή λειτουργία της κατασκευής. Τέλος, πραγματοποιήθηκε η υλοποίηση του προγράμματος του συστήματος. Στο σημείο αυτό θα θέλαμε να ευχαριστήσουμε θερμά τον επιβλέποντα της πτυχιακής εργασίας κ. Παναγιώτη Κόγια που βοήθησε στην πραγματοποίηση της. 2

Περίληψη Σε αυτή την πτυχιακή εργασία έχουμε κατασκευάσει και προγραμματίσει δύο φανάρια, με την χρήση Arduino - RFID, έτσι ώστε όταν κάποιο απο τα δύο ασθενοφόρα του νοσοκομείου καβάλας πλησιάζει στο φανάρι αυτό να γίνεται πράσινο και το δεύτερο φανάρι αυτόματα κόκκινο για την άμεση εξυπηρέτηση του ασθενή. Πιο συγκεκριμένα, δημιουργήσαμε ένα σύστημα έξυπνων φαναριών που αποτελείται απο δύο Arduino UNO R3 και τους δύο αισθητήρες RFID που είναι απαραίτητοι για την άμεση προτεραιότητα στα ασθενοφόρα. Abstract In this final work we have manufactured and programmed two lanterns, with the use Arduino - RFID, so when somebody of the two ambulances of hospital Kavala approaches in this lantern becomes green and the second lantern automatically red for the direct service of patient. More concretely, we created a system of intelligent lanterns that is constituted by two Arduino UNO R3 and two sensors RFID that is essential for the direct priority in the ambulances. 3

Περιεχόμενα Πρόλογος... 2 Περίληψη... 3 Abstract... 3 Περιεχόμενα... 5 1.Εισαγωγή... 6 ΚΕΦΑΛΑΙΟ 1... 7 Arduino UNO... 7 1.1 Γενικά... 7 1.2 Σειριακή θύρα... 8 1.3 Χαρακτηριστικά του Arduino... 8 1.4 Μνήμες Arduino... 9 1.5 Είσοδοι-Έξοδοι... 12 1.6 Τροφοδοσία... 13 1.7 Ενσωματωμένα κουμπία και LED... 13 1.8 Σύνδεση με τον υπολογιστή Arduino IDE... 15 1.9 Γλώσσα προγραμματισμού του Arduino... 15 1.10 Shields Arduino... 17 1.11 Τι είναι RFID... 20 ΚΕΦΑΛΑΙΟ 2... 20 Υλοποίηση κατασκευής... 20 2.1 Εξαρτήματα κατασκευής... 20 1.Arduino UNO... 22 2.RFID... 23 3.Καλώδια και LED... 25 4.Σωλήνας... 26 5.Μακέτα... 27 6.Ραστερ... 28 2.2 Κατασκευή της μακέτας... 29 2.3 Λειτουργία κατασκευής... 30 4

2.4 Εργαλεία που χρησιμοποιήθηκαν... 30 1.Μόρσα-Μέγγενη... 30 2.Σιλικόνη κολλήματος... 31 3.Κατσαβίδια... 31 4.Πένσα... 32 5.Κορδέλα ξύλου... 33 6.Τρυπάνι... 34 7.Πλαστικό χρώμα... 34 8.Κολλητήρι-κολάι... 35 ΚΕΦΑΛΑΙΟ 3... 35 Κώδικας προγράμματος... 45 Συμπεράσματα... 46 ΚΕΦΑΛΑΙΟ 4... 47 Βιβλιογραφία-πηγές πληροφοριών... 47 5

1.Εισαγωγή Το Arduino είναι ένα υπολογιστικό σύστημα αποτελούμενο από μια μητρική πλακέτα ανοιχτού κώδικα.με την χρήση του μικροελεγκτή μπορούμε να το προγραμματίσουμε στην γλώσσα Wiring(η οποία είναι παρεμφερής με την γλώσσα προγραμματισμού C + +) τις εισόδους / εξόδους που έχει ενσωματωμένες. Το Arduino μπορεί να γίνει εύκολα συμβατό με πληθώρα διαδραστικών αντικειμένων ανεξάρτητων μεταξύ τους αλλά και να συνδεθεί με υπολογιστή μέσω προγραμμάτων σε Processing, Max/MSP, Pure Data, SuperCollider. Είναι εύκολο να το αποκτήσει κάποιος, όπως και να το προγραμματίσει. Πλεονεκτήματα του Arduino: 1.Οικονομία: Το Arduino είναι η φθηνότερη πλατφόρμα, ιδίως αν η αγορά του γίνει μέσω internet. 2.Συνδεσιμότητα: Μπορεί να συνδεθεί και να προγραμματιστεί εύκολα στα περισσότερα λειτουργικά συστήματα. 3.Ελεύθερο: Το υλικό και το λογισμικό του Arduino είναι ανοιχτό και ελεύθερο, με αποτέλεσμα χιλιάδες χρήστες να αναπτύσσουν βιβλιοθήκες για την υποστήριξη της πλατφόρμας ή ακόμα και να προχωρούν στην κατασκευή μιας. Στην πλακέτα μας υπάρχει μια θύρα USB μέσω της οποίας γίνεται η μεταφορά δεδομένων στην συσκευή μας και αντίστροφα (ηλεκτρονικός υπολογιστής). Το Arduino διαθέτει 14 ψηφιακές εισόδους / εξόδους καθώς και 6 αναλογικές. Όλες μπορούμε να τις διαμορφώσουμε σύμφωνα με τις εντολές του προγράμματος και ανάλογα με την επιθυμητή λειτουργεία. 6

ΚΕΦΑΛΑΙO 1 Arduino UNO 1.1 Γενικά Το Arduino αποτελείται από 14 ψηφιακές εισόδου/εξόδου που μπορούν να λειτουργούν ως είσοδοι (Input) ή ως έξοδοι (Output), χρησιμοποιώντας τις κατάλληλες εντολές. Λειτουργούν με τάση 5V. Κάθε ακίδα μπορεί να προσφέρει ή να λάβει ένα μέγιστο ρεύμα των 40mA και έχει εσωτερικές αντιστάσεις pull-up της τάξεως των 20-50ΚΩ. Επίσης, διαθέτει 6 αναλογικές εισόδους (Α0,Α1,Α2,Α3,Α4,Α5) που μετατρέπουν το αναλογικό σήμα εισόδου σε έναν αριθμό από 0 έως 1023. Από τους 14 ψηφιακούς λειτουργούν και ως αναλογικοί έξοδοι (P3,P5,P6,P9,P10,P11).Επιπλέον, μερικοί ακροδέκτες έχουν εξειδικευμένες λειτουργίες: 1. Σειριακή: 0 (RX) και 1 (TX). Χρησιμοποιείται για τη λήψη (RX) και την μετάδοση (TX) TTL σειριακών δεδομένων (αυτές οι ακίδες συνδέονται με τις αντίστοιχες ακίδες του ATmega8U2 USB-to-TTL Serial chip). 2. Εξωτερικές Διακοπές : Οι ακίδες 2 και 3 μπορούν να προκαλέσουν διακοπές αν εισέρθει παλμός χαμηλής τάσης ή μια αλλαγή στην τιμή. 3. PWM : 3,5,6,9,10 και 11 παροχή 8 -bit PWM εξόδου με την analogwrite () λειτουργία (Pulse Width Modulation) 4. SPI : 10 (SS),11 (MOSI),12(MISO),13(SCK).Αυτοί οι ακροδέκτες υποστηρίζουν την επικοινωνία SPI χρησιμοποιώντας τη βιβλιοθήκη SPI. 5. LED: 13.Υπάρχει ένα ενσωματωμένο LED που συνδέεται με την ψηφιακή ακίδα 13.Όταν η ακίδα είναι HIGH (5V) η ενδεικτική λυχνία είναι αναμμένη, ενώ όταν η ακίδα είναι LOW (0V) η λυχνία είναι σβηστή. 7

1.2 Σειριακή Θύρα Χρησιμοποιείται για την επικοινωνία μεταξύ της πλακέτας Arduino και ενός υπολογιστή ή μιας άλλης συσκευής. Όλες οι πλακέτες Arduino έχουν τουλάχιστον μία σειριακή θύρα. Αυτή επικοινωνεί με της ψηφιακές ακίδες 0 (RX) και 1 (TX), καθώς και με τον υπολογιστή μέσω USB. Έτσι, εάν βρίσκονται σε χρήση δεν γίνεται να χρησιμοποιούμε τις ακίδες των 0 και 1. 1.3 Χαρακτηριστικά του Arduino Micro controller ATmega328 Operating Voltage 5V Input Voltage (reccomended) 7-12V Input Voltage (limits) 6-20V Digital I/O Pins 14(of which 6 provide PWM out put) Analog Input Pins 6 DC ρεύματος Ι/Ο Pin 40 ma DC τρέχουσα για 3.3V Pin 50 ma Flash Memory SRAM EEPROM Clock Speed 32 KB από τα οποία 0.5 ΚΒ χρησιμοποιούνται από τον bootloader 2KB 1KB 16MHz 8

1.4 Μνήμες Arduino Το Arduino βασίζεται στόν ATmega328, έναν 8-bit RISC μικρο ελεγκτή, τον οποίο χρονίζει στα 16MHz. Ο ATmega328 διαθέτει ενσωματωμένη μνήμη τριών τύπων: 1. 2Kb μνήμης SRAM που είναι η ωφέλιμη μνήμη που μπορούν να χρησιμοποιήσουν τα προγράμματά σας για να αποθηκεύουν μεταβλητές, πίνακες κ.λπ. κατά το runtime. Όπως και σε έναν υπολογιστή, αυτή η μνήμη χάνει τα δεδομένα της όταν η παροχή ρεύματος στο Arduino σταματήσει ή αν γίνει reset. 2. 1Kb μνήμης EEPROM η οποία μπορεί να χρησιμοποιηθεί για «ωμή» εγγραφή/ανάγνωση δεδομένων (χωρίς datatype) ανά byte από τα προγράμματά σας κατά το runtime. Σε αντίθεση με την SRAM, η EEPROM δεν χάνει τα περιεχόμενά της με απώλεια τροφοδοσίας ή reset οπότε είναι το ανάλογο του σκληρού δίσκου. 3. 32Kb μνήμης Flash, από τα οποία τα 2Kb χρησιμοποιούνται από το firmware του Arduino που έχει εγκαταστήσει ήδη ο κατασκευαστής του. Το firmware αυτό που στην ορολογία του Arduino ονομάζεται bootloader είναι αναγκαίο για την εγκατάσταση των δικών σας προγραμμάτων στον μικροελεγκτή μέσω της θύρας USB, χωρίς δηλαδή να χρειάζεται εξωτερικός hardware programmer. Τα υπόλοιπα 30Kb της μνήμης Flash χρησιμοποιούνται για την αποθήκευση αυτών ακριβώς των προγραμμάτων, αφού πρώτα μεταγλωττιστούν στον υπολογιστή σας. Η μνήμη Flash, όπως και η EEPROM δεν χάνει τα περιεχόμενά της με απώλεια τροφοδοσίας ή reset. Επίσης, ενώ η μνήμη Flash υπό κανονικές συνθήκες δεν προορίζεται για χρήση runtime μέσα από τα προγράμματά σας, λόγω της μικρής συνολικής μνήμης που είναι διαθέσιμη σε αυτά (2Kb SRAM + 1Kb EEPROM), έχει σχεδιαστεί μια βιβλιοθήκη που επιτρέπει την χρήση όσου χώρου περισσεύει (30Kb μείον το μέγεθος του προγράμματός σας σε μεταγλωττισμένη μορφή). 9

Εικόνα 1.Τα μέροι του Arduino 1.5 Είσοδοι-Έξοδοι Καταρχήν το Arduino διαθέτει σειριακό interface. Ο μικρο ελεγκτής ATmega υποστηρίζει σειριακή επικοινωνία, την οποία το Arduino προωθεί μέσα από έναν ελεγκτή Serial-over-USB ώστε να συνδέεται με τον υπολογιστή μέσω USB. Η σύνδεση αυτή χρησιμοποιείται για την μεταφορά των προγραμμάτων που σχεδιάζονται από τον υπολογιστή στο Arduino αλλά και για αμφίδρομη επικοινωνία του Arduino με τον υπολογιστή μέσα από το πρόγραμμα την ώρα που εκτελείται. Επιπλέον, στην πάνω πλευρά του Arduino βρίσκονται 14 θηλυκά pin, αριθμημένα από 0 ως 13, που μπορούν να λειτουργήσουν ως ψηφιακές είσοδοι και έξοδοι. Λειτουργούν στα 5V και καθένα μπορεί να παρέχει ή να δεχτεί το πολύ 40mA. Ως ψηφιακή έξοδος, ένα από αυτά τα pin μπορεί να τεθεί από το πρόγραμμά σας σε κατάσταση HIGH ή LOW, οπότε το Arduino θα ξέρει αν πρέπει να διοχετεύσει ή όχι ρεύμα στο συγκεκριμένο pin. Με αυτόν τον τρόπο μπορείτε λόγου χάρη να ανάψετε και να σβήσετε ένα LED που έχετε συνδέσει στο συγκεκριμένο pin. Αν πάλι ρυθμίσετε ένα από αυτά τα pin ως ψηφιακή είσοδο μέσα από το πρόγραμμά σας, μπορείτε με την κατάλληλη εντολή να διαβάσετε την κατάστασή του (HIGH ή LOW) ανάλογα με το αν η εξωτερική συσκευή που έχετε συνδέσει σε αυτό το pin διοχετεύει ή όχι ρεύμα στο pin (με αυτόν τον τρόπο λόγου χάρη μπορείτε να «διαβάζετε» την κατάσταση ενός διακόπτη). Μερικά από αυτά τα 14 pin, εκτός από ψηφιακές είσοδοι/έξοδοι έχουν και δεύτερη λειτουργία. Συγκεκριμένα: 10

1. Τα pin 0 και 1 λειτουργούν ως RX και TX της σειριακής όταν το πρόγραμμά σας ενεργοποιεί την σειριακή θύρα. Έτσι, όταν λόγου χάρη το πρόγραμμά σας στέλνει δεδομένα στην σειριακή, αυτά προωθούνται και στην θύρα USB μέσω του ελεγκτή Serial-Over-USB αλλά και στο pin 0 για να τα διαβάσει ενδεχομένως μια άλλη συσκευή (π.χ. ένα δεύτερο Arduino στο δικό του pin 1). Αυτό φυσικά σημαίνει ότι αν στο πρόγραμμά σας ενεργοποιήσετε το σειριακό interface, χάνετε 2 ψηφιακές εισόδους/εξόδους. 2. Τα pin 2 και 3 λειτουργούν και ως εξωτερικά interrupt (interrupt 0 και 1 αντίστοιχα). Με άλλα λόγια, μπορείτε να τα ρυθμίσετε μέσα από το πρόγραμμά σας ώστε να λειτουργούν αποκλειστικά ως ψηφιακές είσοδοι στις οποίες όταν συμβαίνουν συγκεκριμένες αλλαγές, η κανονική ροή του προγράμματος σταματάει *άμεσα* και εκτελείται μια συγκεκριμένη συνάρτηση. Τα εξωτερικά interrupt είναι ιδιαίτερα χρήσιμα σε εφαρμογές που απαιτούν συγχρονισμό μεγάλης ακρίβειας. 3. Τα pin 3, 5, 6, 9, 10 και 11 μπορούν να λειτουργήσουν και ως ψευδοαναλογικές έξοδοι με το σύστημα PWM (Pulse Width Modulation), δηλαδή το ίδιο σύστημα που διαθέτουν οι μητρικές των υπολογιστών για να ελέγχουν τις ταχύτητες των ανεμιστήρων. Έτσι, μπορείτε να συνδέσετε λόγου χάρη ένα LED σε κάποιο από αυτά τα pin και να ελέγξετε πλήρως την φωτεινότητά του με ανάλυση 8bit (256 καταστάσεις από 0-σβηστό ως 255-πλήρως αναμμένο) αντί να έχετε απλά την δυνατότητα αναμμένο-σβηστό που παρέχουν οι υπόλοιπές ψηφιακές έξοδοι. Είναι σημαντικό να καταλάβετε ότι το PWM δεν είναι πραγματικά αναλογικό σύστημα και ότι θέτοντας στην έξοδο την τιμή 127, δεν σημαίνει ότι η έξοδος θα δίνει 2.5V αντί της κανονικής τιμής των 5V, αλλά ότι θα δίνει ένα παλμό που θα εναλλάσσεται με μεγάλη συχνότητα και για ίσους χρόνους μεταξύ των τιμών 0 και 5V. Στην κάτω πλευρά του Arduino, με τη σήμανση ANALOG IN, θα βρείτε μια ακόμη σειρά από 6 pin, αριθμημένα από το 0 ως το 5. Το καθένα από αυτά λειτουργεί ως αναλογική είσοδος κάνοντας χρήση του ADC (Analog to Digital Converter) που είναι ενσωματωμένο στον μικροελεγκτή. 11

Για παράδειγμα, μπορείτε να τροφοδοτήσετε ένα από αυτά με μια τάση την οποία μπορείτε να κυμάνετε με ένα ποτενσιόμετρο από 0V ως μια τάση αναφοράς Vref η οποία, αν δεν κάνετε κάποια αλλαγή είναι προρυθμισμένη στα 5V. Τότε, μέσα από το πρόγραμμά σας μπορείτε να «διαβάσετε» την τιμή του pin ως ένα ακέραιο αριθμό ανάλυσης 10-bit, από 0 (όταν η τάση στο pin είναι 0V) μέχρι 1023 (όταν η τάση στο pin είναι 5V). Η τάση αναφοράς μπορεί να ρυθμιστεί με μια εντολή στο 1.1V, ή σε όποια τάση επιθυμείτε (μεταξύ 2 και 5V) τροφοδοτώντας εξωτερικά με αυτή την τάση το pin με την σήμανση AREF που βρίσκεται στην απέναντι πλευρά της πλακέτας. Έτσι, αν τροφοδοτήσετε το pin AREF με 3.3V και στην συνέχεια δοκιμάσετε να διαβάσετε κάποιο pin αναλογικής εισόδου στο οποίο εφαρμόζετε τάση 1.65V, το Arduino θα σας επιστρέψει την τιμή 512. Τέλος, καθένα από τα 6 αυτά pin, με κατάλληλη εντολή μέσα από το πρόγραμμα μπορεί να μετατραπεί σε ψηφιακό pin εισόδου/εξόδου όπως τα 14 που βρίσκονται στην απέναντι πλευρά και τα οποία περιγράφηκαν πριν. Σε αυτή την περίπτωση τα pin μετονομάζονται από 0~5 σε 14~19 αντίστοιχα. 1.6 Τροφοδοσία Το Arduino μπορεί να τροφοδοτηθεί με ρεύμα είτε από τον υπολογιστή μέσω της σύνδεσης USB, είτε από εξωτερική τροφοδοσία που παρέχεται μέσω μιας υποδοχής φις των 2.1mm (θετικός πόλος στο κέντρο) και βρίσκεται στην κάτω-αριστερή γωνία του Arduino. Για να μην υπάρχουν προβλήματα, η εξωτερική τροφοδοσία πρέπει να είναι από 7 ως 12V και μπορεί να προέρχεται από ένα κοινό μετασχηματιστή του εμπορίου, από μπαταρίες ή οποιαδήποτε άλλη πηγή DC. Δίπλα από τα pin αναλογικής εισόδου, υπάρχει μια ακόμα συστοιχία από 6 pin με την σήμανση POWER. Η λειτουργία του καθενός έχει ως εξής: 1. Το πρώτο, με την ένδειξη RESET, όταν γειωθεί (σε οποιοδήποτε από τα 3 pin με την ένδειξη GND που υπάρχουν στο Arduino) έχει ως αποτέλεσμα την επανεκκίνηση του Arduino. 2. Το δεύτερο, με την ένδειξη 3.3V, μπορεί να τροφοδοτήσει τα εξαρτήματά σας με τάση 3.3V. Η τάση αυτή δεν προέρχεται από την εξωτερική τροφοδοσία αλλά παράγεται από τον ελεγκτή Serial-over-USB και έτσι η μέγιστη ένταση που μπορεί να παρέχει είναι μόλις 50mA. 12

3. Το τρίτο, με την ένδειξη 5V, μπορεί να τροφοδοτήσει τα εξαρτήματά σας με τάση 5V. Ανάλογα με τον τρόπο τροφοδοσίας του ίδιου του Arduino, η τάση αυτή προέρχεται είτε άμεσα από την θύρα USB (που ούτως ή άλλως λειτουργεί στα 5V),είτε από την εξωτερική τροφοδοσία αφού αυτή περάσει από ένα ρυθμιστή τάσης για να την «φέρει» στα 5V. 4. Το τέταρτο και το πέμπτο pin, με την ένδειξη GND, είναι φυσικά γειώσεις. 5. Το έκτο και τελευταίο pin, με την ένδειξη Vin έχει διπλό ρόλο. Σε συνδυασμό με το pin γείωσης δίπλα του, μπορεί να λειτουργήσει ως μέθοδος εξωτερικής τροφοδοσίας του Arduino, στην περίπτωση που δεν σας βολεύει να χρησιμοποιήσετε την υποδοχή του φις των 2.1mm. Αν όμως έχετε ήδη συνδεδεμένη εξωτερική τροφοδοσία μέσω του φις, μπορείτε να χρησιμοποιήσετε αυτό το pin για να τροφοδοτήσετε εξαρτήματα με την πλήρη τάση της εξωτερικής τροφοδοσίας (7~12V), πριν αυτή περάσει από τον ρυθμιστή τάσης όπως γίνεται με το pin των 5V. 1.7 Ενσωματωμένα κουμπιά και LED Πάνω στην πλακέτα του Arduino υπάρχει ένας διακόπτης micro-switch και 4 μικροσκοπικά LED επιφανειακής στήριξης. Η λειτουργία του διακόπτη (που έχει την σήμανση RESET) και του ενός LED με την σήμανση POWER είναι μάλλον προφανής. Τα δύο LED με τις σημάνσεις TX και RX, χρησιμοποιούνται ως ένδειξη λειτουργίας του σειριακού interface, καθώς ανάβουν όταν το Arduino στέλνει ή λαμβάνει (αντίστοιχα) δεδομένα μέσω USB. Σημειώστε ότι τα LED αυτά ελέγχονται από τον ελεγκτή Serial-over-USB και συνεπώς δεν λειτουργούν όταν η σειριακή επικοινωνία γίνεται αποκλειστικά μέσω των ψηφιακών pin 0 και 1. Τέλος, υπάρχει το LED με την σήμανση L. Η βασική δοκιμή λειτουργίας του Arduino είναι να του αναθέσετε να αναβοσβήνει ένα LED (θα το δείτε αυτό στην συνέχεια όταν θα φτιάξετε την πρώτη εφαρμογή σας). Για να μπορείτε να το κάνετε αυτό από την πρώτη στιγμή, χωρίς να συνδέσετε τίποτα πάνω στο Arduino, οι κατασκευαστές του σκέφτηκαν να ενσωματώσουν ένα LED στην πλακέτα, το οποίο σύνδεσαν στο ψηφιακό pin 13. Έτσι, ακόμα και αν δεν έχετε συνδέσει τίποτα πάνω στο φυσικό pin 13, αναθέτοντάς του την τιμή HIGH μέσα από το πρόγραμμά σας, θα ανάψει αυτό το ενσωματωμένο LED. 13

1.8 Σύνδεση με τον υπολογιστή Arduino IDE Το Arduino IDE είναι βασισμένο σε Java και συγκεκριμένα παρέχει: 1. ένα πρακτικό περιβάλλον για την συγγραφή των προγραμμάτων σας (τα οποία ονομάζονται sketch στην ορολογία του Arduino) με συντακτική χρωματική σήμανση, 2. αρκετά έτοιμα παραδείγματα, 3. μερικές έτοιμες βιβλιοθήκες για προέκταση της γλώσσας και για να χειρίζεστε εύκολα μέσα από τον κώδικά σας τα εξαρτήματα που συνδέετε στο Arduino, 4. τον compiler για την μεταγλώττιση των sketch σας, 5. ένα serial monitor που παρακολουθεί τις επικοινωνίες της σειριακής (USB), αναλαμβάνει να στείλει αλφαριθμητικά της επιλογής σας στο Arduino μέσω αυτής και είναι ιδιαίτερα χρήσιμο για το debugging των sketch σας 6. και την επιλογή να ανεβάσετε το μεταγλωττισμένο sketch στο Arduino. Για τα δύο τελευταία χαρακτηριστικά βέβαια, το Arduino πρέπει να έχει συνδεθεί σε μια από τις θύρες USB του υπολογιστή και, λόγω του ελεγκτή Serial-over-USB, θα πρέπει να αναγνωριστεί από το λειτουργικό μας σύστημα ως εικονική σειριακή θύρα. 14

Για την σύνδεση θα χρειαστούμε ένα καλώδιο USB από Type A σε Type B, όπως αυτό των εκτυπωτών. Για την αναγνώριση από το λειτουργικό θα χρειαστεί να εγκαταστήσουμε τον οδηγό του FTDI chip (δηλαδή του ελεγκτή Serial-over-USB) ο οποίος υπάρχει στον φάκελο drivers του Arduino IDE που κατεβάσαμε. Την τελευταία έκδοση αυτού του οδηγού μπορούμε επίσης να κατεβάσούμε για κάθε λειτουργικό σύστημα από το site της FTDI. Αν όλα έγιναν σωστά, το κεντρικό παράθυρο του Arduino IDE θα εμφανιστεί όταν το εκτελέσουμε και στο μενού Tools > Serial Port θα πρέπει να εμφανίζεται η εικονική σειριακή θύρα (συνήθως COM# για τα Windows, /dev/ttyusbserial## για το MacOS και /dev/ttyusb## για το Linux). Επιλέγουμε αυτή την εικονική θύρα και στην συνέχεια επιλέγουμε τον τύπο του Arduino σας (Arduino Duemilanove w/ ATmega328) από το μενού Tools > Board. Το Arduino είναι πλέον έτοιμο να δεχτεί τα sketch μας. Αν εμφανίστηκε οποιοδήποτε πρόβλημα διαβάζουμε τις αναλυτικές οδηγίες εγκατάστασης για κάθε λειτουργικό σύστημα στη διεύθυνση http://arduino.cc/en/guide/homepage. 1.9 Γλώσσα προγραμματισμού του Arduino Η γλώσσα του Arduino βασίζεται στη γλώσσα Wiring, μια παραλλαγή C/C++ για μικροελεγκτές αρχιτεκτονικής AVR όπως ο ATmega, και υποστηρίζει όλες τις βασικές δομές της C καθώς και μερικά χαρακτηριστικά της C++. Για compiler χρησιμοποιείται ο AVR gcc και ως βασική βιβλιοθήκη C χρησιμοποιείται η AVR libc. Λόγω της καταγωγής της από την C, στην γλώσσα του Arduino μπορείτε να χρησιμοποιήσετε ουσιαστικά τις ίδιες βασικές εντολές και συναρτήσεις, με την ίδια σύνταξη, τους ίδιους τύπων δεδομένων και τους ίδιους τελεστές όπως και στην C. Πέρα από αυτές όμως, υπάρχουν κάποιες ειδικές εντολές, συναρτήσεις και σταθερές που βοηθούν για την διαχείριση του ειδικού hardware του Arduino. 1.10 Shields Arduino Τα shield είναι ολοκληρωμένες πλακέτες που είναι σχεδιασμένες ώστε να κουμπώνουν πάνω στο Arduino προεκτείνοντας την λειτουργικότητά του. Είναι η hardware αντίστοιχη έννοια των plugin, addon και extension που υπάρχουν στο software. Μερικά από τα πιο δημοφιλή shield που κυκλοφορούν στο εμπόριο για το Arduino είναι: 15

1. Ethernet shield: Δίνει στο Arduino την δυνατότητα να δικτυωθεί σε ένα LAN ή στο internet μέσω ενός τυπικού καλωδίου Ethernet. 2. WiFi shield: Όμοιο με το Ethernet shield, χωρίς φυσικά το καλώδιο. 3. Διάφορα shield οθόνης: Προσθέτουν οθόνη στο Arduino. Κυκλοφορούν από απλές οθόνες τύπου calculator μέχρι OLED touchscreen υψηλής ανάλυσης τύπου iphone. 4. Wave shield: Δίνει στο Arduino την δυνατότητα να παίζει ήχους/μουσική από κάρτες SD. 5. GPS shield: Προσθέτει GPS δυνατότητες στο Arduino (εντοπισμό στίγματος). 6. Διάφορα Motor Shields: Σας επιτρέπουν να οδηγήσετε εύκολα μοτέρ διάφορων τύπων (απλά DC, servo, stepper κ.λπ.) από το Arduino. 7. ProtoShield: Μια προσχεδιασμένη πλακέτα πρωτοτυποποίησης, συμβατή στις διαστάσεις του Arduino και χωρίς εξαρτήματα για να φτιάξετε το δικό σας shield. Τα shield είναι σχεδιασμένα ώστε αφού κουμπωθούν πάνω στο Arduino να προωθούν τις υποδοχές του, ώστε να μπορείτε να συνδέσετε επιπλέον τα δικά σας εξαρτήματα ή να κουμπώσετε και επόμενο shield. Φυσικά, το κάθε shield χρησιμοποιεί ορισμένους από τους πόρους συνδεσιμότητας του Arduino και έτσι δεν μπορείτε να συνδέσετε απεριόριστα shield. 16

Μάλιστα κάποια shield μπορεί να μην είναι συμβατά μεταξύ τους γιατί χρησιμοποιούν τα ίδια pin του Arduino για επικοινωνία με αυτό. Επίσης, επειδή κάποια shield δεν προωθούν τις συνδέσεις του Arduino (όπως π.χ. οι οθόνες οι οποίες δεν έχουν νόημα αν τις καλύψετε από πάνω με ένα επόμενο shield), υπάρχουν ειδικά extender shield που κουμπώνουν στο Arduino και δίνουν την δυνατότητα σε δύο άλλα shield να κουμπώσουν πάνω τους, λειτουργώντας σαν πολύπριζα. Όπως και για το ίδιο το Arduino, το βασικό πλεονέκτημα των shield δεν είναι τόσο το προφανές πλεονέκτημα του έτοιμου hardware όσο ότι συνοδεύονται συνήθως από έτοιμες βιβλιοθήκες που σας επιτρέπουν να προγραμματίζετε τα sketch σας σε high level. Έτσι, λόγου χάρη, δεν χρειάζεται να διαβάζετε datasheet ή να γίνετε ηλεκτρονικός για να συνδέσετε και να λειτουργήσετε ένα GPS module πάνω στο Arduino. Απλά συνδέετε το shield, εγκαθιστάτε τη βιβλιοθήκη που το συνοδεύει και χρησιμοποιείτε μια έτοιμη συνάρτηση -του στυλ getlocation- για να πάρετε το γεωγραφικό στίγμα και να το επεξεργαστείτε περαιτέρω στο sketch σας. Τα shield σας λύνουν τα χέρια όταν θέλετε να δημιουργήσετε εύκολα ένα πραγματικά πρακτικό project. Αυτός είναι και ο λόγος που δεν συνιστάται η αγορά κάποιας έκδοσης του Arduino που δεν είναι 100% συμβατή με τα shield. Εικόνα 3.Shield Arduinο 17

1.11 Τι είναι το RFID Tο RFID είναι τα αρχικά του όρου Radio Frequency Identification, η απόδοση του στα ελληνικά ορίζεται ως «ταυτοποίηση μέσω ραδιοσυχνοτήτων». Τα συστήματα RFID αποτελούν ένα υποσύνολο των Συστημάτων Αυτόματου Προσδιορισμού (Automatic Identification Systems). Ειδικότερα λειτουργεί ως γενικός όρος των τεχνολογιών που χρησιμοποιούν ραδιοκύματα για να προσδιορίσουν αυτόματα ανθρώπους ή αντικείμενα και αποτελεί την τεχνολογική εξέλιξη των ραβδωτών κωδίκων (barcode]). Η τεχνολογία RFID είναι γνωστή εδώ και 50 χρόνια. Χρησιμοποιήθηκε για πρώτη φορά από την πολεμική αεροπορία της Αγγλίας κατά τη διάρκεια του Β Παγκοσμίου, για την αναγνώριση και τη διάκριση των εχθρικών από τα φιλικά αεροπλάνα. Κατά τη διάρκεια των επόμενων δεκαετιών, άρχισε να εδραιώνεται η χρήση και εκμετάλλευσή της. Αρχικά, σε πειραματικό στάδιο και σε εργαστηριακό επίπεδο, για να φτάσουμε στο σήμερα, όπου γίνεται λόγος για εφαρμογή της τεχνολογίας RFID στην καθημερινή ζωή των ανθρώπων, κυρίως μέσω του εμπορίου. Παράλληλα αναπτύσσεται το ενδεχόμενο της ευρείας εφαρμογής του, με την καθιέρωση προτύπων και την λειτουργία της σε παγκόσμιο επίπεδο. Τα συστήματα RFID απαρτίζονται από δύο κύρια μέρη. Το πρώτο είναι οι πομποδέκτες (transponders) που συχνά αναφέρονται και ως ετικέτες RFID (RFID tags). Οι ετικέτες RFID είναι μικρά chips που αποτελούνται από ένα ολοκληρωμένο κύκλωμα, το οποίο περιλαμβάνει μνήμη ώστε να αποθηκεύει δεδομένα- πληροφορίες, και μία κεραία. Το μέγεθός τους μπορεί να είναι τόσο μικρό όσο το μισό ενός κόκκου άμμου (1/3 του χιλιοστού), ανάλογα με το τύπο τις ετικέτας. Το δεύτερο μέρος είναι οι αναγνώστες ή αισθητήρες (readers), οι οποίοι ανακτούν τα δεδομένα από τις ετικέτες RFID. Οι αναγνώστες RFΙD έχουν ενσωματωμένα μια κεραία και μια μονάδα ελέγχου. Η λειτουργία των συστημάτων RFID είναι απλή και βασίζεται στη δυναμική και αμφίδρομη επικοινωνία των ετικετών και των αναγνωστών. Όταν οι ετικέτες RFID βρεθούν στην εμβέλεια της κεραίας του αναγνώστη, η μονάδα ελέγχου επικοινωνεί με ραδιοκύματα με την κεραία των ετικετών RFID. Οι ετικέτες RFID ενεργοποιούνται με τη σειρά τους και επιστρέφουν τα αναζητούμενα δεδομένα στους αναγνώστες. Στη συνέχεια παρεμβαίνει ένα ενδιάμεσο λογισμικό, το οποίο κατανοεί τις πληροφορίες, οι οποίες αποστέλλονται από τη μονάδα ελέγχου του αναγνώστη. Ο αναγνώστης τις μεταφέρει στο εκάστοτε πληροφοριακό σύστημα. 18

Οι ετικέτες RFID κατηγοριοποιούνται σε τρεις τύπους ανάλογα με τον τρόπο επικοινωνίας μεταξύ των ετικετών και των αναγνωστών, στις ενεργές ετικέτες, στις παθητικές ετικέτες και στις ημιπαθητικές ετικέτες. Ένα ολοκληρωμένο κύκλωμα στις ετικέτες RFID μπορεί να περιέχει μνήμη μόνο για ανάγνωση (read only memory - ROM), επανεγγράψιμη μνήμη (Read Write), μνήμη μιας εγγραφής και πολλών αναγνώσεων (Write Once and Read Many memory - WORM). Στο ολοκληρωμένο κύκλωμα με μνήμη ROM, η αναγνώριση της ταυτότητας κωδικοποιείται κατά τη διάρκεια της παραγωγής της και δεν επανεγγράφεται. Συμβάλει στην αποθήκευση των δεδομένων ασφαλείας, με ένα μοναδικό σειριακό αριθμό. Αντίθετα, τα ολοκληρωμένα κύκλωμα με επανεγγράψιμη μνήμη χρησιμοποιούνται για να αποθηκεύουν δεδομένα πληροφορίες, όταν η ετικέτα βρίσκεται στην ακτίνα του αναγνώστη και παρουσιάζουν μεγαλύτερη ευελιξία, καθώς έχουν τη δυνατότητα τροποποίησης και προσθήκης πληροφοριών. Τέλος, τα ολοκληρωμένα κυκλώματα με μνήμη WORM προγραμματίζονται από τον οργανισμό που τα χρησιμοποιεί, χωρίς όμως να έχουν τη δυνατότητα της επανεγγράφης. Τα δεδομένα που αποθηκεύονται στις ετικέτες αποτελούνται από ένα μοναδικό αναγνωριστικό και μπορούν, επίσης, να περιλαμβάνουν ένα λειτουργικό σύστημα, μία αποθήκη δεδομένων (πτητική ή όχι) και έναν ηλεκτρονικό κώδικα προϊόντων (Electronic Product Code - EPC ) Το μέγεθος των δεδομένων, που μια ετικέτα RFID έχει την δυνατότητα να υποθηκεύσει, καθορίζεται από τον εκάστοτε προμηθευτή αλλά και την ίδια την εφαρμογή, με ανώτερο όριο αποθήκευσης τα 2KB. Χωρητικότητα αρκετή για να αποθηκευτούν τα απαραίτητα δεδομένα του κάθε αντικειμένου. Μια άλλη σημαντική κατηγοριοποίηση που μπορούμε να διακρίνουμε στις ετικέτες RFID σχετίζεται με την κατασκευή και την εφαρμογή τους. Δεδομένου ότι τα συστήματα RFID έχουν εφαρμογή σε διάφορους τομείς στην καθημερινή ζωή του σύγχρονου ανθρώπου, η κατασκευή των ετικετών RFID αλλάζει ανάλογα με τις εφαρμογές και τις ανάγκες που χρειάζεται κάθε φορά, να καλύψει. Οι αναγνώστες RFID αποτελούνται από μία κεραία, η οποία αναλαμβάνει την επικοινωνία, μέσω ραδιοσυχνοτήτων, με τις ετικέτες. Καθώς και μία μονάδα ελέγχου, που εκτελεί δύο συγκεκριμένα έργα. Πρωτίστως τον καθορισμό των διάφορων ενεργειών (αποστολή/ λήψη σημάτων, ανάγνωση/ εγγραφή ετικετών κ.ά.). Ενέργεια που πραγματοποιείται μέσω του ενδιάμεσου λογισμικού. Και δευτερευόντως την επικοινωνία με το πληροφοριακό σύστημα. Οι αναγνώστες RFID μπορούν να κατηγοριοποιηθούν σε σχέση με τις φυσικές τους διαστάσεις, την εφαρμογή τους και τις τεχνικές ιδιότητες σε "σταθερούς αναγνώστες", "ολοκληρωμένους αναγνώστες", "αναγνώστες χειρός" και σε "ενσωματωμένους αναγνώστες". 19

Οι εφαρμογές του τεράστιες, με κλασικό παράδειγμα τα προϊόντα που έχουν συρμάτινες ταινίες στις αλυσίδες καταστημάτων. Τα σημαντικά πλεονεκτήματα που προσφέρει το RFID είναι: Η αναγνώριση μπορεί να γίνει από απόσταση μιας και υπάρχουν RFID tags που είναι σε θέση παίρνοντας ενέργεια από κάποια πηγή που συνήθως είναι μπαταρία να στείλουν τις πληροφορίες στον δέκτη. Δυνατότητα αποθήκευσης περισσοτέρων δεδομένων σε σχέση με τα Bar Code Μπορούν να μην είναι ορατά στο ανθρώπινο μάτι τα RFID tags μιας και για την αναγνώριση τους δεν χρειάζεται οπτικό μέσο. Δυνατότητα προγραμματισμού εξ αποστάσεως Επιπρόσθετες λειτουργίες. Π.χ. Παρακολούθηση και καταγραφή της θερμοκρασίας. ΚΕΦΑΛΑΙΟ 2 Υλοποίηση Κατασκευής 2.1 Εξαρτήματα κατασκευής Για την επιλογή των υλικών έγινε λεπτομερείς αναζήτηση στο ίντερνετ αλλά και σε καταστήματα ηλεκτρικών ειδών και καταλήξαμε στο ότι λόγο οικονομίας θα έπρεπε να τα αγοράσουμε από το ίντερνετ, έτσι λοιπόν καταλήξαμε στον ιστότοπο www.ebay.com για την αγορά των υλικών και εξαρτημάτων μας. Παρακάτω θα εξετάσουμε με τα εξαρτήματα που χρησιμοποιήσαμε. 20

1. Arduino UNO Τα πρώτα πράγματα που προμηθευτήκαμε ήταν τα Arduino UNO R3 των εταιριών SUNFOUNDER και DCcEle τα οποία μας κόστισαν κάπου στα 30euro και τα δύο μαζί με το απαραίτητο καλώδιο USB 2.0 για την σύνδεση στον υπολογιστή. 21

2. RFID Για να υλοποιήσουμε στην συνέχεια την εργασία μας χρειαστήκαμε RFID reader το οποίο είναι μια ασύρματη τεχνολογία που έχει σχεδιαστεί για να αντικαταστήσει το barcode. Η τεχνολογία αυτή έχει δύο διακριτά μέρη, μια «ετικέτα» και ένα «αναγνώστη RFID ", ή, όπως είναι γνωστό στη βιομηχανία ιδίωμα, μια «ανακριτή RFID. " 22

23

3.Καλώδια και LED Χρησιμοποιήσαμε επίσης καλώδια για την σύνδεση του Arduino με το raster και τα φανάρια και LED για τους φωτεινούς σηματοδότες των φαναριών. 24

25

4. Σωλήνας Ο σωλήνας που χρησιμοποιήσαμε είναι απο χαλκό ο λεγόμενος χαλκοσωλήνας ο οποίος βοήθησε για την κατασκευή των φαναριών και την σωστή στερέωση τους. 26

5.Μακέτα Η μακέτα είναι ένα από τα πιο σημαντικά μέροι της εργασίας μας της οποίας είναι η βάση της, κάτι που πρέπει να είναι σκληρό και ταυτόχρονα ελαφρύ για την εύκολη μετακίνησή του. Έτσι επιλέξαμε ένα ξύλο τύπου MDF με διαστάσεις 70x50 και πάχος 10 χιλιοστά. 27

6.Ράστερ Το ράστερ χρησιμοποιήθηκε για την σύνδεση του Αrduino και του RFID. 28

2.2 Κατασκευή της μακέτας Αρχικά αγοράσαμε όλα τα παραπάνω υλικά μας και εξαρτήματα και τώρα θα εξηγήσουμε το πώς έγινε η πτυχιακή μας. Πρώτα απ'όλα πήραμε την μακέτα μας την βάψαμε παριστάνοντας ότι είναι ένας δρόμος, χρωματίσαμε το κράσπεδο κίτρινο και μαύρο με πλαστικό χρώμα και έπειτα βάψαμε τον δρόμο γκρίζο. Αφού λυγίσαμε τους χαλκοσωλήνες με την μέγγενη(μόρσα) τους στερεώσαμε ανοίγοντας τρύπα πάνω στην μακέτα μας. Ύστερα περάσαμε τα καλώδια μέσα από τους χαλκοσωλήνες έτσι ώστε να συνδέσουμε τους φωτεινούς σηματοδότες μας (LED).Όπως είπαμε προηγουμένως τα LED τα στερεώσαμε σε ένα κομμάτι απλού ξύλου (σανίδι) το οποίο μέσα σε αυτό ανοίξαμε τρύπες για να στερεωθούν τα led μας που έχουμε επιλέξει ως φωτεινούς σηματοδότες. Στην συνέχεια με την βοήθεια ενός κολητηρίου (καλάι) κολλήσαμε τα καλώδια με τα led και τα στερεώσαμε με θερμόσυστελόμενο υλικό ώστε να μην υπάρχει κίνδυνος και φόβος βραχυκυκλώματος. Τον σωλήνα και το ξύλο των led στερεώσαμε με την βοήθεια σιλικόνης. Έπειτα κολλήσαμε με ταινία διπλής όψεως το ράστερ πάνω στο ξύλο(mdf). Tοποθετήσαμε πάνω στο ράστερ το Arduino και το RFID reader και για περισσότερη σιγουριά τα βιδώσαμε πάνω στο ράστερ για να μην υπάρχει κίνδυνος να μετακινηθούν με αποτέλεσμα να χαλάσει η συνδεσμολογία μας. Επιπρόσθετα συνδέσαμε τα καλώδια βάση του κώδικα που δημιουργήσαμε με το Arduino και RFID reader για να δουλεύουν όλα ταυτόχρονα και για να ανταπεξέλθουμε στο θέμα που μας ζητήθηκε να πραγματοποιήσουμε. Αφού το πρόγραμμα μας λειτουργεί κανονικά βάση του κώδικα που δημιουργήσαμε το ακριβώς επόμενο στάδιο μας είναι να διακοσμήσουμε την μακέτα μας για να απεικονίσουμε το Γενικό Νοσοκομείο Καβάλας έτσι ακριβώς όπως μας ζητήθηκε από τον επιβλέπων καθηγητή μας. Για να υλοποιήσουμε αυτήν την ιδέα τοποθετήσαμε πλαστικό χόρτο στους γύρω χώρους της μακέτας και για να γίνει ο χώρος στάθμευσης των οχημάτων του νοσοκομείου χρειαστήκαμε ένα κομμάτι χαρτόνι χρώματος μαύρο πάνω στο οποίο σχηματίσαμε με άσπρο στυλό τις θέσεις στις οποίες θα μπορούν να σταθμεύουν τα οχήματα ιδιωτικής χρήσης αλλά και τα οχήματα του νοσοκομείου που μέσα σε αυτά συμπεριλαμβάνουμε και τα οχήματα εκτάκτου ανάγκης (ασθενοφόρα).για να απεικονίσουμε το νοσοκομείο της Καβάλας πήραμε ένα χαρτόνι το βάψαμε στην απόχρωση του λευκού και ύστερα ζωγραφίσαμε πάνω σε αυτό τις εξόδους του νοσοκομείου. Να υπενθυμίσω πως όλα τα υλικά και εξαρτήματα της εργασίας μας τα στερεώσαμε πάνω στην μακέτα μας με κόλλα στιγμής. Τα παραπάνω βήματα και ενέργειες κάναμε για να ολοκληρώσουμε την πτυχιακή μας εργασία. 29

2.3 Λειτουργία της κατασκευής Η κατασκευή που μας ανατέθηκε ήταν να παραστήσουμε το γενικό νοσοκομείο καβάλας και απέξω να υπάρχουν δύο φανάρια τα οποία όταν περνάει ένα ασθενοφόρο από οποιοδήποτε φανάρι αυτόματα το δεύτερο φανάρι να γίνεται κόκκινο έτσι ώστε να δώσει άμεση προτεραιότητα στο φανάρι στο οποίο βρίσκεται το ασθενοφόρο και αντίστροφα. Έτσι λοιπόν δημιουργήσαμε τα δύο φανάρια και τα συνδέσαμε με τα δύο Arduino και παράλληλα τοποθετήσαμε πάνω στο ράστερ και το RFID, και στα δύο ασθενοφόρα τοποθετήσαμε μια κάρτα RFID και ένα μπρελόκ RFID έτσι ώστε όταν περάσουμε με το χέρι ένα ασθενοφόρο απτήν βάση-ράστερ που έχουμε τοποθετήσει την ετικέτα RFID κατευθείαν το Arduino δίνει εντολή στο άλλο Arduino και το φανάρι το δεύτερο γίνεται πορτοκαλί μετά κόκκινο και το πρώτο φανάρι που περάσαμε το ασθενοφόρο ανοίγει πράσινο και δίνει προτεραιότητα στο ασθενοφόρο μας. Αντίστροφα τώρα το άλλο φανάρι αν περάσουμε το ασθενοφόρο κάνει ακριβώς την ίδια λειτουργία. 2.4 Εργαλεία που χρησιμοποιήθηκαν 1. Μόρσα-Μέγγενη Την μόρσα ή αλλιώς μέγγενη την χρησιμοποιήσαμε για να λυγίσουμε τον χαλκοσωλήνα μας. 30

2. Σιλικόνη κολλήματος Την σιλικόνη την χρησιμοποιήσαμε για να κολλήσουμε το ξύλο με τα LED πάνω στον χαλκόσωλήνα και τα καλώδια πάνω στο ράστερ. 3.Κατσαβίδια Τα χρησιμοποιήσαμε για να βιδώσουμε και να στερεώσουμε το φανάρι και να βιδώσουμε τα Arduino πάνω στα ράστερ. 31

4. Πένσα Με την πένσα κόψαμε και ενώσαμε κάποια καλώδια. 32

5. Κορδέλα ξύλου Με την κορδέλα ξύλου διαμορφώσαμε τις διαστάσεις που θέλαμε την μακέτα μας. 6.Τρυπάνι Με το τρυπάνι κάναμε τρύπες στην σωλήνα, στο ξύλο των LED και στην μακέτα μας. 33

7.Πλαστικό χρώμα Με το πλαστικό χρώμα βάψαμε κάποια μέροι της μακέτας μας. Με άσπρο, μαύρο και κίτρινο χρώμα όπου χρειαζόμασταν. 34

8.Κολλητήρι καλάι Με το κολλητήρι κολλήσαμε τα καλώδια με τα LED. ΚΕΦΑΛΑΙΟ 3 Κώδικας προγράμματος Ο κώδικας που χρησιμοποιήσαμε για την σωστή λειτουργία της πτυχιακής μας εργασίας είναι ο παρακάτω: 35

#include <Wire.h> #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(ss_pin, RST_PIN); // Create MFRC522 instance. //dhlwnoume ta diafora status pou borei na exoun ta fanaria. to unknown einai gia na mhdenisoume kapoio status //ta A px AGREEN einai gia na dhlwsoume oti einai ALARM GREEN enum StatusCode unknown, RED, GREEN, ARED, AGREEN, YELLOW, AYELLOW ; //dhlwnoume tis metavlhtes byte x = 0; int DataReceived; int mystatus = RED; int RemoteStatus = unknown; boolean Transmit; boolean Received ; boolean StartAsMaster = true; int I2CAddress ; int I2CRemoteAddress ; long I2CpreviousMillis = 0; long interval100 = 100; // will store last time LED was updated // interval at which to blink (milliseconds) //oi 3 pio vasikes metavlhtes. poso xrono na menei anoixto to prasimo long intervatrafficlight = 10000; // interval at which to blink (milliseconds) // poso xrono tha paramenoun kai ta 2 sto kokkino long intervalbetweenreds = 1000; 36

//poso tha paramenei to kitrino anoixto long intervalyellow = 2000; int GreenLed = 8; int RedLed = 7; int YellowLed = 6; long TimeStartedAsGreen; long TimeStartedAsYellow; long TimeStartedAsAYellow; long TimeStartedAsAGreen; long TimeBetweenReds = 0; boolean REDDelay = false; boolean CanChangeToGreen = true; boolean Alarm = false; boolean RAlarm =false; // methodos pou allazei tous arduinos apo master se slave. // kathe fora pou enas apo tous 2 stelnei mia prlhroforia ston allon tote kanei kai change mode //wste na parei meta apanthsh apo ton allon. void ChangeMode() if (Transmit == true) Wire.begin(); // Start I2C Bus as Master else if (Transmit == false) Wire.begin(I2CAddress); // Start I2C Bus as a Slave (Device Number 9) Wire.onReceive(receiveEvent); // register event // analoga me thn metavlhth tou startasmaster ksekinaei kai sto analogo mode gia na steilei h na lavei void SetInitialMode() if (StartAsMaster == true) 37

Wire.begin(); // Start I2C Bus as Master else if (StartAsMaster == false) Wire.begin(I2CAddress); // Start I2C Bus as a Slave (Device Number 9) Wire.onReceive(receiveEvent); // register event void setup() Serial.begin(9600); //dinei tis antistoixes dieuthinseis ston arduino analogo me to an ksekinhse san master h slave if (StartAsMaster == true) I2CAddress = 1; else if (StartAsMaster == false) I2CAddress = 2; if (StartAsMaster == true) I2CRemoteAddress = 2; else if (StartAsMaster == false) I2CRemoteAddress = 1; if (StartAsMaster == true) Transmit = true; else if (StartAsMaster == false) Transmit = false; if (StartAsMaster == true) Received = false; else if (StartAsMaster == false) Received = true; SetInitialMode(); pinmode(greenled, OUTPUT); pinmode(redled, OUTPUT); pinmode(yellowled, OUTPUT); digitalwrite(greenled, HIGH); digitalwrite(redled, HIGH); digitalwrite(yellowled, HIGH); 38

SPI.begin(); // Init SPI bus mfrc522.pcd_init(); // Init MFRC522 card Serial.println("Scan PICC to see UID and type..."); void loop() //kentrikh loop h opoia trexei kathe 100ms kai h diavazei dedomena h stelnei dedomena //episeis kathe fora pou ekteleitai kanei kai tis antistoixes diadikasies diavazei an yparxei karta sto RFID // kai anavei ta antistoixa fanaria analoga me to status unsigned long currentmillis = millis(); if(currentmillis - I2CpreviousMillis > interval100) // save the last time you blinked the LED I2CpreviousMillis = currentmillis; if (Transmit == true) Wire.beginTransmission(I2CRemoteAddress); // transmit to device #9 Wire.write(myStatus); // sends x Wire.endTransmission(); // stop transmitting Transmit = false; ChangeMode(); if (Received == true) Transmit = true; Received = false; ChangeMode(); scanfrid(); DecideLights(); 39

Serial.print("myStatus: "); Serial.print(myStatus); Serial.print(" RemoteStatus "); Serial.print(RemoteStatus); Serial.print(" Can Change "); Serial.print(CanChangeToGreen); Serial.print(" REDDelay "); Serial.println(REDDelay); void DecideLights() unsigned long currentmillis = millis(); // diadikasia pou xtypaei to alarm kai ston apomakrismeno einai kai ekei alarm green if ((Alarm == true) && (RemoteStatus!= AGREEN)) mystatus = AGREEN; //diadikasia pou an exei xtyphsei to alarm green kai o apomakrismenos anapsei kokkino tote na anapsei to prasino if ((mystatus == AGREEN) && (RemoteStatus == ARED) && (Alarm == true)) Alarm = false; AGreenLightOn(); //diadikasia pou anavei to kitrino prin anapsei to kokkino else if ((mystatus == AGREEN) && (Alarm == false)) if(currentmillis - TimeStartedAsAGreen > intervatrafficlight) YellowLightOn(); //RedLightOn(); //diadikasia pou elenxei an to exoun anapsei kai ta 2 kokkina mono tote na borei na anapsei kana prasino else if ((mystatus == ARED && RemoteStatus == RED) ) 40

if (REDDelay == true) TimeBetweenReds = millis(); GreenLightOn(); //diadikasia pou elenxei an ston apomakrismeno einai kokkino kai ston euato tou kokkino na anapsei to prasino else if ((RemoteStatus == RED) && (mystatus == RED) && (CanChangeToGreen == true) ) if (REDDelay == true) TimeBetweenReds = millis(); GreenLightOn(); //diadikasia pou elenxei pote na anapsei to kitrino else if ((RemoteStatus == RED) && (mystatus == GREEN)) if(currentmillis - TimeStartedAsGreen > intervatrafficlight) YellowLightOn(); //diadikasia pou anavei to kokkino otan xtyphsei to alarm else if ((((RemoteStatus == RED) (RemoteStatus == ARED)) && (mystatus == YELLOW))) if(currentmillis - TimeStartedAsYellow > intervalyellow) RedLightOn(); //diadikasia pou anavei to kokkino meta to kitrono alla me alarm else if (((RemoteStatus == AGREEN) && (mystatus == AYELLOW))) 41

if(currentmillis - TimeStartedAsYellow > intervalyellow) ARedLightOn(); //diadikasia pou anavei to kokkino ston apomakrismeno otan xtypsei to alarm else if ((RemoteStatus == AGREEN) && (mystatus == RED )) ARedLightOn(); //ARedLightOn(); //diadikasia pou anavei to kitrino prin to kokkino panw se kokkino alarm else if ((RemoteStatus == AGREEN) && (mystatus!= ARED )) AYellowLightOn(); //ARedLightOn(); //OLA TA FANARIA PRASSINA opote anapse kokina else if ((RemoteStatus == GREEN) && (mystatus == GREEN)) RedLightOn(); //anavei mono to prasino led void GreenLightOn() REDDelay = false; unsigned long currentmillis = millis(); if(currentmillis - TimeBetweenReds > intervalbetweenreds) digitalwrite(greenled, HIGH); digitalwrite(redled, LOW); digitalwrite(yellowled, LOW); TimeStartedAsGreen = millis(); CanChangeToGreen = false; 42

mystatus = GREEN; //anavei mono to prasino led alla dinei status ALARM green void AGreenLightOn() //REDDelay = false; unsigned long currentmillis = millis(); if(currentmillis - TimeBetweenReds > intervalbetweenreds) digitalwrite(greenled, HIGH); digitalwrite(redled, LOW); digitalwrite(yellowled, LOW); TimeStartedAsAGreen = millis(); CanChangeToGreen = false; mystatus = AGREEN; //diadikasia pou anavei to kokkino void RedLightOn() digitalwrite(greenled, LOW); digitalwrite(redled, HIGH); digitalwrite(yellowled, LOW); TimeStartedAsGreen = 0; mystatus = RED; RemoteStatus = unknown; //diadikasia pou anavei to kokkino alla me status alarm red void ARedLightOn() digitalwrite(greenled, LOW); digitalwrite(redled, HIGH); digitalwrite(yellowled, LOW); TimeStartedAsGreen = 0; RAlarm = true; mystatus = ARED; 43

RemoteStatus = unknown; //diadikasia kitrinou void YellowLightOn() digitalwrite(greenled, LOW); digitalwrite(redled, LOW); digitalwrite(yellowled, HIGH); TimeStartedAsYellow = millis(); mystatus = YELLOW; RemoteStatus = unknown; diadikasia kitrinou me alarm void AYellowLightOn() digitalwrite(greenled, LOW); digitalwrite(redled, LOW); digitalwrite(yellowled, HIGH); TimeStartedAsYellow = millis(); mystatus = AYELLOW; RemoteStatus = unknown; //kathe fora pou erxontai dedomena sto i2c prin ta diavasei elenxei an exei allaksei kapoio status // sthn periptosh pou px apo apo kitrino egine kokkino tote anavei kai thn flag oti borei na ksanaginei prasino // meta krataei ta dedomena sthn metavlith RemoteStatus void receiveevent(int howmany) int tempremotestatus = Wire.read(); if ((tempremotestatus == RED) && (RemoteStatus == YELLOW)) CanChangeToGreen = true; REDDelay = true; if ((tempremotestatus == RED) && (RemoteStatus == GREEN)) CanChangeToGreen = true; REDDelay = true; 44

if ((tempremotestatus == RED) && (RemoteStatus == AGREEN)) CanChangeToGreen = true; REDDelay = true; if ((tempremotestatus == RED) && (mystatus == ARED) && (RAlarm == true)) CanChangeToGreen = true; REDDelay = true; RAlarm = false; RemoteStatus = tempremotestatus; // receive byte as an integer //RemoteStatus = Wire.read(); // receive byte as an integer Received = true; //xrhsimopoiontas tis vivliothikes diavazei RFID card kai den yparxei karta kanei return //an yparxei thn diavazei alla meta kanei halt wste na mhn synexisei na thn divazei an prwta den fygei konta apo to scanner void scanfrid() if (! mfrc522.picc_isnewcardpresent()) return; // Select one of the cards if (! mfrc522.picc_readcardserial()) return; Alarm = true; mfrc522.picc_halta(); 45

Συμπεράσματα Μας ζητήθηκε να δημιουργήσουμε κάτι πρακτικό και συμβατικό το οποίο θα διευκολύνει την ζωή των ανθρώπων. Έτσι αυτό που καταφέραμε είναι η ομαλή και γρήγορη κυκλοφορία των οχημάτων έκτακτης ανάγκης για το γενικό νοσοκομείο καβάλας και μπορεί να χρησιμοποιηθεί για όλα τα νοσοκομεία της χώρας. Με αυτή μας την εργασία καταλάβαμε πως μπορεί το Arduino και το RFID να μας βοηθήσουν στη ζωή μας με διάφορες τεχνικές και λειτουργίες τους οι οποίες μπορούν να βοηθήσουν την καθημερινότητα των ανθρώπων και να κάνουν την ζωή μας ευκολότερη με την σωστή χρήση τους. Θα θέλαμε να ευχαριστήσουμε τον συνεργάτη-καθηγητή μας κύριο Κόγια Παναγιώτη που ήταν δίπλα μας στην εκπόνηση της εργασίας μας. 46

ΚΕΦΑΛΑΙΟ 4 Βιβλιογραφία-πηγές πληροφοριών 1.wikipidia 2.www.Arduino.cc 3.www.deltahacker.gr 4.Γιαγλής Γεώργιος Επισκόπηση τεχνολογίας ραδιόσυχνικής αναγνώρισης (RFID) 2006 5.Πρόγραμμα Δικτυωθείτε 13 απαντήσεις αποκωδικοποιούν τον όρο RFID 47