Μεταπτυχιακή Διπλωματική Εργασία του Κων/νου Δ. Ανδρικόπουλου Διπλωματούχου Μηχανολόγου & Αεροναυπηγού Μηχανικού Αριθμός Μητρώου:

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Μεταπτυχιακή Διπλωματική Εργασία του Κων/νου Δ. Ανδρικόπουλου Διπλωματούχου Μηχανολόγου & Αεροναυπηγού Μηχανικού Αριθμός Μητρώου:"

Transcript

1 Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών «Κατανεμημένη πράσινη ηλεκτρική ενέργεια και οι προηγμένες δικτυακές υποδομές για τη διαχείριση και την οικονομία της» Μεταπτυχιακή Διπλωματική Εργασία του Κων/νου Δ. Ανδρικόπουλου Διπλωματούχου Μηχανολόγου & Αεροναυπηγού Μηχανικού Αριθμός Μητρώου: Θέμα: Μετάδοση Ενεργειακών Παραμέτρων (κατανάλωση, παραγωγή) με τη Χρήση Τηλεμετρίας Επιβλέπων Σύμβουλος Καθηγητής: Καθηγητής Γρηγόριος Καλύβας Αριθμός Διατριβής: Πάτρα, 12/01/2018

2 Το σύνολο της εργασίας αποτελεί πρωτότυπο έργο, παραχθέν από τον Κων/νο Δ. Ανδρικόπουλο και δεν παραβιάζει δικαιώματα τρίτων καθ οιονδήποτε τρόπο. Αν η εργασία περιέχει υλικό, το οποίο δεν έχει παραχθεί από τον/ην ίδιο/α, αυτό είναι ευδιάκριτο και αναφέρεται ρητώς εντός του κειμένου της εργασίας ως προϊόν εργασίας τρίτου, σημειώνοντας με παρομοίως σαφή τρόπο τα στοιχεία ταυτοποίησής του, ενώ παράλληλα βεβαιώνει πως στην περίπτωση χρήσης αυτούσιων γραφικών αναπαραστάσεων, εικόνων, γραφημάτων κλπ., έχει λάβει τη χωρίς περιορισμούς άδεια του κατόχου των πνευματικών δικαιωμάτων για την συμπερίληψη και επακόλουθη δημοσίευση του υλικού αυτού. Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Κων/νου Δ. Ανδρικόπουλου 2018 Με την επιφύλαξη παντός δικαιώματος ii

3 iii

4 Πρόλογος Η παρούσα μεταπτυχιακή διπλωματική εργασία εκπονήθηκε κατά το ακαδημαϊκό έτος στο εργαστήριο Μικροϋπολογιστές και Μικροσυστήματα στα πλαίσια του Διατμηματικού Προγράμματος Μεταπτυχιακών Σπουδών, με τίτλο: «Κατανεμημένη πράσινη ηλεκτρική ενέργεια και οι προηγμένες δικτυακές υποδομές για τη διαχείριση και την οικονομία της». Επιβλέπων καθηγητής και Σύμβουλος Καθηγητής μου, όπως ορίζεται από το πρόγραμμα σπουδών του Μ.Δ.Ε. ήταν ο Καθηγητής κ. Γρηγόριος Καλύβας, ο οποίος με καθοδήγησε και με συμβούλεψε καθ όλη τη διάρκεια της εργασίας ώστε να υλοποιηθεί η μεταπτυχιακή διπλωματική εργασία. Εκφράζω τις ευχαριστίες μου ως προς το πρόσωπό του. iv

5 Περίληψη Στις εγκαταστάσεις παραγωγής και κατανάλωσης ενέργειας, κύριο μέλημά μας ώστε να μπορέσουμε να τις σχεδιάσουμε να λειτουργούν στον μέγιστο βαθμό απόδοσης είναι η real-time απεικόνιση των ενεργειακών δεδομένων τους ώστε να προβαίνουμε σε αντίστοιχες ενέργειες διόρθωσης, συντήρησης και βελτίωσής των. Στην παρούσα διπλωματική εργασία σχεδιάσθηκε τοπολογία συλλογής ενεργειακών μεγεθών από μία εγκατάσταση π.χ. από ένα οικιακό φωτοβολταϊκό σύστημα. Αναπτύχθηκε σύστημα συλλογής ενεργειακών δεδομένων, χρησιμοποιώντας την πλατφόρμα Arduino, και στη συνέχεια στάλθηκαν απομακρυσμένα χρησιμοποιώντας την πλακέτα adafruit wi-fi η οποία συνδέεται στο internet της εγκατάστασης. Μπορέσαμε να παραλάβουμε τα δεδομένα απομακρυσμένα σε πραγματικό χρόνο(real-time), αποθηκεύοντας και στη συνέχεια αναπαριστώντας τα δεδομένα σε φιλικό λειτουργικό περιβάλλον (friendly user interface) κάνοντας χρήση του λογισμικού visual studio και των εργαλείων του.net frameworks. Η διάταξη χωρίζεται στα παρακάτω τρία(3) κύρια μέρη: 1. Τους Αισθητήρες συλλογής ενεργειακών δεδομένων. 2. Πλακέτες arduino και adafruit wifi για τη συλλογή, επεξεργασία κι αποστολή των δεδομένων. 3. Λογισμικό απομακρυσμένης συλλογής και παρουσίασης των μεγεθών βασισμένο στο.net Framework. v

6 Abstract In energy production and consumption facilities, our main concern so that we can design to operate in a maximum efficiency is the real-time display of the energy data in order to make respective correction operations, maintenance and improvement. This thesis designed collection topology energy quantities from a plant e.g. a residential photovoltaic system. Developed energy data collection system using the Arduino platform, and then sent remotely using the board adafruit wi-fi which is connected to the internet installation. We were able to receive data remotely realtime, storing it and then recreating the data in a friendly operating environment (friendly user interface) using the visual studio software, and the.net frameworks tools. The layout is divided into the following three (3) main parts: 1. The energy data collection sensors. 2. Modules arduino and adafruit wifi for collection, processing and sending of data. 3. Software remote collection and presentation of sizes based on the.net Framework. vi

7 vii

8 Περιεχόμενα Πρόλογος... iv Περίληψη... v Abstract... vi ΚΕΦΑΛΑΙΟ 1. ΠΛΑΚΕΤΑ ARDUINO Εισαγωγή Το λογισμικό του Arduino... 3 ΚΕΦΑΛΑΙΟ 2. ARDUINO UNO Γενικά Μέρη ενός arduino Uno Σειριακή θύρα Χαρακτηριστικά του Arduino Βασικές μνήμες Τροφοδοσία Επικοινωνία Γλώσσα Προγραμματισμού Ολοκληρωμένο περιβάλλον ανάπτυξης του Arduino Σειριακή οθόνη (SERIAL MONITOR) Η δομή του προγράμματος Βασικές δομές και λειτουργίες προγραμματισμού Ψηφιακές ακίδες (Digital pins) Αναλογικές ακίδες εισόδου (Analog input pins) Υποστήριξη Βιβλιοθηκών (Libraries) ΚΕΦΑΛΑΙΟ 3. ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΕΞΑΡΤΗΜΑΤΩΝ ΤΗΣ ΔΙΑΤΑΞΗΣ Περιγραφή διάταξης viii

9 3.2 Αισθητήρας θερμοκρασίας-υγρασίας, DHT Διαστάσεις DHT Παράμετροι DHT Σειριακή επικοινωνία (αμφίδρομη single-wire) AC Current sensor C-CT Εφαρμογές Τεχνικά χαρακτηριστικά Αρχή λειτουργίας Καλιμπράρισμα αισθητήρα Arduino-Adafruit wi-fi shield Περιγραφή ΚΕΦΑΛΑΙΟ 4. Σχεδίαση και Υλοποίηση διάταξης Hardware (Υλικό) Κύκλωμα αισθητήρα DHT Κύκλωμα αισθητήρα CT Κύκλωμα adafruit wi-fi Σχέδιο πειραματικής διάταξης Μονογραμμικό σχέδιο διάταξης Υλοποιημένη πειραματική διάταξη Υλοποιημένη πειραματική διάταξη με χρήση wi-fi Software (Λογισμικό) DHT CT-100 Sensor Adafruit wi-fi ΚΕΦΑΛΑΙΟ 5. Πληροφορίες για το.net Framework Σχετικά με το.net Framework E E WEBITE Λίγη Ιστορία ix

