Περιεόμενα 1 Θέμα 1 1.1 Γενική Περιραφή Θέματος . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Υικά 1 2.1 Εξαρτήματα και Τενοοίες . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.2 Συνδεσμοοία . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 Arduino 5 3.1 Μικροεεκτής - η καρδιά του Arduino . . . . . . . . . . . . . . . . . . . 8 3.2 Είσοδοι - Έξοδοι . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 Τροφοδοσία . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 Ενσματμένα κουμπιά και LED . . . . . . . . . . . . . . . . . . . . . . . 11 3.5 Arduino IDE και σύνδεση με τον υποοιστή . . . . . . . . . . . . . . . . 11 3.6 Γώσσα προραμματισμού . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.7 Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Λειτουρία Μικροεπεξεραστή 15 4.1 Αόριμος Λήψης Απόφασης . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 Χειροκίνητη Λειτουρία . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5 Κώδικας Arduino 18 5.1 Αποστοή μηνύματος . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.2 Ενεροποιήση GPRS και άντηση μετεροοικών μετρήσεν . . . . . . 18 5.3 Έεος ια εισερόμενα SMS . . . . . . . . . . . . . . . . . . . . . . . . 21 6 Εφαρμοή Android 22 6.1 Γενική Λειτουρία . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2 Επεξήηση ασικότερν τμημάτν του κώδικα . . . . . . . . . . . . . . . 23 6.2.1 Αρικοποιήση εφαρμοής . . . . . . . . . . . . . . . . . . . . . . . 23 6.2.2 Αποστοή μηνύματος . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.2.3 Λήψη και εμφάνιση μετρήσεν . . . . . . . . . . . . . . . . . . . . 24 7 Hardware 26 7.1 Έεος του DC κινητήρα . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.1.1 Μικροεεκτής . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.1.2 Οοκηρμένο κύκμα ια την οδήηση του κινητήρα . . . . . . 26 7.1.3 Δίοδοι . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.1.4 Κινητήρας . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.2 Στήνοντας το σύστημα εέου του κινητήρα . . . . . . . . . . . . . . . . 27 8 Μακέτα 30 9 Όος ο κώδικας του Arduino 35 ii 10 Όος ο κώδικας του Android 42 10.1 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 10.2 MainActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 10.3 Broadcast Receivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 10.4 PreferenceAcitivity and other Java classes . . . . . . . . . . . . . . . . . 46 11 Arduino Manual 53 11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 11.2 Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 11.3 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 11.4 EEPROM Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 11.5 Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 11.6 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 11.7 Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 11.8 Automatic (Software) Reset . . . . . . . . . . . . . . . . . . . . . . . . . 57 11.9 USB Overcurrent Protection . . . . . . . . . . . . . . . . . . . . . . . . . 58 11.10Physical Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 12 HTTP Requests 59 12.1 What’s an HTTP request . . . . . . . . . . . . . . . . . . . . . . . . . . 59 12.2 Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 12.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 13 Οδηίες Χρήσης - Εκατάστασης 61 14 Οδηίες Εκατάστασης εφαρμοής σε κινητό Android 62 15 Συμπεράσματα - Μεοντική ρήση 63 iii Περίηψη Στο παίσιο αυτής της πτυιακής ερασίας δημιουρήηκε ένα σύστημα εέου κι- νητήρα τέντας καώς και μία μακέτα ια την προσομοίση αυτής. Το σύστημα εέ- ου αποτεείται από επεξεραστή Arduino Uno, Arduino GSM module, ερμίστορ και φτοαντίσταση. Στόος του είναι να παίρνει αν τακτά ρονικά διαστήματα μετρήσεις ερμοκρασίας και φτεινότητας ια την κοντινή περιοή της τέντας καώς και άες μετεροοικές προέψεις ια την ευρύτερη περιοή μέσ server και άσει αυτών να αμάνει αποφάσεις ια την έση της τέντας. Το σύστημα ενημερώνει τον κάτοο της τέντας ια τις καιρικές συνήκες μέσ android εφαρμοής και του δίνει τη δυνατότητα να ορίσει την κατάσταση της τέντας. Summary As a part of the current thesis, a motor control system of an awning was developed, aswellasamodelinordertosimulatethesystem.Thecontrolsystemisconsistedofan AVRmicroprocessoron an ArduinoUno board,an ArduinoGSM module,a thermistor and a photoresistor. The goal of this system is to measure, at regular intervals, the temperature and the luminosity near the awning and, also, receive the weather forecast for the surrounding area via a server in order to make decisions about the position of the awning. This system can also inform the holder of the awning about the weather conditions through an android application and also gives him the ability to set the desired awning’s position. iv 1 Θέμα Έεος τεντών κατοικίας με ρήση Arduino μέσ GSM με εφαρμοή Android σε κινητό τηέφνο. 1.1 Γενική Περιραφή Θέματος Σε μια εποή που η τενοοία έει μπει ια τα καά στην ζή μας, εμφανίζονται οο- ένα και περισσότερες ανάκες οι οποίες διευκούνουν και ανεάζουν το ιτικό επίπεδο του ανρώπου. Η έννοια του ”έξυπνου σπιτιού” είναι μια από αυτές τις τενοοίες που προσπαεί να εξοικονομήσει ενέρεια, ρήματα και ενικά να διευκούνει το νοικοκυριό. Στα παίσια του έξυπνου σπιτιού η ερασία αυτή παρουσιάζει μια ύση ια τον έεο τέντας από απόσταση, με την ρήση GSM/GPRS τενοοίας, Arduino και smartphone με οισμικό Android. Μια ενική εικόνα του συστήματος είναι η ειτουρία του Arduino ς το κεντρικό σύστημα εέου. Δηαδή, το Arduino αμάνει τις κιματοοικές συνήκες που επι- κρατούν στην περιοή και αναός αποφασίζει εάν η τέντα πρέπει να παραμείνει ανοι- κτή ή κειστή. Το Arduino απο μόνο του δεν διαέτει την τενοοία GSM/GPRS και ι’αυτό συνδέεται πάν του ένα modem κινητής τηεφνίας το οποίο αποκαείται και GSM shield. Τώρα που ο κεντρικός εεκτής έει την δυνατότητα να επικοιννεί με το δίκτυο κινητής τηεφνίας και άρα και με το Internet αμάνει τις πηροφορίες ια τις κιματοοικές συνήκες από εκεί. Ωστόσο, στο Arduino προστέηκαν και δύο αιση- τήρες ερμοκρασίας και φτεινότητας ια μια καύτερη εκτίμηση τν καιρικών συνηκών που επικρατούν τοπικά. Η εφαρμοή ια κινητό Android παρέει στον ρήστη της την δυνατότηταπαρακοούησηςτηςέσηςτηςτένταςκαιτνκαιρικώνσυνηκώνμεάσητα οποία πήρε ο εεκτής την απόφαση. Επίσης του δίνει την ευκαιρία να ανεάσει/κατεά- σει την τέντα παρακάμπτντας το σύστημα εέου. Το Arduino εέει έναν οδηητή κινητήρα ια το άνοιμα/κείσιμο της τέντας. 2 Υικά Αν και παραπάν αναφέρονται αρκετά από τα υικά και τις τενοοίες που ρησιμο- ποιήηκαν, παρακάτ ακοουεί μια αναυτική περιραφή του κάε υικού. 2.1 Εξαρτήματα και Τενοοίες Arduino Είναι μια οικοένεια πακετών ανάπτυξης με επεξεραστή Atmel AVR. Στη ερασίααυτήρησιμοποιήηκετοArduinoUnoμεεπεξεραστήATmega328,32kB flash memory, 2kB RAM, 1kB EEPROM. To Arduino διαέτει ένα περιάον ανάπτυξης οισμικού και η προραμματιστική ώσσα που ρησιμοποιείται είναι ένας συνδιασμός C/C++. GSM Shield ΓιατηνοικοένειαπακετώνανάπτυξηςArduinoέουνδημιουρηείποά περιφερειακά σε μορφή έτοιμης πακέτας και τα ονομάζουνε shield. Αυτά, προσφέ- 1 ρουν διάφορες ειτουρικότητες και σε αυτή την περίπτση σύνδεση με το δίκτυο κινητής τηεφνίας. Το GSM shield προσφέρει σύνδεση σε GSM/GPRS δίκτυο και στην ερασία αυτή ρησιμοποιείται ια να συνδέεται στο Internet και ια να αμάνει/στένει SMS από/πρός την εφαρμοή Android. Motor Στην αηινό σενάριο α έπρεπε να είναι ένας κινητήρας διαστασιοοημένος στο ναμπορείνακινήσειτηντέντα.Ωστόσο,σεεπίπεδοπροσομοίσηςρησιμοποιήηκε ένα μικρό DC κινητηράκι με ονομαστική τάση 5V και ονομαστικό ρεύμα κανονικής ειτουρίας 0.4Α. L293d Είναι ένα τσιπάκι της εταιρίας Texas Instruments και ειτουρεί σαν οδηητής ια DC κινητήρες με αρακτηριστικά όμοια με αυτά που περιράφονται παραπάν. Το τσιπάκι δίνει την δυνατότητα εέου της φοράς περιστροφής του κινητήρα. Δίοδος Χρησιμοποιούνται σε συνδεσμοοία έφυρας ια τον έεο του κινητήρα. Αισητήρας Φτεινότητας Είναι μια απή αά φτοευαίσητη αντίσταση. Η τιμή της αάζει όταν εκτεεί στο φς. Αισητήρας ερμοκρασίας Είναι ένα ραμμικό αισητήριο ερμοκρασίας που ρησιμο- ποιείται ια την μέτρηση περιαοντικών ερμοκρασιών. Smartphone Android Έξυπνο κινητό τηέφνο με οισμικό Android. To Android είναι ένα οισμικό τύπου ανοικτού κώδικα και παρέει δρεάν περιάον ανά- πτυξης οισμικού καώς και η ώσσα προραμματισμού είναι η Java με κάποιες ιιοήκες που απευύνονται στο Android. Raster Μια πακέτα ανάπτυξης ηεκτρικών/ηεκτρονικών κυκμάτν. Δίνει την δυ- νατότητα στο ηεκτροόο μηανικό να πειραματιστεί και να τεστάρει το σύστημα του. Μακέτα Με σκοπό τον έεο της εύρυμης ειτουρίας του συστήματος σεδιάστηκε μια μακέτα σε μικρή κίμακα και προσομοιώνει την κανονική ειτουρία του συ- στήματος εέου της τέντας. 2.2 Συνδεσμοοία Στο σήμα 2 φαίνεται το οικό διάραμμα του συστήματος. Η ραμμή που ενώνει δύο οικά μποκ δείνει την δίοδο επικοιννίας μεταξύ τν δύο μποκ. Στο σήμα 3 φαίνεται η πραματική συνδεσμοοία πάν στο Raster. 2 Σήμα 1: Arduino με GSM Shield Σήμα 2: Λοικό μποκ 3 Σήμα 3: Συνδεσμοοία σε Raster (ρίς τον Arduino) (αʹ) Δίοδος (ʹ) Φτορεσίστορ(μέτρησηφ- (ʹ) Συσκευή Android τεινότητας) Σήμα 4: Εξαρτήματα 4 Σήμα 5: Arduino 3 Arduino Όπς το περιράφει ο δημιουρός του, το Arduino είναι μια ανοικτού κώδικα πατ- φόρμα πρτοτυποποίησης ηεκτρονικών ασισμένη σε ευέικτο και εύκοο στη ρήση hardware και software που προορίζεται ια οποιονδήποτε έει ίη προραμματιστική εμπειρία, στοιειώδεις νώσεις ηεκτρονικών και ενδιαφέρεται να δημιουρήσει διαδρα- στικά αντικείμενα ή περιάοντα. Το Arduino Duemilanove, όπς προδίδει και το όνομά του (που στα ιταικά είναι ο αριμός 2009 οοράφς), είναι η πιο πρόσφατη ασική έκδοση του Arduino.Στην ουσία, πρόκειται ια ένα ηεκτρονικό κύκμα που ασίζεται στον μικροεεκτή ATmega της Atmel και του οποίου όα τα σέδια, καώς και το software που ρειάζεται ια την ειτουρία του, διανέμονται εεύερα και δρεάν ώστε να μπορεί να κατασκευαστεί από τονκαένα(απ’όπουκαιοπερίερος-ιαhardware-αρακτηρισμόςανοικτούκώδικα). Αφού κατασκευαστεί, μπορεί να συμπεριφερεί σαν ένας μικροσκοπικός υποοιστής, αφού ο ρήστης μπορεί να συνδέσει επάν του ποαπές μονάδες εισόδου/εξόδου και να προραμματίσει τον μικροεεκτή να δέεται δεδομένα από τις μονάδες εισόδου, να τα επεξεράζεται και να στένει κατάηες εντοές στις μονάδες εξόδου. Μάιστα κάποιοςαμπορούσεναισυριστεί-καιαήτανέναςαρκετάπετυημένοςπαραηισμός - ότι ειτουρικά το Arduino μοιάζει πού με το NXT Brick τν Lego Mindstorms NXT. Άστε η ρομποτική είναι μια από τις ποές εφαρμοές στις οποίες το Arduino διαπρέπει. 5 Το Arduino έαια, δεν είναι ούτε ο μοναδικός, ούτε και ο καύτερος δυνατός τρόπος ια την δημιουρία μιας οποιασδήποτε διαδραστικής ηεκτρονικής συσκευής. Όμς το κύριο πεονέκτημά του είναι η τεράστια κοινότητα που το υποστηρίζει και η οποία έει δημιουρήσει, συντηρεί και επεκτείνει μια ανάοου μεέους online νσιακή άση. Έτσι, παρότι ένας έμπειρος ηεκτρονικός μπορεί να προτιμήσει διαφορετική πατφόρμα ή εξαρτήματα ανάοα με την εφαρμοή που έει στον νου του, το Arduino, με το εκτενές documentation, καταφέρνει να κερδίσει όους αυτούς τν οποίν οι νώσεις στα ηεκτρονικά περιορίζονται στα όσα ία έμααν στο σοείο. Η αορά ενός πήρους Starter Kit, όπς αυτό της εικόνας, συνιστάται έντονα -αντί μιαςσκέτηςπακέταςArduino-αναυτήείναιηπρώτησαςεπαφήμεηεκτρονικά.Ακριώς επειδή απευύνεται κυρίς σε αράριους τν ηεκτρονικών και επειδή, παρά τις αναυτι- κότατεςοδηίεςπουυπάρουν,δενέουνόοιτιςνώσειςκαιταμέσανακατασκευάσουν μια ηεκτρονική πακέτα, κυκοφορούν έτοιμες, προκατασκευασμένες πακέτες Arduino που μπορείτε να προμηευτείτε ια περίπου €25. Με ία ρήματα παραπάν μάιστα, οι περισσότεροι προμηευτές διαέτουν Arduino Starter Kit, τα οποία, εκτός από το ίδιο το Arduino, περιέουν διάφορα άα εξαρτήματα και εραεία που μπορεί να ρειαστείτε ια τις πρώτες σας εφαρμοές (όπς το απαραίτητο καώδιο USB ια την σύνδεση με τονυποοιστή,ράστερ,καώδια,LED,διακόπτες,ποτενσιόμετρα,αντιστάσεις,διόδους, τρανζίστορ κ.π.). Μπορείτε να ρείτε μια ίστα με προμηευτές του Arduino σε όο τον κόσμο, κάνοντας κικ στον σύνδεσμο Buy στον επίσημο ιστοτόπο του Arduino. Στην ίστα δεν υπάρ- ει έηνας προμηευτής αά ποά καταστήματα του εξτερικού στένουν και στην Εάδα με αρκετά οικά μεταφορικά κόστη. Αν πάι έετε οπσδήποτε να το προμη- ευτείτε από την Εάδα, το εηνικό ηεκτρονικό κατάστημα BuyARobot διαέτει το Arduino αά δεν διαέτει Starter Kit ή συνοδευτικά shield (α διαάσετε ια αυτά σε σετικό παίσιο στην συνέεια). Το LilyPad είναι μια από τις ποές εκδόσεις Arduino που κυκοφορούν. Όσο τρεό και αν ακούεται, προορίζεται ια διαδραστικές εφαρμοές πάν στα ρούα σας! Ράεται πάν σε αυτά, επικοιννεί μέσ ειδικής αώιμης κστής με ανάοους αισητήρες που είναι ραμμένοι σε διαφορετικά σημεία και είναι ασφαές ακόμα και… στο πύσιμο!Αυτό που μπορεί να σας μπερδέψει ψάνοντας να αοράσετε το Arduino σε αυτά τα καταστή- ματα είναι οι διαφορετικές εκδόσεις στις οποίες κυκοφορεί, επίσημες και ανεπίσημες. Από τις επίσημες εκδόσεις (Duemilanove, Diecimila, Nano, Mega, Bluetooth, LilyPad, Mini, Mini USB, Pro, Pro Mini, Serial και Serial SS) συνιστάται κυρίς η αορά του Arduino Duemilanove ή τουάιστον τν Diecimila ή Mega επειδή διαέτουν υποδοή USB και είναι συματές με τα shield. Για τους ίδιους όους, από τις ανεπίσημες εκδό- σεις (Freeduino, Boarduino, Sanguino, Seeeduino, BBB, RBBB κ.α.) συνιστάται μόνο το Freeduino v1.16 και το Seeeduino. Δείτε το σετικό παίσιο με τις κυριότερες διαφο- ρές ανάμεσα στις εκδόσεις που προτείνονται εδώ. Εκτόςκαιανεπισημανείδιαφορετικά,όσαααναφερούνπαρακάταφορούντηνπέον πρόσφατη ασική έκδοση του Arduino, δηαδή το Arduino Duemilanove. 6
Description: