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

Σχετικά έγγραφα
ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

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

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

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD

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

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

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

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

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

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

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

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

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

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

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

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

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

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

Οδηγίες γρήγορης εκκίνησης.

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

Οδηγίες Χρήσεως. Κάτοψη Συσκευής. SOS 100 Elderly Care System. Κύρια χαρακτηριστικά SOS 100

Σας προτείνουμε να εγκαταστήσετε στο κινητό σας τηλέφωνο την εφαρμογή Senior Helper"

U R Safe. GSM Emergency Alarm System URS-007EG. Εγχειρίδιο χρήσης

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

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

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

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

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

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

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

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

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

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

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

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

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

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

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

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

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

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

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

GSM INTD Εγχειρίδιο χρήσης GSM INTD0909

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

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

THERMOMETER TC-101 ΕΓΧΕΙΡΙ ΙΟ ΕΓΚΑΤΑΣΤΑΣΗΣ ΚΑΙ ΧΡΗΣΗΣ. 7/12/2011 AUTOGUARD-PG Σελ.1 7/12/2011 AUTOGUARD-PG Σελ.2

Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική»

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

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

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

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

Τεχνικές Προδιαγραφές Συστήματος

ΑΙΣΘΗΤΗΡΕΣ ΚΑΙ ΜΟΤΟΡΕΣ ΠΡΑΚΤΙΚΑ ΘΕΜΑΤΑ ΧΡΗΣΗΣ. Υποψήφιος Διδάκτωρ

Ημερήσιο Γενικό Λύκειο Σητείας. Σχ. έτος

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

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17

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

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

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

Workshops. Εισηγητής: Παλιούρας Αριστείδης

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

Arduino Teachers Workshop

ΑΙΣΘΗΤΗΡΑΣ ΣΧΕΤΙΚΗΣ ΥΓΡΑΣΙΑΣ. Η πιο συνηθισμένη έκφραση για την υγρασία του αέρα είναι η σχετική υγρασία (Relative Ηumidity, RH).

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

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

Ελληνική Έκδ ση. Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές προδιαγραφές BT100. Πρόσθετες τεχνικές προδιαγραφές ΒΤ100 S W E E X.

Χαρακτηριστικά. Βάρος. Ευαισθησία GPS Ακρίβεια GPS. Θερμοκρασία Αποθήκευσης Θερμοκρασία Λειτουργίας

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

4 Εισαγωγή στο Arduino

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

ΗΧ-GD30. Οδηγίες χρήσης και προγραμματισμού. Συσκευή τηλεφωνητή μέσω GSM και PSTN. Εγκατάσταση

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

Θερμοστάτης LTC 530. Οδηγίες Ο θερμοστάτης διαθέτει οθόνη με «LED» φωτισμό, η οποία εμφανίζει την πραγματική θερμοκρασία

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

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

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

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

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

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

WDT και Power Up timer

Οδηγίες εγκατάστασης και χρήσης του Quartus

USB_6008_terminal_31. PCI_6023E_terminal_68. PCI_6023E_terminal_67

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

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

TRACKER V1.0 Η ΚΑΤΑΣΚΕΥΗ

ΗΧ-GD30+ Συσκευή τηλεφωνητή μέσω GSM και PSTN

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

Οδηγίες EQL Desktop (rev ) ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

Lab 1: Experimenting on Arduino & AI Sense

Transcript:

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αναφορά μετεωρολογικών δεδομένων (βροχής, ανέμου, θερμοκρασίας) με χρήση Arduino μέσω GSM Report meteorological data (rainfall, wind, temperature) using Arduino via GSM Κοσμίδης Ορέστης 4495 Ρωμανίδης Νικόλαος 4454 ΕΠΙΒΛΕΠΟΝΤΕΣ ΚΑΘΗΓΗΤΕΣ: Κόγιας Παναγιώτης & Κόγια Φωτεινή ΚΑΒΑΛΑ 2014

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

Περίληψη Σε αυτή την πτυχιακή εργασία έχει κατασκευαστεί και προγραμματιστεί ένα σύστημα αναφοράς μετεωρολογικών δεδομένων, με τη χρήση τεχνολογίας Arduino GSM, ώστε να μπορούμε να ενημερωνόμαστε ανά πάσα στιγμή για τις καιρικές συνθήκες που επικρατούν σε μια περιοχή μέσω μιας κινητής συσκευής, όπως είναι το κινητό μας τηλέφωνο. Πιο συγκεκριμένα, δημιουργήθηκε ένα σύστημα μετεωρολογικού σταθμού που αποτελείται από ένα Arduino UNO R3 και τους απαραίτητους αισθητήρες: θερμοκρασίας ( LM35), αέρα (TCST 2103), βροχής (YL-83), καθώς και το σύστημα GSM που είναι απαραίτητο για τη μετάδοση των μετρήσεων στην κινητή συσκευή μας. Abstract In this present undergraduate thesis, we have created a programmed data reference system with the use of Arduino-GSM technology, so that we can be informed, whenever we want, about the weather conditions prevailing in an area via a mobile device such as our mobile phone. To be more specific, we created a weather station system which consists of an Arduino Uno R3 and the required temperature sensor LM 35, air sensor TCST 2103 and rain sensor YL-83 as well as the GSM system which is necessary in order to transmit the measurements from Arduino to our mobile device. 2

Περιεχόμενα Πρόλογος... 1 Περίληψη... 2 Abstract... 2 Περιεχόμενα... 3 1.Εισαγωγή... 5 ΚΕΦΑΛΑΙΟ 1 ο... 6 Arduino Uno... 6 1.1Γενικά... 6 1.2 Σειριακή θύρα... 7 1.3 Χαρακτηριστικά του Arduino... 7 1.4 Βασικές μνήμες... 8 1.5 Τροφοδοσία... 8 1.6 Εγκατάσταση του προγράμματος... 9 1. Πλατφόρμα Arduino UNO και USB καλώδιο.... 9 2. Εγκατάσταση του προγράμματος... 10 3. Έναρξη της εφαρμογής... 10 4. Επιλέγουμε πλατφόρμα και σειριακή θύρα... 11 1.7 Ανάπτυξη της εφαρμογής Arduino... 11 ΚΕΦΑΛΑΙΟ 2 ο... 13 Υλοποίηση συστήματος... 13 2.1 Εξαρτήματα κατασκευής... 13 1. Arduino UNO... 13 2. Πλακέτα διάτρητη εποξική... 14 3. Καλώδια... 14 4. SIMCOM SIM900 GSM-SHIELD... 15 5. Αισθητήριο θερμοκρασίας LM35... 15 6. Αισθητήριο ανέμου TCST 2103... 16 7. Αισθητήριο Βροχής YL-83... 17 8. Οθόνη LCD... 17 9. Μπαταρία Αντάπτορας... 18 3

2.2 Κατασκευή... 18 Εργαλεία... 21 2.3 Ολοκλήρωση και τοποθετήσεις... 24 ΚΕΦΑΛΑΙΟ 3 ο... 26 Κώδικας προγράμματος... 26 3.1 Σκοπός του GSM... 26 3.2 Κώδικας... 32 3.3 Βαθμονόμηση... 36 Συμπεράσματα... 38 ΚΕΦΑΛΑΙΟ 4 ο... 39 Βιβλιογραφία Πηγές πληροφοριών... 39 4

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

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

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

1.4 Βασικές μνήμες Οι πλατφόρμες Arduino διαθέτουν τρεις βασικές μνήμες: Flash memory (32 Kbytes), στην οποία τοποθετείται κάθε φορά το πρόγραμμα που πρόκειται να εκτελεστεί καθώς και ο φορτωτής εκκίνησης που διευκολύνει την διαδικασία του προγραμματισμού της πλατφόρμας. SRAM memory (στατική μνήμη τυχαίας προσπέλασης των 2 Kbytes), η οποία χρησιμοποιείται για την προσωρινή αποθήκευση των στατικών και των μεταβλητών δεδομένων του προγράμματος που εκτελείται. ΕEPROM memory (1 Kbytes), στην οποία αποθηκεύονται οι τιμές των μεταβλητών όταν η πλατφόρμα σβήσει(off). Χρησιμοποιείται για την αποθήκευση ρυθμίσεων και άλλων παραμέτρων ανάμεσα στα Reset του Arduino. 1.5 Τροφοδοσία Το Arduino UNO μπορεί να τροφοδοτείται από τον υπολογιστή με την σύνδεση στην USB ή από εξωτερικό τροφοδοτικό. Εκτός από την χρήση USB, η τροφοδοσία μπορεί να προέλθει από μια μπαταρία 9V ή με την χρήση ενός τροφοδοτικού 220V/9V και έπειτα με μετατροπή της τάσης AC σε DC και συνδέοντάς τα σε έναν αντάπτορα 2,1mm με την θετική τάση στο κέντρο. Επίσης, η τροφοδοσία μπορεί να γίνει μέσω του pin Vin και GND με τον ίδιο τρόπο. Αν τροφοδοτήσουμε με τάση μικρότερη των 7V η παροχή του pin των 5V δεν θα μπορέσει να παρέχει αυτήν την τιμή με αποτέλεσμα να είναι ασταθής. Εάν χρησιμοποιήσουμε τροφοδοσία μεγαλύτερη των 12V ο ρυθμιστής τάσης μπορεί να υπερθερμανθεί με αποτέλεσμα να καταστραφεί η πλακέτα μας. Η συνιστώμενη περιοχή τιμών είναι 7 έως 12 βολτ. Οι πείροι ισχύος είναι οι εξής : VIN: Ακροδέκτης για μη σταθεροποιημένη τάση. Συνήθως εδώ συνδέεται μια εξωτερική πηγή τροφοδοσίας (σε αντίθεση με 5 βολτ από τη σύνδεση USB ή άλλη οργανωμένη πηγή ενέργειας). 8