10 5.3 Χαρακτηριστικά του.net Framework Αρχιτεκτονική του.net Framework Common Language Runtime (CLR) Βιβλιοθήκες κλάσεων Γλώσσες προγραμματισμού Εργαλεία του.νετ Framework Εκδόσεις του.νετ Framework ΚΕΦΑΛΑΙΟ 6. Διεπαφή χρήστη, απομακρυσμένη απεικόνηση δεδομένων Γενικά περί Visual Studio Visual Studio C Sharp (C#) Συλλογή και Παρουσίαση δεδομένων Συλλογή και Αποθήκευση δεδομένων Λογισμικό Ακρόασης Αποθήκευση δεδομένων Παρουσίαση δεδομένων ΑΝΑΦΟΡΕΣ ΑΝΑΚΕΦΑΛΑΙΩΣΗ ΣΥΜΠΕΡΑΣΜΑΤΑ ΣΥΝΕΙΣΦΟΡΑ ΤΗΣ ΔΙΑΤΡΙΒΗΣ-ΠΡΟΟΠΤΙΚΕΣ ΣΥΝΕΧΙΣΗΣ ΤΗΣ ΠΑΡΑΡΤΗΜΑΤΑ Παράρτημα Α συνάρτηση διασύνδεσης κάρτας adafruit CC3300 wifi - Shield 75 Παράρτημα B Βιβλιοθήκη Διαδικασίας διασύνδεσης αισθητήρα υγρασίαςθερμοκρασίας DHT-11 με τον arduino Παράρτημα Γ Βιβλιοθήκη Διαδικασίας διασύνδεσης αισθητήρα ρεύματος AC C-CT-10 με τον arduino Παράρτημα Δ Βιβλιοθήκη Διαδικασίας διασύνδεσης Adafruit Wi-fi με router 85 Παράρτημα Ε Κώδικας C# Data Listener (Program.cs) Παράρτημα ΣΤ Κώδικας C# Data Listener (MainForm.cs) x

11 Παράρτημα Z Κώδικας C# Data Presenter (Program.cs) Παράρτημα Z Κώδικας C# DataPresenter (PresenterForm.cs) xi

12 ΚΕΦΑΛΑΙΟ 1. ΠΛΑΚΕΤΑ ARDUINO 1.1 Εισαγωγή Οι πλατφόρμες Arduino[1] κατασκευάζονται κυρίως από την εταιρία Smart Project. Ωστόσο, το Arduino ξεκίνησε ως έργο προς ανάπτυξη το 2005 στην Ιταλία, στο Ινστιτούτο Αλληλεπίδρασης Σχεδίασης Ivrea ώστε οι φοιτητές του Ινστιτούτου να αναπτύσσουν ενσωματωμένα συστήματα οικονομικά και αποδοτικά αξιοποιώντας τις δυνατότητες και τις ευκαιρίες που μπορεί να προσφέρει το ελεύθερο λογισμικό. Γενικότερα, το Arduino θα λέγαμε ότι είναι ένα εργαλείο που μπορούμε να κατασκευάσουμε ένα υπολογιστικό σύστημα με την έννοια ότι αυτό θα ελέγχει συσκευές του φυσικού κόσμου, σε αντίθεση με τον κοινό Ηλεκτρονικό Υπολογιστή. Βασίζεται σε ευέλικτο, εύκολο στη χρήση υλικό και λογισμικό, σε μια αναπτυξιακή πλακέτα που ενσωματώνει επάνω έναν μικροελεγκτή και συνδέεται με τον Η/Υ για να προγραμματιστεί μέσα από ένα απλό περιβάλλον ανάπτυξης. Με το Arduino δημιουργούνται συσκευές οι οποίες εξυπηρετούν διάφορους σκοπούς έχοντας την δυνατότητα να δέχονται ερεθίσματα από το περιβάλλον τους (μέσω των αισθητήρων) και να αντιδρούν ανάλογα με το πως έχουν προγραμματιστεί. Τα παραπάνω δεν ακούγονται πρωτότυπα. Υπάρχουν και άλλες πλατφόρμες και υλοποιήσεις που μπορούν να κάνουν τα ίδια πράγματα. Ποια είναι η ειδοποιός διαφορά; Το Arduino βασίζεται σε τεχνολογίες ανοιχτού κώδικα. Μπορεί να κατασκευαστεί από τον καθένα, μπορεί να ενσωματωθεί σε συσκευές ακόμα και για εμπορικούς σκοπούς και το σημαντικότερο είναι ότι υπάρχει μια ολόκληρη κοινότητα που χρησιμοποιεί το Arduino σε κατασκευές άρα υπάρχει μεγάλος όγκος ελεύθερης πληροφορίας. Γενικά, τα Projects στον εν λόγω Μικροελεγκτή μπορούν να είναι αυτόνομα (σε επίπεδο hardware) ή να επικοινωνούν με κάποιο software στον Η/Υ του προγραμματιστή (προγράμματα όπως τα Flash, Processing, MaxMSP). Το Arduino χρησιμοποιεί τώρα ένα ειδικά προγραμματιζόμενο Atmega382 αντί του chip FTDI ώστε αυτό να επιτρέπει τόσο την πιο γρήγορη ταχύτητα μεταφοράς όσο και τη γρήγορη σειριακή επικοινωνία. 1

13 Ο μικροεπεξεργαστής ενός Arduino συνήθως προγραμματίζεται εκ των προτέρων ώστε να παρέχει κάποιο φορτωτή εκκίνησης (BootLoader). Ο φορτωτής εκκίνησης υπάρχει ώστε να απλοποιεί την διαδικασία της αποθήκευσης των προγραμμάτων στην Flash Memory του Arduino μέσω σειριακής USB θύρας. Επιπλέον, η γλώσσα προγραμματισμού, οι διάφορες βιβλιοθήκες και το ολοκληρωμένο περιβάλλον ανάπτυξης που υπάρχουν για τον προγραμματισμό της πλατφόρμας Arduino αποτελούν ανοιχτό λογισμικό προσφέροντας έτσι ανεκτίμητη γνώση σε όλους. Βασικά Πλεονεκτήματα πλατφόρμας Arduino: -Οικονομική: Η πλατφόρμα Arduino αποτελεί οικονομική λύση διότι είναι φθηνότερη. Επιπλέον, είναι αρχιτεκτονικά ανοιχτή και μπορεί ο οποιοσδήποτε να την αναπτύξει από μόνος του. -Μεταφέρσιμη: Σε σχέση με τις υπάρχουσες πλατφόρμας στο εμπόριο η πλατφόρμα Arduino παρέχει πλήρη μεταφερσιμότητα με αποτέλεσμα να μπορεί να προγραμματιστεί στα περισσότερα λειτουργικά συστήματα. -Επεκτάσιμη: Το υλικό και το λογισμικό της πλατφόρμας Arduino είναι ανοιχτά και ελεύθερα για όλους. Καθημερινά, χιλιάδες υποστηρικτές του ελεύθερου λογισμικού αναπτύσσουν διάφορες βιβλιοθήκες για την υποστήριξη της πλατφόρμας. Παράλληλα, τόσο η αρχιτεκτονική όσο και το υλικό της πλατφόρμας εξελίσσονται συνεχώς. Παρακάτω ακολουθούν μερικές από τις πλατφόρμες Arduino που έχουν αναπτυχθεί και όπου η κάθε μία είτε αποτελεί εξέλιξη κάποιας άλλης, είτε έχει αναπτυχθεί για κάποιο συγκεκριμένο σκοπό : Arduino Uno Arduino Mega 1280 Arduino Mega 2560 Arduino Nano Arduino USB Arduino Diecimila Arduino Duemilanove Arduino Fio Arduino Stamp κ.ά. 2

14 Ακολουθεί ένας πίνακας όπου περιέχει για τις πιο τυπικές πλατφόρμες Arduino τα βασικά χαρακτηριστικά όσο αφορά το υλικό τους μέρος. Πίν. 1.1 Διάφορες πλατφόρμες arduino 1.2 Το λογισμικό του Arduino Το περιβάλλον ανάπτυξης του Arduino (IDE) έχει συγγραφεί με την γλώσσα προγραμματισμού Java και αυτό το καθιστά μεταφέρσιμο στα περισσότερα λειτουργικά συστήματα. Το IDE του Arduino περιέχει έναν έξυπνο συντάκτη, μεταγλωττιστή της C, C++, τερματικό για σειριακή επικοινωνία με το Arduino, κ.α. Πιο συγκεκριμένα, η γλώσσα προγραμματισμού που χρησιμοποιείται για την συγγραφή προγραμμάτων στο Arduino είναι η Wiring (C, C++). Το IDE του Arduino χρησιμοποιεί εργαλεία GNU toolchain και AVR Libc για να παρέχει την μεταγλώττιση προγραμμάτων από C, C++ σε κατάλληλες AVR εντολές γλώσσας μηχανής, καθώς και το εργαλείο avrudude για την αποστολή του εκτελέσιμου προγράμματος στην Flash memory του Arduino. Η ψηφιακή σχεδίαση του υλικού μέρους του Arduino είναι ανοιχτή και προσβάσιμη από όλους μια και είναι δημοσιευμένη υπό την άδεια Creative Commons Attribution Share-Alike 2.5. Επίσης, το περιβάλλον ανάπτυξης (IDE) του Arduino είναι ελεύθερο λογισμικό και είναι δημοσιευμένο υπό την άδεια GNU General Public License Version2. 3

15 ΚΕΦΑΛΑΙΟ 2. ARDUINO UNO 2.1 Γενικά Η καρδιά του Arduino Uno είναι φυσικά ένας μικροεπεξεργαστής. Αυτός είναι το «μυαλό» του Arduino και είναι προγραμματιζόμενος ώστε να ελέγχει τα 14 ψηφιακά input/output pins και τα 6 αναλογικά που υπάρχουν πάνω στην πλακέτα ανάπτυξης. Δια μέσου αυτών των 20 pins γίνονται όλες οι διασυνδέσεις με εξωτερικά στοιχεία (κινητήρες, LEDs, LCD οθόνες κλπ) και αισθητήρες (Ultrasonic, θερμόμετρα, accelometers κ.α). Στην πλακέτα ανάπτυξης υπάρχει μια θύρα USB. Μέσω αυτής γίνεται η μεταφορά δεδομένων από αυτήν προς κάποια άλλη συσκευή, συνήθως έναν υπολογιστή, και το αντίστροφο. Ωστόσο, η κύρια χρήση στα αρχικά στάδια εκμάθησης είναι η μεταφορά του προγράμματος από τον υπολογιστή στον μικροεπεξεργαστή αλλά και η οπτικοποίηση των δεδομένων που απορρέουν από την λειτουργία της συσκευής μετά από το προγραμματισμό. 2.2 Μέρη ενός arduino Uno Το Arduino έχει 14 ψηφιακούς ακροδέκτες Εισόδου/Εξόδου οι οποίοι μπορούν να τεθούν ως είσοδοι ή ως έξοδοι με τις εντολές-συναρτήσεις pinmode(), digitalwrite(), και digitalread() που θα αναλυθούν παρακάτω. Λειτουργούν στα 5 Volts και έχουν την δυνατότητα να παρέχουν ή να καταβυθίζουν ένταση της τάξεως των 40mA. Σε κάθε pin υπάρχει εσωτερικά ένας Pull-up αντιστάτης στα 20-50KΩ. Επιπλέον, έχει 6 αναλογικούς ακροδέκτες Εισόδου. Αυτοί μπορούν να διαβάσουν αναλογικές τιμές όπως η τάση μιας μπαταρίας κτλ και να τις μετατρέψουν σε έναν αριθμό από Η μέτρηση της τάσης γίνεται από προκαθορισμένα από 0 έως 5 volts. Εκτός αυτού, 6 εκ των 14 ψηφιακών ακροδεκτών οι P3, P5, P6, P9, P10 και P11 έχουν την δυνατότητα να προγραμματιστούν ώστε να λειτουργούν ως αναλογικές Έξοδοι. Κάποιοι ακροδέκτες έχουν συγκεκριμένες λειτουργίες. 4

16 Σειριακή Λειτουργία: 0 (RX) και 1 (TX). Χρησιμοποιούνται για λήψη (RX) και εκπομπή (TX) TTL σειριακών δεδομένων. Εξωτερικές Διακοπές: 2 και 3. Αυτοί οι ακροδέκτες μπορούν να ενεργοποιούν διακοπές αν ανιχνευθεί παλμός χαμηλής τάσης. Με την συνάρτηση attachinterrupt(). Ο σκανδαλισμός των διακοπών μπορεί να γίνεται στο λογικό 0,1. PWM: 3, 5, 6, 9, 10, και 11 pins. Παρέχουν Έξοδο 8-bit PWM με την συνάρτηση analogwrite(). SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Αυτοί οι ακροδέκτες επιτρέπουν επικοινωνία SPI, η οποία αν και παρέχεται από το hardware δεν είναι ακόμα διαθέσιμη στην γλώσσα προγραμματισμού του Arduino. LED: 13. Στον ακροδέκτη 13 υπάρχει ένα ενσωματωμένο LED. Όταν ο ακροδέκτης έχει τιμή HIGH, το LED ανάβει ενώ όταν το pin είναι LOW δεν ανάβει. Εικόνα 2.1 Μέρη της πλατφόρμας Arduino Uno 5

17 Εικόνα 2.2 Διαστάσεις της πλατφόρμας Arduino Uno 2.3 Σειριακή θύρα Χρησιμοποιείται για επικοινωνία μεταξύ της πλατφόρμας Arduino και ενός υπολογιστή ή με άλλες συσκευές. Επομένως, όλες οι πλακέτες έχουν τουλάχιστον μια σειριακή θύρα. Επικοινωνεί με τις ψηφιακές ακίδες 0 (RX) και 1 (TX), καθώς και με τον υπολογιστή μέσω USB. Έτσι, εάν χρησιμοποιείται αυτή η λειτουργία(usb), δεν μπορούν ταυτόχρονα να χρησιμοποιηθούν οι ακίδες 0 και 1 για ψηφιακή είσοδο ή έξοδο. Αξίζει να αναφερθεί, η ενσωματωμένη σειριακή οθόνη στο περιβάλλον του Arduino μπορεί να χρησιμοποιηθεί για να επικοινωνεί με την πλακέτα Arduino. Κάνοντας κλικ στο κουμπί Serial Monitor στην γραμμή εργαλείων και επιλέγοντας την ίδια ταχύτητα που χρησιμοποιείται στην κλήση της Serial.begin(). Οι βασικές συναρτήσεις της σειριακής θύρας είναι: begin() (αρχικοποίηση της σειριακής) end() (κλείσιμο της σειριακής) available() (έλεγχος αν υπάρχουν δεδομένα να διαβαστούν) read() (ανάγνωση των εισερχόμενων σειριακών δεδομένων) 6

18 peek() (επιστρέφει το επόμενο byte από την σειριακή) flush() (άδειασμα του buffer της σειριακής από δεδομένα που έχει) print() (γράψιμο δεδομένων στη σειριακή) println() (το ίδιο με την Print(), αλλά με αλλαγή γραμμής στο τέλος) write() (γράφει δυαδικά δεδομένα στη σειριακή) 2.4 Χαρακτηριστικά του Arduino Microcontroller: ATmega328 Τάση λειτουργίας: 5V Τάση εισόδου: 7-12V Τάση εισόδου (όριο): 6-20V Digital I/O Pins: 14 (εκ των οποίων 6 περιέχουν PWM εξόδους) 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 2.5 Βασικές μνήμες Οι πλατφόρμες Arduino διαθέτουν τρείς βασικές μνήμες: Flash memory (32 Kbytes) στην οποία τοποθετείται κάθε φορά το πρόγραμμα που πρόκειται να εκτελεστεί καθώς και ο φορτωτής εκκίνησης που διευκολύνει την διαδικασία του προγραμματισμού της πλατφόρμας. SRAM memory (στατική μνήμη τυχαίας προσπέλασης των 2 Kbytes) η οποία χρησιμοποιείται για την προσωρινή αποθήκευση των στατικών και των μεταβλητών δεδομένων του προγράμματος που εκτελείται. 7

19 ΕEPROM memory (1 Kbytes) στην οποία αποθηκεύονται οι τιμές των μεταβλητών όταν η πλατφόρμα σβήσει(off). Χρησιμοποιείται για την αποθήκευση ρυθμίσεων και άλλων παραμέτρων ανάμεσα στα Reset του Arduino. Πρέπει να προστεθεί, η μνήμη Flash και η μνήμη ΕEPROM είναι σταθερές (οι πληροφορίες παραμένουν μετά την απενεργοποίησης του ρεύματος). Η μνήμη SRAM είναι ασταθής και οι πληροφορίες χάνονται όταν εναλλάσσεται το ρεύμα. Επειδή δεν υπάρχει πολύ διαθέσιμη SRAM, αν τελειώσει, το πρόγραμμα μπορεί να αποτύχει με απροσδόκητους τρόπους. Μπορεί να φαίνεται ότι φορτώνει με επιτυχία, αλλά δεν τρέχει, ή τρέχει παράξενα. Για να ελεγχθεί εάν αυτό συμβαίνει, μπορούν να μειωθούν τα σχόλια ή οι σειρές ή άλλες δομές δεδομένων στο sketch (χωρίς να αλλάξει ο κώδικας). Εάν λειτουργεί με επιτυχία στη συνέχεια, κατά πάσα πιθανότητα έχει εξαντληθεί η SRAM. Ένας τρόπος για να αντιμετωπιστεί αυτό το πρόβλημα είναι αν υπάρχουν πίνακες αναζήτησης ή άλλοι μεγάλοι πίνακες, τότε μπορεί να χρησιμοποιηθεί ο μικρότερος τύπος δεδομένων που είναι αναγκαίος για να αποθηκευτούν οι τιμές που χρειάζονται. 2.6 Τροφοδοσία Το Arduino Uno τροφοδοτείται είτε από εξωτερική τροφοδοσία που παρέχεται είτε μέσω μιας υποδοχής των 2.1mm (θετικός πόλος στο κέντρο) που βρίσκεται στην κάτω αριστερή γωνία του Arduino είτε απευθείας από την θύρα USB του υπολογιστή. H επιλογή της πηγής γίνεται αυτόματα από το αναπτυξιακό. Ως εξωτερική τροφοδοσία ορίζεται είτε μια μπαταρία, είτε μετασχηματιστής των 9Volt από 220V. Η μπαταρία μπορεί να συνδεθεί στις υποδοχές του Arduino Vin και GND όπου τοποθετούνται ο θετικός πόλος και ο αρνητικός αντίστοιχα. Από την άλλη αν τροφοδοτηθεί με μετασχηματιστή απλά πρέπει να τοποθετηθεί το βύσμα στην υποδοχή που υπάρχει θετικό πόλο στο κέντρο. Η πλακέτα μπορεί να λειτουργήσει με εξωτερική πηγή από 6 έως 20 Volts. Αν ωστόσο τροφοδοτηθεί με λιγότερα από 7 Volt τα pin εξόδου 5Volt δεν θα καταφέρουν να εξάγουν τάση 5 Volts. Αντίθετα, αν δώσουμε πάνω από 12 Volts θα υπερθερμανθεί ο σταθεροποιητής τάσης στην πλακέτα και ενδεχομένως να καταστραφεί. Συνεπώς, μια ιδανική τάση είναι τα 9 Volts. 8

20 Οι ακροδέκτες τροφοδοσίας είναι οι εξής: VIN. Ακροδέκτης για μη σταθεροποιημένη τάση. Συνήθως εδώ συνδέεται μια εξωτερική πηγή τροφοδοσίας. 5V. Ακροδέκτης σταθεροποιημένης τάσης 5Volt. Η ρυθμιζόμενη παροχή ηλεκτρικού ρεύματος που χρησιμοποιείται για την τροφοδοσία του μικροελεγκτή ή άλλων ηλεκτρονικών στοιχείων της πλακέτας. Αυτό μπορεί να προέρχεται είτε από Vin με ενσωματωμένο ρυθμιστή, ή να παρέχεται από USB ή άλλη ρυθμιζόμενη παροχή 5V 3V3. Μέγιστη κατανάλωση ρεύματος είναι 50mA. GND. Γειωμένες ακίδες 2.7 Επικοινωνία Το Αrduino Uno έχει την δυνατότητα να επικοινωνεί με τον Ηλεκτρονικό Υπολογιστή, έναν άλλον Arduino ή άλλους μικροελεγκτές. Το ολοκληρωμένο ATMega382 παρέχει σειριακή επικοινωνία ΤΤL 5 Volt UART, η οποία είναι διαθέσιμη από τους ακροδέκτες (λήψη RX) 0 και (εκπομπή TX) 1 του ολοκληρωμένου. Επιπλέον, η αναπτυξιακή πλακέτα του Arduino παρέχει σειριακή επικοινωνία με τον Ηλεκτρονικό Υπολογιστή για προγραμματισμό με την βοήθεια ενός ειδικά προγραμματιζόμενου ενσωματωμένου ολοκληρωμένου ATmega382 αντί του chip FTDI. Ωστόσο, αυτό επιτρέπει την πιο γρήγορη ταχύτητα μεταφοράς και γρήγορης σειριακής επικοινωνίας. Με την σύνδεση του Arduino μέσω της θύρας USB αυτό εμφανίζεται ως εικονική σειριακή θύρα COM στο λογισμικό του υπολογιστή. Το firmware ATmega382 χρησιμοποιεί τα προγράμματα οδήγησης USB COM και δεν χρειάζεται να υπάρχει εξωτερικός παράγοντας. Επομένως, στα Windows απαιτείται μόνο ένα αρχείο.inf. Ένα Arduino περιλαμβάνει ένα τμηματικό όργανο ελέγχου το οποίο επιτρέπει την απλή μορφή κειμένου δεδομένων που αποστέλλονται προς και από τη πλακέτα Arduino. Οι RX και TX λυχνίες LED στην πλακέτα θα αναβοσβήνουν όταν γίνεται μετάδοση δεδομένων μέσω του USB-to-chip σειριακή και USB σύνδεση με τον υπολογιστή (αλλά όχι για σειριακή επικοινωνία στις ακίδες 0 και 1). 9

21 Εικόνα 2.3 Μικροελεγκτής ATmega Γλώσσα Προγραμματισμού Το Arduino Uno μπορεί να προγραμματιστεί με τη γλώσσα Wiring (ουσιαστικά πρόκειται για τη C++ με κάποιες μετατροπές). Έρχεται με ένα φορτωτή εκκίνησης που μας επιτρέπει να ανεβάζουμε νέο κώδικα χωρίς τη χρήση εξωτερικού υλικού προγραμματιστή. Επικοινωνεί χρησιμοποιώντας το αρχικό πρωτόκολλο αναπτυξιακής κάρτας STK500. Το περιβάλλον ανάπτυξης του λογισμικού βασίζεται στην γλώσσα προγραμματισμού Processing και την γλώσσα προγραμματισμού Wiring, οι οποίες είναι ανοιχτού κώδικα (οpen source). Το περιβάλλον ανάπτυξης μπορεί κάποιος να το "κατεβάσει δωρεάν". 2.9 Ολοκληρωμένο περιβάλλον ανάπτυξης του Arduino Το περιβάλλον ανάπτυξης Arduino περιέχει μια περιοχή επεξεργασίας κειμένου για τη συγγραφή κώδικα, μια περιοχή μηνυμάτων, ένα μενού, μια γραμμή εργαλείων με κουμπιά για κοινές λειτουργίες, καθώς και μια σειρά από μενού. Συνδέεται με το υλικό Arduino για τη φόρτωση προγραμμάτων και για να επικοινωνούν μεταξύ τους. Ένα ολοκληρωμένο πρόγραμμα συνήθως ονομάζεται sketch. Αυτό το sketch είναι γραμμένο με το πρόγραμμα επεξεργασίας κειμένου. Έχει δυνατότητες για την αντιγραφή/επικόλληση και για την αναζήτηση/αντικατάσταση κειμένου. Η κονσόλα απεικονίζει την έξοδο του κειμένου από το περιβάλλον Arduino 10

22 συμπεριλαμβάνοντας πλήρη μηνύματα λάθους και άλλες πληροφορίες. Τα κουμπιά της γραμμής εργαλείων επιτρέπουν τον έλεγχο και το ανέβασμα των προγραμμάτων, τη δημιουργία νέου sketch, το άνοιγμα και την αποθήκευση των sketch και άνοιγμα της σειριακής οθόνης. Εικόνα 2.4 Ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) του Arduino Verify/Compile (Έλεγχος/Μεταγλώττιση): Έλεγχος για λάθη στον κώδικα Upload: Ανέβασμα του κώδικα στον μικροελεγκτή New(Νέο): Δημιουργεί ένα νέο sketch Open(Άνοιγμα): Παρουσιάζει ένα μενού με όλα τα sketch, κάνοντας κλικ σε ένα από αυτά θα ανοίξει μέσα στο τρέχον παράθυρο Save(Αποθήκευση): Αποθηκεύει το sketch 11

23 Serial Monitor(Σειριακή οθόνη): Ανοίγει την σειριακή οθόνη ώστε να μπορούμε να δώσουμε δεδομένα από το πληκτρολόγιο 2.10 Σειριακή οθόνη (SERIAL MONITOR) Εμφανίζει τα σειριακά δεδομένα που αποστέλλονται από την πλακέτα Arduino. Πιο συγκεκριμένα, η αποστολή δεδομένων στην πλακέτα γίνεται, εισάγοντας κείμενο και πατώντας το κουμπί send ή πατώντας το Enter. Επίσης, στο κάτω μέρος της σειριακής οθόνης, μπορεί να γίνει η επιλογή της κατάλληλης ταχύτητας (baud) από την λίστα που εμφανίζεται ανάλογα με την τιμή που θα επιλεχθεί στο προγραμματισμό του Arduino με το Serial.begin(). Εικόνα 2.5: Serial Monitor 2.11 Η δομή του προγράμματος Ένα τυπικό πρόγραμμα Arduino έχει την παρακάτω δομή: //δήλωση μεταβλητών void setup () //αρχικοποιήσεις 12

24 void loop () //Κώδικας Υπάρχουν δυο ειδικές συναρτήσεις που είναι μέρος του κάθε sketch του Arduino οι οποίες είναι η setup() και η loop(). Η setup() καλείται μια φορά, όταν το sketch ξεκινά ή όποτε κάνει επαναφορά (reset) η πλατφόρμα Arduino. Κυρίως, σε αυτήν γίνονται οι αρχικοποιήσεις των μεταβλητών, η ρύθμιση της κατάστασης των ακίδων (pins) και η προετοιμασία των βιβλιοθηκών. Αντιθέτως, η συνάρτηση loop() καλείται ξανά και ξανά επιτρέποντας έτσι στο πρόγραμμα να ανταποκριθεί σε εξωτερικά ερεθίσματα. Και οι δυο συναρτήσεις πρέπει να περιλαμβάνονται στο sketch, ακόμα και αν δεν περιέχουν κάτι και να είναι κενές Βασικές δομές και λειτουργίες προγραμματισμού Παρακάτω, ακολουθούν μερικές από τις πιο βασικές δομές και λειτουργίες που μπορεί να αξιοποιηθεί ως εργαλεία κατά την συγγραφή ενός προγράμματος Arduino : Δομές ελέγχου ροής if (δομή ελέγχου μίας συνθήκης) if... else (δομή ελέγχου πολλαπλών συνθηκών) for (δομή επαναληπτικού ελέγχου συνθήκης) while (δομή επαναληπτικού ελέγχου συνθήκης) do... while (δομή επαναληπτικού ελέγχου συνθήκης) switch... case (δομή ελέγχου περιπτώσεων) break (εντολή διακοπής μιας επαναληπτικής δομής) continue (εντολή παράλειψης της τρέχουσας επανάληψης) return (εντολή επιστροφής από μία συνάρτηση) goto (εντολή μετάβασης σε κάποιο σημείο του κώδικα) Αριθμητικοί τελεστές = (τελεστής εκχώρησης) 13

25 + (τελεστής πρόσθεσης) -(τελεστής αφαίρεσης) (τελεστής πολλαπλασιασμού) / (τελεστής διαίρεσης) % (τελεστής υπόλοιπου ακεραίας διαίρεσης) Λογικοί τελεστές && (λογική σύζευξη) (λογική διάζευξη)! (λογική άρνηση) Δυαδικοί τελεστές & (δυαδική σύζευξη) (δυαδική διάζευξη) ^ (δυαδική αποκλειστική διάζευξη) ~ (δυαδική άρνηση) << (δυαδική αριστερή ολίσθηση) >> (δυαδική δεξιά ολίσθηση) Τελεστές αύξησης και μείωσης ++ (αύξηση κατά μία ακέραιη μονάδα) -(μείωση κατά μία ακέραιη μονάδα) Σύνθετοι τελεστές +=, -=, *=, /=, %= (σύνθετοι αριθμητικοί τελεστές) &=, =, ^=, ~=, <<=, >>= (σύνθετοι δυαδικοί τελεστές) Τελεστές σύγκρισης == (ισότητα)!= (ανισότητα) < (μικρότερο) (μεγαλύτερο) <= (μικρότερο ή ίσο) >= (μεγαλύτερο ή ίσο) 14

26 Τελεστές δεικτών (τελεστής απόκτησης περιεχομένου) & (τελεστής απόκτησης διεύθυνσης) Σταθερές HIGH (τιμή υψηλής στάθμης για μία επαφή εισόδου ή εξόδου) LOW (τιμή χαμηλής στάθμης για μία επαφή εισόδου ή εξόδου) false (λογικό επίπεδο ψεύδους σε μία συνθήκη) true (λογικό επίπεδο αλήθειας σε μία συνθήκη) INPUT (χρησιμοποιείται για τον ορισμό μίας επαφής ως είσοδο) OUTPUT (χρησιμοποιείται για τον ορισμό μίας επαφής ως έξοδο) A0,..., Α5 (συμβολοσταθερές για τις αναλογικές επαφές εισόδου) Τύποι δεδομένων boolean (λογική δυαδική τιμή) char (προσημασμένος χαρακτήρας 8 ψηφίων) unsigned char (μη προσημασμένος χαρακτήρας 8 ψηφίων) byte (μη προσημασμένος χαρακτήρας 8 ψηφίων) int (προσημασμένος ακέραιος αριθμός 16 ψηφίων) unsigned int (μη προσημασμένος ακέραιος αριθμός 16 ψηφίων) word (μη προσημασμένος ακέραιος αριθμός 16 ψηφίων) long (προσημασμένος ακέραιος αριθμός 32 ψηφίων) unsigned long (μη προσημασμένος ακέραιος αριθμός 32 ψηφίων) float, double (αριθμός κινητής υποδιαστολής απλής ακρίβειας) String (αντικείμενο αλφαριθμητικού με χρήσιμες μεθόδους) Ως αλφαριθμητικό μπορεί να θεωρηθεί και ο πίνακας χαρακτήρων Συναρτήσεις μετατροπής τύπων char(), byte() int(), word(), long() float(), double() Συναρτήσεις εισόδου και εξόδου pinmode() (ορίζει μια επαφή ως είσοδο ή έξοδο) 15

27 Συναρτήσεις ψηφιακής εισόδου και εξόδου digitalwrite() (γράφει σε μία ψηφιακή επαφή εξόδου) digitalread() (διαβάζει από μία ψηφιακή επαφή εισόδου) Συναρτήσεις αναλογικής εισόδου και εξόδου analogreference() (ορίζει την τάση αναλογικής αναφοράς) analogwrite() (γράφει PWM σήματα σε μία επαφή εξόδου) analogread() (διαβάζει από μία αναλογική επαφή εισόδου) Προηγμένες συναρτήσεις εισόδου και εξόδου tone() (παράγει ένα τετραγωνικό σήμα ορισμένης συχνότητας) notone() (διακόπτει την παραγωγή τετραγωνικών σημάτων) shiftout() (ολισθαίνει τα ψηφία μιας τιμής σε μία επαφή εξόδου) pulsein() (επιστρέφει την διάρκεια σε μs ενός παλμού HIGH ή LOW) Συναρτήσεις χρόνου millis() (διάρκεια εκτέλεσης του προγράμματος σε ms) micros() (διάρκεια εκτέλεσης του προγράμματος σε μs) delay() (παύση προγράμματος - η διάρκεια δίδεται σε ms) delaymicroseconds() (παύση προγράμματος - η διάρκεια δίδεται σε μs) Μαθηματικές και Τριγωνομετρικές συναρτήσεις max() (βρίσκει τον μεγαλύτερο ανάμεσα σε δύο αριθμούς) min() (βρίσκει τον μικρότερο ανάμεσα σε δύο αριθμούς) abs() (επιστρέφει την απόλυτη τιμή ενός αριθμού) constrain() (ελέγχει για υπερχείλιση ή υποχείλιση ορίων) map() (πραγματοποιεί γραμμικό μετασχηματισμό ορίων) pow() (επιστρέφει το αποτέλεσμα μίας δύναμης) sqrt() (επιστρέφει την ρίζα ενός αριθμού) sin() (υπολογίζει το ημίτονο ενός αριθμού) cos() (υπολογίζει το συνημίτονο ενός αριθμού) tan() (υπολογίζει την εφαπτομένη ενός αριθμού) Συναρτήσεις γεννήτριας ψευδοτυχαίων αριθμών random() (δίδεται ένας νέος αριθμός από την γεννήτρια) 16

