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

Σχετικά έγγραφα
Εγκατάσταση του Arduino IDE

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

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

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

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

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

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

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

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

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

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

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

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 4. Οδηγώντας έναν DC Κινητήρα. Το κύκλωμα της Λειτουργίας DC Κινητήρα

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

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

Εγκατάσταση του LabVIEW

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8. Μετρώντας Επιτάχυνση με το Accelerόμετρο (ADXL 335) Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 7 Ακούγοντας Πρώτη Ματιά στην Ανάλυση Fourier. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

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

Lab 1: Experimenting on Arduino & AI Sense

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

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

Παράρτημα Φύλλο εργασίας 1: Δραστηριότητα 1 : Να αναβοσβήνει η φωτοδίοδος ανά ένα δευτερόλεπτο. Μέλη της ομάδας :

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

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

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

Εγκατάσταση του Lazarus

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

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

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

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

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

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

Arduino Teachers Workshop

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

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

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping).

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

Σχολ.έτος Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή.

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

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

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

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

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

Εισαγωγή στο Προγραμματισμό με τη PASCAL & τη Matlab Εξαμηνιαία Εργασία 2014 Μετατρέποντας AC σε DC Τάση Μέρος Β : Πορεία Εργασίας

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

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία ΡομποΚαθαριστής Μέρος Β : Το Πρόγραμμα. Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping).

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

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

ΤΑΞΗ ΣΤ ΕΙΡΗΝΗ ΠΕΤΡΑΚΗ (ΔΑΣΚΑΛΑ ΣΥΜΒΟΥΛΟΣ ΣΧ.Τ.) ΕΝΟΤΗΤΕΣ Α.Π.: ΔΟΜΕΣ ΕΝΕΡΓΕΙΑ ΗΛΕΚΤΡΙΣΜΟΣ ΜΗΧΑΝΙΣΜΟΙ - ΤΡΟΧΑΛΙΕΣ ΣΥΣΤΗΜΑΤΑ ΕΛΕΓΧΟΥ («EGG BOX»)

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

Tο περιβάλλον Code::Blocks

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

2ο Γυμνάσιο Καβάλας. Κατασκευές και προγραμματισμός με το scratch for Arduino (s4a)

Επιμέλεια παρουσίασης: Αριστείδης Παλιούρας ΤΙ ΕΊΝΑΙ ΈΝΑ ΡΟΜΠΟΤ (ROBOT)?

ΘΕΜΑ : ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ. ΔΙΑΡΚΕΙΑ: 1 περίοδος

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

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

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

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

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

Β1.1 Δημιουργία Εφαρμογής στο Περιβάλλον Προγραμματισμού EdScratch του Edison ρομπότ

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

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

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

ΚΕΦΑΛΑΙΟ 1 Βασικές Έννοιες της Πληροφορικής

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ

Tο περιβάλλον Code::Blocks

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ

Απλή Δομή Επιλογής. Ο κώδικας. //με χρήση μεταβλητών. delay (3000);

Tο περιβάλλον Code::Blocks

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΜΙΝΙ DV 100 WP

Προγραμματιστικό Περιβάλλον

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

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

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

Hase οδηγίες χρήσης.

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1 Γνωριμία με το περιβάλλον LabVIEW. Γνωριμία με το περιβάλλον LabVIEW.

Ενημερώσεις λογισμικού Οδηγός χρήσης

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

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

Τα ηλεκτρονικά μέρη του ρομπότ Επιλογή των μονάδων εισόδου εξόδου ανάλογα το μοντέλο που θέλουμε να κατασκευάσουμε

Μάθημα 4ο. Προγράμματα

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

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

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Φύλλο εργασίας 1 Εισαγωγή στη Ρομποτική

Εισαγωγή στην επανάληψη

Αντικειμενοστρεφής Προγραμματισμός

MESSAGE EDITOR FOR WINDOWS Ο ΗΓΙΕΣ ΧΡΗΣΕΩΣ

Transcript:

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