Pin 5V: Ακροδέκτης σταθεροποιημένης τάσης 5Volt. Η ρυθμιζόμενη παροχή ηλεκτρικού ρεύματος που χρησιμοποιείται για την τροφοδοσία του μικροελεγκτή ή άλλων ηλεκτρονικών στοιχείων της πλακέτας. Αυτό μπορεί να προέρχεται είτε από Vin με ενσωματωμένο ρυθμιστή, είτε να παρέχεται από USB ή άλλη ρυθμιζόμενη παροχή 5V. 3V3: Μια παροχή 3,3 βολτ που παράγεται από τη ρυθμιστική. Η μέγιστη κατανάλωση ρεύματος είναι 50 ma. GND: Ακροδέκτες γείωσης. 1.6 Εγκατάσταση του προγράμματος Η εγκατάσταση του προγράμματος στον υπολογιστή μας είναι ανάλογη με το λειτουργικό σύστημα που διαθέτουμε. Εμείς θα εξετάσουμε την εγκατάσταση του λογισμικού μας στο λειτουργικό σύστημα των Windows 7. 1. Πλατφόρμα Arduino UNO και USB καλώδιο. Μαζί με την αγορά του Arduino δίνεται και το απαραίτητο καλώδιο επικοινωνίας USB που θα συνδέσουμε με τον υπολογιστή μας. Εικόνα 2: Arduino Uno R3 Εικόνα 3: USB Καλώδια 9

2. Εγκατάσταση του προγράμματος Επισκεπτόμενοι τον παρακάτω σύνδεσμο http://arduino.cc/en/main/software και επιλέγοντας το λειτουργικό σύστημα που διαθέτουμε, κατεβάζουμε το λογισμικό που επιθυμούμε. Στην περίπτωση μας για Windows 7. 3. Έναρξη της εφαρμογής Εικόνα 4: Software Αφού κατεβάσουμε και εγκαταστήσουμε το πρόγραμμα πηγαίνουμε στην Έναρξη/Πίνακας Ελέγχου/Διαχείριση Συσκευών και επιλέγοντας από το μενού Θύρες (COM & LPT) βλέπουμε ποια σειριακή θύρα χρησιμοποιεί (COM7). Αυτή θα τη χρειαστούμε παρακάτω για την ολοκλήρωση της εγκατάστασης. Εικόνα 5: Εύρεση της Σειριακής Θύρας 10

4. Επιλέγουμε πλατφόρμα και σειριακή θύρα Επιλέγοντας από το μενού Tools/Board/Arduino UNO και την σειριακή θύρα από το μενού Tools/Serial port/com7 και ολοκληρώνουμε την εγκατάσταση του προγράμματος. Εικόνα 6: Επιλογή Πλατφόρμας Εικόνα 7: Σειριακή Θύρα 1.7 Ανάπτυξη της εφαρμογής Arduino Το περιβάλλον ανάπτυξης του Arduino αποτελείται από ένα μενού, τη γραμμή εργαλειών, τις τρέχουσες καρτέλες «sketch» με ακόλουθο το κείμενο οπού γίνεται η συγγραφή του κώδικα και την κονσόλα μηνυμάτων. 11

Στην εργαλειοθήκη θα δουμε με τη σείρα τα κουμπιά: Compile: Έλεγχος για συντακτικά λάθη Upload: φόρτωση του κώδικα στον μικροελεκτή New: Δημιουργία νέας εργασίας Open: Άνοιγμα αποθηκευμένων εργασίων Save: Αποθήκευση νέας εργασίας Serial Monitor: Εμφανίζει ένα παράθυρο με τη σειριακή οθόνη Σειριακή οθόνη Εδώ εμφανιζονται τα δεδομένα που επιθυμουμε να λάβουμε από την πλατφόρμα μας. Επίσης, μπορουμε να εισάγουμε δεδομένα πληκτρολογώντας και πατώντας το send, όπως και να επιλέξουμε την ταχύτητα ανάλογα με την τιμή που υπάρχει στο πρόγραμμά μας. Εικόνα 8: Σειριακή Οθόνη 12

ΚΕΦΑΛΑΙΟ 2 ο Υλοποίηση συστήματος 2.1 Εξαρτήματα κατασκευής Για την επιλογή των υλικών έγινε συστηματική μελέτη μέσω internet, τόσο για μηχανικά μέρη της κατασκευής όσο και για τα ηλεκτρονικά. Η παρούσα πτυχιακή μελέτη όπως αναφέραμε και νωρίτερα έγινε με κύριο κριτήριο την οικονομία, γι αυτό και η αγορά τον υλικών έγινε μέσω internet και πιο συγκεκριμένα από το http://www.ebay.com/. Παρακάτω θα εξετάσουμε τα εξαρτήματα που χρησιμοποιήσαμε. 1. Arduino UNO Πρώτα προμηθευτήκαμε το Arduino UNO R3 της εταιρείας Sain Smart το οποίο μας κόστισε περίπου 10 και μαζί του προμηθευτήκαμε το απαραίτητο για επικοινωνία με τον υπολογιστή καλώδιο (USB 2.0). Εικόνα 9: Arduino Uno R3 13

2. Πλακέτα διάτρητη εποξική Οι πλακέτες είναι απαραίτητες για ηλεκτρονικές κατασκευές στις όποιες τοποθετούμε το κύκλωμα μας ( το οποίο μπορεί να αποτελείται από πυκνωτές, αντιστάσεις, διόδους, ολοκληρωμένα κτλ). Στην κατασκευή μας, χρειαστήκαμε ένα μικρό μέρος μόνο, γι αυτό και το διαμορφώσαμε ανάλογα τεμαχίζοντας το. Το κόστος του ήταν ελάχιστο, λιγότερο από 0,5. Εικόνα 10: Πλακέτα 3. Καλώδια Για τη διασύνδεση-επικοινωνία των εξαρτημάτων μας είναι απαραίτητη η χρήση καλωδίων και των κατάλληλων pins για την σωστή σύνδεσή τους με το Arduino. Τέλος, επιλέξαμε πολύχρωμα καλώδια με σκοπό την αναγνώριση του κυκλώματος και το κόστος τους ανήλθε στα 2-3. Εικόνα 11: Καλώδια 14

4. SIMCOM SIM900 GSM-SHIELD Το GSM-Shield ανήκει στην εταιρία της SIMcom και συνδέει το Arduino με το δίκτυο κινητής τηλεφωνίας. Μέσω αυτού λαμβάνουμε κλήσεις και SMS σε μια SIM που του έχουμε τοποθετήσει στο κάτω μέρος του. Μέσω των αρσενικών pins, κάτω από την πλακέτα, εδράζεται πάνω στο Arduino (στα θηλυκά pins) και δημιουργεί την απαραίτητη επικοινωνία τους. Το κόστος τους ανήλθε στα 25. Εικόνα 12: Gsm Sim 900 5. Αισθητήριο θερμοκρασίας LM35 Το LM35 είναι ένα ολοκληρωμένο κύκλωμα αισθητήρα που μπορεί να χρησιμοποιηθεί για τη μέτρηση της θερμοκρασίας μέσω της ηλεκτρικής εξόδου του (Vout), η οποία είναι ανάλογη με τη θερμοκρασία που επικρατεί πάνω του (σε o C). Το κόστος του ανήλθε στο 1 περίπου. Vout = +1,500mV ισούται με +150 0 C Vout = +250mV ισούται με +25 0 C Vout = -550mV ισούται με -55 0 C Εικόνα 13: LM-35 15

6. Αισθητήριο ανέμου TCST 2103 Το TCST2103 είναι ένας μεταδότης-αισθητήρας σχήματος Π που περιλαμβάνει έναν υπέρυθρο εκπομπό και ένα φωτοτρανζίστορ. Αυτοί βρίσκονται αντικριστά στους οπτικούς άξονες σε μια προκαθορισμένη απόσταση από τον κατασκευαστή. Με αυτόν τον τρόπο, όποτε ο υπέρυθρος εκπομπός είναι αναμμένος, το φωτοτρανζιστορ άγει την έξοδό του. Το κόστος τους ανήλθε στο 3 περίπου. Εικόνα 14: TCST-2103 Στην παρακάτω εικόνα απεικονίζεται ο ριγωτός δίσκος που χρησιμοποιήσαμε για την δημιουργία παλμών για τη μέτρηση της ταχύτητας του ανέμου. Εικόνα 15: Δίσκοι 16

7. Αισθητήριο Βροχής YL-83 Το αισθητήριο βροχής τροφοδοτείται με 5V και ουσιαστικά είναι μια μεταβλητή αντίσταση η οποία μεταβάλλεται με την ύπαρξη υγρασίας ή σταγόνων πάνω στην ειδικά διαμορφωμένη επιφάνειά του, δίνοντας μας δύο εξόδους (Vout): μια αναλογική (A0) και μία ψηφιακή (D0). Το κόστος τους ανήλθε στα 3,5. 8. Οθόνη LCD Εικόνα 16: YL-83 Η οθόνη προσαρμόζεται στο Arduino. Η τάση λειτουργίας είναι 5V και μας βοηθάει στην απεικόνιση των δεδομένων σε πραγματικό χρόνο και στην μορφή που εμείς επιθυμούμε και έχουμε προσαρμόσει στο πρόγραμμα. Η οθόνη LCD που θα χρησιμοποιήσουμε εμείς έχει χαρακτηριστικά 2x16, δηλαδή 2 σειρών και 16 χαρακτήρων. Το κόστος τους ανήλθε στα 4. Εικόνα 17: Οθόνη LCD 17

9. Μπαταρία Αντάπτορας Η μπαταρία που θα τροφοδοτεί το σύστημά μας είναι 9V, ίδια δηλαδή με την τάση τροφοδοσίας του Arduino (στα πλαίσια των 7-12V), με την χρήση του κατάλληλου αντάπτορα. Το κόστος συνολικά ανήλθε στα 3. Εικόνα 18: Αντάπτορας Εικόνα 19: Μπαταρία 9V 2.2 Κατασκευή Το σύστημά μας τοποθετήθηκε πάνω σε μια ξύλινη επιφάνεια (μακέτα), υπολογίζοντας τις διαστάσεις του σε 70cm x 60cm. Την προμηθευτήκαμε από το ξυλουργείο της γειτονιάς, δωρεάν. Εικόνα 18: Μακέτα 18

Ακόμα, χρησιμοποιήσαμε Plexiclass για την προστασία των ηλεκτρονικών μας και την τοποθέτηση της οθόνης. Αυτό τοποθετήθηκε με τη βοήθεια μιας ντίζας, η οποία υπολογίστηκε και κόπηκε κατάλληλα με τροχό και έπειτα στερεώθηκε πάνω στο ξύλο με παξιμάδια συνολικού κόστους 5. Εικόνα 19: Υλικά Επισκεφτήκαμε το ποδηλατικό κατάστημα της γειτονιάς και ζητήσαμε να μας προμηθεύσει έναν ποδηλατικό μπροστινό άξονα (τον οποίο και μας δώρισε). Αυτόν τον χρησιμοποιήσαμε για την δημιουργία του ανεμόμετρου. Εικόνα 20: Άξονας Ποδηλάτου 19