28 randomseed() (θέτει τον σπόρο της γεννήτριας παραγωγής) Συναρτήσεις επεξεργασίας δυαδικών αριθμών lowbyte() (επιστρέφει το δεξιότερο byte μίας μεταβλητής) highbyte() (επιστρέφει το αριστερότερο byte μίας μεταβλητής) bitread() (διαβάζει ένα συγκεκριμένο ψηφίο μίας μεταβλητής) bitwrite() (γράφει σε ένα συγκεκριμένο ψηφίο μιας μεταβλητής) bitset() (γράφει την τιμή 1 σε κάποιο ψηφίο μίας μεταβλητής) bitclear() (γράφει την τιμή 0 σε κάποιο ψηφίο μιας μεταβλητής) bit() (υπολογίζει μία συγκεκριμένη δύναμη με βάση το 2) Συναρτήσεις χρήσης ρουτινών εξυπηρέτησης διακοπών attachinterrupt() (ενεργοποιεί μία ρουτίνα εξυπηρέτησης διακοπής) detachinterrupt() (απενεργοποιεί μία ρουτίνα εξυπηρέτησης διακοπής) Συναρτήσεις ενεργοποίησης και απενεργοποίησης διακοπών interrupts() (ενεργοποιεί τα σήματα διακοπής) nointerrupts() (απενεργοποιεί τα σήματα διακοπής) Υποστήριξη σειριακής επικοινωνίας Serial (αντικείμενο σειριακής επικοινωνίας με χρήσιμες μεθόδους) 2.13 Ψηφιακές ακίδες (Digital pins) Οι ακίδες αυτές στο Arduino μπορούν να ρυθμιστούν είτε ως είσοδοι είτε ως έξοδοι, όμως από προεπιλογή είναι ρυθμισμένες ως είσοδοι. Επίσης αξίζει να σημειωθεί, ότι η πλειοψηφία των αναλογικών ακίδων του Arduino (Atmega), μπορεί να ρυθμιστεί και να χρησιμοποιηθεί, με τον ίδιο ακριβώς τρόπο όπως οι ψηφιακές ακίδες. Οι συναρτήσεις ψηφιακής εισόδου και εξόδου είναι οι παρακάτω: pinmode(): Ρυθμίζει τη συγκεκριμένη ακίδα να συμπεριφέρεται ως είσοδος/ έξοδος. Σύνταξη: pinmode(pin, mode) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας η λειτουργία είναι επιθυμητό να 17

29 αλλάξει. mode: INPUT/OUTPUT digitalwrite(): Γράφει μια υψηλή (HIGH) ή μια χαμηλή (LOW) τιμή σε μια ψηφιακή ακίδα. Αν η ακίδα έχει ρυθμιστεί ως έξοδος με την συνάρτηση pinmode(), τότε η τάση της θα καθορίσει στην αντίστοιχη τιμή: 5V για HIGH και 0V για LOW. Αν η ακίδα έχει ρυθμιστεί ως είσοδος, γράφοντας HIGH στην συνάρτηση digitalwrite() θα ενεργοποιήσει μια εσωτερική pullup-αντίσταση των 20 Κ ενώ γράφοντας LOW θα την απενεργοποιήσει. Σύνταξη: digitalwrite(pin,value) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας η λειτουργία είναι επιθυμητό να αλλάξει. Value: INPUT/OUTPUT digitalread(): Διαβάζει την τιμή από μια συγκεκριμένη ψηφιακή ακίδα, που είναι είτε HIGH είτε LOW. Σύνταξη: digitalread(pin) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας η λειτουργία είναι επιθυμητό να αλλάξει. Επιστρέφει: HIGH/LOW 2.14 Αναλογικές ακίδες εισόδου (Analog input pins) Οι ελεγκτές Atmega που χρησιμοποιούνται για την πλατφόρμα Arduino περιέχουν έναν ενσωματωμένο αναλογικό-σε-ψηφιακό μετατροπέα 6 καναλιών. Ο μετατροπέας διαθέτει ανάλυση 10 bit, επιστρέφοντας ακέραιους από 0 έως Ενώ η κύρια λειτουργία της αναλογικής ακίδας για τους περισσότερους χρήστες Arduino είναι να διαβάζει αναλογικούς αισθητήρες, οι αναλογικές ακίδες έχουν επίσης όλες τις λειτουργίες των γενικών ακίδων εισόδου/εξόδου. Οι συναρτήσεις αναλογικής εισόδου και εξόδου είναι οι παρακάτω: analogwrite(): Γράφει μια αναλογική τιμή (PWM κύμα) σε μια ακίδα. Μπορεί να χρησιμοποιηθεί για παράδειγμα να ανάψει ένα LED σε διάφορες φωτεινότητες ή να οδηγήσει ένα κινητήρα σε διάφορες ταχύτητες. Μετά από μια 18

30 κλήση της analogwrite(), η ακίδα θα δημιουργήσει ένα σταθερό τετραγωνικό κύμα του καθορισμένου κύκλου λειτουργίας μέχρι την επόμενη κλήση της analogwrite() (ή μια κλήση της digitalwrite() ή digitalread() για την ίδια ακίδα). Η συχνότητα του σήματος PWM είναι περίπου 490 Hz. Στις περισσότερες πλατφόρμες Arduino η συνάρτηση αυτή λειτουργεί στις ακίδες 3, 5, 6, 9, 10, 11. Σύνταξη: analogwrite(pin, value) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας θα γράψει επάνω value: ο κύκλος λειτουργίας μεταξύ 0 και 255 analogread(): Διαβάζει την τιμή από την καθορισμένη αναλογική ακίδα. Σύνταξη: analogread(pin) Παράμετροι: pin: Ο αριθμός της αναλογικής ακίδας εισόδου από όπου θα διαβάζει Επιστέφει: ακέραιο από 0 έως Υποστήριξη Βιβλιοθηκών (Libraries) Η χρήση βιβλιοθηκών προσφέρουν περισσότερο λειτουργικότητα σε συνεργασία με το υλικό και τον χειρισμό των δεδομένων. Για να χρησιμοποιηθεί μια βιβλιοθήκη σε ένα sketch, μπορεί να επιλεγεί από το μενού Sketch Import Library. Αυτό θα εισάγει μια ή περισσότερες βιβλιοθήκες #include δηλώσεις στην κορυφή του sketch. Επειδή οι βιβλιοθήκες φορτώνονται στην πλακέτα με το sketch, αυξάνουν το μέγεθος του χώρου που καταλαμβάνεται. Εάν ένα sketch δεν χρειάζεται πλέον μια βιβλιοθήκη, απλά μπορούμε να την διαγράψουμε από την κορυφή του κώδικα. Για την εγκατάσταση των βιβλιοθηκών που δεν υπάρχουν ήδη στο λογισμικό, μπορεί να δημιουργηθεί ένας κατάλογος με την ονομασία libraries (βιβλιοθήκες), μέσα στον κατάλογο του sketchbook. Στην συνέχεια αποσυμπιέζουμε τη βιβλιοθήκη εκεί. [2] 19

31 ΚΕΦΑΛΑΙΟ 3. ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΕΞΑΡΤΗΜΑΤΩΝ ΤΗΣ ΔΙΑΤΑΞΗΣ 3.1 Περιγραφή διάταξης Για την πραγματοποίηση του κυκλώματος χρησιμοποιήθηκε ο αισθητήρας θερμοκρασίας και υγρασίας, DHT11, με ψηφιακή έξοδο καθώς και ο αισθητήρας μέτρησης εναλλασσόμενου ρεύματος, C-CT-10, με αναλογική έξοδο. Η συλλογή των ενεργειακών δεδομένων πραγματοποιήται από την πλακέτα arduino uno rev3 με ενσωματωμένο τον μικροεπεξεργαστή atmega328. Για να επιτύχουμε την αποστολή των δεδομένων τόσο τοπικά όσο κι απομακρυσμένα, συνδέσαμε την πλακέτα του arduino με την αντίστοιχη πλακέτα adafruit cc3000 Wi-Fi. Έτσι λοιπόν, είχαμε τη δυνατότητα να λαμβάνουμε ασύρματα τα δεδομένα χωρίς χρήση καλωδιώσεων ή κι ακόμη (αυτός ήταν ο τελικός σκοπός μας) να παραλαμβάνουμε τα δεδομένα απομακρυσμένα κάνοντας αποθήκευση και περαιτέρω επεξεργασία με την προϋπόθεση φυσικά ότι στο χώρο της εγκατάστασης υπάρχει σύνδεση internet. Το περιβάλλον ανάπτυξης του λογισμικού βασίζεται στην γλώσσα προγραμματισμού Processing και την γλώσσα προγραμματισμού Wiring, οι οποίες είναι ανοιχτού κώδικα (οpen source) και μπορεί κάποιος να τις "κατεβάσει δωρεάν". Η Γλώσσα προγραμματισμού του Arduino απoτελεί μια εφαρμογή σε software επίπεδο της καλωδίωσης. Εξομοιώνει θα λέγαμε απόλυτα το φυσικό περιβάλλον του μικροελεγκτή. 3.2 Αισθητήρας θερμοκρασίας-υγρασίας, DHT11 Επιλέξαμε τον αισθητήρα dht11 επειδή είναι ένας αισθητήρας χαμηλού κόστους, με μακροπρόσθεσμη σταθερότητα, γρήγορη απόκριση, ψηφιακό σήμα εξόδου και ακριβή βαθμονόμηση. Ο DHT11 είναι ένας σύνθετος αισθητήρας που περιέχει ένα βαθμονομημένο ψηφιακό σήμα εξόδου της θερμοκρασίας και της υγρασίας. Ο αισθητήρας περιλαμβάνει ένα αντιστάτη υγρών στοιχείων και μια NTC 20

32 συσκευή μέτρησης της θερμοκρασίας, και συνδέονται με υψηλής απόδοσης 8-bit μικροελεγκτή Διαστάσεις DHT11 Οι διαστάσεις και οι ακίδες του αισθητήρα φαίνονται στη παρακάτω εικόνα: Εικ.3.1 Διαστάσεις και ακίδες του DHT Παράμετροι DHT11 Σχετική υγρασία Ανάλυση: 16 Bit Επαναληψιμότητα: ± 1% RH Ακρίβεια στους 25 : ± 5% RH Εναλλαξιμότητα: πλήρως εναλλάξιμα Xρόνος απόκρισης: 1 / e (63%) των 25 6s 1m / s 6s αέρα Υστέρηση: <± 0,3% RH Μακροπρόθεσμη σταθερότητα: <± 0,5% RH / έτος Θερμοκρασία Ανάλυση: 16 Bit Επαναληψιμότητα: ± 0.2 Σειρά: Στους 25 ± 2 21

33 Ο χρόνος απόκρισης: 1 / e (63%) 10S Ηλεκτρικά Χαρακτηριστικά Τροφοδοσία: DC 3.5 ~ 5.5V Παροχή ρεύματος: 0.3mA μέτρηση αναμονής 60μA Δειγματοληψία περιόδου: περισσότερο από 2 δευτερόλεπτα Περιγραφή των pin 1.VDD ηλεκτρική τροφοδοσία 3.5 ~ 5.5Vdc 2. ΔΕΔΟΜΕΝΑ, μετάδοση σειριακών δεδομένων 3.NC, άδειο pin 4.GND γείωση, αρνητικός πόλος Εικ.3.2 Τυπικό κύκλωμα Σειριακή επικοινωνία (αμφίδρομη single-wire) Ενιαίος δίαυλος για να μεταφέρει τα δεδομένα που ορίζονται Για την επικοινωνία και τον συγχρονισμό μεταξύ του μικροεπεξεργαστή και τη μορφή των δεδομένων DHT11, χρησιμοποιείται μονός-δίαυλος, μια μετάδοση 40 στοιχείων. Κάθε δύο δευτερόλεπτα, ο αισθητήρας εκπέμπει 40 bit πληροφορίας τα οποία αντιστοιχούν σε 8 bit για την τιμή της υγρασίας 8 bit για την ακέραια τιμή τις υγρασίας 8 bit για την τιμή της θερμοκρασίας 22

34 8 bit για την ακέραια τιμή τις θερμοκρασίας 8 bit για το bit ελέγχου ισοτιμίας των δεδομένων. Παράδειγμα 1: λαμβάνονται 40 στοιχεία: Υψηλή υγρασία Χαμηλή υγρασία Υψηλή θερμ. Χαμηλή θερμ. Ισοτιμία bit Υπολογίζει: = Ληφθέντα δεδομένα είναι σωστά: Υγρασία: = 35Η = 53% RH Θερμοκρασία: = 18Η = 24 ºC Παράδειγμα 2: λαμβάνονται 40 στοιχεία: Υψηλή υγρασία Χαμηλή υγρασία Υψηλή θερμ. Χαμηλή θερμ. Ισοτιμία bit Υπολογίζω: = Εάν τα ληφθέντα δεδομένα δεν είναι σωστά, σταματάει, για την εκ νέου λήψη δεδομένων. [3] 3.3 AC Current sensor C-CT-100 O συγκεκριμένος αισθητήρας τοποθετήται γύρω από τη γραμμή τροφοδοσίας και μπορεί να μετρήσει ένα φορτίο μέχρι 100 Αμπέρ(AC). Μπορεί να χρησιμοποιηθεί για την παρακολούθηση-καταγραφή της έντασης του ρεύματος και κατ επέκταση της ισχύος και της ενέργειας μιας συσκευής ή ακόμα για την κατασκευή μίας προστασίας υπερφόρτισης εάν ξεπεραστεί η τιμή της έντασης του ρεύματος που ορίζουμε. Μετασχηματιστές ρεύματος (CTS) είναι αισθητήρες που χρησιμοποιούνται για τη μέτρηση εναλλασσόμενου ρεύματος. Είναι ιδιαίτερα χρήσιμες για τη μέτρηση της κατανάλωσης ολόκληρου κτιρίου ηλεκτρικής ενέργειας (ή της παραγωγής αυτού). 23

35 Ο πυρήνας διαιρούμενου τύπου είναι ιδιαίτερα κατάλληλο για DIY(direct input use) και μπορεί να τοποθετήται είτε στο καλώδιο της φάσης είτε στο καλώδιο του ουδετέρου χωρίς να χρειάζεται επιπλέον παρεμβάσεις στο ηλεκτρικό κύκλωμα Εφαρμογές Ο συγκεκριμένος αισθητήρας βρίσκει εφαρμογή: Κατάλληλο για την μέτρηση εναλλασσόμενου ρεύματος. Παρακολούθηση και προστασία του κινητήρα εναλλασσόμενου ρεύματος. Εξοπλισμός φωτισμού. Αεροσυμπιεστή Τεχνικά χαρακτηριστικά Ηλεκτρικά χαρακτηριστικά Ονομαστικό ρεύμα πρωτεύοντος (Amp.) 50 / 60Hz 30 nom (1 ~ 100Α max) Αναλογία μετατροπής: Np: Ns = 1: 2000 Τρέχουσα αναλογία:100α / 50mA D.C.αντίσταση σε 20 C: 250 Ω RL 10Ω: 2% RL 10Ω: 0,5% Σφάλμα φάσης στην ονομαστική τρέχουσα σειρά: 4 Εύρος θερμοκρασίας λειτουργίας: -40 ~ 65 C Θερμοκρασία αποθήκευσης: -45 ~ 85 C Διηλεκτρική αντοχή (μεταξύ του κελύφους και της εξόδου) (Hi-pot) 2.5KV / 1 ma / 1 λεπτό Αντίσταση μόνωσης: DC500V / 100MΩ λεπτό Μηχανικά χαρακτηριστικά Διαστάσεις Άνοιγμα: > 10 χιλιοστά Τύπος εξόδου UL AWG PVC WIRE (διπλασιασμός σύρμα) Βάρος κατά προσέγγιση: 60g 24

36 Εικ. 3.3 Αισθητήρας ρεύματος CT[4] Αρχή λειτουργίας Βασικά όπως και κάθε άλλος μετασχηματιστής, ο μετασχηματιστής ρεύματος έχει μια πρωτεύουσα περιέλιξη, ένα μαγνητικό πυρήνα, και μια δευτερεύουσα περιέλιξη. Το εναλλασσόμενο ρεύμα που ρέει στο πρωτεύον παράγει ένα μαγνητικό πεδίο στον πυρήνα, η οποία επάγει ένα ρεύμα στο δευτερεύον κύκλωμα περιελίξεως. Το ρεύμα στο δευτερεύον τύλιγμα είναι ανάλογο με το ρεύμα που ρέει στο πρωτεύον τύλιγμα. Isecondary = CTturnsRatio Iprimary CTturnsRatio = Turnsprimary / Turnssecondary Κατά την αναλογική είσοδο ο Arduino μεταφράζει γραμμικά την τάση εισόδου του ακροδέκτη με τη βοήθεια ενός αναλογικού-σε-ψηφιακό μετατροπέα (Analog-to- Digital Converter ADC), από 0 5 Volt σε μια 12-bit αριθμητική τιμή

37 Εικ. 3.4 : Σχέση μεταξύ στάθμης τάσεως αναλογικής εισόδου και επιστρεφόμενης τιμής από την analogread() Υπολογισμός Αντίστασης φορτίου: Ένας αισθητήρας CT πρέπει να χρησιμοποιείται με μία αντίσταση φορτίου. Η αντίσταση φορτίου συμπληρώνει ή κλείνει το δευτερεύον κύκλωμα CT. Η τιμή φορτίου επιλέγεται για να παρέχει μια τάση ανάλογη προς το δευτερεύον ρεύμα. Η τιμή του φορτίου πρέπει να είναι αρκετά χαμηλή για την προστασία του πυρήνα CT. - Primary peak-current = RMS current 2 = 100 A = 141.4A - Secondary peak-current = Primary peak-current / no. of turns = A / 2000 = A - Ideal burden resistance = (AREF/2) / Secondary peak-current = 2.5 V / A = 35.4 Ω Καλιμπράρισμα αισθητήρα Το παρεχόμενο ρεύμα μετράται χρησιμοποιώντας ένα μετασχηματιστή ρεύματος, και το προκύπτον (μικρό) ρεύμα μετατρέπεται σε τάση με τη βοήθεια της αντίστασης φορτίου. Αυτή η τάση μετράται από την αναλογική είσοδο του μικροελεγκτή. 26

38 Αυτή η τάση μετράται σε σχέση με την τάση τροφοδοσίας του επεξεργαστή ( σε αυτή την περίπτωση έχουμε 5 V), το οποίο χρησιμοποιείται ως αναφορά, και κλιμακώνεται έτσι ώστε η τάση αναφοράς θα δώσει τον μέγιστο αριθμό 2 10 (= 1024). Η τάση εισόδου στον μικροελεγκτή έχει μια σταθερή τιμή προσαύξησης, αλλά αυτό αφαιρείται αμέσως από ένα φίλτρο του λογισμικού, έτσι ώστε να μπορούμε να το αγνοήσουμε κατά τον υπολογισμό της σταθεράς βαθμονόμησης. Ομοίως, μπορούμε να εργαστούμε σε τιμές RMS τόσο για την τάση όσο και για το ρεύμα.[5] Υπολογίζουμε για αναλογία μετατροπής 1/2000 και αντίσταση φορτίου 33Ω ότι η σταθερά ρεύματος είναι: Currentconstant= (100/0.050)/33=60.61 Αναλογική είσοδος/έξοδος (analogread analogwrite) Επομένως ο κώδικας θα είναι της μορφής: #include "EmonLib.h"// Include Emon Library EnergyMonitor emon1; // Create an instance voidsetup() Serial.begin(9600); emon1.current(1, 60.61); // Current: input pin, calibration. voidloop() emon1.serialprint(); // Print out all variables 27