7.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΕΡΓΑΣΙΑΣ Σκοπός της εξαμηνιαίας εργασίας είναι η εφαρμογή των εννοιών, των τεχνικών και των μεθόδων που έχουμε εξετάσει στο εργαστήριο, σε μία πραγματική εφαρμογή. Αυτό το εξάμηνο, στην εξαμηνιαία εργασία, επιχειρούμε να προγραμματίσουμε ένα μικροελεγκτή. Μία από τις πιο σημαντικές σύγχρονες εφαρμογές του προγραμματισμού είναι ο προγραμματισμός μικροελεγκτών. Οι λειτουργίες / εφαρμογές των μικροελεγκτών είναι πάρα πολλές, από πολύ απλές, όπως να προγραμματίσουμε ένα μικροελεγκτή για να αναβοσβήνει μία λυχνία ή να μετράει τη θερμοκρασία του γύρω χώρου, μέχρι πολύ σύνθετες, όπως ο έλεγχος τη κίνησης ενός ρομπότ. Ανάμεσα στις πολύ απλές και τις πολύ σύνθετα λειτουργίες, περιλαμβάνονται πολλές πρακτικές εφαρμογές: ο προγραμματισμός ενός μικροελεγκτή για να ανοίγει / κλείνει τα φώτα ή τις οικιακές συσκευές σ ένα σπίτι, κ.ά. Στο διαδίκτυο, εμφανίζονται διαρκώς καινούργιες και πρωτότυπες εφαρμογές των μικροελεγκτών που περιλαμβάνουν το προγραμματισμό ρομπότ, ένα μικρό μετεωρολογικό σταθμό (Εικόνα 1), σκουλαρίκια με LEDs και μικροελεγκτή (Εικόνα 2). Οι μικροελεγκτές που χρησιμοποιούνται ή που μπορεί να χρησιμοποιηθούν είναι πολλοί, ο ARM, o AVR, o PIC και αρκετοί άλλοι ακόμα. Οι γλώσσες που μπορούμε να προγραμματίσουμε έναν μικροελεγκτή είναι και αυτές πολλές, κυρίως όμως χρησιμοποιούνται οι γλώσσες υψηλού επιπέδου, όπως η C, C++, C#, η LabVIEW. Αυτή η δυνατότητα και το πολύ χαμηλό κόστος των μικροελεγκτών μπορούμε να αγοράσουμε έναν μικροελεγκτή με 20 30 είναι οι λόγοι που έχει εξαπλωθεί ο προγραμματισμός και η χρήση των μικροελεγκτών. Όμως, αν και η διαδικασία του προγραμματισμού ενός μικροελεγκτή έχει απλουστευθεί, ακόμα περιπλέκεται από τεχνικούς όρους, όπως περιβάλλον ανάπτυξης, αναπτυξιακή πλακέτα, προγραμματίστρια και αρκετοί άλλοι. Έτσι, σκοπός της εξαμηνιαίας εργασίας είναι να εξετάσουμε αναλυτικά όλα τα βήματα της διαδικασίας που ακολουθούμε για προγραμματίσουμε ένα μικροελεγκτή, προγραμματίζοντας απλές λειτουργίες, όπως το αναβόσβημα μίας λυχνίας. Η γλώσσα που θα χρησιμοποιήσουμε είναι φυσικά η C. Ο μικροελεγκτής που θα χρησιμοποιήσουμε είναι ο AVR, όμως στην αναπτυξιακή πλακέτα του Arduino. Αυτό γιατί o Arduino είναι ένα πολύ σύγχρονος μικροελεγκτής, στοιχίζει / κοστίζει πολύ λίγα χρήματα 15 30 και είναι πολύ εύκολο να προγραμματιστεί. Έτσι, η χρήση του έχει διευρυνθεί και διαρκώς διευρύνεται, τόσο σε πανεπιστήμια, όσο και στην αγορά. Στις επόμενες ενότητες, εξετάζουμε τη διαδικασία του προγραμματισμού του. 7.2 ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΖΟΥΜΕ ΜΙΚΡΟΕΛΕΓΚΤΕΣ? Ενσωματωμένα Συστήματα (Embedded Systems). Ο όρος «ενσωματωμένα συστήματα» είναι από τους πιο διαδεδομένους, στη σύγχρονη ορολογία των συστημάτων ελέγχου. Η ιδέα στα ενσωματωμένα συστήματα είναι να προγραμματίσουμε ένα μικροελεγκτή για να εκτελεί μία επιμέρους λειτουργία ενός σύνθετου μηχανικού συστήματος. Μετά, ο μικροελεγκτής ενσωματώνεται δηλαδή συνδέεται στο σύστημα που μία επιμέρους λειτουργία του έχει προγραμματιστεί να εκτελεί, σαν υποσύστημα αυτού του συνθετότερου συστήματος. 2