Στη συνέχεια επισκεφτήκαμε τις εγκαταστάσεις εταιρείας κατασκευής καμινάδων, οι υπάλληλοι της οποίας με την εμπειρία τους στις κατασκευές ολοκλήρωσαν τη συναρμολόγηση του ανεμόμετρου, προσαρμόζοντας τον άξονα σε μια φτερωτή κατασκευής. Έπειτα, τοποθετήσαμε τον πλαστικό ριγωτό δίσκο που αναφέραμε παραπάνω. Εικόνα 21: Κατασκευή 1 Εικόνα 22: Κατασκευή 2 20

Εργαλεία Χρειαστήκαμε ειδικά εργαλεία για την συναρμολόγηση της κατασκευής όπως το κολλητήρι με καλάι για την κόλληση των pin, διάφορα κατσαβίδια και βιδολόγο, τον κόφτη για την απογύμνωση των καλωδίων, όπως και ένα κλειδί για την σφίξη τον παξιμαδιών και το απαραίτητο πολύμετρο για τον έλεγχο του κυκλώματος. Εικόνα 23: Εργαλεία Στη συνέχεια προχωρήσαμε στη μελέτη του κυκλώματος των αισθητήρων και στην τοποθέτησή τους στην πλακέτα. Εικόνα 24: Ηλεκτρονικό σχέδιο 21

Εικόνα 25: Μπροστινό Μέρος Πλακέτας Εικόνα 26: Πίσω Μέρος Πλακέτας 22

Τώρα που είναι έτοιμη η πλακέτα μας μπορούμε να την τοποθετήσουμε στην σωστή απόσταση από τον ριγωτό κινούμενο δίσκο μας. Εικόνα 29: Τοποθέτηση Πλακέτας Οθόνη Κολλάμε προσεκτικά τα καλώδια πάνω στην οθόνη μας και τα συνδέουμε πάνω στο Arduino και ήμαστε έτοιμοι. Ο τρόπος σύνδεσης που θα ακολουθήσουμε απεικονίζεται στην παρακάτω εικόνα. Εικόνα 28: Σύνδεση LCD 23

2.3 Ολοκλήρωση και τοποθετήσεις Τοποθετούμε την SIM κάρτα μας στην ειδική θήκη του GSM- Shield. Προσαρμόζουμε προσεκτικά το GSM-Shield στα αντίστοιχα pins του Arduino. Εικόνα 29: Εισαγωγή Κάρτας Sim Στο Gsm Sim900 Σημαδεύουμε και προχωράμε με την τοποθέτηση των υλικών μας στη μακέτα. Ολοκληρώνουμε με την καλωδίωση. Εικόνα 31: Τοποθέτηση Εξαρτημάτων Μακέτα 1 24

Εικόνα 32: Τοποθέτηση Εξαρτημάτων Μακέτα 2 25

ΚΕΦΑΛΑΙΟ 3 ο Κώδικας προγράμματος 3.1 Σκοπός του GSM Η χρήση του GSM αποσκοπεί στο να λαμβάνουμε, μέσω του δικτύου κινητής τηλεφωνίας, πληροφορίες από ένα απομακρυσμένο σημείο. Για παράδειγμα, από ένα χωράφι, από την κορυφή ενός βουνού, από κάποιο καταφύγιο, από έναν φάρο κτλ. Με την χρήση εντολών μπορούμε να διαμορφώσουμε τη λειτουργία του, όπως να λαμβάνει κλήσεις ή μηνύματα και να απαντάει με τον ίδιο τρόπο, να μας ενημερώνει κάθε φορά που γίνεται κάποια αλλαγή ή ακόμα και να μας πληροφορεί μέσα σ ένα χρονικό πλαίσιο που του έχουμε δώσει. Εμείς, λόγω της ποσότητας των πληροφοριών επιλέξαμε τη χρήση μηνυμάτων. Στέλνοντας ένα SMS από το κινητό μας με την μορφή «#info», μας στέλνει τις τιμές του ανέμου, της θερμοκρασίας και την ένδειξη βροχής. Παρακάτω θα δούμε αναλυτικά τον κώδικα και τις εντολές του GSM, καθώς και τη μορφή του μηνύματος. Αρχικά συντάξαμε τη βιβλιοθήκη που χρειάζεται για την επικοινωνία του Arduino με το GSM μέσω των σειριακών pin 0 (RX) και pin 1 (TX). #include <SoftwareSerial.h> // βιβλιοθήκη για την επικοινωνία του Arduino με το GSM #include <LiquidCrystal.h> // library for LCD display LiquidCrystal lcd(12,11,5,4,3,2); // great LCD object char inchar; // will hold the incoming character from the GSM shield SoftwareSerial SIM900(7, 8); // διαμόρφωση της σειριακή θύρα του λογισμικού int temppin=a1,r=a0,pin=6,wind=0,d=0,stat=1,t=0; // integer values unsigned long duration; // for value 0 to 4.294.967.295 (2 ^ 32-1) 26