39 3.4 Arduino-Adafruit wi-fi shield Το Arduino Wi-Fi όπως και η παραλλαγή του, adafruitcc3000 wi-fi, συνδέει τον Arduino στο Internet ασύρματα. Συνδέεται με το ασύρματο δίκτυo, ακολουθώντας μερικές απλές οδηγίες. Όπως τα πάντα με τον Arduino, κάθε στοιχείο της πλατφόρμας - hardware, λογισμικό και τεκμηρίωση - είναι ελεύθερα διαθέσιμο και open-source. Απαιτείται κάρτα Arduino (supplied from the Arduino Board) Τάση λειτουργίας 5V(τροφοδοτείται από τον Arduino) Συμβατό με Arduino Uno Σύνδεση μέσω: b/gδικτύων Τύποι κρυπτογράφησης: WEP και WPA2 Ατομικό Σύνδεση με τον Arduino στη θύρα SPI Ενσωματωμένη υποδοχή SD Κεφαλές ICSP Mini-USB για αναβάθμιση λογισμικού Περιγραφή Το Arduino WiFi επιτρέπει σε μια πλακέτα Arduino να συνδεθεί στο Internet χρησιμοποιώντας την ασύρματη προδιαγραφή ( WiFi ). Είναι βασισμένο στο πρότυπο HDG204 Wireless LAN b / g. Υποστηρίζει τόσο TCP όσο και UDP συνδέσεις. Υπάρχει η αντίστοιχη βιβλιοθήκη WiFi που παρέχει συναρτήσεις για σύνδεση με το internet μέσω της κάρτας. Το WiFi Shield μπορεί να συνδεθεί σε ασύρματα δίκτυα που λειτουργούν σύμφωνα με τα πρότυπα b και g. Υπάρχει μια ενσωματωμένη υποδοχή κάρτας micro - SD, η μπορεί να χρησιμοποιηθεί για να αποθηκεύσει τα αρχεία για την εξυπηρέτηση μέσω του 28

40 δικτύου. Είναι συμβατό με το Arduino Uno και Mega. Η ενσωματωμένη κάρτα microsd είναι προσβάσιμη μέσω της βιβλιοθήκης SD. Το Arduino επικοινωνεί τόσο με τον επεξεργαστή του Wi-Fi Shield όσο και με τη κάρτα SD χρησιμοποιώντας το διάδρομο SPI ( μέσα από την κεφαλή ICSP ). Αυτό είναι στα ψηφιακά pin 11, 12, και 13 για το Uno και 50, 51, και 52 στα Mega. Και στις δύο κάρτες, το pin 10 χρησιμοποιείται για να επιλέξei το HDG204 και το pin 4 για την κάρτα SD. Αυτές οι ακίδες δεν μπορούν να χρησιμοποιηθούν για γενική I / O. Το ψηφιακό pin7 χρησιμοποιείται ως ακίδα άμεσης σύνδεσης μεταξύ του WiFi shield και του Arduino, και δεν πρέπει να χρησιμοποιείται. Εικ.3.5 Arduino wi-fi 29

41 Εικ.3.6 adafruit cc3000 Wi-Fi 30

42 ΚΕΦΑΛΑΙΟ 4. Σχεδίαση και Υλοποίηση διάταξης Σ αυτό το κεφάλαιο θα περιγράψουμε τη διάταξη που έχουμε υλοποιήσει η οποία περιλαμβάνει τρία(3) κυκλώματα (συνδεσμολογίες). Αποτελείται από το ηλεκτρικό κύκλωμα: Του αισθητήρα μέτρησης υγρασίας-θερμοκρασίας DHT11 Του αισθητήρα μέτρησης εναλλασσόμενου ρεύματος CT-100 Της πλακέτας adafruit wi-fi. Η υλοποίηση των κυκλωμάτων πραγματοποιήθηκε στην πλακέτα ελέγχου τύπου Breadboard. Η πλακέτα Breadboard ουσιαστικά αποτελεί επέκταση της πλακέτας arduino εξυπηρετώντας την υλοποίηση των συνδεσμολογιών καθώς και την τροφοδοσία των αισθητήρων με την σωστή τάση λειτουργίας (Vcc=5V). Η Breadboard μας διευκολύνει να δοκιμάσουμε το κύκλωμα, χωρίς την χρήση κόλλησης. Προσφέρει γρήγορη κι αξιόπιστη λύση για την δημιουργία πρωτοτύπων κυκλωμάτων. Η πλακέτα breadboard τροποφοτείται με την απαιτούμενη τάση των 5V (Vcc, Gnd) από τις αντίστοιχες ακίδες του arduino 5V και Gnd και αντίστοιχα παραλληλίζει την τάση ώστε να τροφοδοτούνται οι δύο αισθητήρες μας. Σ αυτό το σημείο πρέπει να τονίσουμε ότι οι ασθητήρες που επιλέξαμε έπρεπε να λειτουργούν στην αντίστοιχη τάση όπου δουλεύει και ο arduino. Στην εικόνα 4.1 παρουσιάζεται το κύκλωμα που υλοποιήσαμε με τη βοήθεια του λογισμικού Fritzing [7]. Το ζευγάρι των καλωδίων κόκκινο-πράσινο είναι η τροφοδοσία των 5V και Gnd αντίστοιχα. 31

43 4.1 Hardware (Υλικό) Κύκλωμα αισθητήρα DHT Το κύκλωμα του αισθητήρα μέτρησης υγρασίας-θερμοκρασίας αποτελείται από: Παροχή τάσης από Breadboard (5V DC) που συνδέεται στο pin 1 Αντίσταση 4,7KΩ που συνδέει pin1 και pin2 (Βλ. θεωρία) Σύνδεση του pin2 με την ψηφιακή είσοδο digital7 του arduino Κενό pin3 Γείωση Gnd που συνδέεται στο pin Κύκλωμα αισθητήρα CT-100 Το κύκλωμά μας αποτελείται από δυο βασικά μέρη : 1. Τον αισθητήρας CT και την αντίσταση φορτίου(33ω) 2. Τον διαιρέτη τάσης R1 & R2(R1= R2=10KΩ ) Επίσης χρησιμοποιείται ένας πυκνωτής 10uF για να παρακάμπτεται το εναλλασόμενο ρεύμα και να μη διαρρέει την αντίσταση. Η διάταξή μας παρουσιάζεται σχηματικά παρακάτω. Το κύκλωμα του αισθητήρα μέτρησης του εναλλασσόμενου ρεύματος σύμφωνα με την εικ. 4.1: Εικ.4.1 Διάγραμμα συνδεσμολογίας και λειτουργίας CT-Sensor [6] 32

44 4.1.3 Κύκλωμα adafruit wi-fi Η πλακέτα adafruit wi-fi συνδέεται πολύ εύκολα με αυτή του arduino, ουσιαστικά είναι plug and play.αυτό γίνεται με τη βοήθεια ακίδων προέκτασης όπως φαίνεται στη φωτογραφία παρακάτω: Εικ. 4.2 Ακίδες προέκτασης Σπάμε κομμάτια των 6,8 και των 10 ακίδων και τα τοποθετούμε στις θυληκές υποδοχές της πλακέτας του arduino. 33

45 Εικ. 4.3 Ακίδες προέκτασης Στη συνέχεια θυληκώνουμε τη πλακέτα του adafruit Εικ. 4.4 Σύνδεση arduino-adafruit Έπειτα με ένα κολλητήρι κολλάμε της ακίδες για να υπάρχει καλή συνέχεια στο κύκλωμα. 34

46 Εικ. 4.5 Κόλληση ακίδων πρόεκτασης με pin adafruit Η πλακέτα μας τώρα είναι έτοιμη και με ενσωματωμένη τη κάρτα wifi.έτσι μπορούμε να χρησιμοποιήσουμε όποια ακίδα θέλουμε για την υπόλοιπη συνδεσμολογία. Η συγκεκριμένη πλακέτα CC300 χρησιμοποιεί για τη λειτουργία της τα παρακάτω pin SCK - #13 MISO #12 MOSI #11 CS for CC3000 #10 VBAT_EN #5 CS for SD Card #4 IRQ #3 [7] 35

47 4.1.4 Σχέδιο πειραματικής διάταξης Εικ. 4.1 Σύνδεση Arduino-Breadboard Μονογραμμικό σχέδιο διάταξης Παρουσιάζεται το μονογραμμικό σχέδιο όπου φαίνοται οι συνδέσεις των στοιχείων που χρησιμοποιήσαμε καθώς και οι αντίστοιχες τιμές τους. 36

48 Εικ. 4.2 Μονογραμμικό Σχέδιο Υλοποιημένη πειραματική διάταξη Αρχικώς στήσαμε την πειραματική διάταξη χρησιμοποιώντας τον arduino και τα δύο κυκλώματα των αισθητήρων ώστε να μπορέσουμε να συλλέξουμε τα δεδομένα μας και να ελέγξουμε τη σωστή λειτουργία του. 37

49 Εικ. 4.3 Πειραματική διάταξη (arduino + breadboard) Υλοποιημένη πειραματική διάταξη με χρήση wi-fi Στη συνέχεια φαίνεται το κύκλωμά μας όπως έχουμε προσαρμόσει στην πλακέτα του arduino την πλακέτα επέκτασης adafruit wi-fi cc3000 ώστε να μπορέσουμε να αποστείλουμε απομακρυσμένα τα παραχθέντα δεδομένα κάνοντας χρήση ευρυζωνικών δικτύων. 38

50 Εικ. 4.4 Πειραματική διάταξη (arduino+ adafruit wi-fi + breadboard) 4.2 Software (Λογισμικό) Παρουσιάζουμε βασικά μέρη του προγραμματισμού που ακολουθήσαμε για να μπορέσουμε να συλλέξουμε τα δεδομένα και να γίνει η ασύρματη αποστολή τους. Αναπτύχθηκε ένας βασικός κώδικας που μεταγλωτίστηκε και φορτώθηκε από το λογισμικό του arduino στην πλακέτα του arduino. Ο κώδικας αυτός φορτώνει τις αντίστοιχες βιβλιοθήκες των εξαρτημάτων που αποτελούν το κύκλωμα, ορίζει τις μεταβλητές, ορίζει τα pins εισόδου και σύμφωνα με τα εισερχόμενα δεδομένα που λαμβάνει από τα αντίστοιχα pins εισόδου(ψηφιακά, αναλογικά) υπολογίζει και μας εμφανίζει τα τελικά πραγματικά μεγέθη μας DHT 11 #include "DHT.h" #define DHTPIN 7 int temperature; int humidity; void loop() 39

51 int Temperature = (uint8_t)dht.readtemperature(); int Humidity = (uint8_t)dht.readhumidity(); while (client.connected ()) if (client.available()) char c = client.read(); if (c == '\n' && currentlineisblank) client.println("content-type: application/json"); client.print("\"temperature\" : "); client.print(temperature); client.print("\"humidity\" : "); client.print(humidity); CT-100 Sensor #include "EmonLib.h" float current; float power; // Start listening for connections httpserver.begin(); Serial.println(F("Listening for connections...")); emon1.current(1, 60.61); dht.begin(); void loop() double Irms = emon1.calcirms(1480); float Current=Irms; float Power=Irms*230; client.print("\"current\" : "); client.print(current); client.print("\"power\" : "); client.print(power); 40

52 4.2.3 Adafruit wi-fi #include <Adafruit_CC3000.h> // These are the interrupt and control pins #define ADAFRUIT_CC3000_IRQ 3 #define ADAFRUIT_CC3000_VBAT 5 #define ADAFRUIT_CC3000_CS 10 #define WLAN_SSID "OTE CONNX" // cannot be longer than 32 characters! #define WLAN_PASS " " #define LISTEN_PORT 8080 // What TCP port to listen on for connections. // The HTTP protocol uses port 80 by default. 41

53 ΚΕΦΑΛΑΙΟ 5. Πληροφορίες για το.net Framework 5.1 Σχετικά με το.net Framework EEWEBITE Το.ΝΕΤ Framework [9] είναι ένα πλαίσιο λογισμικού (software framework) που προορίζεται για την πλατφόρμα των Windows. Αποτελείται από μια μεγάλη βιβλιοθήκη κλάσεων και υποστηρίζει μια πλειάδα γλωσσών προγραμματισμού με τη δυνατότητα η μια να μπορεί να χρησιμοποιηθεί από την άλλη. Τα προγράμματα που γράφονται για το.νετ Framework εκτελούνται σε ένα περιβάλλον εκτέλεσης γνωστό ως Common Language Runtime (CLR)[10], ενός ειδικού λογισμικού, σχεδιασμένου να υποστηρίζει την εκτέλεση προγραμμάτων και την απρόσκοπτη συνεργασία με το λειτουργικό σύστημα. Το CLR περιέχει μια εικονική μηχανή (virtual machine) που διαχειρίζεται την εκτέλεση ενός προγράμματος και παρέχει μια σειρά σημαντικών υπηρεσιών όπως ασφάλεια, διαχείριση μνήμης και διαχείριση εξαιρέσεων. Τα προγράμματα που γράφονται για το.νετ χρησιμοποιούν τη βιβλιοθήκη κλάσεων (class library) του.νετ, η οποία δίνει πρόσβαση στο περιβάλλον εκτέλεσής του (runtime environment). Βασικές λειτουργίες όπως οι γραφικές διεπαφές χρηστών (Graphical User Interfaces GUIs), η επικοινωνία με βάσεις δεδομένων, η κρυπτογραφία, η ανάπτυξη web εφαρμογών και οι δικτυακές επικοινωνίες παρέχονται μέσω του Application Programming Interface(API) του.net και μπορούν να συνδυαστούν με κώδικα από τους προγραμματιστές για τη δημιουργία ολοκληρωμένων εφαρμογών. Όσο ένα πρόγραμμα περιορίζεται στη χρήση της βιβλιοθήκης κλάσεων του.net, μπορεί να τρέχει οπουδήποτε υπάρχει εγκατεστημένο το περιβάλλον εκτέλεσης του.net. Η γλώσσα C# είναι μια από τις γλώσσες που υποστηρίζει το.net. Ο μεταγλωττιστής της C# στοχεύει ειδικά στο.net κάτι που σημαίνει ότι τα προγράμματα γραμμένα σε C# θα τρέχουν πάντα στο.νετ Framework. Αυτό έχει δυο σημαντικές συνέπειες για τη γλώσσα: Η αρχιτεκτονική της και οι μεθοδολογίες της αντικατοπτρίζουν τη δομή του.net. 42

54 Σε πολλές περιπτώσεις, ειδικά χαρακτηριστικά της γλώσσας εξαρτώνται στην πραγματικότητα από τα χαρακτηριστικά του.net ή τις βασικές κλάσεις του.net. Εξαιτίας αυτής της εξάρτησης, είναι σημαντικό κανείς να κατανοήσει την αρχιτεκτονική και τη μεθοδολογία του.νετ πριν προχωρήσει στον προγραμματισμό με τη C#. 5.2 Λίγη Ιστορία Για να εκτιμήσει κανείς τη σημασία του.net framework, είναι χρήσιμο να ταξιδέψει στο χρόνο, περίπου 18 χρόνια πριν και να θυμηθεί τη φύση των τεχνολογιών που υποστήριζαν τα Windows. Παρόλο που μπορεί να φαίνεται το ίδιο, όλα τα λειτουργικά συστήματα από τα Windows 3.1 (εκδόθηκαν το 1992) μέχρι τα Windows 7 και Windows Server 2008 R2 έχουν το ίδιο Windows API στον πυρήνα τους. Με την εμφάνιση όμως των νέων εκδόσεων των Windows, έχει προστεθεί νέα λειτουργικότητα στο API, σαν φυσική απόρροια της εξέλιξης του API και όχι της αντικατάστασής του από ένα νέο. Το ίδιο μπορεί κανείς να πει για τις περισσότερες από τις τεχνολογίες και frameworks που χρησιμοποιούνται για την ανάπτυξη εφαρμογών σε Windows.Για παράδειγμα το πρότυπο COM (Component Object Model) ξεκίνησε σαν OLE (Object Linking and Embedding) και αρχικά αποτελούσε το μέσο με το οποίο διαφορετικοί τύποι εγγράφων του Office μπορούσαν να συνδεθούν, ώστε για παράδειγμα να είναι εφικτό να προστεθεί ένας μικρός πίνακας Excel σε ένα έγγραφο Word. Από τότε το COM εξελίχθηκε στο DCOM (Distributed COM) και τέλος στο πρότυπο COM+, μια πολύπλοκη τεχνολογία που σχημάτισε τη βάση της επικοινωνίας σχεδόν όλων των components, όπως επίσης και την υλοποίηση των δοσοληψιών, των υπηρεσιών μηνυμάτων και του pooling αντικειμένων. Η Microsoft επέλεξε αυτή την εξελικτική προσέγγιση στο λογισμικό για τον προφανή λόγο της διατήρησης της συμβατότητας με τις προηγούμενες εκδόσεις (backward compatibility).μέσα στα χρόνια, η μεγάλη βάση του λογισμικού από άλλους παρόχους που γράφτηκε για Windows, σίγουρα δεν θα γνώριζε την ίδια επιτυχία αν κάθε φορά που η Microsoft εισήγαγε μια νέα τεχνολογία, έσπαγε την υπάρχουσα υποδομή προγραμματισμού! Ήταν ξεκάθαρο ότι κάτι έπρεπε να αλλάξει. Η Microsoft δεν μπορούσε να επεκτείνει για πάντα τα ίδια εργαλεία λογισμικού και 43

55 τις ίδιες γλώσσες, κάνοντάς τα πιο πολύπλοκα για να υποστηρίζουν το νέο υλικό (hardware) και ταυτόχρονα να είναι συμβατά με τις προηγούμενες εκδόσεις. Κάποτε έρχεται ένα σημείο που πρέπει να γίνει επανεκκίνηση στη θεώρηση της ανάπτυξης λογισμικού αν είναι επιθυμητά ένα απλό αλλά ταυτόχρονα μοντέρνο σύνολο γλωσσών προγραμματισμού, περιβαλλόντων και εργαλείων ανάπτυξης λογισμικού που διευκολύνει τους προγραμματιστές στην ανάπτυξη λογισμικού. Σε αυτό το σημείο έγινε ο ερχομός της C# και του.net στην πρώτη τους ενσάρκωση. Με λίγες λέξεις το.net είναι ένα σύστημα λογισμικού για την υποστήριξη του προγραμματισμού στην πλατφόρμα των Windows. Μαζί με το.net Framework, η C# είναι μια γλώσσα που σχεδιάστηκε από την αρχή για να το υποστηρίξει και να εκμεταλλευτεί όλη την πρόοδο πάνω στα περιβάλλοντα προγραμματισμού και την θεώρηση του αντικειμενοστρεφούς προγραμματισμού που είχε συντελεστεί τα τελευταία 25 χρόνια. Πριν συνεχίσουμε πρέπει να ξεκαθαρίσουμε ότι η συμβατότητα με τα παλιότερα συστήματα δεν χάθηκε κατά τη διαδικασία αυτή. Τα υπάρχοντα προγράμματα θα συνεχίσουν να δουλεύουν και το.net σχεδιάστηκε με τη δυνατότητα να δουλεύει με το υπάρχον λογισμικό. Τώρα, η επικοινωνία μεταξύ διαφόρων components σε Windows γίνεται σχεδόν εξολοκλήρου σε COM. Λαμβάνοντας αυτό υπόψη, το.net Framework έχει τη δυνατότητα να παρέχει wrappers για τα υπάρχοντα COM components έτσι ώστε τα.net components να μπορούν να επικοινωνούν με αυτά. Ωστόσο, δεν είναι απαραίτητο να γνωρίζει κανείς C# για να προγραμματίσει στο.net. Η Microsoft επέκτεινε τη C++ και άλλαξε σημαντικά τη Visual Basic για να την μετατρέψει σε μια πιο ισχυρή γλώσσα, έτσι ώστε να καταστήσει δυνατή τη χρήση τους για το.net. Αυτές οι γλώσσες όμως, φέρουν το βάρος της εξέλιξης μέσα στα τελευταία χρόνια αντί να έχουν γραφτεί από την αρχή σύμφωνα με τις σύγχρονες απαιτήσεις. 5.3 Χαρακτηριστικά του.net Framework Πριν επεκταθούμε σε μια πιο αναλυτική παρουσίαση της δομής της πλατφόρμας.νετ και των τεχνολογιών που την περιβάλλουν είναι σκόπιμο να παρουσιάσουμε τα σημαντικότερα χαρακτηριστικά και πλεονεκτήματά της: Υποστήριξη πολλαπλών γλωσσών. 44