Χαρακτηριστικά και γνωστά παραδείγματα ενσωματωμένων συστημάτων είναι το σύστημα επιλογής προγραμμάτων σε πλυντήρια ρούχων και πιάτων, σε φούρνους και φούρνους μικροκυμάτων, το σύστημα ανάγνωσης των κωδικών προϊόντων στα ταμεία των supermarkets, το σύστημα ελέγχου φρένων (anti-lock brake) σε αυτοκίνητα, κ. ά. Σε κάθε ένα από τα σύγχρονα αυτοκίνητα μπορεί να υ- πάρχουν περισσότεροι από 50 μικροεπεξεργαστές που εκτός από τα φρένα, ελέγχουν σχεδόν κάθε άλλη λειτουργία στο αυτοκίνητο, δηλαδή τη λειτουργία της μηχανής, την αλλαγή ταχύτητας, τους αερόσακους, τα παράθυρα, το κλιματισμό, το σύστημα συναγερμού στο αυτοκίνητο [Steve Heath, 2003 ]. Συλλογή & Επεξεργασία Μετρήσεων (DAQ), Έλεγχος των Οργάνων Μέτρησης, Λειτουργία Κινητήρων. Μπορούμε να προγραμματίσουμε έναν μικροελεγκτή για να λαμβάνει δεδομένα και μετρήσεις, απευθείας από αισθητήρες (Data logging) ή όργανα μέτρησης και να ελέγχει / ρυθμίζει τα όργανα μέτρησης. Ακόμα, μπορούμε να προγραμματίσουμε έναν μικροελεγκτή για να λειτουργεί τους κινητήρες που κινούν τους τροχούς ενός ρομπότ και να οδηγεί / ελέγχει αυτό το ρομπότ, για να εκτελεί διάφορες λειτουργίες στο χώρο. Όπως υποδεικνύεται από τα δύο αυτά παραδείγματα, ο προγραμματισμός μικροελεγκτών επιτρέπει στο πρόγραμμα να επιδρά στο εξωτερικό περιβάλλον. Εικόνα 1: Χαρακτηριστικές εφαρμογές της πλακέτας Arduino περιλαμβάνουν το προγραμματισμό ρομπότ, εμπνευσμένου από το Mars Rover της NASA (επάνω) και τη λειτουργία ενός μικρού μετεωρολογικού σταθμού (κάτω). Όλα τα προγράμματα που έχουμε γράψει ή έχουμε εξετάσει μέχρι τώρα, είχαν μία ε- σωστρέφεια. Μπορούσαν δηλαδή να διαβάζουν δεδομένα από την οθόνη του υπολογιστή ή από αρχεία στο σκληρό δίσκο, να επεξεργάζονται αυτά τα δεδομένα και να εμφανίζουν τα αποτελέσματα στην οθόνη του υπολογιστή ή σε αρχεία. Όμως, όλη η λειτουργία τους περιορίζονταν στο περιβάλλον του υπολογιστή. Έλειπε από αυτά τα προγράμματα η δυνατότητα να επιδρούν στο εξωτερικό περιβάλλον, μέσα από τη λειτουργία και των έλεγχο συσκευών, οργάνων και κινητήρων. Αυτή τη δυνατότητα επιτρέπει ο προγραμματισμός των μικροελεγκτών. Τα προγράμματα που θα γράψουμε για αυτή την εξαμηνιαία εργασία, υποδηλώνουν δράση τους στο εξωτερικό περιβάλλον, αναβοσβήνοντας λυχνίες! Ακόμα και αυτή η απλή λειτουργία μπορεί να έχει πρακτικές εφαρμογές. Ένα απλό και σύγχρονο παρά- 3