Στη συνέχεια, ενεργοποιήσαμε το GSM στο οποίο θα δοθεί χρόνος για την σύνδεσή του με το δίκτυο κινητής τηλεφωνίας. Οι εντολές λειτουργίας δηλώνονται στο void setup(), το οποίο διαβάζεται μια φορά στην εκκίνηση του προγράμματος. void setup() lcd.begin(16,2); // the number of LCD's columns and rows Serial.begin(19200); SIM900power(); // τρέχει το void SIM900power() το οποίο ενεργοποιεί το GSM SIM900.begin(19200); // ρυθμός μετάδοσης δεδομένων baud delay(20000); // χρόνος που απαιτεί το GSM για την σύνδεσή του στο δίκτυο σε m/sec SIM900.print("AT+CMGF=1\r"); // το βάζει σε λειτουργία SMS delay(100); // χρόνος για την εκτέλεση της εντολής SIM900.print("AT+CNMI=2,2,0,0,0\r"); // βγάζει στην σειριακή θύρα το περιεχόμενο των SMS delay(100); // χρόνος για την εκτέλεση της εντολής pinmode(pin,input); // pin will work as an input Serial.println("Ready..."); // the display shows "ready" when the GSM is ready to handle message void SIM900power() digitalwrite(9, HIGH); delay(1000); digitalwrite(9, LOW); delay(7000); // λειτουργεί σαν κουμπί «power» Το void loop() που θα δούμε παρακάτω εκτελείται συνεχόμενα και ανανεώνει τις μεταβλητές που του έχουμε βάλει, ανάλογα με τις συνθήκες που επικρατούν στα αισθητήριά μας. Γι αυτό τον λόγο έχουμε τοποθετήσει τις μαθηματικές συναρτήσεις των αισθητηρίων όπως και την λειτουργία ανάγνωσης των SMS. void loop() 27

duration=pulsein(pin,high,50000); // λειτουργία παλμών για το ανεμόμετρο wind=96000/duration+1; // μαθηματική πράξη για την βαθμονόμηση του ανεμομέτρου από παλμούς σε m/sec receivesms(); // τρέχει το void receivesms() για την ανάγνωση των SMS D=analogRead(R); // διαβάζει την αναλογική τιμή του αισθητηρίου της βροχής t=analogread(temppin); // διαβάζει την αναλογική τιμή του αισθητηρίου της θερμοκρασίας t=t*0.48828125; // μαθηματική πράξη για την βαθμονόμηση της θερμοκρασίας από volt σε βαθμούς Κέλσιου lcd.setcursor(0,0); // it moves the cursor in LCD on the screen at 0,0 lcd.print("ws:"); // print to LCD "WS:" lcd.print(wind); // print to LCD the value of the "wind" lcd.print("m/sec"); // print to LCD "m/sec" lcd.setcursor(0,1); // it moves the cursor on LCD s screen lcd.print("te:"); // print to LCD "TE:" lcd.print(t); // print to LCD the value of the "t" lcd.print("*c"); // print to LCD "*C" if(d>=900) // if the value of the D>=900 prints to LCD "NO RAIN" lcd.print(" NO RAIN"); else // otherwise prints to LCD "RAIN!" lcd.print(" RAIN!"); Το void receivesms() είναι αυτό που θα αναγνωρίσει την λήψη μηνύματος και αν θα έχει τη πρέπουσα μορφή, θα προχωρήσει στην αποστολή του SMS τρέχοντας το void sendsms(). void receivesms() από την cellular μονάδα if(sim900.available()>0) κάνε τα παρακάτω // αν ένας χαρακτήρας προέρχεται // αν ένα SMS είναι διαθέσιμο 28

inchar=sim900.read(); // διάβασε τον χαρακτήρα από το μήνυμα if (inchar=='#') // αν ο χαρακτήρας είναι «#» συνέχισε delay(10); // χρόνος για την εκτέλεση της εντολής inchar=sim900.read(); // διάβασε τον χαρακτήρα από το μήνυμα if (inchar=='i') delay(10); inchar=sim900.read(); μήνυμα if (inchar=='n') συνέχισε delay(10); inchar=sim900.read(); μήνυμα if (inchar=='f') συνέχισε delay(10); inchar=sim900.read(); μήνυμα // αν ο χαρακτήρας είναι «i», συνέχισε // χρόνος για την εκτέλεση της εντολής // διάβασε των χαρακτήρα από το // αν ο χαρακτήρας είναι «n», // χρόνος για την εκτέλεση της εντολής // διάβασε τον χαρακτήρα από το // αν ο χαρακτήρας είναι «f», // χρόνος για την εκτέλεση της εντολής // διάβασε τον χαρακτήρα από το if (inchar=='o') // αν ο χαρακτήρας είναι «o», συνέχισε delay(10); // χρόνος για την εκτέλεση της εντολής Serial.println("receiveSMS has been read"); // the display shows "receive SMS has been read" when the SMS has been read SIM900.println("AT+CMGD=1,4"); // η εντολή αυτή διαγράφει όλα τα μηνύματα sendsms(); // τρέχει το void sendsms(); για την αποστολή SMS 29