56 Παρόλο που το COM υποστήριζε πολλαπλές γλώσσες (κυρίως τη C++ και τη Visual Basic), οι δυνατότητες επικοινωνίας μεταξύ των διαφόρων γλωσσών περιορίζονταν στην υλοποίηση διασυνδέσεων (interfaces). Στο.ΝΕΤ, η διαλειτουργικότητα μεταξύ των γλωσσών επιτυγχάνεται μέσω της διαγλωσσικής κληρονομικότητας. Μαζί με ένα ενοποιημένο σύστημα τύπων, η συνένωση κώδικα γραμμένου σε διαφορετικές γλώσσες είναι πλέον εύκολη υπόθεση. Αυτό διευκολύνει και άλλα προγραμματιστικά πρότυπα όπως το συναρτησιακό της F#. Ανάπτυξη βασισμένη σε components. Η τέχνη της δημιουργίας ανεξάρτητων κομματιών λογισμικού που περιέχουν βιβλιοθήκες κλάσεων και διαμοιράσιμα τμήματα λειτουργικότητας μιας εφαρμογής έχει γίνει πολύ πιο εύκολη από παλιότερα. Για παράδειγμα, δεν χρειάζεται υλοποίηση διεπαφών COM, όπως το IUnknown. Η διαμοιράσιμη μονάδα κώδικα στο.net βασίζεται στην έννοια του assembly, το οποίο μεταφέρει πληροφορίες που απαιτούνται για τη χρήση της όπως η έκδοση της. Μεταφερσιμότητα. Η μεταφερσιμότητα (portability) επιτυγχάνεται μέσω της εικονικής μηχανής στο CLR. H εικονική μηχανή αυτή είναι η προδιαγραφή μιας αφηρημένης εικονικής μηχανής για την οποία κώδικας γραμμένος σε οποιαδήποτε από τις.νετ γλώσσες μεταγλωττίζεται σε μια ενδιάμεση γλώσσα γνωστή ως Common Intermediate Language (CIL) και περιέχεται σε ένα assembly. Ένα assembly είναι είτε ένα εκτελέσιμο αρχείο (exe) είτε ένα dll. Η μεταγλώττιση σε αυτήν την ενδιάμεση γλώσσα είναι που εξασφαλίζει και την ανεξαρτησία από την πλατφόρμα, η οποία ωστόσο μένει μόνο στη θεωρία, αφού η μοναδική πλήρης υλοποίηση του.net είναι διαθέσιμη μόνο για την πλατφόρμα των Windows. Όμως είναι διαθέσιμη μια μερική υλοποίηση ανοιχτού κώδικα με το όνομα Mono. Απλή εγκατάσταση εφαρμογών. Αντίθετα με τα components που βασίζονται στο COM, δεν χρειάζεται καμία καταχώρηση στο registry του συστήματος για την εγκατάσταση των assemblies καθώς μια απλή αντιγραφή αρκεί για τη χρήση τους. Επιπρόσθετα τα πιθανά προβλήματα της χρήσης των Dynamic Link Libraries (DLLs) γνωστά και ως DLL Hell απαλείφθηκαν με την υποστήριξη της ύπαρξης πολλαπλών εκδόσεων του ίδιου component δίπλα δίπλα. Το ίδιο το.net Framework είναι ένα καλό 45

57 παράδειγμα αυτής της δυνατότητας, αφού είναι δυνατόν να υπάρχουν πολλαπλές εκδόσεις του framework εγκατεστημένες στο ίδιο μηχάνημα. Επικοινωνία με υπάρχων κώδικα. Παρόλο που η πλατφόρμα.νετ προορίζεται να είναι ένα υποκατάστατο των παλαιότερων τεχνολογιών, υποστηρίζει τη χρήση κομματιών λογισμικού που έχουν αναπτυχθεί σε παλιότερες τεχνολογίες όπως της COM και παρέχει πρόσβαση σε λειτουργίες χαμηλού επιπέδου του λειτουργικού συστήματος μέσω του μηχανισμού P/Invoke. Αξιοπιστία. To.NET είναι σχεδιασμένο για τη δημιουργία λογισμικού υψηλής αξιοπιστίας (robustness).πραγματοποιεί εκτεταμένους ελέγχους κατά τη μεταγλώττιση αλλά και κατά την εκτέλεση των προγραμμάτων. Τα χαρακτηριστικά του.νετ από μόνα τους ωθούν τους προγραμματιστές στην απόκτηση αξιόπιστων προγραμματιστικών συνηθειών. Το μοντέλο διαχείρισης της μνήμης είναι απλό: η δέσμευση μνήμης γίνεται με μια λέξη (new), δεν υπάρχουν δείκτες προς θέσεις μνήμης σαν τύποι δεδομένων, ούτε αριθμητική δεικτών ενώ η αποδέσμευση μνήμης γίνεται αυτόματα μέσω του μηχανισμού garbage collection. Αυτό το απλό μοντέλο διαχείρισης μνήμης απαλείφει ολόκληρες κατηγορίες λαθών που απασχολούν τους προγραμματιστές σε C και C++. Η ανάπτυξη προγραμμάτων γίνεται με την πεποίθηση ότι αρκετά λάθη θα εντοπιστούν από το σύστημα πολύ πριν την ολοκλήρωσή της. Αυτόματη διαχείριση μνήμης. Άλλο ένα σημαντικό χαρακτηριστικό του.net Framework είναι η δυνατότητα αυτόματης διαχείρισης της μνήμης μέσω του Garbage Collector. Ιστορικά η διαχείριση της μνήμης ήταν από τις δυσκολότερες εργασίες που είχε να κάνει ένας προγραμματιστής. Οι παλαιότερες προσεγγίσεις στη διαχείριση μνήμης ήταν είτε χαμηλού επιπέδου (όπως η malloc/free στη C και η new/delete στη C++), προκαλώντας διάφορα bugs, είτε αρκετά πολύπλοκη (όπως στην περίπτωση του COM). Ένας από τους στόχους του.νετ και του CLR πιο συγκεκριμένα ήταν να απαλείψει από 40 τους προγραμματιστές την ανάγκη διαχείρισης της μνήμης. Το CLR με το μηχανισμό Garbage Collector διαχειρίζεται τη μνήμη ερευνώντας πότε μπορεί να ελευθερωθεί με ασφάλεια μνήμη που δεν χρειάζεται άλλο σε ένα 46

58 πρόγραμμα. Η μνήμη δεσμεύεται με την αρχικοποίηση των διαφόρων τύπων (αντικειμένων) από ένα διαθέσιμο τμήμα της μνήμης που διαχειρίζεται το CLR γνωστό ως heap (σωρός). Όσο υπάρχει κάποια άμεση ή έμμεση (μέσω του γράφου των αντικειμένων) αναφορά προς ένα αντικείμενο, τότε αυτό θεωρείται πως χρησιμοποιείται. Στην αντίθετη περίπτωση, όταν δεν μπορεί να αναφερθεί από κάποιο άλλο τμήμα του κώδικα τότε είναι διαθέσιμο για καταστροφή. Ο garbage collector τρέχει ανά τακτά χρονικά διαστήματα σε ένα ξεχωριστό thread, εντοπίζει ποια αντικείμενα είναι έτοιμα προς καταστροφή και αποδεσμεύει τη μνήμη που αυτά χρησιμοποιούσαν. Ασφάλεια. Το.ΝΕΤ είναι σχεδιασμένο να λειτουργεί σε κατανεμημένα περιβάλλοντα, η ασφάλεια (security) των οποίων είναι υψίστης σημασίας. Με μέτρα που είναι ενσωματωμένα στις γλώσσες αλλά και κατά την εκτέλεση των προγραμμάτων, το.νετ επιτρέπει τη δημιουργία προγραμμάτων που δεν μπορούν να προσβληθούν από έξω. Σε δικτυακά περιβάλλοντα οι εφαρμογές.νετ είναι ασφαλείς από εισβολές μη εξουσιοδοτημένου κώδικα που επιχειρεί να δράσει στο παρασκήνιο και να εγκαταστήσει κακόβουλο λογισμικό ή να εισβάλει σε συστήματα αρχείων. Το περιβάλλον εκτέλεσης του.νετ έχει ενσωματωμένο έναν μηχανισμό ασφάλειας με το όνομα Code Access Security (CAS) που απομονώνει τον κώδικα ανάλογα με την προέλευσή του, τον δημιουργό του ή άλλες πολιτικές. Το μοντέλο ασφάλειας συμβαδίζει με τους μηχανισμούς ασφάλειας που παρέχει το λειτουργικό σύστημα όπως οι Access Control Lists και τα Windows security tokens. Απόδοση. Η ενδιάμεση γλώσσα στην οποία μεταγλωττίζονται τα προγράμματα στο.νετ, μεταγλωττίζεται πάντα με τη μέθοδο Just in Time (JIT). Ο μεταγλωττιστής JIT μεταγλωττίζει κάθε τμήμα του κώδικα στην ενδιάμεση γλώσσα όταν αυτό καλείται (just in time). Όταν έχει ήδη μεταγλωττιστεί κάποιο τμήμα κώδικα, το αποτέλεσμα αποθηκεύεται μέχρι η εφαρμογή να τερματίσει έτσι ώστε να μην χρειάζεται να μεταγλωττιστεί ξανά όταν ζητηθεί το συγκεκριμένο τμήμα. Η διαδικασία αυτή είναι αποδοτικότερη σε σύγκριση με την απευθείας μεταγλώττιση ολόκληρου του κώδικα, γιατί υπάρχει περίπτωση μεγάλα τμήματα κώδικα να μην 47

59 εκτελεστούν ποτέ στην πραγματικότητα. Με τον μεταγλωττιστή JIT τέτοιος κώδικας δεν θα μεταγλωττίζονταν ποτέ. Υποστήριξη με επαγγελματικά εργαλεία. Το.ΝΕΤ Framework συνοδεύεται από ένα σύνολο εργαλείων για την υποστήριξη της ανάπτυξης λογισμικού σε αυτό, όπως το σύστημα σχεδιασμού, τα frameworks για unit testing, την πλατφόρμα για build MSBuild και το σύστημα debugging, μέσα από το Visual Studio Το Visual Studio είναιένααπότακαλύτερα Integrated Development Environments (IDEs). Χρησιμοποιείται για την ανάπτυξη όλων των ειδών εφαρμογών που μπορούν να αναπτυχθούν στο.νετ: από console εφαρμογές και εφαρμογές με γραφικές διεπαφές (GUIs) μέχρι web εφαρμογές και web services σε managed αλλά και εγγενή κώδικα. Οι Premium και Ultimate εκδόσεις του Visual Studio στοχεύουν στην ομαδική ανάπτυξη μαζί με τον Team Foundation Server (TFS) που χρησιμοποιείται για την παρακολούθηση ενός έργου.net, τη διαχείριση του κώδικα, τη διαχείριση των αναφορών αλλά και το διαμοιρασμό κώδικα, τεκμηριώσεων ή άλλων εγγράφων. 5.4 Αρχιτεκτονική του.net Framework Ένας προγραμματιστής στην πλατφόρμα Windows έχει πρωταρχικά δυο μονοπάτια που μπορεί να ακολουθήσει κατά την ανάπτυξη εφαρμογών. Το πρώτο είναι η ανάπτυξη εφαρμογών μη διαχειρισμένου κώδικα (unmanaged code) και περιλαμβάνει τον προγραμματισμό κατευθείαν στο λειτουργικό σύστημα, χρησιμοποιώντας το Windows Application Programming Interface (Windows API) συνήθως με τη γλώσσα C++. Στόχος του Windows API είναι να δώσει τη δυνατότητα στους προγραμματιστές να αναπτύξουν προγράμματα με το λειτουργικό σύστημα για να αποφύγουν το γράψιμο κώδικα για τη δημιουργία components των Windows όπως φόρμες, κουμπιά μενού και άλλα. Με το Windows API ένας προγραμματιστής καλεί τις συναρτήσεις και αφήνει το λειτουργικό σύστημα να δημιουργήσει αυτά τα components.ο κύριος λόγος χρήσης του Windows API είναι η απουσία υποστήριξης διαφόρων λειτουργιών από τη βασική έκδοση της χρησιμοποιούμενης γλώσσας προγραμματισμού. Η χρήση μιας λειτουργίας του Windows API από μια γλώσσα γίνεται με την κλήση της κατάλληλης συνάρτησης. 48

60 Ωστόσο, οι κλήσεις τέτοιων συναρτήσεων είναι συνήθως μια πολύπλοκη διαδικασία που μπορεί να προκαλέσει απρόβλεπτες συνέπειες αν δεν γίνει σωστά. Η πολυπλοκότητα αυτή είναι ένας από τους λόγους που οδήγησε στη δημιουργία του δεύτερου μονοπατιού στην ανάπτυξη εφαρμογών, δηλαδή την ανάπτυξη εφαρμογών διαχειρισμένου κώδικα. Διαχειρισμένος κώδικας (managed code) είναι ουσιαστικά κώδικας που τρέχει στη πλατφόρμα.net. Το.NET Framework. αποτελείται από ένα περιβάλλον εκτέλεσης το οποίο διαχειρίζεται την εκτέλεση του κώδικα μέσω κανόνων ασφαλείας, αυτόματης διαχείρισης της μνήμης και αυστηρότητας τύπων, μειώνοντας έτσι σε μεγάλο βαθμό την πιθανότητα πρόκλησης λαθών από αυτούς τους παράγοντες. Η πλατφόρμα αποτελείται από διάφορα μέρη καθένα από τα οποία παρέχει ένα συγκεκριμένο κομμάτι των δυνατοτήτων της. Αυτά μπορεί να είναι αυτόνομα προγράμματα, βιβλιοθήκες ή βοηθητικά αρχεία.ακολουθεί μια απεικόνιση της σχέσης των μερών του.net με τις εφαρμογές μέσα από τα δύο μονοπάτια ανάπτυξης που αναφέραμε, αλλά και μια αναλυτική περιγραφή των κυριότερων μερών του.net : Εικ. 5.1 Απεικόνηση μερών του.νετ 49

61 5.4.1 Common Language Runtime (CLR) To Common Language Runtime (CLR) είναι μια υλοποίηση του προτύπου Common Language Infrastructure (CLI) από τη Microsoft. Το CLI προσδιορίζει την υποδομή εκτέλεσης που απαιτείται για τη χρήση managed κώδικα, έτσι ώστε διαφορετικές βιβλιοθήκες και γλώσσες να συνεργάζονται απρόσκοπτα. Υπάρχουν και άλλες υλοποιήσεις του CLI από τρίτους παρόχους όπως το Mono και το DotGNU Portable.NET αλλά και της Microsoft με το όνομα Shared Source CLI (SSCLI) γνωστό και ως Rotor, το οποίο τρέχει σε πλατφόρμες όπως το FreeBSD. Αυτό θεωρητικά σημαίνει ότι κώδικας που στοχεύει στο.net όχι μόνο επιτρέπει τη διαλειτουργικότητα μεταξύ διαφορετικών γλωσσών προγραμματισμού αλλά και την εκτέλεση σε διαφορετικές πλατφόρμες. Η προδιαγραφή CLI και κατά συνέπεια το CLR αποτελείται από τρία κύρια στοιχεία : το Virtual Execution System (VES) το Common Type System (CTS) το Common Language Specification (CLS). Η VES είναι η καρδιά του CLR και είναι αυτή που εξασφαλίζει τη μεταφερσιμότητα των προγραμμάτων σε.net. Η VES αντιλαμβάνεται το format της ενδιάμεσης γλώσσας Common Intermediate Language (CIL) και τα μεταδεδομένα που περιγράφουν τον κώδικα σε αυτήν την ενδιάμεση μορφή. Ο κώδικας σε CIL μορφή είναι ίδιος ανεξάρτητα από το υλικό ή τη πλατφόρμα όπου εκτελείται. Η VES είναι ουσιαστικά μια εικονική μηχανή διεργασίας (process virtual machine). Τέτοιες μηχανές τρέχουν σαν κανονική εφαρμογή μέσα στο λειτουργικό σύστημα στο οποίο φιλοξενούνται και υποστηρίζονται από μια διεργασία. Η λειτουργία τους ξεκινά με την έναρξη μιας διεργασίας και παύει με το 43 τερματισμό της. Ο σκοπός των εικονικών μηχανών είναι να παρέχουν ένα περιβάλλον εκτέλεσης προγραμμάτων, ανεξάρτητο συνήθως από την πλατφόρμα που τρέχουν, η οποία κρύβει τις λεπτομέρειες του υποκείμενου υλικού ή λειτουργικού συστήματος, επιτρέποντας έτσι στα προγράμματα να τρέχουν με τον ίδιο τρόπο σε κάθε πλατφόρμα. Δεν πρέπει να συγχέονται με τις εικονικές μηχανές συστήματος (system virtual machines) που παρέχουν μια πλήρη πλατφόρμα για την εκτέλεση ενός ολόκληρου λειτουργικού συστήματος όπως η VirtualBox, VMWare ή η Hyper V. Για να εκτελεστεί ο κώδικας μιας γλώσσας στο CLR, πρέπει πρώτα να 50

62 μεταγλωττιστεί σε μια μορφή η οποία μπορεί να αναγνωριστεί κατά την εκτέλεση. Αυτή η μορφή είναι η Common Intermediate Language (CIL συχνά και σκέτο IL). Ο κώδικας που εκτελείται στο CLR είναι γνωστός ως managed κώδικας, σε αντίθεση με τον εγγενή κώδικα (native code) που εκτελείται κατευθείαν στον επεξεργαστή της μηχανής χωρίς επιπρόσθετη υποδομή εκτέλεσης. Εκτός από τις εντολές σε IL για την εκτέλεση μιας εφαρμογής το CLR χρειάζεται μεταδεδομένα (metadata) που περιγράφουν τη δομή και την οργάνωση των τύπων δεδομένων. Η χρήση των μεταδεδομένων απαλείφει την ανάγκη ύπαρξης header files και βοηθά διάφορα εργαλεία να επιθεωρήσουν τους τύπους. Ένα τέτοιο παράδειγμα είναι το Intellisense του Visual Studio. Η ενδιάμεση γλώσσα CIL περιέχεται μέσα στα assemblies τα οποία, εκτός από το ρόλο τους στην εκτέλεση ενός προγράμματος, αποτελούν και τις βασικές μονάδες εγκατάστασης στο.net. Εξαιτίας της αυτοπεριγραφικής φύσης τους που παρέχεται από τα μεταδεδομένα, τα assemblies δεν χρειάζονται την βοήθεια πολύπλοκων οδηγών εγκατάστασης (installers) για την εγγραφή τους στο registry, αφού μια απλή αντιγραφή τους αρκεί, ενώ είναι δυνατή η ύπαρξη πολλαπλών εκδόσεων των assemblies αφού ενσωματώνουν τον αριθμό έκδοσής τους. Ένα από τα σημαντικότερα κομμάτια του CLR είναι το CTS γιατί εξασφαλίζει τη διαλειτουργικότητα μεταξύ των γλωσσών. Το CTS ορίζει τους προκαθορισμένους τύπους δεδομένων που είναι διαθέσιμες στην ενδιάμεση γλώσσα έτσι ώστε όλες οι γλώσσες του.νετ να παράγουν μεταγλωττισμένο κώδικα που βασίζεται σε αυτούς τους τύπους. Για παράδειγμα ο τύπος δεδομένων Integer της Visual Basic 2010 είναι στην πραγματικότητα ένας 32 bit προσημασμένος ακέραιος, ο οποίος αντιστοιχεί στην ενδιάμεση γλώσσα στον τύπο Int32. Επειδή ο μεταγλωττιστής της C# κατανοεί τον τύπο αυτόν δεν υπάρχει κάποιο πρόβλημα στη χρήση από τη C# ενδιάμεσου κώδικα παραγμένο από VΒ. Το τελευταίο σημαντικότερο κομμάτι του CLR είναι το Common Language Specification (CLS). Το CLS είναι ένα σύνολο κανόνων στο οποίο βασίζονται όλες οι γλώσσες του.νετ για να εξασφαλίσουν ότι δεν τίθενται προς χρήση τύποι δεδομένων τους οποίους δεν μπορούν να χειριστούν μερικές γλώσσες. Αν τηρούνται όλοι οι κανόνες ένας τύπος ορίζεται ως συμβατός με το CLS (CLS-compliant) και κατά συνέπεια μπορεί να χρησιμοποιηθεί από όλες τις γλώσσες. Ένα παράδειγμα ενός κανόνα είναι ένας τύπος δεν μπορεί να έχει public μέλη που διακρίνονται μόνο από το αν οι χαρακτήρες τους είναι πεζοί ή κεφαλαίοι (π.χ. Bar και bar). Μερικές γλώσσες, όπως η Visual Basic, δεν κάνουν διάκριση σε 51