δειγμα είναι τα σκουλαρίκια από ένα ολοκληρωμένο κύκλωμα με λυχνίες που η λειτουργία τους ο τρόπος που αναβοσβήνουν καθορίζεται από το πρόγραμμα στο μικροελεγκτή του κυκλώματος (Εικόνα 2). Ένα άλλο παράδειγμα είναι τα Χριστουγεννιάτικα φωτάκια που μπορεί να αναβοσβήνουν με διάφορους τρόπους, ανάλογα με το πρόγραμμα που επιλέγουμε στον μικροελεγκτή του κυκλώματος ή οι λυχνίες σ ένα πίνακα που μπορεί να αναβοσβήνουν, εμφανίζοντας διάφορα μηνύματα στο πίνακα, στη βάση του προγράμματος που εκτελείται στο μικροελεγκτή που ελέγχει τη λειτουργία του πίνακα. Μπορεί τα προγράμματα που θα γράψουμε για αυτή την εργασία να αναβοσβήνουν λυχνίες. Όμως, αυτή η λειτουργία υποδηλώνει τη δυνατότητα της ευρύτερης και γενικότερης δράσης του προγράμματος στο εξωτερικό περιβάλλον. Γιατί, όπως το πρόγραμμα αναβοσβήνει μία λυχνία, έτσι θα μπορούσε να στρέφει έναν κινητήρα για να κινεί ένα ρομπότ στο χώρο, να στρέφει τους διακόπτες σ ένα όργανο μέτρησης, αλλάζοντας τις ρυθμίσεις σ αυτό το όργανο, να λειτουργεί μία μηχανή. Έτσι, το πρόγραμμα, μέσα από ένα μικροελεγκτή, μπορεί να εκτελεί κάθε μία από τις λειτουργίες που εμείς εκτελούμε, όταν πατάμε ή στρέφουμε ένα διακόπτη ή όταν χειριζόμαστε μία μηχανή. Εικόνα 2: Σκουλαρίκια με LEDs που αναβοσβήνουν, σύμφωνα με το πρόγραμμα που εκτελείται στο μικροελεγκτή της πλακέτας σκουλαρίκι. Μέρος Ι: Εργαλεία για το Προγραμματισμό Μικροελεγκτών Για να προγραμματίσουμε ένα μικροελεγκτή, χρειαζόμαστε τόσο hardware τη πλακέτα του μικροελεγκτή όσο και software, για να γράψουμε το πρόγραμμα. Στις παρακάτω ενότητες, εξετάζουμε τα υλικά και τα εργαλεία που χρειαζόμαστε για να προγραμματίσουμε έναν μικροελεγκτή. 7.3 Hardware Για να προγραμματίσουμε ένα μικροελεγκτή, χρειαζόμαστε φυσικά το μικροελεγκτή. Ο μικροελεγκτής που θα προγραμματίσουμε για την εξαμηνιαία εργασία είναι ο AVR. Όμως, όταν προγραμματίζουμε μία λειτουργία σ ένα μικροελεγκτή, αυτός ο μικροε- 4

Εικόνα 3: Η πλακέτα Arduino που περιλαμβάνει έναν ATmega 328 μικροελεγκτή της Atmel, είναι η αναπτυξιακή πλακέτα που θα προγραμματίσουμε σ αυτή την άσκηση. λεγκτής είναι εγκατεστημένος σε μία πλακέτα, όπως αυτή στην Εικόνα 3. Η πλακέτα πάνω στη οποία είναι τοποθετημένος ο μικροελεγκτής που θα προγραμματίσουμε (Εικόνα 3), εκτός από το μικροελεγκτή, περιλαμβάνει όλα τα εξαρτήματα που χρειάζεται ο μικροελεγκτής, για να επικοινωνεί ή να επιδρά στο εξωτερικό περιβάλλον, δηλαδή: Θύρες εισόδου, όπου θα συνδέονται αισθητήρες. Θύρες εξόδου, όπου θα συνδέονται λυχνίες, ηχεία και κινητήρες. Μία θύρα USB που χρησιμεύει τόσο σαν πηγή τροφοδοσίας, όσο και για να ε- πιτρέπει στο μικροελεγκτή να συνδέεται σ έναν υπολογιστή. Μέσα από αυτή τη σύνδεση, μπορούμε προγράμματα που γράφουμε στον υπολογιστή να τα φορτώνουμε και να τα εκτελούμε στο μικροελεγκτή. Μνήμη, όπου αποθηκεύεται κάθε πρόγραμμα που εκτελείται στο μικροελεγκτή. Η πλακέτα μικροελεγκτή που θα προγραμματίσουμε για την εξαμηνιαία εργασία είναι η πλακέτα Arduino που παριστάνεται στην Εικόνα 3. Η επιλογή αυτής της πλακέτας είναι γιατί μπορεί εύκολα να προγραμματιστεί στη C. Αυτός είναι ο λόγος που ο Arduino χρησιμοποιείται όλο και περισσότερο, τόσο σε πανεπιστήμια, όσο και στην αγορά. Εάν δεν έχουμε τη πλακέτα, μπορούμε / έχουμε τη δυνατότητα να προσομοιώσουμε στον υπολογιστή μας, την εκτέλεση ενός προγράμματος από το μικροελεγκτή αυτής 5

της πλακέτας. Όμως, εάν επιχειρήσουμε να προσομοιώσουμε την εκτέλεση ενός προγράμματος από το μικροελεγκτή της πλακέτας, αντί να χρησιμοποιήσουμε τη πραγματική πλακέτα, θα χρειαστούμε ένα προσομοιωτή, δηλαδή ένα πρόγραμμα που προσομοιώνει το μικροελεγκτή σε μία πλακέτα Arduino. Στις επόμενες ενότητες, εξετάζουμε το software και το προσομοιωτή(ες) που χρειαζόμαστε, για να προγραμματίσουμε μία πλακέτα Arduino και πως μπορούμε να εγκαταστήσουμε αυτό το software στον υπολογιστή μας. 7.4 Software Το Περιβάλλον Ανάπτυξης Προγραμμάτων (IDE) για τον Arduino Λέγεται πως ένας μικροελεγκτής χωρίς software είναι σαν ένα ποδήλατο χωρίς τιμόνι. Όπως κάθε επεξεργαστής / μικροεπεξεργαστής, ο μικροελεγκτής βασίζεται στις εντολές ενός προγράμματος, για να εκτελέσει οποιαδήποτε λειτουργία. Για να γράψουμε το πρόγραμμα που θα οδηγεί τον μικροελεγκτή να εκτελέσει μία λειτουργία, χρειαζόμαστε το περιβάλλον ανάπτυξης που θα χρησιμοποιήσουμε για να γράψουμε το πρόγραμμα. Ο Arduino παρέχει το περιβάλλον ανάπτυξης που χρησιμοποιούμε για να γράφουμε προγράμματα για αυτό το μικροελεγκτή, σαν ελεύθερο λογισμικό που μπορούμε να κατεβάσουμε από την ιστοσελίδα του Arduino. Για να κατεβάσουμε και να εγκαταστήσουμε το περιβάλλον ανάπτυξης προγραμμάτων για τον Arduino, πληκτρολογούμε στο Google, τη παρακάτω διεύθυνση: http://arduino.cc/en/main/software Εκεί θα βρούμε εκδόσεις του περιβάλλοντος ανάπτυξης, για Windows, Mac OS X και Linux. Επιλέγουμε την έκδοση, για το λειτουργικό σύστημα στον υπολογιστή μας και κατεβάζουμε το αντίστοιχο συμπιεσμένο αρχείο. Η διαδικασία που ακολουθούμε για να εγκαταστήσουμε το περιβάλλον ανάπτυξης είναι η τυπική διαδικασία για την εγκατάστασης ενός προγράμματος: 1 Δημιουργούμε πρώτα ένα καινούργιο κατάλογο στο σκληρό δίσκο C, έστω με το όνομα Arduino 1.0.3 2 Αποσυμπιέζουμε το συμπιεσμένο αρχείο που κατεβάσαμε, για παράδειγμα το συμπιεσμένο αρχείο arduino-1.0.3-windows.zip, εάν έχουμε επιλέξει την έκδοση για Windows, σto κατάλογο που έχουμε προηγούμενα δημιουργήσει στο σκληρό δίσκο C. 3 Ανοίγουμε τον αποσυμπιεσμένο φάκελο και αναζητούμε το εκτελέσιμο αρχείο arduino.exe. Κάνουμε διπλό κλικ σ αυτό το αρχείο, για να ξεκινήσει η εγκατάσταση του προγράμματος στον υπολογιστή μας. Όταν ολοκληρωθεί, η εγκατάσταση του περιβάλλοντος, μπορούμε να ξεκινήσουμε να γράφουμε προγράμματα σ αυτό. Πριν όμως ξεκινήσουμε να γράφουμε δικά μας 6