Το void sendsms() εκτελείται αφού το void receivesms() έχει ολοκληρώσει με επιτυχία την ανάγνωση του SMS που έχει λάβει. Η αποστολή της απάντησης γίνεται σε έναν αριθμό που έχουμε δηλώσει στο πρόγραμμα, με τη μορφή μηνύματος που θα δούμε παρακάτω. void sendsms() // αποστολή SMS SIM900.print("AT+CMGF=1\r"); // εντολή αποστολής SMS delay(100); // χρόνος για την εκτέλεση της εντολής SIM900.println("AT + CMGS = \"+306971867371\""); // ο αριθμός του παραλήπτη σε διεθνή μορφή delay(100); // χρόνος για την εκτέλεση της εντολής SIM900.print("Wind Speed: "); // γράφει στο SMS Wind Speed: SIM900.print(wind); // γράφει στο SMS την τιμή του ανέμου SIM900.print(" m/sec"); // γράφει στο SMS m/sec SIM900.println(); // αλλάζει γραμμή Enter SIM900.print("TEMPRATURE=");// γράφει στο SMS TEMPRATURE= SIM900.print(t) // γράφει στο SMS την τιμή της θερμοκρασίας SIM900.print("*C"); // γράφει στο SMS *C SIM900.println(); // αλλάζει γραμμή Enter if(d>=900) // αν η τιμή του D>=900 SIM900.println("No RAIN"); // γράφει στο SMS No RAIN else // αλλιώς SIM900.println("RAIN!"); // γράφει στο SMS RAIN! delay(100); // χρόνος για την εκτέλεση της εντολής SIM900.println((char)26) //τέλος των εντολών AT με a ^Z, ASCII code 26 delay(3000); // χρόνος για την εκτέλεση της εντολής SIM900.println(); // αλλάζει γραμμή Enter delay(5000); // δίνει χρόνο στην μονάδα να στείλει το SMS SIM900power(); // κλείνουμε την μονάδα Συνοψίζοντας, αρχικά τοποθετήσαμε την κάρτα SIM (χωρίς κωδικό PIN) στο GSM. Συνδέσαμε το GSM με το Arduino και έπειτα το GSM με τα αισθητήρια και την οθόνη. Ρυθμίσαμε τις απαραίτητες εντολές στον κώδικα και φορτώσαμε το πρόγραμμα στο Arduino. Συνδέσαμε τη μπαταρία, πατήσαμε το κουμπί τροφοδοσίας του GSM παρατεταμένα για 1-2 δευτερόλεπτα και περιμέναμε περίπου 30 δευτερόλεπτα για να συνδεθεί με το δίκτυο. 30

Όποτε στέλνουμε SMS με το περιεχόμενο #info, το void receive SMS() λαμβάνει το μήνυμα, ελέγχει την ορθότητα του περιεχομένου του και με τη σειρά του δίνει εντολή στο void send SMS() να μας αποστείλει ένα νέο μήνυμα με τα μετεωρολογικά δεδομένα που επικρατούν. Τέλος, αφού αποστείλει το μήνυμα, τρέχει το void loop από την αρχή, έτσι ώστε να είναι σε θέση να λάβει και πάλι νέο μήνυμα από το κινητό μας. Εικόνα 33 Αποστολή - Παραλαβή Εικόνα 34 Απεικόνιση δεδομένων 31

3.2 Κώδικας #include <SoftwareSerial.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12,11,5,4,3,2); char inchar; character from the GSM shield SoftwareSerial SIM900(7, 8); port // library GSM // library for LCD display // great LCD object // will hold the incoming // configure software serial int temppin=a1,r=a0,pin=6,wind=0,d=0,stat=1,t=0; // integer values unsigned long duration; // for value 0 to 4.294.967.295 (2 ^ 32-1) void setup() lcd.begin(16,2); // the number of LCD's columns and rows Serial.begin(19200); SIM900power(); // wake up the GSM shield SIM900.begin(19200); delay(20000); // give time to log on network SIM900.print("AT+CMGF=1\r"); // set SMS mode to text delay(100); SIM900.print("AT+CNMI=2,2,0,0,0\r"); // blurt out contents of new SMS upon receipt to the GSM shield's serial out delay(100); pinmode(pin,input); // pin will work as an input Serial.println("Ready..."); // the display shows "ready" when the GSM is ready to handle message void SIM900power() pressing the GSM shield "power" button digitalwrite(9, HIGH); delay(1000); digitalwrite(9, LOW); delay(7000); // software equivalent of 32

void loop() duration=pulsein(pin,high,50000); wind=96000/duration+1; from pulse to m/sec receivesms(); D=analogRead(R); rain t=analogread(temppin); temperature LM35 t=t*0.48828125; from voltage to Celsius lcd.setcursor(0,0); the screen at 0,0 lcd.print("ws:"); lcd.print(wind); "wind" lcd.print("m/sec"); lcd.setcursor(0,1); screen lcd.print("te:"); lcd.print(t); lcd.print("*c"); if(d>=900) to LCD "NO RAIN" lcd.print(" NO RAIN"); else lcd.print(" RAIN!"); void receivesms() cellular module... if(sim900.available()>0) something // pulse function // math makes the calibration // function to receive SMS // analog read the sensor for // analog read the sensor for the // math makes the calibration // it moves the cursor in LCD on // print to LCD "WS:" // print to LCD the value of the // print to LCD "m/sec" // it moves the cursor on LCD s // print to LCD "TE:" // print to LCD the value of the "t" // print to LCD "*C" // if the value of the D>=900 prints // otherwise prints to LCD "RAIN!" // if a character comes in from the // if an SMS is available do inchar=sim900.read(); // if SMS is available and got this chars form, do the following functions if (inchar=='#') // if you read '#' delay(10); inchar=sim900.read(); 33