63 πεζούς και κεφαλαίους χαρακτήρες και δεν θα μπορούσαν να αντιληφθούν τη διαφορά Βιβλιοθήκες κλάσεων Τα περισσότερα σύγχρονα λειτουργικά συστήματα παρέχουν ένα σύνολο επαναχρη σιμοποιήσιμου κώδικα για τη διευκόλυνση της ανάπτυξης προγραμμάτων σε αυτά. Ο κώδικας αυτός παρέχεται συνήθως σαν ένα σύνολο βιβλιοθηκών που μπορούν να καλούν οι εφαρμογές κατά την εκτέλεσή τους, όπως οι Dynamic Link Libraries (dll) στα Windows και τα Dynamic Shared Objects (dso) στα συστήματα Unix. Τα DLLs αυτά, που βρίσκονται στο φάκελο Windows\System32, περιέχουν συναρτήσεις που 44 χρησιμοποιούνται για την απρόσκοπτη λειτουργία του λειτουργικού συστήματος και τη διατήρηση ενός συνεπούς παραθυρικού περιβάλλοντος. Αυτά τα αρχεία αποτελούν το Windows API.Προφανώς, το περιβάλλον εκτέλεσης συνετέλεσε αρκετά στην επιτυχία του.νετ αλλά πολύ σημαντικότερη για τους προγραμματιστές είναι η πλούσια βιβλιοθήκη κλάσεων (Class Library) η οποία δίνει πρόσβαση σε έναν πλούτο λειτουργικότητας που μπορεί να χρησιμοποιηθεί από τις εφαρμογές. Οι βιβλιοθήκες κλάσεων του.νετ υπηρετούν κυρίως δύο σκοπούς: α) όπως άλλες βιβλιοθήκες παρέχουν ένα καλά ορισμένο σύνολο κώδικα για την πραγματοποίηση τετριμμένων εργασιών, όπως η διατήρηση λιστών αντικειμένων ή η επεξεργασία συμβολοσειρών και β) παρέχουν μια αφηρημένη υλοποίηση για εργασίες που κανονικά θα απαιτούσαν πρόσβαση στο υλικό και το λειτουργικό σύστημα, όπως η χρήση του συστήματος αρχείων ή η πρόσβαση στο δίκτυο. Η βιβλιοθήκη κλάσεων του.net έχει μεγαλώσει αρκετά από την πρώτη έκδοσή του περίπου το Σήμερα, είναι σχεδόν αδύνατο να δοθεί πλήρης κάλυψη του framework ακόμα και σε ένα βιβλίο. Αντίθετα είναι πολύ πιο σημαντικό να κατανοηθεί η βασική δομή του έτσι ώστε η εξερεύνησή του να γίνεται εύκολα. Σπάνια κανείς θα έχει την πλήρη λύση ενός προβλήματος όταν ξεκινάει την ανάπτυξη μιας εφαρμογής, αλλά έχοντας κατανοήσει τη δομή του, οτιδήποτε στη βιβλιοθήκη μπορεί να μαθευτεί και να χρησιμοποιηθεί. Δεδομένων των τεραστίων διαστάσεων της βιβλιοθήκης, είναι απαραίτητη η οργάνωσή της για να διευκολυνθεί ο εντοπισμός των διαφόρων λειτουργιών της. Η προσέγγιση που ακολουθείται στο.νετ είναι η ιεραρχική οργάνωση των παρεχόμενων τύπων με τη χρήση των 52

64 namespaces, σε αντίθεση με το Win32 API όπου η οργάνωση είναι επίπεδη. Ακολουθούν ορισμένα γνωστά namespaces και η λειτουργικότητα που παρέχουν: Το System περιέχει τους primitive τύπους δεδομένων, όπως τους Int32, Double, String, Booleans. Το System.Collections παρέχει πρόσβαση σε χρήσιμους τύπους συλλογών δεδομένων όπως λίστες, σύνολα και λεξικά. Το System.Data που παρέχει λειτουργικότητα για την πρόσβαση σε online ή offline δεδομένα με κύριο στόχο τις βάσεις δεδομένων. Το System.IO που παρέχει τις απαραίτητες δομές για τη διαχείριση της Εισόδου/Εξόδου (input/output) με streams, αρχεία, pipes κ.α. Το System.Net που περιέχει κλάσεις για τη μετάδοση δεδομένων μέσω δι κτύου που υποστηρίζουν γνωστά πρωτόκολλα όπως το TCP, UDP και το HTTP. To System.Security που ενσωματώνει όλη τη λειτουργικότητα σχετική με την ασφάλεια μιας εφαρμογής, όπως permissions και κρυπτογραφία. Το System.Text που χρησιμεύει για τη διαχείριση κειμένου, υποστηρίζοντας διάφορες κωδικοποιήσεις αλλά και τη χρήση regular expressions. Το System.Windows που φιλοξενεί διάφορες τεχνολογίες για γραφικά περιβάλλοντα όπως τις Windows Forms και WPF. Το System.XML που υποστηρίζει την επεξεργασία εγγράφων XML Γλώσσες προγραμματισμού Οι γλώσσες προγραμματισμού είναι θεωρητικά εκτός της έννοιας μιας πλατφόρμας λογισμικού, ωστόσο η σημασία τους στο.net Framework είναι αρκετά μεγάλη. Το.NET υποστηρίζει τη χρήση πολλαπλών γλωσσών για τη δημιουργία εφαρμογών και βιβλιοθηκών κλάσεων. Από την πρώτη έκδοση του.νετ, τόσο η Microsoft όσο και τρίτοι πάροχοι προσέφεραν ένα πλούσιο σύνολο γλωσσών συμβατών με το περιβάλλον εκτέλεσης, το σύστημα τύπων και το CLS. Πάνω από 50 γλώσσες έχουν γραφτεί πάνω στο περιβάλλον εκτέλεσης. Οι κύριες γλώσσες που 53

65 παρέχονται από τη Microsoft σαν κομμάτι του.net Framework SDK ωστόσο είναι τέσσερις: Η Visual Basic.NET: Μια γλώσσα με την οποία εξοικειώνονται αμέσως όσοι έχουν γράψει κλασικά προγράμματα Visual Basic στο παρελθόν και που τώρα στοχεύει στο.net Framework με πλήρη υποστήριξη αντικειμενοστρέφειας. Η C#: Η γλώσσα που αναπτύχθηκε παράλληλα με τη δημιουργία του περιβάλλοντος εκτέλεσης του.νετ και την πρώτη έκδοση των βιβλιοθηκών κλάσεων. Βασίζεται στις αρχές του αντικειμενοστρεφούς προγραμματισμού και η φύση της είναι πολύ πρακτική. Η C++/CLI: αρχικά γνωστή ως Managed Extensions for C++, επιτρέπει την ε κτέλεση C++ κώδικα πάνω στο περιβάλλον εκτέλεσης του.net, παρέχοντας ένα πολύ καλό εργαλείο για την αντιμετώπιση διαλειτουργικών προβλημάτων. Η F#: η τελευταία προσθήκη στον πυρήνα γλωσσών του.νετ που στοχεύει στην επιστημονική υπολογιστική και συνδυάζει τις αρχές του συναρτησιακού προγραμματισμού με τον πλούτο της βιβλιοθήκης κλάσεων του.νετ. Εκτός των επίσημων γλωσσών της Microsoft, διάφορες άλλες γλώσσες έχουν εισαχθεί στο.νετ Framework. Παραδείγματα αποτελούν η COBOL, η Smalltalk, η Delphi, η APL, η Pascal και άλλες. Το τοπίο των γλωσσών προγραμματισμού είναι πάντα ρευστό και η ενοποιημένη υποδομή του.νετ παρέχει έναν ασφαλή τρόπο για την εξυπηρέτηση των αναγκών των διαφορετικών αυτών γλωσσών, δίνοντάς τους τη δυνατότητα να χρησιμοποιήσουν βιβλιοθήκες μεταξύ τους και να χρησιμοποιήσουν τα έτοιμα εργαλεία. Όλα αυτά επιτρέπουν στους προγραμματιστές με διαφορετικές προτιμήσεις σε γλώσσες προγραμματισμού να δουλέψουν μαζί και να επιλέξουν τα σωστά εργαλεία για κάθε έργο. Για παράδειγμα, ενώ η C# είναι μια πολύ καλή γλώσσα γενικού σκοπού για τη δημιουργία εταιρικών εφαρμογών, η F# είναι πιο ελκυστική για την ανάπτυξη επιστημονικών εφαρμογών Εργαλεία του.νετ Framework Το.ΝΕΤ περιλαμβάνει ένα σύνολο εργαλείων για τη διευκόλυνση της δημιουργίας, εγκατάστασης και διαχείρισης εφαρμογών και components σε αυτό. Τα περισσότερα εργαλεία εγκαθίστανται με την εγκατάσταση του Visual Studio. Όλα τα 54

66 εργαλεία είναι δυνατόν να εκτελεστούν από τη γραμμή εντολών των Windows εκτός από το εργαλείο Assembly Cache Viewer που πρέπει να χρησιμοποιηθεί από τον Windows Explorer. Ο καλύτερος τρόπος εκτέλεσης των command line εργαλείων είναι μέσα από το Visual Studio Command Prompt (γνωστό και ως CMD Shell) που παρέχεται σε κάθε Visual Studio από την έκδοση 2005 και μετά. Ακολουθεί μια αναφορά σε επιλεγμένα εργαλεία του.νετ και μια κατηγοριοποίησή τους: Εργαλεία μεταγλώττισης Csc.exe (CSharpCompiler): ο μεταγλωττιστής της C# λαμβάνει αρχεία που περιέχουν κώδικα C# και παράγει εκτελέσιμα αρχεία (exe), dynamic link libraries (dll) ή modules κώδικα (netmodule). Εργαλεία Build, Deployment και Configuration 1. Ildasm.exe (MSILAssembler): λαμβάνει ένα protable executable (PE) αρχείο που περιέχει κώδικα στην ενδιάμεση γλώσσα MSIL και πα ράγει ένα text αρχείο που μπορεί να προωθηθεί στο εργαλείο MSILAssembler (Ilasm.exe). 2. Mage.exe (Manifest Generation and Editing): Επιτρέπει τη δημιουρ γία, επεξεργασία και υπογραφή των manifests μιας εφαρμογής. Εργαλεία αποσφαλμάτωσης (Debugging) MDbg.exe (.NET Framework Command Line Debugger): Βοηθάει τους προγραμματιστές να εντοπίζουν και να διορθώνουν bugs στα προγράμματα που τρέχουν στο CLR. Αυτό το εργαλείο χρησιμοποιεί το runtime debuggint API. Εργαλεία ασφάλειας 1. Peverify.exe (PEVerify Tool): βοηθάει στην επιβεβαίωση ότι ο εν διάμεσος κώδικας MSIL και τα αντίστοιχα μεταδεδομένα καλύπτουν τις απαιτήσεις ασφάλειας. 2. SignTool.exe (Sign Tool): υπογράφει αρχεία ψηφιακά, επιβεβαιώνει υπογραφές σε αρχεία και τους προσδίδει time stamps. Εργαλεία διαλειτουργικότητας (Interop) 55

67 Regasm.exe (Assembly Registration Tool): διαβάσει τα μεταδεδομένα σε ένα assembly και προσθέτει τις απαραίτητες εγγραφές στο registry. Αυτό επιτρέπει στους COM clients να εμφανίζονται σαν κλάσεις του.νετ. Διάφορα άλλα εργαλεία: 1. SqlMetal.exe (CodeGenerationTool): παράγεικώδικακαιαντιστοιχήσειςγιατοlinqtosqlcomponentτου.νετ. 2. Wincv.exe (Windows Forms Class Viewer): εμφανίζει πληροφορίες για μια κλάση ή σύνολο κλάσεων χρησιμοποιώντας το reflection API του CLR. 5.5 Εκδόσεις του.νετ Framework Η Microsoft ξεκίνησε την ανάπτυξη του.νετ Framework στα τέλη της δεκαετίας του 1990 αρχικά με το όνομα Next Generation Windows Services. Στα τέλη του 2000 εκδόθηκε η πρώτη beta έκδοση του.net 1.0. Από τότε έχουν εκδοθεί άλλες τρεις κύριες εκδόσεις και αρκετές δευτερεύουσες ενδιάμεσά τους. Κάθε έκδοση του.νετ περιέχει το CLR σαν κύριο component και περιλαμβάνει επιπρόσθετα components όπως τη βιβλιοθήκη κλάσεων και άλλες managed βιβλιοθήκες. Κάθε νέα έκδοση του.νετ Framework διατηρεί τα στοιχεία των προηγούμενων εκδόσεων και προσθέτει νέα χαρακτηριστικά. Παρόλο που το CLR είναι το κύριο component του.νετ Framework, εκτός από τον αριθμό έκδοσης του.νετ έχει και το δικό του αριθμό έκδοσης. Μερικές εκδόσεις του.νετ περιλαμβάνουν μια νέα έκδοση του CLR, ενώ άλλες χρησιμοποιούν μια παλιότερη. Για παράδειγμα το.νετ 4.0 περιλαμβάνει την τέταρτη έκδοση του CLR ενώ το.νετ 3.5 περιλαμβάνει την δεύτερη έκδοση του CLR. Για κάποιο περίεργο λόγο δεν υπήρχε τρίτη έκδοση του CLR. Η έκδοση του CLR στο οποίο τρέχει μια εφαρμογή μπορεί να προσδιοριστεί λαμβάνοντας την τιμή της property Environment.Version. Οι εκδόσεις του.νετ Framework συνοψίζονται στον παρακάτω πίνακα: 56

68 Πίν. 5.1 Εκδόσεις του.νετ Δεν χρειάζεται να εγκατασταθούν προηγούμενες εκδόσεις του.net ή του CLR πριν την εγκατάσταση της τελευταίας έκδοσης, αφού κάθε νέα έκδοση είναι θεωρητικά συμβατή με τις παλαιότερες, δηλαδή παρέχει όλα τα απαραίτητα components που χρειάζεται μια εφαρμογή φτιαγμένη σε παλιότερες εκδόσεις. Η συμβατότητα με προηγούμενες εκδόσεις (backward compatibility) γενικά, σημαίνει ότι μια εφαρμογή που έχει αναπτυχθεί για μια συγκεκριμένη έκδοση μιας πλατφόρμας θα τρέξει σε επόμενες εκδόσεις της πλατφόρμας. Το.ΝΕΤ Framework προσπαθεί να μεγιστοποιήσει αυτή τη συμβατότητα έτσι ώστε κώδικας γραμμένος σε μια έκδοσή του να μεταγλωττίζεται σε επόμενες εκδόσεις του και binaries που τρέχουν σε μια έκδοση να τρέχουν με την ίδια συμπεριφορά και στις επόμενες εκδόσεις. Ωστόσο, για τη συμβατότητα με προηγούμενες εκδόσεις πρέπει να λαμβάνονται τα παρακάτω υπόψη: 57

69 Μια εφαρμογή.νετ, προεπιλεγμένα τρέχει στην έκδοση του.νετ για την οποία αναπτύχθηκε. Αν αυτή η έκδοση δεν είναι εγκατεστημένη στον υπολογιστή και το configuration file δεν ορίζει τις υποστηριζόμενες εκδόσεις, μπορεί να προκύψει λάθος στην εκκίνησή της και κάθε προσπάθεια εκτέλεσης της εφαρμογής θα αποτυγχάνει. Είναι δυνατόν να οριστούν συγκεκριμένες εκδόσεις του.νετ στις οποίες θα τρέξει η εφαρμογή, προσθέτοντας ένα ή περισσότερα elements στο configuration file της εφαρμογής. Κάθε τέτοιο element προσδιορίζει την υποστηριζόμενη έκδοση με σειρά προτίμησης: το πρώτο προσδιορίζει την πιο επιθυμητή έκδοση και το τελευταίο την λιγότερο επιθυμητή. Ένα component, σε αντίθεση με μια εφαρμογή, δεν μπορεί να ελέγξει την έκδοση του.net Framework στην οποία θα τρέξει. Τα components και οι βιβλιοθήκες κλάσεων φορτώνονται στο πλαίσιο μιας εφαρμογής και κατά συνέπεια τρέχουν στην έκδοση του.νετ στην οποία τρέχει η εφαρμογή. Εξαιτίας του περιορισμού αυτού, είναι σημαντικό να παρέχονται εγγυήσεις συμβατότητας των components με μια έκδοση. Από το.νετ 4.0 και μετά είναι δυνατόν να προσδιορίζουμε το βαθμό στον οποίο ένα component αναμένεται να παραμείνει συμβατό με μια έκδοση εφαρμόζοντας σε αυτό το component,το attribute System.Runtime.Versioning.ComponentGuaranteesAttribute. Η τιμή αυτού του attribute μπορεί να ελεγχθεί από διάφορα εργαλεία για να προσδιορίσουν μια πιθανή παραβίαση της εγγύησης συμβατότητας σε μελλοντικές εκδόσεις του component. To.NET Framework 4.0 είναι συμβατό με εφαρμογές που φτιάχτηκαν με τις εκδόσεις 1.1, 2.0, 3.0 και 3.5. Με άλλα λόγια, εφαρμογές και components που φτιάχτηκαν με προηγούμενες εκδόσεις του.νετ, μπορούν να τρέξουν στο.νετ 4.0. Υπάρχουν, ωστόσο περιπτώσεις στις οποίες αυτή η συμβατότητα μπορεί να σπάσει από ασυνεπείς αλλαγές στο framework ή αλλαγές στις προγραμματιστικές τεχνικές. Για παράδειγμα, βελτιώσεις στο.νετ 4.0 μπορούν να προκαλέσουν συνθήκες συναγωνισμού (race conditions) που δεν προκαλούνταν στις προηγούμενες εκδόσεις. Επίσης κάθε έκδοση του.νετ περιλαμβάνει διορθώσεις bugs και αλλαγές στην ασφάλεια που επηρεάζουν τη συμβατότητα μερικών εφαρμογών ή components.κατά συνέπεια οι εφαρμογές και τα components πρέπει πάντα να υποβάλλονται σε ελέγχους για να εξασφαλίζεται η συμβατότητά τους με άλλες εκδόσεις του.νετ. 58

70 ΚΕΦΑΛΑΙΟ 6. Διεπαφή χρήστη, απομακρυσμένη απεικόνηση δεδομένων. 6.1 Γενικά περί Visual Studio Το Microsoft Visual Studio είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης ( IDE ) από τη Microsoft. Χρησιμοποιείται για την ανάπτυξη εφαρμογών κονσόλας και γραφικών διεπαφής χρήστη, μαζί με τα Windows Forms ή WPF εφαρμογές, ιστοσελίδες, εφαρμογές web, υπηρεσίες web και τόσο εγγενή κώδικα μαζί με διαχειριζόμενο κώδικα για όλες τις πλατφόρμες που υποστηρίζονται από τα Microsoft Windows, Windows CE,.NET Framework,.NET Compact Framework, το Microsoft Silverlight κ.α. Το Visual Studio περιλαμβάνει έναν επεξεργαστή κώδικα με υποστήριξη IntelliSense (reflection tool το οποίο ενεργοποιείται κατά τη διαδικασία της γραφής του κώδικα και εμφανίζει ένα pop-up window με όλες τις διαθέσιμες επιλογές), καθώς και code refactoring. Το ολοκληρωμένο πρόγραμμα εντοπισμού σφαλμάτων λειτουργεί τόσο ως ένα πρόγραμμα εντοπισμού σφαλμάτων επιπέδου - πηγής όσο και ως ένα πρόγραμμα εντοπισμού σφαλμάτων επιπέδου - μηχανής. Τα υπόλοιπα ενσωματωμένα εργαλεία περιλαμβάνουν έναν σχεδιαστή φορμών για τη δημιουργία εφαρμογών GUI, web designer, class designer και database schema designer. Αποδέχεται plugins που φροντίζουν για την ενίσχυση της λειτουργικότητας σχεδόν σε κάθε επίπεδο, συμπεριλαμβάνοντας πρόσθετη υποστήριξη για συστήματα ανοικτού κώδικα (όπως το Subversion και το Visual SourceSafe) και την προσθήκη νέων σετ εργαλείων όπως, editors και visual designers για domain-specific languages ή σετ εργαλείων για άλλες πτυχές του κύκλου ανάπτυξης λογισμικού ( όπως το client Team Foundation Server : Team Explorer ). Το Visual Studio υποστηρίζει διαφορετικές γλώσσες προγραμματισμού, με τη βοήθεια των γλωσσικών υπηρεσιών, οι οποίες επιτρέπουν στον επεξεργαστή κώδικα και στο πρόγραμμα εντοπισμού σφαλμάτων την υποστήριξη ( σε διάφορους βαθμούς ) σχεδόν οποιασδήποτε γλώσσας προγραμματισμού. Περιλαμβάνει γλώσσες όπως, C/C++ (διά μέσου Visual C++), VB.NET (μέσω Visual Basic.NET), C# (διά Visual C#), και F# (από Visual Studio 2010). Επίσης, υπάρχει υποστήριξη για άλλες γλώσσες, όπως M, Python, Ruby XML/XSLT, HTML/XHTML, JavaScript και CSS. Υπάρχουν επίσης, ατομικές συγκεκριμένες εκδόσεις γλωσσών 59