Εικόνα 4: Για να εγκαταστήσουμε το ολοκληρωμένο περιβάλλον ανάπτυξης για τον Arduino, στον υπολογιστή μας, αποσυμπιέζουμε το αρχείο που κατεβάζουμε από το site του Arduino, στο σκληρό δίσκο C. προγράμματα, μπορούμε πρώτα να ανοίξουμε ένα από τα παραδείγματα που υπάρχουν / περιλαμβάνονται στο περιβάλλον ανάπτυξης, το πρόγραμμα που αναβοσβήνει μία λυχνία (Blink). Κάθε βιβλίο για τον Arduino έχει ένα πρόγραμμα που αναβοσβήνει μία λυχνία. Γι αυτό και το περιβάλλον ανάπτυξης του Arduino περιέχει / περιλαμβάνει αυτό το πρόγραμμα. Μπορούμε να το βρούμε, εάν ανοίξουμε το περιβάλλον ανάπτυξης και ακολουθήσουμε τη διαδρομή: Αρχείο\παραδείγματα\Βασικά\Blink Όταν ανοίξουμε το πρόγραμμα, θα δούμε ότι έχει τη μορφή που παριστάνεται στην Εικόνα 5. Πριν εξετάσουμε πιο αναλυτικά το πρόγραμμα, χρειάζεται να εγκαταστήσουμε κάποια ακόμα προγράμματα. Εάν είχαμε / διαθέταμε τη πραγματική πλακέτα του Arduino, θα μπορούσαμε να προχωρήσουμε απευθείας στην εκτέλεση του προγράμματος της Εικόνας 5, από τον Arduino. Επειδή όμως, δεν έχουμε τη πραγματική πλακέτα του Arduino, θα πρέπει να προσομοιώσουμε τη λειτουργία του. Έτσι, θα χρειαστεί να εγκαταστήσουμε δύο ακόμα 7

Εικόνα 5: Το πρόγραμμα Blink που αναβοσβήνει μία λυχνία, στο ολοκληρωμένο περιβάλλον ανάπτυξης του Arduino. προγράμματα, το Virtual BreadBoard και το Simduino, για να προσομοιώσουμε την εκτέλεση προγραμμάτων στον Arduino. 7.5 Simulator for Arduino (Simduino) Εάν είχαμε τη πλακέτα του Arduino, δεν θα χρειαζόμασταν προσομοιωτή. Θα συνδέαμε απλά τη πλακέτα στη θύρα USB του υπολογιστή μας, θα φορτώναμε το πρόγραμμα της Εικόνας 3 στη μνήμη FLASH του Arduino και θα εκτελούσαμε το πρόγραμμα στον μικροεπεξεργαστή, οπότε θα βλέπαμε την λυχνία που υπάρχει πάνω στη πλακέτα, να αναβοσβήνει. Επειδή όμως, δεν έχουμε τη πραγματική πλακέτα του Arduino, μπορούμε μόνον να προσομοιώσουμε την εκτέλεση του προγράμματος της Εικόνας 3, σ ένα προσομοιωτή, όπως στο εργαστήριο μικροεπεξεργαστών. Ένας σχεδόν ελεύθερος προσομοιωτής του Arduino που μπορούμε να 8

Εικόνα 6: Η διαδικασία για να κατεβάσουμε και να εγκαταστήσουμε στον υπολογιστή μας, έναν προσομοιωτή για τον Arduino. χρησιμοποιήσουμε για να προσομοιώσουμε τα προγράμματα αυτής της άσκησης είναι ο Simduino που μπορούμε να κατεβάσουμε από τη διεύθυνση: http://www.arduino.com.au/simulator-for-arduino.html Αφού εγκαταστήσουμε στον υπολογιστή μας το προσομοιωτή για τον Arduino, μπορούμε να τον χρησιμοποιήσουμε για να προσομοιώσουμε την εκτέλεση του προγράμματος της Εικόνας 5, αλλά και γενικότερα οποιουδήποτε προγράμματος που θα μπορούσε να εκτελεστεί από την αναπτυξιακή πλακέτα του Arduino. Το περιβάλλον του προσομοιωτή παριστάνεται στην Εικόνα 7. Για να προσομοιώσουμε ένα πρόγραμμα για τον Arduino στο προσομοιωτή, πρώτα γράφουμε το πρόγραμμα στο περιβάλλον ανάπτυξης προγράμματος του Arduino, όπως δηλαδή το πρόγραμμα στην Εικόνα 5 και το αποθηκεύουμε. Μετά ανοίγουμε το προσομοιωτή (Εικόνα 7), πατάμε το κουμπί Load (Φόρτωση), για να φορτώσουμε ένα πρόγραμμα που έχουμε προηγούμενα γράψει στο περιβάλλον ανάπτυξης του Arduino και μετά πατάμε το Run στη γραμμή εντολών για να προσομοιώσουμε την εκτέλεση του προγράμματος. Η διαδικασία παριστάνεται στις Εικόνες 7 8 και με αυτό τον τρόπο μπορούμε να προσομοιώσουμε το πρόγραμμα της Εικόνας 5. 9

Εικόνα 7: Το περιβάλλον προσομοίωσης του Arduino. Για να προσομοιώσουμε ένα πρόγραμμα στο προσομοιωτή, πρώτα επιλέγουμε τo τύπο της πλακέτα Arduino που θα προσομοιώσουμε. Μετά φορτώνουμε το πρόγραμμα που την εκτέλεσή του στη συγκεκριμένη πλακέτα, θα προσομοιώσουμε. 10

Εικόνα 8: Η προσομοίωση του προγράμματος Blink που αναβοσβήνει μία λυχνία. 11

7.6 Virtual BreadBoard Ένα διαφορετικό και πολύ πιο αναπτυγμένο, όμως όχι δωρεάν, περιβάλλον προσομοίωσης του Arduino είναι το Virtual Breadboard. Μπορούμε να κατεβάσουμε αυτό το πρόγραμμα από τη διεύθυνση: http://www.virtualbreadboard.com 7.7 Αναβοσβήνοντας μία Λυχνία Ανάλυση του Προγράμματος Έχοντας εγκαταστήσει το software, δηλαδή το περιβάλλον ανάπτυξης και το προσομοιωτή που χρειαζόμαστε για να γράφουμε και είτε να εκτελούμε ή να προσομοιώνουμε τη εκτέλεση προγραμμάτων στη πλακέτα Arduino, μπορούμε τώρα να ξεκινήσουμε να γράφουμε και να εκτελούμε προγράμματα σ αυτή τη πλακέτα. Εικόνα 9: Η διαδικασία προσομοίωσης του Arduino στο Virtual BreadBoard. 12

Πρόγραμμα E.1 Το πρώτο πρόγραμμα που εξετάζουμε είναι το Blink, το πρόγραμμα που αναβοσβήνει μία λυχνία. Όλο το πρόγραμμα παριστάνεται στην Εικόνα 10. Επειδή αυτό το πρόγραμμα είναι ένα από τα παραδείγματα στο περιβάλλον ανάπτυξης του Arduino, δεν χρειάζεται να το ξαναγράψουμε. Απλά ανοίγουμε το πρόγραμμα στο περιβάλλον α- νάπτυξης του Arduino μπορούμε να το ανοίξουμε, εκτελώντας την εντολή: Αρχείο\παραδείγματα\Βασικά\Blink Αποθηκεύουμε το πρόγραμμα σ ένα φάκελο, στον υπολογιστή μας, έστω στα έγγραφα. Ανοίγουμε το προσομοιωτή, φορτώνουμε το πρόγραμμα από το φάκελο όπου το έχουμε αποθηκεύσει και πατάμε την εντολή Run, για να το εκτελέσουμε στο περιβάλλον του προσομοιωτή. Η προσομοίωση του προγράμματος παριστάνεται στην Εικόνα 8. Πρόγραμμα Ε.1 Προγραμματίζοντας τον Arduino να αναβοσβήνει μία λυχνία /* Blink Ανάβει μία λυχνία για ένα δευτερόλεπτο (κατάσταση ON), μετά τη κλείνει (κατάσταση OFF) για ένα δευτερόλεπτο και αυτή η λειτουργία επαναλαμβάνεται διαρκώς. */ /* Στις περισσότερες πλακέτες Arduino, η θύρα 13 έχει μία λυχνία (LED) συνδεμένη σ αυτή (Εικόνα 3). Δηλώνουμε τη μεταβλητή led και δίνουμε σ αυτή τη μεταβλητή τη τιμή 13, για να αναφερόμαστε στη θύρα 13 του Arduino, χρησιμοποιώντας τη μεταβλητή led. */ int led = 13; // Η συνάρτηση setup() εκτελείται μία φορά, όταν ξεκινάει η εκτέλεση // του προγράμματος. void setup() { // Ορίζουμε τη θύρα 13 ως θύρα εξόδου. pinmode(led, OUTPUT); } 13

Πρόγραμμα Ε.1 συνέχεια // Η συνάρτηση loop() παρακάτω, ανάβει τη λυχνία για 1 sec και μετά // τη κλείνει την για 1 sec, σε μία διαρκή επανάληψη. void loop() { digitalwrite(led, HIGH); // Ανάβει τη λυχνία, δημιουργώντας τάση 5V στη θύρα 13 του // Arduino delay(1000); // Καθυστερεί 1 sec, δηλαδή καθυστερεί την εκτέλεση της επόμενης // εντολής του προγράμματος, για 1 sec. digitalwrite(led, LOW); // Κλείνει τη λυχνία, δημιουργώντας τάση 0V στη θύρα 13 του // Ardino delay(1000); // Καθυστερεί 1 sec, δηλαδή καθυστερεί την εκτέλεση της επόμενης // εντολής του προγράμματος, για 1 sec. } Εικόνα 10: Ο κώδικας του προγράμματος Blink. Μία προφανής επέκταση του προγράμματος Blink, είναι να προγραμματίσουμε τον Arduino να αναβοσβήνει δύο LEDs, αντί μιας. Παρακάτω, είναι η περιγραφή και η ανάλυση του προγράμματος. Πρόγραμμα E.2 Προγραμματίζοντας τον Arduino να αναβοσβήνει δύο LEDs. Μία τροποποίηση του προγράμματος Blink είναι να προγραμματίσουμε τη πλακέτα Arduino να ανάβει μία από δύο λυχνίες (Εικόνα 11). Το τροποποιημένο πρόγραμμα θα πρέπει να δημιουργεί 14

διαρκώς τυχαίους αριθμούς σε μία διαρκή επανάληψη και ανάλογα με το αν κάθε ένας από αυτούς τους αριθμούς είναι μονός ή ζυγός, να ανάβει τη μία ή την άλλη από δύο λυχνίες (Εικόνα 11) Ανάλυση / Ανάπτυξη του Προγράμματος Συνδέουμε μία ακόμα λυχνία, στη θύρα 12 του Arduino, όπως παριστάνεται στην Εικόνα 11. Ένα πρόγραμμα που ελέγχει δύο ή περισσότερες ακόμα λυχνίες, μπορεί να ανοίγει και να κλείνει κάθε μία από αυτές, όπως το πρόγραμμα Blink, παραπάνω, ε- λέγχει τη λυχνία στη θύρα 13. Ορίζουμε / δηλώνουμε μία ακόμα μεταβλητή, τη μεταβλητή led12, για να αναφερόμαστε στη λυχνία που είναι συνδεμένη στη θύρα 12 του Arduino. Εικόνα 11: Η προφανής τροποποίηση του προγράμματος Blink είναι να προγραμματίσουμε τον Arduino να ανάβει μία από δύο λυχνίες, ανάλογα με μία συνθήκη. 15

Πρόγραμμα Ε.2 Προγραμματίζοντας τον Arduino να ανάβει μία από δύο λυχνίες /* Το πρόγραμμα ανάβει μία από δύο λυχνίες ανάλογα με το αν ένας τυχαίος αριθμός είναι μονός ή ζυγός */ // Καθορίζουμε και δηλώνουμε τις θύρες Εισόδου/Εξόδου. int head = 13; int tail = 12; long randomnumber = 0; // Η συνάρτηση setup() εκτελείται μία φορά, όταν ξεκινάει η // εκτέλεση του προγράμματος. void setup () { /* Ορίζουμε κάθε μία από τις θύρες που χρησιμοποιεί το πρόγραμμα, ως θύρα εξόδου */ pinmode(head, OUTPUT); pinmode(tail, OUTPUT); randomseed(analogread(0)); // Αυτή η συνάρτηση λειτουργεί ώστε το πρόγραμμα να // δημιουργεί ένα διαφορετικό τυχαίο αριθμό κάθε φορά // που εκτελείται } 16

Πρόγραμμα Ε.2 συνέχεια // Διαρκής Επανάληψη void loop() { randomnumber = random(0,100); /* Εξετάζουμε εάν ο τυχαίος αριθμός που δημιουργείται σε κάθε επανάληψη είναι μονός ή ζυγός, ώστε το πρόγραμμα να ανάψει τη μία ή την άλλη λυχνία */ } Εικόνα 12: Η γενική μορφή του προγράμματος Με τη προσομοίωση του προγράμματος της Εικόνας 12, ολοκληρώνεται το πρώτο μέρος τη; εργασίας. Σ αυτό το μέρος, εξετάσαμε πώς να εγκαταστήσουμε το software που χρειαζόμαστε για να προγραμματίζουμε τη πλακέτα Arduino και δοκιμάσαμε το περιβάλλον ανάπτυξης και το προσομοιωτή, εκτελώντας ένα απλό και χαρακτηριστικό παράδειγμα προγραμματισμού του Arduino, το Blink. Στο επόμενο μέρος, επιχειρούμε να γράψουμε πιο σύνθετα προγράμματα και να προγραμματίσουμε πιο σύνθετες λειτουργίες στον Arduino. 17