if (inchar=='i') // if you read 'i' do something delay(10); inchar=sim900.read(); if (inchar=='n') // if you read 'n' do something delay(10); inchar=sim900.read(); if (inchar=='f') // if you read 'f' do something delay(10); inchar=sim900.read(); if (inchar=='o') // if you read 'o' do something delay(10); Serial.println("receiveSMS has been read"); // the display shows "receive SMS has been read" when the SMS has been read SIM900.println("AT+CMGD=1,4"); // command delete all SMS sendsms(); // function to send SMS void sendsms() SIM900.print("AT+CMGF=1\r"); // AT command to send SMS message delay(100); SIM900.println("AT + CMGS = \"+306971867371\""); // recipient's mobile number, in international format delay(100); SIM900.print("Wind Speed: "); // the message structure SMS SIM900.print(wind); SIM900.print(" m/sec"); SIM900.println(); // change line SIM900.print("TEMPRATURE = "); SIM900.print(t); SIM900.print("*C"); SIM900.println(); // change line if(d>=900) SIM900.println("No RAIN"); else SIM900.println("RAIN!"); 34

delay(100); SIM900.println((char)26) // End AT command with a ^Z, ASCII code 26 delay(3000); SIM900.println(); // change line delay(5000); // give module time to send SMS SIM900power(); // turn off module 35

3.3 Βαθμονόμηση Ανεμόμετρο Σε αυτό το σημείο είναι σημαντικό να αναφερθεί ότι για τη βαθμονόμηση του ανεμόμετρου δημιουργήσαμε μια μαθηματική συνάρτηση. Έτσι, για τον σκοπό αυτό χρησιμοποιήσαμε μια ηλεκτρική τρόμπα και ένα ανεμόμετρο. Η ηλεκτρική τρόμπα τοποθετήθηκε σε μια σταθερή απόσταση και το ανεμόμετρο παράλληλα από το ανεμόμετρο της κατασκευής μας. Εικόνα 33: Βαθμονόμηση Ανεμόμετρου Έχοντας μια σταθερή ταχύτητα με τον τρόπο που αναφέραμε πιο πάνω, βλέπουμε ότι ο μετρητής ανέμου μας δείχνει σταθερά ~4,8 m/sec και ταυτόχρονα στη Σειριακή οθόνη του υπολογιστή μας βλέπουμε ~20000. Εικόνα 34: Ένδειξη Ανεμομέτρου Πριν την βαθμονόμηση 36

Άρα η συνάρτησή μας θα βρεθεί με την μέθοδο των τριών. Το μόνο που πρέπει να προσέξουμε είναι ότι όσο αυξάνονται οι στροφές μειώνεται η τιμή που αναγράφεται στην οθόνη, άρα είναι αντιστρόφως ανάλογη και είναι η εξής wind=96000/duration. Θερμοκρασία Η μαθηματική συνάρτηση της θερμοκρασίας που χρησιμοποιήσαμε είναι t=t*0.48828125 την οποία πληροφορηθήκαμε από το site του Arduino. Βροχή Το αισθητήριο βροχής μας δίνει τιμές από 0 έως 1023. Για τιμές μεγαλύτερες ή ίσες με 900 έχουμε την ένδειξη «No Rain», ενώ για τιμές μικρότερες ή ίσες με 900 έχουμε την ένδειξη «Rain!». 37

Συμπεράσματα Χάρη στην ενασχόλησή μας με την πτυχιακή εργασία, ήρθαμε αντιμέτωποι με πραγματικές συνθήκες εργασίας. Σκεφτήκαμε τον τρόπο με τον οποίο πρέπει να δράσουμε και επιλέξαμε τα κατάλληλα υλικά και αισθητήρες, έτσι ώστε το σύστημά μας να είναι λειτουργικό και ρεαλιστικό. Οι γνώσεις που αποκτήσαμε κατά την έρευνα αγοράς τους, πιστεύουμε πως ήταν ουσιαστικές και δεν θα μείνουν μονάχα σε αυτή την κατασκευή. Ο προγραμματισμός του GSM ήταν το σκέλος που μας δυσκόλεψε περισσότερο, λόγω έλλειψης πληροφόρησης. Ωστόσο, οι δυσκολίες ξεπεράστηκαν με πολλαπλές δοκιμές και επιμονή. Τέλος, μπορούμε να πούμε ότι μάθαμε από τα λάθη μας: στο εξής θα είμαστε περισσότερο προσεκτικοί και λιγότερο αυθόρμητοι. 38

ΚΕΦΑΛΑΙΟ 4 ο Βιβλιογραφία Πηγές πληροφοριών Ιστοσελίδες που χρησιμοποιήθηκαν: Arduino [1] http://arduino.cc/en/guide/environment?from=tutorial.bootloader [2] http://arduino.cc/en/guide/windows [3] http://arduino.cc/en/reference/homepage [4] http://arduino.cc/en/main/arduinoboarduno [5] http://arduino.cc/en/tutorial/memory [6] http://arduino.cc/forum/ GSM [1] http://wm.sim.com/producten.aspx?id=1019 [2] http://tronixstuff.com/2014/01/08/tutorial-arduino-and-sim900- gsm-modules/ LM35 [1] http://playground.arduino.cc/main/lm35higherresolution 39

TCST-2103 [1] http://www.vishay.com/docs/81147/tcst2103.pdf LCD [1] http://arduino.cc/en/tutorial/liquidcrystal YL-83 [1] http://arduino.cc/forum/ 40