71 του Visual Studio που παρέχουν πιο περιορισμένες γλωσσικές υπηρεσίες για το χρήστη: Microsoft Visual Basic, Visual J#, Visual C#, και Visual C++. Τέλος, η Microsoft παρέχει " Express " εκδόσεις του Visual Studio της, χωρίς κανένα κόστος. Εμπορικές εκδόσεις του Visual Studio μαζί με επιλεγμένες προηγούμενες εκδόσεις, είναι διαθέσιμες δωρεάν στους φοιτητές μέσω του προγράμματος DreamSpark της Microsoft. 6.2 Visual Studio 2015 Αναφέρεται αρχικά ως VisualStudio "14", η πρώτη Κοινότητα Technology Preview (CTP), κυκλοφόρησε στις 3 Ιούνη 2014 και η έκδοση Release Candidate έκδοση κυκλοφόρησε στις 29 τουαπρίλη, Visual Studio 2015 ανακοινώθηκε επίσημα ως το τελικό όνομα, στις 12 Νοεμβρίου Visual Studio 2015 RTM έκδοση κυκλοφόρησε στις 20 Ιουλίου Visual Studio 2015 Update 1 κυκλοφόρησε στις 30 Νοεμβρίου Πίν. 6.1 Ιστορικό ΕκδόσεωνVisual Studio 6.3 C Sharp (C#) Η C# (C Sharp, ελληνική προφ. Σι Σάρπ,) είναι μια γλώσσα προγραμματισμού Η/Υ. Δημιουργήθηκε απο την Microsoft μέσα από την πλατφόρμα.net και αργότερα αναγνωρίστηκε επισήμως απο την Ecma (ECMA-334) και την ISO (ISO/IEC 2327:2006). Είναι μια απ τις γλώσσες προγραμματισμού που 60

72 δημιουργήθηκαν για την Common Language Infrastructure (CLI). O κύριος σκοπός της γλώσσας είναι να είναι απλή αντικειμενοστρεφής γλώσσα για γενική χρήση. Ο διοικητής της ομάδα που διαχειρίζεται την γλώσσα ονομάζεται Anders Hejlsberg. Στις 15 Αυγούστου 2012 κυκλοφόρησε η έκδοση 5.0 η οποία είναι η πιο πρόσφατη μέχρι σήμερα. 6.4 Συλλογή και Παρουσίαση δεδομένων Για τη συλλογή και παρουσίαση των δεδομένων που συλλέγει το Arduino αναπτύχθηκαν δύο εφαρμογές βασισμένες στο.net framework της Microsoft. Και οι δυο είναι ανεπτυγμένες σε Windows Forms και είναι συμβατές με οποιοδήποτε pc έχει Windows ως λειτουργικό σύστημα. Η μία εφαρμογή είναι υπεύθυνη για τη συλλογή και αποθήκευση των δεδομένων και η δεύτερη για την επεξεργασία και παρουσίαση τους. Επιλέξαμε την αρχιτεκτονική αυτή για να απομπλέξουμε τις δυο αυτές διακριτές διαδικασίες καθώς είναι φύσει διαφορετικές αρμοδιότητες. Επίσης επιτυγχάνουμε τα εξής οφέλη: 1. Ανεξάρτητη λειτουργία των δυο εφαρμογών σε διαφορετικά pc s αν είναι απαραίτητο. 2. Καλύτερη αξιοποίηση των πόρων στο μηχάνημα που τρέχουν τα 2 συστήματα. Το λογισμικό της λήψης δεδομένων μπορεί να λειτουργεί συνεχόμενα μαζεύοντας δεδομένα ενώ αυτό της εξεργασίας και παρουσίασης μόνο όταν είναι απαραίτητο. 3. Ενισχύουμε την στιβαρότητα και ανθεκτικότητα του συνολικού συστήματος. Αν κάποιο πρόβλημα συμβεί σε μια από τις δυο διαδικασίες, η άλλη μπορεί να συνεχίσει απρόσκοπτα τη λειτουργία της. Ας δούμε όμως σε αυτό το σημείο αναλυτικά τη λειτουργικότητα που παρέχεται από κάθε ένα από τα υποσυστήματα της λύσης που αναπτύξαμε. 61

73 6.5 Συλλογή και Αποθήκευση δεδομένων Λογισμικό Ακρόασης Η εφαρμογή ακρόασης και αποθήκευσης δεδομένων ονομάζεται DataListener. Αρμοδιότητα της είναι να ακούει συνεχόμενα τα δεδομένα που μαζεύει και εκπέμπει το Arduino και να τα αποθηκεύει στο filesystem του λειτουργικού στο οποίο τρέχει. Όταν ξεκινάει η εφαρμογή είναι σε κατάσταση idle, δηλαδή δεν κάνει ακόμα κάποια πράξη (Εικ. 6.1). Αυτό που κάνει είναι να βεβαιωθεί ότι το περιβάλλον στο οποίο τρέχει είναι κατάλληλο για να συνεχίσει και αν υπάρχουν όλα τα resources που απαιτεί. Πιο συγκεκριμένα ελέγχει αν υπάρχει η κατάλληλη δομή στο filesystem του λειτουργικού στην οποία θα αποθηκεύσει τα δεόμενα που θα λάβει. Αν δεν υπάρχει η δομή αυτή τότε τη φτιάχνει (περισσότερες λεπτομέρειες στην παράγραφο Αποθήκευση δεδομένων ). Εικ. 6.1 Data Listener Ο χρήστης πρέπει να ορίσει σε ποια IP και ποια πόρτα εκπέμπει το Arduino τα data του. Επίσης σε αυτό το σημείο ορίζουμε και με ποιο ρυθμό(sec) η εφαρμογή μας θα ακούει δεδομένα από το Arduino. Όταν ο χρήστης ορίσει αυτές τις 2 τιμές πατάει το κουμπί Start και αρχίζει η ακρόαση των δεδομένων (Εικ. 6.2). 62

74 Εικ. 6.2 Data Listener-Ακρόαση δεδομένων Από τη στιγμή που ο χρήστης πατήσει το κουμπί Start το λογισμικό λειτουργεί αυτόνομα. Ας δούμε όμως αναλυτικά τι διαδικασίες εκτελούνται από εκείνη τη στιγμή και μετά. Το λογισμικό ακρόασης ξεκινάει μία background διαδικασία η οποία ανά κάποια δευτερόλεπτά -όπως αυτά ορίστηκαν από τον χρήστη- ζητάει δεδομένα από το Arduino. Τα δεδομένα αυτά ζητούνται κάνοντας ένα GET request (όπως αυτό ορίζεται από το πρωτόκολλο HTTP) στην IP και πόρτα που ορίζει ο χρήστης. To GET request αυτό λαμβάνεται και εξυπηρετείται από το Arduino το οποίο μας επιστέφει σε μορφή JSON τα δεδομένα της δειγματοληψίας. Συγκεκριμένα κάθε απάντηση περιέχει τη Θερμοκρασία (C), την Υγρασία(%), την Ισχύς(W) και το Ρεύμα(A) σε μία συγκεκριμένη χρονική στιγμή και αποτελεί ένα ολοκληρωμένο δείγμα για το σύστημα μας. Τα δεδομένα αυτά αποθηκεύονται στο filesystem του λειτουργικού και καθίστανται διαθέσιμα για περαιτέρω επεξεργασία. Σε ψευδοκώδικα, το λογισμικό ακρόασης εκτελεί τον παρακάτω αλγόριθμο: while(true) DoGETRequestToArduino(); 63

75 ReceiveResponseFromArduino(); SaveDataToFilesystem(); Το κουμπί Stop παύει όλες τις παραπάνω λειτουργίες Αποθήκευση δεδομένων Όπως προαναφέραμε η απάντηση του GET request που κάνει το λογισμικό ακρόασης προς το Arduino περιέχει τα δεδομένα που συνέλλεξαν οι αισθητήρες μας σε μία συγκεκριμένη χρονική στιγμή. Τα δεδομένα αυτά έρχονται σε μορφή JSON. Χρησιμοποιώντας την δωρεάν βιβλιοθήκη JSON.NET κάνουμε deserialise το JSON αυτό σε μορφή όπου καταλαβαίνει το λογισμικό. Η μορφή αυτή αντιπροσωπεύεται στο σύστημα μας από την κλάση Sample. Εικ. 6.3 Class Sample Ένα ολοκληρωμένο δείγμα (Sample) για την εφαρμογή μας αποτελεί μία ομάδα πληροφορίας που περιέχει μία ημερομηνία και ώρα, θερμοκρασία, Υγρασία, Ρεύμα και Ισχύς. Κάθε μία τέτοια μονάδα πληροφορίας λαμβάνεται και αποθηκεύεται αυτόνομα. Τα δεδομένα αυτά καθαυτά, αποθηκεύονται όπως είπαμε στο filesystem του λειτουργικού μας. Συγκεκριμένα, μόλις ξεκινήσουμε την εφαρμογή, στο φάκελο στον οποίο βρίσκεται το.exe αρχείο που εκτελούμε δημιουργείται ένας φάκελος με το όνομα Data. Στον φάκελο αυτό αποθηκεύονται όλα τα δεδομένα που λαμβάνονται. Για κάθε μήνα που ακούμε δεδομένα το λογισμικό ακρόασης φτιάχνει ένα.txt αρχείο μέσα τον προηγούμενο φάκελο το οποίο ονομάζει ως Ετος- Μηνας.txt. Για παράδειγμα για το μήνα Φεβρουαρίου του 2016 θα φτιαχτεί αυτόματα ένα αρχείο txt. Μέσα στο αρχείο αυτό αποθηκεύονται τα 64

76 δεδομένα που λάβαμε το συγκεκριμένο μήνα. Σε κάθε γραμμή του αρχείου αποθηκεύεται και ένα ολοκληρωμένο δείγμα με την εξής γραμμογράφηση: ΗμερομηνίαΩρα&Θερμοκρασία&Υγρασία&Ρεύμα&Ισχύς Ένα παράδειγμα τέτοιου αρχείου φαίνεται στην παρακάτω εικόνα. Εικ. 6.4 Δείγμα Δεδομένων Παρουσίαση δεδομένων Το λογισμικό που αναπτύξαμε για την παρουσίαση των δεδομένων ονομάζεται DataPresenter. Σκοπός του είναι να αναλύει και παρουσιάζει τα δεδομένα που λαμβάνει και αποθηκεύει ο DataListener. Ξεκινώντας την εφαρμογή η οθόνη που βλέπει ο χρήστης είναι η παρακάτω: 65

77 Εικ. 6.5 Αρχική οθόνη παρουσίασης δεδομένων Δεδομένου ότι τα δύο συστήματα έχουν σχεδιαστεί να λειτουργούν ανεξάρτητα, το πρώτο πράγμα που πρέπει να κάνει το ο χρήστης είναι να ορίσει στο λογισμικό παρουσίασης που αποθηκεύονται τα δεδομένα που θα αξιοποιήσει. Τα δεδομένα αυτά βρίσκονται στην ουσία στο directory όπου τα αποθηκεύει ο DataListener. Για να επιλέξουμε το συγκεκριμένο directory επιλέγουμε Data->Select Data Folder από το κεντρικό μενού. Στο παράθυρο που ανοίγει (εικόνα 6) επιλέγουμε το φάκελο που βρίσκονται τα δεδομένα. 66

78 Εικ. 6.6 Επιλογή Φακέλου Αφού επιλέξουμε το φάκελο απ όπου το λογισμικού θα διαβάζει τα δεδομένα μπορούμε να προχωρήσουμε με την εκμετάλλευση των υπόλοιπων λειτουργιών. Οι επιλογές που παρέχονται στον χρήστη είναι οι εξής: Live Feed Μέσω του μενού Feed Live ο χρήστης μπορεί να δει σε ζωντανή ροή τα δεδομένα που λαμβάνονται από το Arduino μέσω του DataListener. Η ανανέωση των δεδομένων στα γραφήματα γίνεται αυτόματα κάθε 30 δευτερόλεπτα. 67

79 Εικ. 6.6 Live απεικόνιση δεδομένων Date Range Μέσω του μενού Feed Date Range ο χρήστης μπορεί να δει τα δεδομένα που έχουμε συλλέξει και αποθηκεύσει για μία συγκεκριμένη χρονική διάρκεια στο παρελθόν. Με το που κλικάρει ο χρήστης τη συγκεκριμένη επιλογή ενεργοποιείται μία φόρμα όπως η παρακάτω που ζητάει από το χρήστη να εισάγει τις ημερομηνίες Από-Ως όπου θέλει να δει τα δεδομένα που έχουμε αποθηκευμένα. Εικ. 6.7 Date Range Όταν ο χρήστης πατήσει Apply τότε η παραπάνω φόρμα κλείνει, το λογισμικό συλλέγει τα δεδομένα για τις ορισμένες ημερομηνίες και τα παρουσιάζει στα τέσσερα γραφήματα. Μια ενδεικτική εικόνα είναι η παρακάτω. 68

80 Εικ. 6.8 Date Range Δεδομένα Όπως φαίνεται στην παραπάνω εικόνα, η απεικόνηση των δεδομένων δεν είναι ευδιάκριτη, επειδή έχουμε επιλέξει τιμές για αρκετό χρονικό διάστημα. Δεδομένου του ότι ο όγκος της πληροφορίας που μπορεί να ζητηθεί είναι πολύ μεγάλος και για να μπορεί να γίνει κατανοητή στο χρήστη, μπορούμε σε κάθε γράφημα να κάνουμε διακρατικό Zoom(Εικ. 6.9) όσο χρειάζεται εστιάζοντας στην περιοχή ενδιαφέροντος. Για να γίνει αυτό, κλικάρουμε με το αριστερό κλικ του ποντικιού πάνω στο διάγραμμα που επιθυμούμε να ζουμάρουμε και κρατώντας το πατημένο τραβάμε προς την κατεύθυνση που θέλουμε να εστιάσουμε. Όταν δε θέλουμε να προχωρήσουμε παραπάνω αφήνουμε το κλικ. 69

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

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) Περιγραφή της Άσκησης Ο σκοπός της πρώτης άσκησης είναι κυρίως η εξοικείωση με το περιβάλλον προγραμματισμού του Arduino, γι αυτό και δεν είναι ιδιαίτερα σύνθετη. Αρχικά, θα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα 1ο ΕΠΑΛ Περάματος 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino.

Διαβάστε περισσότερα

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

Γνωριμία με το Arduino Γνωριμία με το Arduino Τι είναι το Arduino; Το arduino είναι ένας μικρός υπολογιστής σε μέγεθος παλάμης που περιλαμβάνει ένα μικροελεγκτή (για εκτέλεση εντολών) και ένα σύνολο εισόδων/εξόδων για επικοινωνία

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ Σκοπός της άσκησης Οι φοιτητές θα εξοικειωθούν με την πλακέτα του μικροελεγκτή και θα αναγνωρίσουν τα βασικά της στοιχεία. Επίσης θα εξοικειωθούν

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino UNO Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O

Διαβάστε περισσότερα

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

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino. Το Arduino είναι βασισμένο σε μια απλή μητρική πλακέτα ανοικτού κώδικα, με ενσωματωμένο

Διαβάστε περισσότερα

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

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ARDUINO Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

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

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΟΙΚΟΝOΜΟΥ ΧΑΡΗΣ (6424) ΦΩΚΟΣ ΝΙΚΟΛΑΟΣ(6592) ΚΑΜΒΥΣΗΣ ΝΙΚΟΛΑΟΣ(7178) 2013-2014 ΠΕΡΙΕΧΟΜΕΝΑ Σκοπός της εργασίας Ανάλυση Arduino Uno Δημιουργία πληροφορίας Αποστολή και

Διαβάστε περισσότερα

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

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοινωνία. Σειριακή Επικοινωνία USB Σύνδεση / Πρωτόκολλο Σκοπός Εντολή επιλογής (if) Εντολή Επανάληψης (while) Πίνακες 1 Μέρος Α : Σκοπός

Διαβάστε περισσότερα

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

Εφαρμογές Σειριακής Επικοινωνίας Εφαρμογές Σειριακής Επικοινωνίας Εισαγωγή Στο μάθημα αυτό θα μάθουμε πώς να χρησιμοποιούμε την βιβλιοθήκη serial για την επικοινωνία από την πλατφόρμα Arduino πίσω στον υπολογιστή μέσω της θύρας usb. Τι

Διαβάστε περισσότερα

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

Ενσωµατωµένα Συστήµατα Ενσωµατωµένα Συστήµατα για εφαρµογές πραγµατικού χρόνου Μικροελεγκτής Arduino Ιωάννης Καλόµοιρος Αναπληρωτής Καθηγητής Τµήµα Μηχανικών Πληροφορικής Μάθηµα 7ο Τι είναι το Arduino... Ένα open-hardware σύστηµα

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O Pins:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Υλοποίηση δικτύου ασύρματης ραδιοεπικοινωνίας μεταξύ δύο ενσωματωμένων κόμβων (κόμβος ταυτοποίησης

Διαβάστε περισσότερα

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

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 Mηχανοτρονική Το Arduino είναι μια «ανοικτού κώδικα» πλατφόρμα «πρωτοτυποποιημένων» ηλεκτρονικών βασισμένη σε ευέλικτο και εύκολο στη χρήση

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) Περιγραφή της Άσκησης Στόχος της άσκησης είναι η δημιουργία ενός συστήματος διαχείρισης φωτισμού. Μία φωτομεταβαλλόμενη αντίσταση (LDR) θα διαπιστώνει την ποσότητα του φωτός

Διαβάστε περισσότερα

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

Προγραμματισμο ς σε Arduino Προγραμματισμο ς σε Arduino Arduino UNO & Innoesys Educational Shield www.devobox.com Ηλεκτρονικά Εξαρτήματα & Υλικά Κατασκευής Πρωτοτύπων Λέανδρου 79, 10443, Κολωνός +30 210 51 55 513, info@devobox.com

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO Δημιουργός: Επιβλέπων: Μπακάλη Ιωάννα Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ 1 ΤΙ ΕΙΝΑΙ ΤΟ ARDUINO; Είναι ένας συνδυασμός Υλικού (πλακέτας, μικροελεγκτή, αντιστάσεων κτλ) και Λογισμικού

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα Σκοπός και περίγραμμα της Ενότητας 5 Σκοπός της παρουσίασης Να δώσουμε τις βασικές ιδέες για τα αναλογικά σήματα και την χρήση διαφορετικών ειδών περιφερειακών Σύνοψη Επεξήγηση

Διαβάστε περισσότερα

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

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων Σε αυτήν τη δραστηριότητα θα κατασκευάσουμε ένα αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων. Εκτός από τον μικροελεγκτή Arduino, το breadboard,

Διαβάστε περισσότερα

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

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO Αντώνιος Καραγεώργος Βασικά Στοιχεία της Γλώσσας Προγραμματισμού Arduino Constants: HIGH/LOW Ορίζουν το επίπεδο της τάσης εισόδου/εξόδου ενός pin INPUT/OUTPUT Ορίζουν την

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ ΑΜΑΛIΑ ΦΩΚA ΕΠIΚΟΥΡΗ ΚΑΘΗΓHΤΡΙΑ Περιεχόμενο Μαθήματος 2 Arduino Τι είναι το Arduino; 3 μικρή συσκευή (μικροεπεξεργαστής) που συνδέεται με USB στον υπολογιστή μια πλατφόρμα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 3 ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ

ΕΝΟΤΗΤΑ 3 ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ ΕΝΟΤΗΤΑ 3 ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ Σκοπός και περίγραμμα της Ενότητας 3 Σκοπός της παρουσίασης Να δούμε πιο προσεκτικά τις μεταβλητές, τις σταθερές και τις εκφράσεις γενικότερα. Να σας παρουσιάσουμε

Διαβάστε περισσότερα

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

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW. Σκοπός Μάθημα 2 Δραστηριότητα 1 Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο Πλαίσιο (front panel). Σχεδίαση

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 3: Βασικός Προγραμματισμός Arduino (AVR) (Συνέχεια) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital

Διαβάστε περισσότερα

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

