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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΘΕΜΑ : ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ DIGITAL ELECTRONICS

Arduino Teachers Workshop

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

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

Lab 1: Experimenting on Arduino & AI Sense

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

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

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

Μάθημα 1 Πρώτα Βήματα στη Σχεδίαση μίας Εγκατάστασης: Απαιτούμενες Ηλεκτρικές Γραμμές και Υπολογισμοί

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

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

Α. Βασική Χρήση κινητήρα - Servo με τη βιβλιοθήκη <Servo.h>

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

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

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

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

Εκπαιδευτική Ρομποτική με ARDUINO. για εκπαιδευτικούς και μαθητές. 1o Μέρος: Απλά Κυκλώματα

Σειριακό Τερματικό Serial Terminal (Dumb Terminal)

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

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

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

Τετάρτη 5-12/11/2014. ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ

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

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

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

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

ΕΝΟΤΗΤΑ 7: ΑΙΣΘΗΤΗΡΕΣ ΥΠΕΡΥΘΡΩΝ

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

Μάθημα 10 Η Σχεδίαση Εγκαταστάσεων Κίνησης

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

Project 5: Συνθέτοντας μουσική

ρομολογητής WiFi N300 (N300R)

Βασικές Έννοιες της Πληροφορικής

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

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

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

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

Δρομολογητής WiFi N150 (N150R)


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

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

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

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

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

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

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

Εγκατάσταση. Επέκταση εμβέλειας WiFi N600. Μοντέλο WN3500RP

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

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

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

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Μείνετε πάντα σε επαφή

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

Analog vs Digital. Δούρβας Ιωάννης ΙΩΑΝΝΗΣ ΔΟΥΡΒΑΣ

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

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

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

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

Β τάξη. ΕΝΟΤΗΤΑ 1 Κεφάλαιο 2: Το εσωτερικό του Υπολογιστή. Εικόνα 2.1: Η Κεντρική Μονάδα.

Εργασία Τεχνολογίας Α Γυμνασίου: ΕΠΙΚΟΙΝΩΝΙΑ. Αβανίδης Βασίλης

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

Εγκατάσταση. Επέκταση εμβέλειας WiFi N300. Μοντέλο EX2700

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών

ΕΝΟΤΗΤΑ 12 ΣΕΙΡΙΑΚΗ ΔΙΕΠΑΦΗ

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

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

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

USB_6008_terminal_31. PCI_6023E_terminal_68. PCI_6023E_terminal_67

Περιγραφή της 3 ης εργαστηριακής εφαρμογής: ρομποτικό σύστημα LEGO NXT

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

Σημειώσεις κεφαλαίου 16 Αρχές επικοινωνίας με ήχο και εικόνα

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

Transcript:

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

ΕΠΙΔΙΩΞΗ TOY B ΜΕΡΟΥΣ Η επιδίωξη στο Β Μέρος είναι να εξετάσουμε διάφορες μορφές επικοινωνίας: την επικοινωνία υπολογιστή με μικροελεγκτή, μικροελεγκτή με μικροελεγκτή, μικροελεγκτή με αισθητήρες. Εξετάζουμε κάθε μία από τις παραπάνω μορφές επικοινωνίας του μικροελεγκτή με άλλες συσκευές, όχι offline, όπως κατά τη φόρτωση ενός προγράμματος από τον υπολογιστή σ έναν μικροελεγκτή, αλλά online, δηλαδή κατά την εκτέλεση ενός προγράμματος, από το μικροελεγκτή. Πως δηλαδή, ένας μικροελεγκτής, κατά την εκτέλεση ενός προγράμματος, μπορεί να: Λαμβάνει δεδομένα από τον υπολογιστή, αλλά και να στέλνει αποτελέσματα στον υπολογιστή, εγκαθιστώντας ένα κανάλι επικοινωνίας με τον υπολογιστή που μέσα από αυτό το κανάλι, μπορεί να ελέγχει την εκτέλεση του προγράμματος στο μικροελεγκτή. Λαμβάνει δεδομένα από αισθητήρες, να επεξεργάζεται αυτά τα δεδομένα, online και στη βάση αυτή της ανάλυσης να εκτελεί διάφορες λειτουργίες, για παράδειγμα να θέτει σε λειτουργία ένα κινητήρα. Οι εφαρμογές της online επικοινωνίας υπολογιστή μικροελεγκτή είναι πολλές. Συνδέοντας συσκευές, μπορούμε να λύνουμε πιο εύκολα σύνθετα προβλήματα. Χαρακτηριστικά, συνδέοντας ασύρματα το μικροελεγκτή που ελέγχει τη κίνηση ενός ρομπότ σ έναν υπολογιστή, μπορούμε μέσα από τον υπολογιστή να ελέγχουμε και να κατευθύνουμε τη κίνηση ή διάφορες άλλες λειτουργίες του ρομπότ, στο χώρο. Ε.1 Εισαγωγή στο Β Μέρος Αναφέραμε στο Α Μέρος της εργασίας πως βασικές εφαρμογές των μικροελεγκτών περιλαμβάνουν τα ενσωματωμένα συστήματα, το προγραμματισμό και τον έλεγχο ρομπότ και γενικά, το προγραμματισμό και τη λειτουργία συστημάτων αυτόνομης λειτουργίας, τα συστήματα ελέγχου, τα συστήματα συλλογής & επεξεργασίας μετρήσεων. Οι «έξυπνες συσκευές» εξαπλώνονται σε όλο και περισσότερα αντικείμενα και περιοχές εφαρμογής. Χρησιμοποιούμε «έξυπνα κινητά» και «έξυπνες συσκευές», ό- πως είναι οι σύγχρονες οικιακές συσκευές, για παράδειγμα, οι σύγχρονες συσκευές παρασκευής καφέ, στο σπίτι. Ακούμε για «έξυπνα δίκτυα επικοινωνίας» και «έξυπνα σπίτια», όπου όλες οι συσκευές ρυθμίζονται και λειτουργούν από τον υπολογιστή ή από το κινητό. Σε κάθε «έξυπνη συσκευή», η έξυπνη λειτουργία εκτελείται από ένα μικροελεγκτή. Κάθε έξυπνη συσκευή από το έξυπνο κινητό μέχρι την μηχανή παρασκευής καφέ στο σπίτι, συνδυάζει ψηφιακά και αναλογικά ηλεκτρονικά κυκλώματα. Δίνουμε εντολές στη συσκευή για τη λειτουργία που θα εκτελέσει, μέσα από μία οθόνη αφής ή ακόμα και προφορικά, όπως σ ένα κινητό τηλέφωνο ή πιο απλά, στρέφοντας ένα διακόπτη, για να επιλέξουμε ένα από διαφορετικά προγράμματα λειτουργίας. Αυτές οι εντολές ανα-

λύονται από ψηφιακά κυκλώματα και ενεργοποιούν αναλογικά κυκλώματα. Όλη η λειτουργία ανάγνωση μίας εντολής, επεξεργασία και ενεργοποίηση ενός αναλογικού κυκλώματος για την εκτέλεση της λειτουργίας που υποδεικνύεται από την εντολή, συντονίζεται από ένα μικροελεγκτή. Μία άλλη διάσταση ένα άλλο χαρακτηριστικό των έξυπνων συσκευών που πολύ χαρακτηριστικά αναδεικνύεται στα «έξυπνα σπίτια», είναι η επικοινωνία μεταξύ συσκευών, ψηφιακής με ψηφιακή ή ακόμα ψηφιακής με αναλογική. Σ ένα «έξυπνο σπίτι», ρυθμίζουμε τη λειτουργία όλων των συσκευών στο σπίτι, από τον υπολογιστή. Μπορούμε να ανάβουμε και να κλείνουμε τα φωτιστικά, να θέτουμε σε λειτουργία, α- κόμα και να επιλέγουμε το πρόγραμμα λειτουργίας κάθε συσκευής της ηλεκτρικής κουζίνας, του πλυντηρίου, της θέρμανσης και των κλιματιστικών από τον υπολογιστή ή ακόμα και από ένα κινητό τηλέφωνο (Εικόνα 1). Εικόνα 1: Ένα απλό παράδειγμα εφαρμογής του Arduino στα «έξυπνα σπίτια» είναι ο παραπάνω μηχανισμός που αυτόματα λειτουργεί τις κουρτίνες σ ένα σπίτι. Ο υπολογιστής συνδέεται μέσω του Arduino και μπορεί να λαμβάνει μετρήσεις της έντασης του φωτός από έναν αισθητήρα φωτός. Στη βάση αυτών των μετρήσεων, ο υπολογιστής, μέσω του Arduino, λειτουργεί το κινητήρα που ανοίγει ή κλείνει τις κουρτίνες στο σπίτι.

Τα δίκτυα τηλεπικοινωνιών και τα δίκτυα υπολογιστών συνενώνονται / συνδέονται σε μία κοινή τεχνολογία μετάδοσης, αποστολής και λήψης ομιλίας, εικόνας και δεδομένων. Αυτή η σύγκλιση των δικτύων τηλεπικοινωνιών και δικτύων υπολογιστών σε κοινά δίκτυα επικοινωνίας, μας επιτρέπει να επικοινωνούμε, χρησιμοποιώντας ακόμα και συσκευές διαφορετικού τύπου σε κάθε άκρο μίας γραμμής, χρησιμοποιώντας δηλαδή έναν υπολογιστή στο ένα άκρο της γραμμής και ένα σταθερό τηλέφωνο στο άλλο άκρο. Καθώς αναλογικά και ψηφιακά σήματα μπορεί εύκολα να μετατρέπονται από τη μία στην άλλη μορφή, ένας υπολογιστής μπορεί να συνδέεται ενσύρματα ή ασύρματα και να επικοινωνεί όχι μόνον με ένα σταθερό τηλέφωνο, αλλά και με αισθητήρες και κινητήρες, όπως στα «έξυπνα σπίτια», ακόμα και με όργανα μετρήσεων, όπως συμβαίνει σε πολλά εργαστήρια. Όταν μιλάμε σ ένα κινητό, η ομιλία στο μικρόφωνο του κινητού τηλεφώνου μετατρέπεται σε ραδιοκύματα. Σ αυτή τη μορφή, η ομιλία ή ένα γραπτό μήνυμα σ ένα κινητό, μπορεί να μεταδίδονται σε πολύ μεγάλες αποστάσεις και να λαμβάνονται από ένα άλλο κινητό, χιλιάδες χιλιόμετρα μακριά. Εκεί, το σήμα μετατρέπεται στη πρωταρχική του μορφή, ως ηχητικό σήμα, εικόνα ή γραπτό μήνυμα. Όπως η ομιλία μεταδίδεται από κινητό σε κινητό, στη μορφή ραδιοκυμάτων, έτσι πληροφορίες και δεδομένα μπορεί να μεταδίδονται από κινητό σε υπολογιστή ή από υπολογιστή σε μικροελεγκτή και αντίστροφα. Τα πλεονεκτήματα αυτής της επικοινωνίας είναι πολλά. Χαρακτηριστικά, από έναν υ- πολογιστή, ακόμα και από ένα κινητό μπορούμε να επικοινωνούμε με το μικροελγκτή ενός ρομπότ και να συντονίζουμε τη κίνηση και διάφορες λειτουργίες του ρομπότ, στο χώρο. Όμως, η επικοινωνία υπολογιστή μικροελεγκτή επιτρέπει μία ακόμα δυνατότητα εφαρμογή, τη σύνδεση και επικοινωνία του υπολογιστή με όργανα μετρήσεων. Εικόνα 2: Μία εφαρμογή για κινητά που λειτουργεί ώστε να μας επιτρέπει να συνδέουμε ασύρματα ένα κινητό με όργανα μετρήσεων, για παράδειγμα μ ένα πολύμετρο, να παίρνουμε τις μετρήσεις από αυτό το πολύμετρο και να τις παριστάνουμε γραφικά, στην οθόνη του κινητού.

Καθώς ένας μικροελεγκτής μπορεί να λαμβάνει αναλογικά δεδομένα στις αναλογικές εισόδους του, για παράδειγμα μετρήσεις από διάφορους αισθητήρες, να επεξεργάζεται ψηφιακά αυτά τα δεδομένα και να δημιουργεί σήματα στις αναλογικές εξόδους του, για να θέτει σε λειτουργία κινητήρες και να ελέγχει τη λειτουργία τους, ένας μικροελεγκτής μπορεί να λειτουργεί ως κάρτα πρόσκτησης δεδομένων (κάρτα DAQ), για να συνδέουμε έναν υπολογιστή ή ένα κινητό σε αναλογικές συσκευές, δηλαδή αισθητήρες, όργανα μετρήσεων και μηχανές. Έτσι, μέσα από έναν μικροελεγκτή, ένα όργανο μετρήσεων, για παράδειγμα ένα πολύμετρο μπορεί να συνδέεται και να στέλνει τις μετρήσεις του, σ έναν υπολογιστή ή σ ένα κινητό (Εικόνα 2). O υπολογιστής ή το κινητό μπορεί τότε να επεξεργάζεται αυτές τις μετρήσεις και να τις παριστάνει γραφικά στην οθόνη του (Εικόνα 2). Κυρίως όμως, ο υπολογιστής ή το κινητό που συνδέεται σ ένα όργανο μετρήσεων ή σε μία μηχανή, μπορεί να ρυθμίζει τη λειτουργία του οργάνου μέτρησης ή της μηχανής. Μπορεί δηλαδή να αλλάζει τις ρυθμίσεις ή τη κλίμακα μέτρησης στο όργανο μέτρησης, να θέτει σε λειτουργία τη μηχανή και να ελέγχει τη λειτουργία της ή να τη διακόπτει (Machine Condition Monitoring), όπως ακριβώς θα ρυθμίζαμε τη λειτουργία αυτού του οργάνου ή της μηχανής, από τους διακόπτες λειτουργίας τους. Έχουν αναπτυχθεί εφαρμογές για κινητά, ώστε από ένα κινητό να μπορούμε να χειριζόμαστε όργανα μετρήσεων και μηχανές (Εικόνα2). Έχοντας αναπτύξει τις δυνατότητες και τις εφαρμογές από την επικοινωνία μεταξύ υπολογιστή και μικροελεγκτή και κινητού με μικροελεγκτή, στις επόμενες ενότητες, ε- ξετάζουμε τη διαδικασία αυτής της επικοινωνίας, μέσα από απλές εφαρμογές. CR5J13 Ε.2 Το πιο απλό Δίκτυο Γνωρίζουμε και πρέπει να είμαστε αρκετά εξοικειωμένοι με την ιδέα των δικτύων υπολογιστών. Όταν δηλαδή, συνδέουμε ενσύρματα ή ασύρματα τους υπολογιστές που βρίσκονται στο κτίριο μία εταιρίας ή μία υπηρεσίας ή σε ακόμα μεγαλύτερες κλίμακες, όταν συνδέουμε ενσύρματα ή ασύρματα τους υπολογιστές σε διαφορετικά κτίρια στη ίδια πόλη ή ακόμα και σε διαφορετικές πόλεις, σ ένα δίκτυο, ώστε τα δεδομένα, το λογισμικό (software), αλλά και το hardware κάθε υπολογιστή να είναι προσβάσιμα και να μπορεί να χρησιμοποιούνται από κάθε άλλο υπολογιστή στο δίκτυο. Σχεδόν καθημερινά, χρησιμοποιούμε το μεγαλύτερο δίκτυο υπολογιστών που υπάρχει, το διαδίκτυο και βλέπουμε στη πράξη την εφαρμογή της ιδέας των δικτύων υπολογιστών, καθώς μέσα από το διαδίκτυο, μπορούμε να επικοινωνούμε μέσω emails, αλλά και με κλήσεις και video κλήσεις, να επισκεπτόμαστε blogs και ιστοσελίδες που βρίσκονται σε διάφορους άλλους υπολογιστές στο διαδίκτυο, να μοιραζόμαστε αρχεία, α- κόμα και να εκτελούμε προγράμματα και εφαρμογές που είναι εγκαταστημένα σε άλλους υπολογιστές στο διαδίκτυο. Όλη η λειτουργία των δικτύων υπολογιστών και του διαδικτύου, όσο σύνθετη και εάν φαίνεται ή είναι, βασίζεται σε κάποιες απλές αρχές: τα πρωτόκολλα επικοινωνίας, το τρόπο διακίνησης / μεταφοράς των δεδομένων, τη διευθυνσιοδότηση.

Εικόνα 3: Στα προγράμματα Ε.3 Ε.5, εξετάζουμε την επικοινωνία μεταξύ συσκευών, στο πιο απλό δίκτυο που αποτελείται από έναν υπολογιστή που συνδέεται με καλώδιο USB, σε μία πλακέτα Arduino. Σ αυτή την άσκηση, τη πρώτη της Β Ενότητας, εξετάζουμε την ιδέα των δικτύων υ- πολογιστών και της επικοινωνίας δια μέσου συσκευών που συνδέονται μεταξύ τους, ενσύρματα ή ασύρματα, μέσα από την επικοινωνία του υπολογιστή με έναν μικροελεγκτή. Έχουμε ήδη χρησιμοποιήσει τη σύνδεση του υπολογιστή σ έναν μικροελεγκτή μέσω της θύρας USB, για να φορτώσουμε στο μικροελεγκτή, ένα πρόγραμμα που έχουμε γράψει στον υπολογιστή. Σ αυτή την άσκηση, χρησιμοποιούμε τη USB σύνδεση υπολογιστή μικροελεγκτή, για μία διαφορετική λειτουργία, την επικοινωνία του υπολογιστή με το μικροελεγκτή online, δηλαδή την ανταλλαγή δεδομένων μεταξύ του υπολογιστή και του μικροελεγκτή, κατά την εκτέλεση ενός προγράμματος στο μικροελεγκτή. Επιτυγχάνοντας / υλοποιώντας την επικοινωνία υπολογιστή μικροελεγκτή, δημιουργούμε το απλούστερο δυνατό δίκτυο, από δύο συσκευές, τον υπολογιστή από τη μία και το μικροελεγκτή από την άλλη (Εικόνα 3). Παρά την απλότητα του, αυτό το δίκτυο περιλαμβάνει όλα τα χαρακτηριστικά λειτουργίας των πιο σύνθετων δικτύων υπολογιστών, δηλαδή το πρωτόκολλο επικοινωνίας, τη διακίνηση / μεταφορά των δεδομένων ανάμεσα στις δύο συσκευές και τη διευθυνσιοδότηση. Έτσι, μέσα από τα επόμενα προγράμματα (Ε.3 Ε.5), εξετάζουμε τη διαδικασία της επικοινωνίας υπολογιστή μικρολεγκτή, αλλά και γενικότερα, τα βασικά στοιχεία της λειτουργίας ενός δικτύου υπολογιστών. Πρόγραμμα Ε.3 Προγραμματίζοντας τον Arduino να στέλνει δεδομένα στον υπολογιστή. Γράψτε ένα πρόγραμμα, ώστε ο Arduino να δημιουργεί τυχαίους αριθμούς από 1 έως 100 και

να στέλνει αυτούς τους αριθμούς στον υπολογιστή, ώστε να εμφανίζονται στην ο- θόνη του υπολογιστή. Ανάλυση / Ανάπτυξη του προγράμματος Ο Arduino μπορεί να δημιουργεί τυχαίους αριθμούς, χρησιμοποιώντας τις συναρτήσεις randomseed() και random() της C, όπως στο πρόγραμμα της Εικόνας 4. Θα πρέπει να στέλνει αυτούς τους τυχαίους αριθμούς στον υπολογιστή, μέσω της σύνδεσής του με τον υπολογιστή, χρησιμοποιώντας τη θύρα USB που λειτουργεί ως σειριακή θύρα. Το πρόγραμμα που εκτελεί αυτή τη λειτουργία παριστάνεται στην Εικόνα 4. Πρόγραμμα Ε.3 Προγραμματίζοντας τον Arduino να στέλνει τυχαίους αριθμούς στον υπολογιστή /* * SerialOutput sketch * Αποστολή τυχαίων αριθμών στον υπολογιστή */ void setup() Serial.begin(9600); // ρυθμός μετάδοσης 9600 bits/sec randomseed(analogread(0)); // Αυτή η συνάρτηση λειτουργεί ώστε το πρόγραμμα να // δημιουργεί ένα διαφορετικό τυχαίο αριθμό κάθε φορά // που εκτελείται void loop() int number; Serial.print("The number is "); number = random(0,100); Serial.println(number); // Στείλε το τυχαίο αριθμό στη σειριακή θύρα delay(500); // Καθυστέρηση 500 ms, ανάμεσα σε αριθμούς Εικόνα 4: Το πρόγραμμα που στέλνει δεδομένα από τον Arduino στον υπολογιστή

Πρώτα, αντιγράφουμε το παραπάνω πρόγραμμα όπως είναι, στο περιβάλλον ανάπτυξης του Arduino (Εικόνα 5) και το αποθηκεύουμε, έστω με το όνομα Sending _random_numbers. Μπορείτε να χρησιμοποιήσετε όποιο άλλο όνομα θέλετε. Μετά φορτώνουμε το πρόγραμμα στο προσομοιωτή, όπως κάναμε με το πρόγραμμα Blink. Επειδή το πρόγραμμα περιλαμβάνει την αποστολή τιμών των τυχαίων αριθμών που δημιουργεί η συνάρτηση random() στον υπολογιστή, πριν εκτελέσουμε αυτό το πρόγραμμα στο προσομοιωτή, ανοίγουμε το παράθυρο με τις μονάδες Εισόδου / Εξόδου του Arduino, πατώντας το κουμπί Input / Output, κάτω από τη γραμμή εντολών του προσομοιωτή (Εικόνα 6). Εικόνα 5: Πρώτα γράφουμε ή αντιγράφουμε κάθε ένα από τα προγράμματα της εργασίας, στο περιβάλλον ανάπτυξης του Arduino.

Εικόνα 6: Η προσομοίωση του προγράμματος E.3 που δημιουργεί τυχαίους αριθμούς και στέλνει αυτούς τους αριθμούς στη σειριακή οθόνη του υπολογιστή. Πριν την εκτέλεση του προγράμματος, χρειάζεται να ανοίξουμε το παράθυρο με τις μονάδες Εισόδου / Εξόδου του Arduino, πατώντας το κουμπί Input/Output, κάτω από τη γραμμή εντολών του προσομοιωτή. Αυτό το παράθυρο περιέχει και προσομοιώνει τη σειριακή οθόνη, απ όπου ο Arduino μπορεί να διαβάζει δεδομένα από τον υπολογιστή, αλλά και να στέλνει αποτελέσματα προς τον υπολογιστή.

Κατά την εκτέλεση του προγράμματος, θα δούμε οι τυχαίοι αριθμοί που αδιάκοπα δημιουργεί η συνάρτηση random(), να εκτυπώνονται στο παράθυρο Εισόδου / Εξόδου του προσομοιωτή (Εικόνα 6). Το παράθυρο Εισόδου / Εξόδου παριστάνει και μας επιτρέπει να βλέπουμε τις τιμές στις αναλογικές θύρες του Arduino, όταν αυτές λειτουργούν ως Έξοδοι, αλλά και να δίνουμε ή να αλλάζουμε τις τιμές σ αυτές τις θύρες, όταν λειτουργούν ως θύρες Εισόδου. Το παράθυρο Εισόδου / Εξόδου στο προσομοιωτή, μας επιτρέπει ακόμα να βλέπουμε τα δεδομένα στη σειριακή θύρα του Arduino, δηλαδή στη θύρα USB που λειτουργεί ως σειριακή θύρα, είτε αυτά τα δεδομένα προέρχονται και στέλνονται από τον υπολογιστή, είτε προέρχονται από το μικροελεγκτή, όπως σ αυτό το πρόγραμμα. Εάν εκτελούσαμε το πρόγραμμα σε μία πραγματική πλακέτα Arduino και όχι στο προσομοιωτή, οι τυχαίοι αριθμοί που θα δημιουργούνταν από το μικροελεγκτή, θα εκτυπώνονταν στη σειριακή οθόνη του περιβάλλοντος ανάπτυξης του Arduino, στον υπολογιστή. Πρόγραμμα Ε.4 Προγραμματίζοντας τον Arduino να λαμβάνει δεδομένα από τον υπολογιστή. Γράψτε ένα πρόγραμμα, ώστε ο Arduino να αναβοσβήνει τη λυχνία στη θύρα 13, με ρυθμό που υποδηλώνεται από μία ακέραια τιμή 0 έως 9 που ο υπολογιστής θα στέλνει, μέσω της θύρας USB, κατά την εκτέλεση του προγράμματος. Ανάλυση / Ανάπτυξη του προγράμματος Στην επικοινωνία με τον υπολογιστή, ο Arduino μπορεί να όχι μόνο να στέλνει δεδομένα, αλλά και να λαμβάνει δεδομένα από τον υπολογιστή. Τα δεδομένα που σ αυτό το πρόγραμμα στέλνει ο υπολογιστής και που ο Arduino θα πρέπει να διαβάσει από τη θύρα USB που λειτουργεί ως σειριακή θύρα είναι μία ακέραια τιμή από 0 έως 9. Αυτή η τιμή υποδεικνύει πόσο γρήγορα, ο Arduino θα πρέπει να αναβοσβήνει τη λυχνία στη θύρα 13. Έτσι, σ αυτό το πρόγραμμα: ο υπολογιστής θα πρέπει να στέλνει μία ακέραια τιμή από 0 έως 9 στη θύρα USB και ο Arduino θα πρέπει να διαβάζει αυτή τη τιμή και αναβοσβήνει τη λυχνία, με ρυθμό ανάλογο με αυτή τη τιμή. Όλο το πρόγραμμα παριστάνεται στην Εικόνα 7. Όπως με το προηγούμενο πρόγραμμα, αντιγράφουμε το πρόγραμμα της Εικόνας 7, στο περιβάλλον ανάπτυξης του Arduino. Αποθηκεύουμε το πρόγραμμα, έστω με το όνομα LED_rate. Μετά, φορτώνουμε το πρόγραμμα στο προσομοιωτή, ανοίγουμε το παράθυρο Εισόδου / Εξόδου στο προσομοιωτή και εκτελούμε το πρόγραμμα. Όμως, ενώ το προηγούμενο πρόγραμμα έγραφε τιμές στη σειριακή οθόνη, αυτό το πρόγραμμα περιμένει / επιχειρεί να διαβάσει δεδομένα από τη σειριακή οθόνη, συγκεκριμένα μία τιμή από 0 έως 9 που θα προσδιορίζει πόσο γρήγορα ο Arduino θα αναβοσβήνει τη λυχνία στη θύρα 13. Έτσι, κατά την εκτέλεση του προγράμματος, θα πρέπει να πληκτρολογήσουμε μία τιμή από 0 έως 9 στη σειριακή οθόνη, στο παράθυρο Εισόδου / Εξόδου του προσομοιωτή (Εικόνα ). Όσο πλησιέστερα στο 9 είναι αυτή η τιμή, τόσο πιο γρήγορα ο Arduino θα αναβοσβήνει τη λυχνία στη θύρα 13 (Εικόνα ).

Πρόγραμμα Ε.4 Προγραμματίζοντας τον Arduino να λαμβάνει δεδομένα από τον υπολογιστή /* * SerialReceive sketch * */ const int ledpin = 13; // θύρα της λυχνίας int blinkrate = 0; // ρυθμός που ο Arduino θα ανάβει και θα κλείνει τη // και που θα δίνεται από το πρόγραμμα void setup() Serial.begin(9600); // Ρυθμός μετάδοσης = 9600 bits/sec pinmode(ledpin, OUTPUT); // Ορίζουμε τη θύρα 13 ως έξοδο void loop() if ( Serial.available()) // Ελέγχουμε εάν υπάρχουν δεδομένα από τον υπολογιστή // στη θύρα USB char ch = Serial.read(); // Διαβάζουμε τα δεδομένα από τον υπολογιστή

Πρόγραμμα Ε.4 συνέχεια if ( isdigit(ch) ) //Εάν τα δεδομένα από τον υπολογιστή είναι ένα ψηφίο, //δηλαδή μία τιμή από 0 έως 9, τότε: blinkrate = (ch - '0'); // Μετατρέπουμε το χαρακτήρα σε ακέραια τιμή blinkrate = blinkrate * 100; // Ο πραγματικός ρυθμός είναι 100 φορές το ψηφίο // που λαμβάνουμε blink(); //Καλούμε τη συνάρτηση blink() void blink() digitalwrite(ledpin,high); delay(blinkrate); // H καθυστέρηση ρυθμίζεται από τη τιμή που στέλνει ο // υπολογιστής digitalwrite(ledpin,low); delay(blinkrate); Εικόνα 7: Το πρόγραμμα που λαμβάνει δεδομένα που στέλνονται από τον υπολογιστή, στον Arduino.

Εικόνα 8: H προσομοίωση του προγράμματος Ε.4 που αναβοσβήνει τη led στη θύρα 13 του Arduino, με ταχύτητα που υποδεικνύεται από τη τιμή που πληκτρολογούμε στη σειριακή οθόνη.

Ε.3 To Μοντέλο Αναφοράς OSI Για να εγκαταστήσουμε την επικοινωνία μεταξύ δύο συσκευών, χρειάζεται απαραίτητα να θεσπίσουμε κάποιους κανόνες που θα ρυθμίζουν την επικοινωνία μεταξύ των δύο αυτών συσκευών. Στα δίκτυα υπολογιστών, οι κανόνες / συμβάσεις που ρυθμίζουν την επικοινωνία μεταξύ των υπολογιστών σ ένα δίκτυο, διαχωρίζονται και διατυπώνονται σε πέντε επίπεδα το φυσικό, το ηλεκτρικό, το λογικό, το επίπεδο δεδομένων και το επίπεδο εφαρμογής που συνιστούν το μοντέλο αναφοράς OSI (Open Systems Interconnect model). Ακόμα και η λειτουργία του απλού δικτύου υπολογιστή μικροελεγκτή αυτής της άσκησης ακολουθεί και βασίζεται στο μοντέλο αναφοράς OSI. Δηλαδή, προκειμένου να εγκαταστήσουμε την επικοινωνία υπολογιστή μικροελεγκτή, χρειάστηκε πρώτα να διατυπώσουμε του κανόνες αυτής της επικοινωνίας. Όπως και η επικοινωνία σ ένα δίκτυο υπολογιστών, έτσι και οι κανόνες / συμβάσεις της επικοινωνίας υπολογιστή μικροελεγκτή διατυπώθηκαν σε πέντε διακριτά επίπεδα: Φυσικό Επίπεδο Σ αυτό το επίπεδο, καθορίζουμε τη μορφή ή το τρόπο της σύνδεσης δύο συσκευών, εάν δηλαδή αυτή η σύνδεση θα είναι ενσύρματη ή ασύρματη και εάν θα χρησιμοποιεί τη σειριακή ή τη παράλληλη θύρα ή τη θύρα USB των δύο συσκευών που θα συνδέει. Αν και στην άσκηση περιοριζόμαστε στη προσομοίωση της λειτουργίας του Arduino, αυτή η προσομοίωση βασίζεται στη παραδοχή πως εάν διαθέταμε τη πραγματική πλακέτα, οι δύο συσκευές θα συνδέονταν μεταξύ τους με ένα καλώδιο USB. Επίπεδο Κβάντισης του Σήματος (Κβαντικό Επίπεδο) Κάθε πληροφορία ή δεδομένο μεταδίδεται σαν μία μορφή ενέργειας. Η ενέργεια που παριστάνει και που χρησιμοποιείται για να μεταφέρει μία πληροφορία μπορεί να έχει τη μορφή ηλεκτρικού ρεύματος, όταν η σύνδεση των συσκευών γίνεται με ηλεκτρικό καλώδιο, όπως στις παραδοσιακές τηλεφωνικές γραμμές. Εναλλακτικά, η ενέργεια που χρησιμοποιούμε για να μεταδώσουμε δεδομένα ή πληροφορίες μπορεί να έχει τη μορφή φωτός, όπως στα καλώδια οπτικών ινών ή τη μορφή ραδιοκυμάτων, όπως στην ασύρματη σύνδεση συσκευών. Έχοντας καθορίσει τη μορφή της σύνδεσης δύο συσκευών, στο φυσικό επίπεδο, ταυτόχρονα καθορίζουμε και τη μορφή της ενέργειας, για τη μετάδοση δεδομένων μεταξύ αυτών των συσκευών. Έτσι, για συσκευές που συνδέοντα με ένα καλώδιο USB, η μετάδοση δεδομένων θα γίνεται μέσα από τη ροή ηλεκτρικού ρεύματος, ανάμεσα σ αυτές τις συσκευές. Μία πληροφορία ή ένα δεδομένο, απαραίτητα εντοπίζεται ως μεταβολή στη τιμή ή την ένταση της ενέργειας που χρησιμοποιούμε για τη μετάδοση αυτής της πληροφορίας. Για παράδειγμα, εάν επιλέξουμε να μεταδίδουμε τα δεδομένα μεταξύ δύο συσκευών σαν ηλεκτρικό ρεύμα, τότε απαραίτητα, αυτά τα δεδομένα θα παριστάνονται και θα εντοπίζονται μέσα από τη μεταβολή της τάσης ή της έντασης του ρεύματος που τα μεταφέρει από τη μία στην άλλη συσκευή. Έτσι, αφού καθορίσουμε τη μορφή της ενέργειας για τη μετάδοση δεδομένων ρεύμα,

Εικόνα 9. To Μοντέλο Αναφοράς OSI: H επικοινωνία μεταξύ συσκευών σε κάθε δίκτυο, από το πιο απλό δίκτυο, μέχρι το πιο σύνθετο δίκτυο που υπάρχει, δηλαδή το διαδίκτυο, απαραίτητα καθορίζεται από κανόνες που διατυπώνονται σε πέντε επίπεδα λειτουργίας του δικτύου. Αυτά τα πέντε επίπεδα αποτελούν το μοντέλο αναφοράς OSI που χρησιμεύει σαν πρότυπο, για τη σχεδίαση κάθε δικτύου. φώς ή ραδιοκύματα χρειάζεται να χωρίσουμε το εύρος διακύμανσης των τιμών αυτής της μορφής ενέργειας σε στάθμες ή επίπεδα, ώστε η μεταβολή της τιμής αυτής της μορφής ενέργειας από μία στάθμη σε μία άλλη, να ερμηνεύεται / λαμβάνεται ως ξεχωριστή πληροφορία. Αυτή είναι η σύμβαση που κάνουμε σ αυτό το επίπεδο. Σε πόσες δηλαδή στάθμες θα διακρίνουμε το εύρος τιμών της ενέργειας που χρησιμοποιούμε για τη μετάδοση των δεδομένων μεταξύ δύο συσκευών. Για παράδειγμα, στη ψηφιακή σύνδεση δύο συσκευών, όπως είναι η σύνδεση του υπολογιστή με το μικροελεγκτή σ αυτή την άσκηση, η τάση του ρεύματος στο καλώδιο που συνδέει τις δύο συσκευές μπορεί να είναι από 0 V έως 5 V. Όμως, χωρίζουμε αυτό το εύρος τιμών σε δύο επίπεδα ή στάθμες, 0 V και 5 V. Έτσι, μία τιμή τάσης 0 V 2.5 V, μία συγκεκριμένη χρονική στιγμή στο καλώδιο που συνδέει τις δύο συσκευές, λαμβάνεται ως τάση 0 V. Ενώ, μία τιμή τάσης πάνω από 2.5 V, λαμβάνεται ως τάση 5 V.

Λογικό Επίπεδο Σ αυτό το επίπεδο συνδέουμε τις στάθμες τάσης ή γενικότερα, τις στάθμες στη διακύμανση των τιμών της ενέργειας που χρησιμοποιούμε για τη μετάδοση των δεδομένων και που διακρίναμε στο προηγούμενο επίπεδο, με μονάδες πληροφορίας. Εάν για παράδειγμα, συνδέσουμε δύο συσκευές ψηφιακά, λαμβάνοντας κάθε χρονική στιγμή, τη τάση στο καλώδιο που συνδέει τις δύο συσκευές, είτε ως 0 V είτε ως 5 V, τότε σ αυτό το επίπεδο χρειάζεται να συνδέσουμε κάθε μία από τις δύο στάθμες 0 V και 5 V με ξεχωριστές λογικές πληροφορίες. Έτσι, μπορούμε να συνδέουμε τη στάθμη 0 V με τη λογική τιμή 0 και τη στάθμη 5 V με τη λογική τιμή 1, στη δυαδική παράσταση δεδομένων. Εναλλακτικά, θα μπορούσαμε να συνδέσουμε τη στάθμη 0 V με τη λογική τιμή 1 και τη στάθμη 5 V με τη λογική τιμή 0 (αρνητική λογική). Επίπεδο Δεδομένων Σ αυτό το επίπεδο, καθορίζουμε το ρυθμό μετάδοσης των δεδομένων. Πιο συγκεκριμένα, σ αυτό το επίπεδο καθορίζουμε τον αριθμό των αλλαγών στις τιμές του σήματος (π.χ. τάσης) ανά δευτερόλεπτο. Το πλήθος των αλλαγών ανά δευτερόλεπτο μετριέται σε baud. Έτσι, τόσο στα δύο παραπάνω προγράμματα (Ε.3 και Ε.4), όσο και στα επόμενα, χρησιμοποιούμε τη συνάρτηση serial.begin() με παράμετρο τη τιμή 9600, για να ορίσουμε τον αριθμό των αλλαγών του σήματος μεταξύ υπολογιστή και μικροελεγκτή στα 9600 baud. Αυτό δεν σημαίνει απαραίτητα ότι ο ρυθμός μετάδοσης των δεδομένων ανάμεσα στον υπολογιστή και το μικροελεγκτή είναι 9600 bits/ sec. Αυτός θα είναι ο ρυθμός μετάδοσης, εάν χρησιμοποιούμε δύο επίπεδα τάσης 0 V και 5 V, για τη μετάδοση δεδομένων ανάμεσα στον υπολογιστή και το μικροελεγκτή. Αν όμως, χρησιμοποιούσαμε 8 στάθμες, εάν δηλαδή διαιρούσαμε το εύρος των τιμών τάσης στο καλώδιο σύνδεσης υ- πολογιστή μικροελεγκτή σε 8 στάθμες (0, 1, 2, 3, 4, 5, 6 και 7), τότε κάθε αλλαγή στη τιμή σήματος θα μετέφερε 3 bits, οπότε ο ρυθμός μετάδοσης των δεδομένων θα ήταν 3 φορές ο ρυθμός baud. Ακόμα, σ αυτό το επίπεδο, προσδιορίζουμε εάν οι αλλαγές στη τιμή του σήματος που μεταφέρει τα δεδομένα συνδυάζονται σε ομάδες των 8, 9 ή 10 αλλαγών. Δηλαδή, προσδιορίζουμε πως αλλαγές στη τιμή του σήματος μετάδοσης που δηλώνουν μονάδες πληροφορίας, μπορεί να συνδυάζονται σε πιο σύνθετες μονάδες πληροφορίας που αντιστοιχούν στα γράμματα ενός αλφαβήτου ή σε λέξεις. Συνοψίζοντας τις συμβάσεις σε κάθε ένα από τα παραπάνω επίπεδα, για την επικοινωνία υπολογιστή μικροελεγκτή αυτής της άσκησης, αυτή η επικοινωνία χρησιμοποιεί μία ενσύρματη σύνδεση με και καλώδιο USB. H μετάδοση δεδομένων γίνεται με τη μεταβολή της τάσης του ρεύματος στο καλώδιο από 0 V 5 V. Χωρίζουμε το πεδίο τιμών [0 V, 5 V] της τάσης του ρεύματος στο καλώδιο υπολογιστή μικροελεγκτή σε δύο επίπεδα ή στάθμες 0 V και 5 V και συνδέουμε τη στάθμη 0 V με τη λογική τιμή 0 και τη στάθμη 5 V με τη λογική τιμή 1. Ορίζουμε τις αλλαγές στη τιμή της τάσης στο καλώδιο της σύνδεσης υπολογιστή μικ-

ροελεγκτή στα 9600 baud. Επειδή χρησιμοποιούμε δύο στάθμες τάσης 0 V και 5 V, αυτός ο ρυθμός baud αντιστοιχεί σε ρυθμό μετάδοσης 9600 bits/sec. Συνδυάζουμε ξεχωριστά bits σε ομάδες των 8 bits που παριστάνουν τους χαρακτήρες ASCII, δηλαδή είτε γράμματα του λατινικού αλφαβήτου ή ψηφία ή κάποιο από τα υπόλοιπα σύμβολα στο πληκτρολόγιο ενός υπολογιστή. Επίπεδο εφαρμογής Σ αυτό, το ανώτερο επίπεδο του μοντέλου αναφοράς OSI, καθορίζουμε πως οι σύνθετες μονάδες πληροφορίας του επιπέδου δεδομένων τα γράμματα ή οι λέξεις μπορεί να συνδυάζονται σε ακόμα πιο σύνθετες πληροφορίες. Για παράδειγμα, στο επόμενο πρόγραμμα, τα δεδομένα που στέλνονται από τον υπολογιστή στο μικροελεγκτή δεν είναι ένας μόνον χαρακτήρας ένα γράμμα ή ένα ψηφίο, αλλά ένας συνδυασμός χαρακτήρων και ακέραιων τιμών που παριστάνουν διάφορες εντολές στο μικροελεγκτή. Έτσι, ο μικροελεγκτής θα πρέπει να διαβάσει κάθε bit στη σειριακή θύρα και να συνδυάσει αυτά τα bits πρώτα σε χαρακτήρες ομάδες των 8 bits και μετά, σε ποιο σύνθετες μορφές πληροφορίας, ανασυνθέτοντας τις εντολές που στέλνονται από τον υπολογιστή, ώστε να εκτελέσει λειτουργίες που υποδεικνύονται από αυτές. Τα παραπάνω πέντε στρώματα συμβάσεων αποτελούν το μοντέλο αναφοράς OSI. Η σχεδίαση και ο διαχωρισμός των λειτουργιών σ ένα δίκτυο επικοινωνίας δεν ακολουθεί αναγκαστικά τη παραπάνω διαίρεση και μπορεί να περιλαμβάνει περισσότερα επίπεδα. Όμως, η παραπάνω διαίρεση αποδίδει με ακρίβεια και σαφήνεια το μοντέλο αναφοράς OSI και μας βοηθάει να κατανοήσουμε τα θέματα που περιλαμβάνει η επικοινωνία μεταξύ συσκευών, είτε αυτή η επικοινωνία είναι μεταξύ δύο μόνον συσκευών είτε μεταξύ συσκευών σ ένα σύνθετο δίκτυο. Όσο σύνθετο και αν είναι ένα δίκτυο επικοινωνίας, δεν πρέπει να ξεχνάμε πως η ε- πικοινωνία μεταξύ αναλογικών ή ψηφιακών ηλεκτρονικών συσκευών είναι μετάδοση ενέργειας στη μορφή ρεύματος, φωτός ή ραδιοκυμάτων. Η σειριακή επικοινωνία περιλαμβάνει τη μεταβολή στην ένταση της ενέργειας που χρησιμοποιείται για τη μεταφορά δεδομένων μεταξύ των διάφορων συσκευών. Εάν για παράδειγμα, η ενέργεια που χρησιμοποιείται για τη μετάδοση δεδομένων μεταξύ συσκευών είναι ηλεκτρικό ρεύμα, τότε η σειριακή μετάδοση δεδομένων περιλαμβάνει τη μεταβολή της τάσης του ρεύματος στο καλώδιο που συνδέει πομπό και δέκτη, με καθορισμένο ρυθμό. Κάθε μεταβολή παριστάνει ένα λογικό 0 ή ένα λογικό 1 και η συσκευή που λαμβάνει το σήμα θα πρέπει να εντοπίζει τις μεταβολές στη τιμή αυτού του σήματος και να τις μετατρέπει στις αντίστοιχες λογικές τιμές. Υπάρχουν δύο μέθοδοι / τρόποι μετάδοσης: η σύγχρονη και η ασύγχρονη μετάδοση. Στην ασύγχρονη μετάδοση, ο ρυθμός μετάδοσης των δεδομένων καθορίζεται από κοινού από το πομπό και το δέκτη και ελέγχεται ανεξάρτητα σε κάθε συσκευή. Στη σύγχρονη μετάδοση, ο πομπός καθορίζει το ρυθμό μετάδοσης. Σύγχρονη μετάδοση χρησιμοποιείται για παράδειγμα στην επικοινωνία της μονάδας επεξεργασίας (CPU) ενός επεξεργαστή με τη μνήμη, όπου η μονάδα επεξεργασίας καθορίζει το ρυθμό μετάδοσης δεδομένων από και προς τη μνήμη. Ασύγχρονη μετάδοση συνήθως χρησιμοποιείται μεταξύ συσκευών, όπως μεταξύ υπολογιστών ή μεταξύ υπολογιστή και μικροελεγκτή.

Πρόγραμμα Ε.5 Προγραμματίζοντας τον Arduino να λαμβάνει δεδομένα από τον υπολογιστή. Στη βάση των δύο παραπάνω προγραμμάτων, γράψτε ένα πρόγραμμα, ώστε ο Arduino να διαβάζει δεδομένα από τον υπολογιστή στη θύρα USB και στη βάση αυτών των δεδομένων να ανάβει και να σβήνει κάθε μία από τρείς λυχνίες που συνδέονται στις ψηφιακές θύρες 13, 12 και 11 του μικροελεγκτή. Εικόνα 10. Αντί μίας, συνδέουμε τρείς LEDs σε αντίστοιχες ψηφιακές θύρες του Arduino. Συνδέουμε το ένα άκρο κάθε LED, στη γείωση (GND) και το άλλο άκρο σε μία από τις θύρες 13, 12 και 11, αντίστοιχα. Έχοντας έτσι συνδέσει τις LEDs στον Arduino, επιχειρούμε να γράψουμε ένα πρόγραμμα που θα ανάβει κάθε μία από τις τρείς λυχνίες με ένταση που για κάθε λυχνία, θα πληκτρολογούμε στη σειριακή οθόνη, κατά την εκτέλεση του προγράμματος.

Ανάλυση / Ανάπτυξη του προγράμματος Σ αυτό το πρόγραμμα, η επικοινωνία ανάμεσα στον υπολογιστή και το μικροελεγκτή λειτουργεί, ώστε ο υπολογιστής να ρυθμίζει τη λειτουργία του μικροελεγκτή, προσδιορίζοντας στο μικροελεγκτή ποια από τρείς λυχνίες που συνδέονται στις ψηφιακές θύρες 13, 12 και 11, θα ανάβει και με τι ένταση (Εικόνα 10). Το πρωτόκολλο επικοινωνίας υπολογιστή μικροελεγκτή, σ αυτό το πρόγραμμα, λειτουργεί ως εξής. Kατά την εκτέλεση του προγράμματος, πληκτρολογούμε στη σειριακή οθόνη του υπολογιστή ποια ή ποιες από τις τρείς LEDs, ο Arduino θα πρέπει να ανάβει και με τι ένταση. Για παράδειγμα, θα μπορούσαμε να πληκτρολογήσουμε στη σειριακή οθόνη, τη συμβολοσειρά: r9 για να υποδηλώσουμε στο μικροελεγκτή να ανάψει τη κόκκινη λυχνία (θύρα 13) με ένταση 9 ή εναλλακτικά, r9y3g9 για να υποδηλώσουμε στο μικροελεγκτή να ανάψει τη κόκκινη λυχνία (θύρα 13) με ένταση 9, τη κίτρινη (θύρα 12) με ένταση 3 και τη πράσινη (θύρα 11) με ένταση 9. Τα δεδομένα που πληκτρολογούμε στη σειριακή οθόνη του υπολογιστή, μεταφέρονται στη σειριακή θύρα RX του Arduino και από εκεί στη μνήμη του μικροελεγκτή. Ο Arduino θα πρέπει να διαβάσει τη συμβολοσειρά που μεταφέρεται από τη σειριακή οθόνη στη μνήμη του, μέσω της σειριακής θύρας, να την επεξεργαστεί και να ανάψει κάθε λυχνία με την ένταση που υποδηλώνεται από την αντίστοιχη τιμή, στη συμβολοσειρά. Η γενική μορφή του προγράμματος και της επικοινωνίας υπολογιστή μικροελεγκτή σ αυτό το πρόγραμμα είναι παρόμοια με αυτή στο προηγούμενο πρόγραμμα. Μόνο που τα δεδομένα που ο Arduino θα πρέπει να διαβάζει είναι πιο σύνθετα. Αντί ενός χαρακτήρα στη σειριακή οθόνη, ο μικροελεγκτής θα πρέπει να διαβάζει ένα συνδυασμό από χαρακτήρες γράμματα και ψηφία που ορίζουν ποιες από τρείς λυχνίες, ο μικροελεγκτής θα πρέπει να ανάβει και με τι ένταση. Αυτή είναι η βασική διαφορά από το προηγούμενο πρόγραμμα. Η συνάρτηση setup() θα είναι όπως στο προηγούμενο πρόγραμμα. Μόνον η συνάρτηση loop () θα πρέπει να αλλάξει, ώστε ο μικροελεγκτής, αντί ενός χαρακτήρα, να μπορεί να διαβάζει μία συμβολοσειρά της μορφής: r9y3g9 και να ανάβει κάθε λυχνία με την ένταση που υποδεικνύεται από τα δεδομένα σ αυτή τη συμβολοσειρά. Έτσι, η συνάρτηση loop() που διαβάζει τα δεδομένα από τον υπολογιστή και εκτελεί τη λειτουργία που υποδεικνύεται από αυτά τα δεδομένα μπορεί να έχει τη μορφή που περιγράφεται στην Εικόνα 11.

Πρόγραμμα Ε.5 Προγραμματίζοντας τον Arduino να λαμβάνει δεδομένα από τον υπολογιστή /* * Serial Receive sketch. Προσδιορίζοντας στον Arduino * ποιες από τρείς λυχνίες να ανάβει και με τι ένταση */ const int red = 13; // πρώτη λυχνία const int yellow = 12; // δεύτερη λυχνία const int green = 11; // τρίτη λυχνία int led = 0; // Η LED που ο Arduino θα πρέπει να ανάψει int entash = 0; // Η Φωτεινότητα αυτής της LED void setup() // Αυτή η συνάρτηση θα είναι όπως στο προηγούμενο // πρόγραμμα void loop() if ( Serial.available() > 0 ) // Εφόσον υπάρχουν δεδομένα από τον υπολογιστή // στη σειριακή θύρα RX του Arduino char inbyte = Serial.read(); // Διάβασε το επόμενο byte δεδομένων, λαμβάνοντας // υπόψη τις τιμές 'r', 'y', 'g' και '0' έως '9' και // αγνοώντας κάθε άλλη τιμή if (inbyte == 'r') led = red;

Πρόγραμμα Ε.5 συνέχεια if (inbyte == 'y') led = yellow; if (inbyte == 'g') led = green; if (inbyte >= '0' && inbyte <= '9') entash = inbyte - '0'; light(led, entash); void light (int ledpin, int photeinothta) photeinothta = map(photeinothta, 0, 9, 0, 255); // Μετατρέπουμε την ένταση από μία τιμή 0 9, // σε μία τιμή 0-255 analogwrite(ledpin, photeinothta); //Αντί της digitalwrite, χρησιμοποιούμε την //analogwrite Εικόνα 11: Το πρόγραμμα Ε.5 που προγραμματίζει τον Arduino να ανάβει τρείς LEDs, κάθε μία με ένταση που καθορίζεται από τα δεδομένα στη σειριακή οθόνη, κατά την εκτέλεση του προγράμματος.

Εικόνα 12. Η προσομοίωση του προγράμματος E.5 που ανάβει τρείς LEDs με διαφορετική φωτεινότητα.

Εικόνα 13. H σύνδεση Arduino ipad. Ο μικροελεγκτής εκτελεί το ίδιο πρόγραμμα το E.5. Όμως, πληκτρολογούμε τα δεδομένα στο ipad και από την οθόνη του ipad μεταφέρονται στον Arduino, μέσω της σειριακής σύνδεσής του με το ipad. Ανάλογα, θα μπορούσαμε να χρησιμοποιήσουμε ένα iphone ή το Android, για την επικοινωνία με τον Arduino. Ε.4 Ελέγχοντας τη Λειτουργία ενός Κυκλώματος Στα προηγούμενα προγράμματα, είδαμε την επικοινωνία υπολογιστή με μικροελεγκτή, την εκτέλεση απλών λειτουργιών άνοιγμα / κλείσιμο λυχνιών από το μικροελεγκτή, στη βάση δεομένων, από τον υπολογιστή. Σ αυτή την ενότητα εξετάζουμε λίγο πιο σύνθετες λειτουργίες. Πρόγραμμα Ε.6 Έλεγχος της λειτουργίας ενός κυκλώματος. Γράψτε ένα πρόγραμμα ώστε ο μικροελεγκτής να ελέγχει τη λειτουργία του απλού κυκλώματος με διακόπτη και αντίσταση της Εικόνας 14.

Εικόνα 14. H συνδεσμολογία του Arduino με το κύκλωμα της αντίστασης. Όταν ο διακόπτης του κυκλώματος είναι ανοικτός, η τάση στη ψηφιακή θύρα 2 του Arduino είναι 0 V. Όταν κλείνουμε το διακόπτη και υπάρχει ρεύμα στο κύκλωμα, τότε η τάση στη ψηφιακή θύρα 2 του μικροελεγκτή γίνεται 5 V. Έτσι, η λειτουργία του προγράμματος είναι απλή. Το πρόγραμμα θα πρέπει να ελέγχει τη τάση τη λογική τιμή στη θύρα 2. Όταν η τιμή σ αυτή τη θύρα είναι 1, τότε το κύκλωμα είναι κλειστό. To κύκλωμα του διακόπτη και της αντίστασης συνδέεται στη ψηφιακή θύρα εισόδου 2 του μικροελεγκτή. Ο μικροελεγκτής θα πρέπει να μπορεί να εντοπίζει εάν ο διακόπτης του κυκλώματος είναι κλειστός ή ανοικτός και όταν ο διακόπτης κλείνει, τότε ο μικροελεγκτής θα πρέπει να ανάβει τη λυχνία στη θύρα 13. Ανάλυση / Ανάπτυξη του προγράμματος Η λειτουργία του προγράμματος είναι απλή. Το πρόγραμμα θα πρέπει να ελέγχει τη τάση τη λογική τιμή στη θύρα 2. Όταν η τιμή σ αυτή τη θύρα είναι 1, τότε το κύκλωμα είναι κλειστό. Ο μικροελεγκτής θα δηλώνει αυτή τη κατάσταση του κυκλώματος, απλά ανάβοντας τη LED στη θύρα 13. Όταν δηλαδή υπάρχει ρεύμα στο κύκλωμα, ο μικροελεγκτήσς θα ανάβει τη LED στη θύρα 13.

Εικόνα 15. To κύκλωμα μέτρησης θερμοκρασίας χρησιμοποιώντας τον Arduino και έναν αισθητήρα μέτρησης θερμοκρασίας, τον LM35. Ε.5 Διαβάζοντας Δεδομένα από Αισθητήρες Όπως ο μικροελεγκτής μπορεί να εντοπίζει τη κατάσταση ενός κυκλώματος, εάν είναι ανοικτό ή κλειστό, ανάλογα, μπορεί να διαβάζει δεδομένα από αισθητήρες. Μία πολύ βασική εφαρμογή των μικροελεγκτών είναι να διαβάζουν και να επεξεργάζονται δεδομένα από αισθητήρες. Σ αυτή την ενότητα και στα παρακάτω προγράμματα, εξετάζουμε αυτή τη λειτουργία: πως δηλαδή ο μικροελεγκτής μπορεί να διαβάζει τη μέτρηση της θερμοκρασίας από έναν αισθητήρα θερμοκρασίας (τον LM35). Πρόγραμμα Ε.7 Ανάγνωση και Επεξεργασία Μετρήσεων από έναν Αισθητήρα Θερμοκρασίας. Γράψτε ένα πρόγραμμα ώστε ο μικροελεγκτής να διαβάζει τη μέτρηση της θερμοκρασίας από έναν αισθητήρα θερμοκρασίας (τον LM35) και να ανάβει μία λυχνία, όταν αυτή η θερμοκρασία φτάνει ή υπερβαίνει ένα όριο. Ανάλυση / Ανάπτυξη του προγράμματος Η λειτουργία του προγράμματος είναι απλή. Μόνον που επειδή θα πρέπει να διαβάζουμε δεδομένα από μία αναλογική θύρα, την αναλογική θύρα 0, θα πρέπει να χρησιμοποιήσουμε την εντολή εισόδου: analogread() αντί της εντολής Serial.read(). H μορφή της συνάρτησης loop() που διαβάζει τη τιμή στην αναλογική θύρα 2 και ανάβει ή όχι τη LED, στη βάση αυτής της τιμής παριστάνεται στην Εικόνα 15.

Πρόγραμμα Ε.7 Διαβάζοντας δεδομένα από αισθητήρες /* * Διαβάζοντας δεδομένα από αισθητήρες */ const int inpin = 0; // Αναλογική είσοδος const float Threshold = 40.0 //Όριο θερμοκρασίας που //ελέγχουμε void setup() // Αυτή η συνάρτηση θα είναι όπως σε προηγούμενα // προγράμματα void loop() int timh; float millivolts; float temperature; timh = analogread(inpin); millivolts = (timh / 1024.) * 5000; // Μετατρέπουμε τη τάση που διαβάζουμε σε mv temperature = millivolts / 10.0; // Γενικά, κάθε βαθμός C αντιστοιχεί σε 10 mv if ( temperature > Threshold ) // Εφόσον η μέτρηση της θερμοκρασίας είναι μεγαλύτερη // από ένα όριο, digitalwrite(13, HIGH); Εικόνα 16. H γενική μορφή του προγράμματος μέτρησης θερμοκρασίας.