Σχεδιασμός και υλοποίηση κυκλώματος μέτρησης κατανάλωσης ισχύος Σχεδιασμός και υλοποίηση κυκλώματος μέτρησης κατανάλωσης ισχύος Φοιτητής Φετινίδης Αναστάσιος Επιβλέπων Δασυγένης Μηνάς Μάρτιος 2014 1 Περιεχόμενα παρουσίασης Εισαγωγή Θεωρητικό υπόβαθρο Υλικό μέρος του

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 1: Εισαγωγή στα ενσωματωμένα συστήματα (embedded systems) Εργαστήριο Αυτομάτου Ελέγχου Ενσωματωμένα συστήματα (Embedded Systems) Ενσωματωμένα συστήματα (Embedded

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O Pins:

Διαβάστε περισσότερα

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

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα για εφαρμογές πραγματικού χρόνου Εφαρμογές με τον Arduino Ιωάννης Καλόμοιρος Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής Μάθημα 10 1 Συναρτήσεις αναλογικής εξόδου: PWM Το

Διαβάστε περισσότερα

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

Μαθαίνοντας το hardware του αναπτυξιακού 1. ΑΣΚΗΣΗ 1 Μαθαίνοντας το hardware του αναπτυξιακού Προϋποθέσεις Το εργαστήριο αυτό προϋποθέτει το διάβασμα και χρήση των εξής: Αρχείο mcbstr9.chm HTML, που δίδεται με τα υπόλοιπα αρχεία του εργαστηρίου.

Διαβάστε περισσότερα

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

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΘΕΜΑ : ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΔΙΑΡΚΕΙΑ:? περίοδος Οι μικροελεγκτές είναι υπολογιστές χωρίς περιφερειακά, σε ολοκληρωμένα κυκλώματα. Μπορούν να συνδυάσουν αρκετές από τις βασικές λειτουργίες άλλων ειδικών

Διαβάστε περισσότερα

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

Εφαρμογές αναλογικών / Ψηφιακών Εφαρμογές αναλογικών / Ψηφιακών 1 ΕΙΣΑΓΩΓΗ Σε αυτήν την ενότητα θα δούμε μερικές ακόμα εφαρμογές ψηφιακών / αναλογικών εισόδων/ εξόδων που μπορούμε να φτιάξουμε με την βοήθεια του Arduino, χρησιμοποιώντας

Διαβάστε περισσότερα

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

Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino Στην κατασκευή αυτή ο σκοπός ήταν να ελέγξουμε την ταχύτητα ενός κινητήρα συνεχούς ρεύματος με τη χρήση ενός τρανζίστορ που θα χρησιμοποιηθεί

Διαβάστε περισσότερα

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

Το κύκλωμα σε breadboard Φύλλο εργασίας 8 - Ανιχνευτής απόστασης Σε αυτήν τη δραστηριότητα θα κατασκευάσουμε έναν ανιχνευτή απόστασης. Θα χρησιμοποιήσουμε τον αισθητήρα υπερήχων (ή απόστασης) HC-SR04 για τον υπολογισμό της απόστασης.

Διαβάστε περισσότερα

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

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα 1ο ΕΠΑΛ Περάματος 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino.

Διαβάστε περισσότερα

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

Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου. Το κύκλωμα σε breadboard Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου Σε αυτήν την δραστηριότητα θα κατασκευάσουμε ένα θερμόμετρο εξωτερικού χώρου. Θα χρησιμοποιήσουμε τον αισθητήρα θερμοκρασίας LM35 και για την ένδειξη της

Διαβάστε περισσότερα

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

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2 Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου Ενότητα 2 Τι είναι το PLC ΠΕΡΙΕΧΟΜΕΝΑ 2 Τι είναι το PLC. 2.1 Πλεονεκτήματα των PLC. 2.2 Η δομή ενός PLC. 2.3 Τα PLC της αγοράς. 2.4 Αρχή λειτουργίας ενός PLC.

Διαβάστε περισσότερα

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

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ 1.1 ΕΙΣΑΓΩΓΗ ΣΤΑ ΑΝΑΛΟΓΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ 1 1.1.1 Αναλογικά σήματα 1 1.1.2 Οι αντιστάσεις 3 1.1.3 Οι πυκνωτές 7 1.1.4 Τα πηνία 11 1.1.5 Οι δίοδοι 13 1.1.6

Διαβάστε περισσότερα

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

2017 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino 2017 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino Αριστείδης Παλιούρας e-mail: arispaliouras@gmail.com ISBN: 978-960-93-8945-7 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino Copyright

Διαβάστε περισσότερα

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

Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation) Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation) Εισαγωγή Σε αυτή την ενότητα θα δούμε εφαρμογές που χρησιμοποιούν τις αναλογικές Εισόδους/Εξόδους του Arduino ή την τεχνική PWM. Ψηφιακό vs Αναλογικό

Διαβάστε περισσότερα

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

Η δυναμική του Arduino στο μάθημα της Τεχνολογίας. Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03 Η δυναμική του Arduino στο μάθημα της Τεχνολογίας Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03 dfasouras@gmail.com Τι είναι το Arduino ; Το Arduino είναι μια απλή μητρική πλακέτα ανοικτού κώδικα. Διαθέτει

Διαβάστε περισσότερα

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

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Bread Online Σχεδιασμός και μετατροπή μιας απλής οικιακής συσκευής σε επαναπρογραμματιζόμενη συσκευή IP Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών

Διαβάστε περισσότερα

Lab 1: Experimenting on Arduino & AI Sense

Lab 1: Experimenting on Arduino & AI Sense Lab 1: Experimenting on Arduino & AI Sense 1. Εισαγωγή A. Arduino Robokit Το Robokit, όπως και όλες οι πλακέτες τύπου Arduino, λειτουργεί χάρη σε έναν μικροελεγκτή. Ως μικροελεγκτή μπορούμε να φανταστούμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εγκατάσταση του Arduino IDE ΑΣΠΑΙΤΕ Συλλογή και Επεξεργασία Δεδομένων Εργαστήριο ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE), για το προγραμματισμό του Arduino. Χρησιμοποιώντας το

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD Σκοπός του εργαστηρίου: Οι φοιτητές εξοικειώνονται με βασικές απεικονίσεις αριθμητικών ψηφίων και χαρακτήρων, καθώς και με τη βασική οδήγηση τέτοιων απεικονίσεων,

Διαβάστε περισσότερα

ΨΗΦΙΑΚH ΑΜΠΕΡΟΤΣΙΜΠΙΔΑ 3 1/2

ΨΗΦΙΑΚH ΑΜΠΕΡΟΤΣΙΜΠΙΔΑ 3 1/2 ΨΗΦΙΑΚH ΑΜΠΕΡΟΤΣΙΜΠΙΔΑ 3 1/2 MT-3266 ΨΗΦΙΑΚH ΑΜΠΕΡΟΤΣΙΜΠΙΔΑ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΕΙΣΑΓΩΓΗ Η αμπεροτσιμπίδα είναι ψηφιακή ό με οθόνη LCD 3 1/2 και τυπική λειτουργία μπαταρίας 9V για τη μέτρηση τάσης συνεχούς

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 13 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

Arduino Teachers Workshop

Arduino Teachers Workshop Arduino Teachers Workshop Εισαγωγή στο Arduino Προγραμματισμός στο Arduino IDE Επικοινωνία με τον υπολογιστή μέσω USB Πλακέτα εύκολων συνδέσεων Breadboard Projects Led Blink Αναλογική ανάγνωση Ποτενσιόμετρου

Διαβάστε περισσότερα

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

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17 ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ Μνήμες (Memory) - Είναι ημιαγώγιμα κυκλώματα που μπορούν να αποθηκεύσουν ένα σύνολο από δυαδικά ψηφία (bit). - Μια μνήμη αποθηκεύει λέξεις (σειρές από bit). - Σε κάθε

Διαβάστε περισσότερα

G&K ELECTRONICS AVR ATMEGA DEVELOPMENT BOARD

G&K ELECTRONICS AVR ATMEGA DEVELOPMENT BOARD ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ G&K ELECTRONICS Αυτή η αναπτυξιακή μονάδα (AVR-ATMEGA 28 PIN) είναι σχεδιασμένη να χρησιμοποιηθεί για την εκμάθηση βασικών και προηγμένων δεξιοτήτων που απαιτούνται για τον έλεγχο ενός

Διαβάστε περισσότερα

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

LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ Οδηγίες Παραμετροποίησης Power Electronics Control Ε.Π.Ε. Τύποι Συσκευών: LFT169 - LFR169 Περιγραφή: Πομπός και Δέκτης Τηλεχειρισμού 169MHz

Διαβάστε περισσότερα

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

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά Σκοπός Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά Μικροελεγκτές Πλακέτα Arduino Προσομοίωση Μικροελεγκτών Προγραμματισμός Μικροελεγκτών στη C. 7.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΕΡΓΑΣΙΑΣ

Διαβάστε περισσότερα

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

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1. Προγραμματισμός Φυσικών Συστημάτων. Νέα Ψηφιακά Αντικείμενα Σκοπός Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1 ΜΕΤΡΩΝΤΑΣ ΑΠΟΣΤΑΣΗ ΜΕ ΤΟΝ ΑΙΣΘΗΤΗΡΑ ΥΠΕΡΗΧΩΝ (SR04). Ψηφιακά Αντικείμενα Μικροελεγκτής Προγραμματισμός Φυσικών Συστημάτων Νέα Ψηφιακά Αντικείμενα Αισθητήρες

Διαβάστε περισσότερα

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

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

Α.Ε.Ι. ΠΕΙΡΑΙΑ Τ.Τ Φεβρουάριος 2017

Α.Ε.Ι. ΠΕΙΡΑΙΑ Τ.Τ Φεβρουάριος 2017 Α.Ε.Ι. ΠΕΙΡΑΙΑ Τ.Τ Φεβρουάριος 2017 Τεχνολογικό Εκπαιδευτικό Εκπαιδευτικό Ίδρυμα Ίδρυμα Πειραιά Πειραιά Τμήμα Ηλεκτολογίας Τμήμα Ηλεκτρολογίας Υλοποίηση Υλοποίηση ενός σύστημα Ενός Συναγερμού Αυτοκίνητου

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ Στόχος και Περίγραμμα της Ενότητας 10 Στόχος της παρουσίασης Παρουσίαση της βασικής ιδέα και απλών παραδειγμάτων για την οδήγηση DC και βηματικών κινητήρων με το Arduino.

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ασύγχρονη σειριακή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Κωνσταντίνος Γκαλονάκης. Arduino: Προγραμματισμός στην πράξη Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξη 1 Σύνδεση του Arduino με τον Η/Υ και προγραμματισμός αυτού. 1. Εγκατάσταση περιβάλλοντος Arduino IDE Για να προγραμματίσετε τη μονάδα σας θα

Διαβάστε περισσότερα

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

Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED Στην δραστηριότητα αυτή θα δουλέψουμε με το RGB LED για να παράγουμε μια μεγάλη ποικιλία χρωμάτων. Το RGB LED είναι στην ουσία τρία διαφορετικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Συλλογή & Επεξεργασία Δεδομένων. Προγραμματίζοντας τον Arduino Μέρος Ι: Μεταβλητές, Εντολές Εισόδου & Εξόδου. Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE)

Συλλογή & Επεξεργασία Δεδομένων. Προγραμματίζοντας τον Arduino Μέρος Ι: Μεταβλητές, Εντολές Εισόδου & Εξόδου. Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE) Βασικές Έννοιες Συλλογή & Επεξεργασία Δεδομένων Προγραμματίζοντας τον Arduino Μέρος Ι: Μεταβλητές, Εντολές Εισόδου & Εξόδου. Πρόγραμμα Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE) Πηγαίος Κώδικας (source code)

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 2 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Υπολογιστής Συνοπτικό λεξικό Οξφόρδης -> «ηλεκτρονική υπολογιστική μηχανή»

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

1ο ΕΠΑΛ Περάματος -7ο ΕΚ Πειραιά. Εφαρμογές Arduino. Σεμινάριο Ηλεκτρονικού Τομέα. Φεβρουάριος 2014

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

Διαβάστε περισσότερα

kW (0.5 15HP) ΤΕΧΝΙΚΟ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ

kW (0.5 15HP) ΤΕΧΝΙΚΟ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ 0.37 11kW (0.5 15HP) ΤΕΧΝΙΚΟ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ 1 Εύρος IP20 IP66X IP66Y 110 115 + / - 10% 110 115 + / - 10% 110 115 + / - 10% Τάση Παροχής 200 240 + / - 10% 200 240 + / - 10% 200 240 + /

Διαβάστε περισσότερα

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

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

Διαβάστε περισσότερα

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

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΡΟΜΠΟΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΜΠΑΝΤΗΣ ΑΝΤΩΝΙΟΣ 533 ΤΣΙΚΤΣΙΡΗΣ ΔΗΜΗΤΡΙΟΣ 551 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΡΟΜΠΟΤ LEGO NXT Το ρομπότ

Διαβάστε περισσότερα

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

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται Τομέας: Ηλεκτρονικός Εκπαιδευτικός: Μπουλταδάκης Στέλιος Μάθημα: Συλλογή και μεταφορά δεδομένων μέσω Η/Υ, Αισθητήρες-Ενεργοποιητές Αντικείμενο: α) Μέτρηση θερμοκρασίας με το αισθητήριο LM335 και μεταφορά

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ MM505 ΗΛΕΚΤΡΙΚΕΣ ΜΗΧΑΝΕΣ ΒΙΟΜΗΧΑΝΙΚΟΙ ΑΥΤΟΜΑΤΙΣΜΟΙ Εργαστήριο ο - Θεωρητικό Μέρος Βασικές ηλεκτρικές μετρήσεις σε συνεχές και εναλλασσόμενο

Διαβάστε περισσότερα

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

ΕΛΕΓΧΟΣ ΑΝΤΛΙΟΣΤΑΣΙΟΥ ΜΕ ΔΕΞΑΜΕΝΗ ΜΕΣΩ GSM CHECK IN TANK PUMPING THROUGH GSM ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΏΝ ΕΦΑΡΜΟΓΏΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ CHECK IN TANK PUMPING THROUGH GSM Επιβλέπων Καθηγητής: Κόγιας Παναγιώτης Επιβλέπουσα Καθηγήτρια: Κόγια Φωτεινή ΚΑΒΑΛΑ, ΦΕΒΡΟΥΑΡΙΟΣ

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

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

MT-3102 Μίνι ψηφιακή αμπεροτσιμπίδα 3 1/2 2A MT-3102 Μίνι ψηφιακή αμπεροτσιμπίδα 3 1/2 2A Εγχειρίδιο χρήσης 1 η Έκδοση 2010 2014 Copyright, Prokit s Industries Co., Ltd. ΕΙΣΑΓΩΓΗ Το μίνι ψηφιακό όργανο MT-3102 3 1/2 είναι μια αμπεροτσιμπίδα 3 1/2

Διαβάστε περισσότερα

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Α Γενικού Λυκείου Κεφάλαιο 1 1.1 Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Ιδιαίτερη θέση έχουν οι Υπολογιστικές συσκευές. Μηχανισμός

Διαβάστε περισσότερα

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

Το υλικό του υπολογιστή Το υλικό του υπολογιστή Ερωτήσεις 1. Τι αντιλαμβάνεστε με τον όρο υλικό; Το υλικό(hardware) αποτελείται από το σύνολο των ηλεκτρονικών τμημάτων που συνθέτουν το υπολογιστικό σύστημα, δηλαδή από τα ηλεκτρονικά

Διαβάστε περισσότερα

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

Η ΑΞΙΟΠΟΙΗΣΗ ΤΟΥ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΛΟΓΙΣΜΙΚΟΥ COACH 5 ΣΤΗΝ ΔΙΔΑΣΚΑΛΙΑ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΟΜΕΑ ΤΩΝ Τ.Ε.Ε. 2 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ 485 Η ΑΞΙΟΠΟΙΗΣΗ ΤΟΥ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΛΟΓΙΣΜΙΚΟΥ COACH 5 ΣΤΗΝ ΔΙΔΑΣΚΑΛΙΑ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΟΜΕΑ ΤΩΝ Τ.Ε.Ε. Μπουλταδάκης Στέλιος Εκπαιδευτικός

Διαβάστε περισσότερα

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

Παιδιά κάτω των 13 ετών δε θα πρέπει να χρησιμοποιούν το κιτ χωρίς επίβλεψη. Μη συνδέετε την κύρια πλακέτα σε εξωτερική τροφοδοσία μεγάλης ισχύος. 2 ΠΕΡΙΕΧΟΜΕΝΑ 01. Robotale (Arduino-Compatible) 02. Ράστερ 830 οπών 03. Κουτί αποθήκευσης 04. Κόκκινα leds (τεμ. 5) 05. Κίτρινα leds (τεμ. 5) 06. Πράσινα leds (τεμ. 5) 07. Αντιστάτες 220 Ohm (τεμ. 8) 08.

Διαβάστε περισσότερα

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

Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική» Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική» Τμήμα Μηχανολογίας Δρ. Φασουλάς Γιάννης, jfasoulas@staff.teicrete.gr Τ.Ε.Ι. Κρήτη, Σχολή Τεχνολογικών Εφαρμογών, Ηράκλειο Κρήτης, (2013)

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 4 TΟ ΡΟΜΠΟΤΙΚΟ ΟΧΗΜΑ ROGUE BLUE

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 4 TΟ ΡΟΜΠΟΤΙΚΟ ΟΧΗΜΑ ROGUE BLUE Εργαστήριο Ευφυών Συστημάτων και Ρομποτικής Τμήμα Μηχανικών Παραγωγής και Διοίκησης Πολυτεχνείο Κρήτης www.robolab.tuc.gr, τηλ: 28210 37292 / 37314 e-mail: savas@dpem.tuc.gr, kyralakis@dpem.tuc.gr ΕΡΓΑΣΤΗΡΙΑΚΗ

Διαβάστε περισσότερα

Εργαστηριακές ασκήσεις λογικών κυκλωμάτων 11 A/D-D/A

Εργαστηριακές ασκήσεις λογικών κυκλωμάτων 11 A/D-D/A 11.1 Θεωρητικό μέρος 11 A/D-D/A 11.1.1 Μετατροπέας αναλογικού σε ψηφιακό σήμα (A/D converter) με δυαδικό μετρητή Σχ.1 Μετατροπέας A/D με δυαδικό μετρητή Στο σχήμα 1 απεικονίζεται σε block diagram ένας

Διαβάστε περισσότερα

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 5 ΠΡΟΣΟΜΟΙΩΤΗΣ PLC SIMATIC S7-300 ΚΕΦΑΛΑΙΟ 5 ΠΡΟΣΟΜΟΙΩΤΗΣ PLC SIATIC S7-300 5. Σκοπός του προσομοιωτή. Χωρίς τον προσομοιωτή ο έλεγχος της ορθότητας ενός προγράμματος μπορεί να γίνει μόνο offline με τη χρήση του λογισμικού STEP 7 της Siemens

Διαβάστε περισσότερα

ΜΕΤΡΗΣΗ ΤΑΣΗΣ ΣΦΑΛΜΑΤΑ

ΜΕΤΡΗΣΗ ΤΑΣΗΣ ΣΦΑΛΜΑΤΑ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ΜΕΤΡΗΣΗ ΤΑΣΗΣ ΣΦΑΛΜΑΤΑ ΜΕΤΡΗΣΗΣ ΗΜΕΡΟΜΗΝΙΑ: ΤΡΙΩΡΟ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: 1 ΣΚΟΠΟΣ... 1 ΘΕΩΡΗΤΙΚΟ ΥΠΟΒΑΘΡΟ... 1.1 ΠΗΓΗ ΣΥΝΕΧΟΥΣ ΤΑΣΗΣ... 1. ΜΕΤΡΗΣΗ

Διαβάστε περισσότερα

Οδηγίες σύνδεσης του Fronius Smart Meter 50kA-3

Οδηγίες σύνδεσης του Fronius Smart Meter 50kA-3 Οδηγίες σύνδεσης του Fronius Smart Meter 50kA-3 1. Εισαγωγή Οι Fronius Smart Meters είναι μετρητές ενέργειας που επικοινωνούνε με τον μετατροπέα μέσω του πρωτοκόλλου επικοινωνίας ModBus RTU / RS 485. Σκοπός

Διαβάστε περισσότερα

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

Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM Οδηγίες για την υλοποίηση της διδακτικής παρέμβασης 1η διδακτική ώρα: Υλοποίηση του φύλλου εργασίας 1 με

Διαβάστε περισσότερα

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

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΡΗΤΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ-ΥΓΡΑΣΙΑΣ ΜΕ ΤΟ ΜΙΚΡΟΕΛΕΓΚΤΗ ARDUINO 1 «ΜΕΤΡΗΤΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ-ΥΓΡΑΣΙΑΣ ΜΕ ΤΟ ΜΙΚΡΟΕΛΕΓΚΤΗ ARDUINO» ΣΠΟΥΔΑΣΤΗΣ:

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα