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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Είναι το πρωτόκολλο RS232 που χρησιμοποιείται στις σειριακές θύρες COM με τη διαφορά ότι εκτελείται σε επίπεδο τάσεων TTL. 2

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 9 Ανάλυση Fourier: Από τη Θεωρία στην Πρακτική Εφαρμογή των Μαθηματικών

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ. Βασικές αρχές λειτουργίας και χρήσης του υπολογιστή

Διαδικασιακός Προγραμματισμός

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

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

Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ

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

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

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

Lab 1: Experimenting on Arduino & AI Sense

ΡΟΜΠΟΤΙΚΗ ΚΑΙ ΑΥΤΟΜΑΤΙΣΜΟΣ

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

WDT και Power Up timer

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

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

Μέρος Β - Δίκτυα. Ασκήσεις I. Ποιος ο ρόλος του πομπού και του δέκτη στο μοντέλο επικοινωνίας που α- πεικονίζεται στο σχήμα που ακολουθεί; Μ Δεδομένα

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

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

Διαδικασιακός Προγραμματισμός

USB_6008_terminal_31. PCI_6023E_terminal_68. PCI_6023E_terminal_67

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

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

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

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

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

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

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

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

Κεφάλαιο 2.4: Εργασία με εικονίδια

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

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

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

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

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

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

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

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

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

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

Transcript:

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

Μέρος Α : Σκοπός και Περιγραφή της Άσκησης 2.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΑΣΚΗΣΗΣ Βασικό στοιχείο των συστημάτων μέτρησης είναι η επικοινωνία του υπολογιστή με αισθητήρες, μικροελεγκτές, κάμερες και άλλες συσκευές που εντοπίζουν ή/και καταγράφουν γεγονότα και καταστάσεις στο εξωτερικό περιβάλλον. Μέσα από αυτή την επικοινωνία, ο υπολογιστής, αυτόματα, μπορεί να παίρνει και να επεξεργάζεται δεδομένα, από το εξωτερικό περιβάλλον. Βασικό μέσο / πρωτόκολλο στην επικοινωνία μεταξύ συσκευών είναι η επικοινωνία / σύνδεση αυτών των συσκευών, μέσω USB. Στη προηγούμενη άσκηση, είδαμε πως μπορούμε να τροφοδοτούμε με ρεύμα τον Arduino, να φορτώνουμε ένα πρόγραμμα σ αυτόν, από τον υπολογιστή, να παίρνουμε μετρήσεις στον υπολογιστή, αλλά και να στέλνουμε εντολές από τον υπολογιστή στον Arduino. Όλα αυτά, μέσω USB. Σ αυτή την άσκηση, αναλυτικότερα, εξετάζουμε: την επικοινωνία του υπολογιστή με τον Arduino, μέσα από τη θύρα USB και τη σειριακή οθόνη, αλλά και τις εντολές σ ένα πρόγραμμα που επιτρέπουν και ρυθμίζουν την επικοινωνία υπολογιστή Arduino. 2.2 To Πείραμα Στη προηγούμενη άσκηση, χρησιμοποιήσαμε τη θύρα USB και τη σειριακή οθόνη, για να παίρνουμε και να εμφανίζουμε τη μέτρηση από τη φωτοαντίσταση, στην οθόνη του υπολογιστή και να ανάβουμε / σβήνουμε τη LED. Σ αυτή την άσκηση, εξετάζουμε αναλυτικότερα, το αντίστροφο ρεύμα της σειριακής επικοινωνίας του υπολογιστή με τον Arduino, μέσα από την αποστολή μηνυμάτων που γράφουμε στη σειριακή οθόνη του υπολογιστή και στέλνουμε στον Arduino. Αντί για εντολές, τη δημιουργία δηλαδή μίας τάσης σε μία ψηφιακή ή αναλογική θύρα που ορίζουμε ως έξοδο, γράφουμε μηνύματα στη σειριακή οθόνη του υπολογιστή και στέλνουμε αυτά τα μηνύματα στον Arduino. O Arduino το πρόγραμμα που έχουμε φορτώσει στον Arduino δείχνει ότι παίρνει και μπορεί να ερμηνεύει αυτά τα μηνύματα, ανάβοντας ή σβήνοντας μία LED. Η διάταξη αυτού του πειράματος παριστάνεται στην Εικόνα 1. Όλη η διάταξη αποτελείται από μία LED που συνδέουμε στη ψηφιακή θύρα 9 του Arduino, μέσα από μία αντίσταση 220 Ω. Ο Arduino θα λειτουργεί αυτή τη LED, ανάλογα με τα μηνύματα που γράφουμε και στέλνουμε, από τη σειριακή οθόνη του υπολογιστή. Μέσα από την αποστολή μηνυμάτων από τον υπολογιστή στον Arduino, θα δούμε αναλυτικότερα την σειριακή επικοινωνία του υπολογιστή με τον Arduino, αλλά και τη σημασία του προγράμματος, σ αυτή την επικοινωνία και βασικές έννοιες του προγραμματισμού, όπως οι μεταβλητές και οι πίνακες. 2

Εικόνα 1: Πειραματική διάταξη, για τη λειτουργία της LED, μέσα από την επικοινωνία υ- πολογιστή Arduino. 2.3 Εισαγωγή Η Σειριακή Επικοινωνία 2.4 USB και Σειριακή Επικοινωνία στον Arduino Στη μέτρηση της έντασης του φωτός με μία φωτοαντίσταση, είδαμε πως ο Arduino συνδέεται στον υπολογιστή, μ ένα καλώδιο USB. Σ εκείνη τη μέτρηση, είδαμε ακόμα πως το καλώδιο USB χρησιμεύει, για πολλούς λόγους. Για να τροφοδοτούμε με ρεύμα τον Arduino και το κύκλωμα μίας μέτρησης, για να φορτώνουμε ένα 3

Εικόνα 2: Η παράλληλη επικοινωνία μεταξύ δύο συσκευών περιλαμβάνει πολλές παράλληλες γραμμές μετάδοσης / μεταφοράς δεδομένων, μεταξύ των δύο συσκευών, ενώ η σειριακή επικοινωνία περιλαμβάνει μόνον δύο γραμμές μετάδοσης (Transmit και Receive) πρόγραμμα στον Arduino, αλλά και να στέλνουμε μετρήσεις από τον Arduino, στον υπολογιστή που μετά, μπορούμε να βλέπουμε σε μία σειριακή οθόνη, στον υ- πολογιστή. Όλη δηλαδή η επικοινωνία του υπολογιστή με τον Arduino, γίνεται μέσα από το καλώδιο τη USB σύνδεση του υπολογιστή με τον Arduino. Όμως, αν και χρησιμοποιούμε USB καλώδιο, για τη σύνδεση υπολογιστή Arduino, στη πραγματικότητα, υπολογιστής και Arduino επικοινωνούν μεταξύ τους σειριακά! Χρειάζεται να καταλάβουμε πως η επικοινωνία μέσω USB δεν είναι το ίδιο με τη σειριακή επικοινωνία. Η επικοινωνία / σύνδεση μέσω USB είναι μία ΠΑΡΑΛΛΗ- ΛΗ μορφή επικοινωνίας, περιλαμβάνοντας πολλές παράλληλες γραμμές επικοινωνίας, ανάμεσα σε δύο συσκευές (Εικόνα 2, επάνω). Αντίθετα, η σειριακή επικοινωνία μεταξύ δύο συσκευών περιλαμβάνει μόνον δύο γραμμές επικοινωνίας, μία για την αποστολή δεδομένων από τη μία συσκευή (ΤΧ) και τη λήψη τους (RX) στην άλλη και μία δεύτερη γραμμή, για την αποστολή δεδο- 4

μένων από τη δεύτερη συσκευή και τη λήψη τους, στη πρώτη (Εικόνα, κάτω). Ο Arduino, η συγκεκριμένη πλακέτα Arduino που χρησιμοποιούμε ο Arduino UNO R3, είναι μία συσκευή σειριακής επικοινωνίας. Δηλαδή, ο μικροελεγκτής ATMega328P που υπάρχει στον Arduino Uno, έχει μία Transmit (TX) και μία Receive (RX) θύρα (pins). Αυτές οι θύρες συνδέονται έμμεσα στις γραμμές Transmit και Receive του USB καλωδίου. Έτσι, ο Arduino είναι μία συσκευή σειριακής επικοινωνίας ο μικροελεγκτής επάνω στον Arduino UNO έχει μόνον τα Transmit (TX) και Receive (RX) pins της σειριακής επικοινωνίας, ενώ η USB θύρα / σύνδεση στον υπολογιστή περιλαμβάνει / είναι ένα σύστημα τη παράλληλη μετάδοση δεδομένων. Χρειάζεται να γεφυρώσουμε αυτές τις δύο διαφορετικές μορφές / συστήματα μετάδοσης / μεταφοράς δεδομένων. Στον Arduino, αυτή η γεφύρωση της παράλληλης μετάδοσης / μεταφοράς δεδομένων, μέσα από τη θύρα USB και της σειριακής δυνατότητας επικοινωνίας του Arduino, γίνεται, χρησιμοποιώντας ένα ολοκληρωμένο κύκλωμα, το 8U2 ή σε νεότερες εκδόσεις, το 16U2 ολοκληρωμένο (Εικόνα 3) που λειτουργεί σαν μετατροπέας από τη USB σε σειριακή παράσταση (USB-to-Serial Converter). Δηλαδή, δεδομένα που φτάνουν στον Arduino, από τον υπολογιστή, μέσω της θύρας USB, τροφοδοτούνται στο ολοκληρωμένο 8U2 (ή 16U2) (Εικόνα 3). Αυτό το κύκλωμα μετατρέπει τα δεδομένα που φτάνουν μέσα από καλώδιο USB, σε μια μορφή σα να είχαν σταλεί μέσα από μία γραμμή σειριακής επικοινωνίας και όχι μέσα από μία συσκευή παράλληλης μετάδοσης. Εικόνα 3: Η μετατροπή δεδομένων από το πρωτόκολλο USB στο σειριακό πρωτόκολλο, από το ολοκληρωμένο 8U2, στον Arduino. 5

Εικόνα 4: Δεδομένα που μετασχηματίζονται στο σειριακό πρωτόκολλο από το ολοκληρωμένο 8U2, στέλνονται στο μικροελεγκτή και μέσα από τη μονάδα UART του μικροελγκτή, αποθηκεύονται σε μία προσωρινή μνήμη (memory buffer).. Από το 8U2, τα μετασχηματισμένα δεδομένα στέλνονται στη Receiver θύρα (RX) του μικροελεγκτή και σε μία μονάδα του μικροελεγκτή που ονομάζεται Universal Asynchronous Receiver/Transmitter (UART) (Εικόνα 4). Αυτή η μονάδα αποθηκεύει τα δεδομένα σε μία προσωρινή μνήμη (memory buffer) που μπορεί να αποθηκεύει προσωρινά, μέχρι 128 bytes δεδομένων. Μπορούμε να ελέγχουμε αν υπάρχουν δεδομένα που έχουν σταλεί από τον υπολογιστή, μέσω USB και έχουν αποθηκευτεί στη προσωρινή μνήμη του Arduino και να διαβάζουμε / να παίρνουμε αυτά τα δεδομένα, είτε χαρακτήρα με χαρακτήρα, είτε σαν ενιαία συμβολοσειρά / ακολουθία χαρακτήρων. Μπορούμε να δούμε αυτή τη προσωρινή μνήμη, σαν το inbox του Outlook. Όπως αυτόματα, το Outlook αποθηκεύει καινούργια emails που παίρνουμε, έτσι και η προσωρινή μνήμη του Arduino αποθηκεύει και μας επιτρέπει να έχουμε πρόσβαση σε όποια καινούργια δεδομένα στέλνει ο υπολογιστής, στον Arduino. Παρακάτω, θα δούμε αναλυτικά πως μπορούμε να διαβάζουμε δεδομένα που στέλνει ο υπολογιστής στον Arduino, από τη προσωρινή μνήμη, όπου αποθηκεύονται αυτά τα δεδομένα. Παρόμοια, δεδομένα / μετρήσεις που στέλνονται από τον Arduino, στον υπολογιστή, χρειάζονται μία ανάλογη μετατροπή / μετασχηματισμό. Πριν αυτά τα δεδομένα / μετρήσεις μεταφερθούν στο καλώδιο USB, για να σταλούν στον υπολογιστή, χρειάζεται να σταλούν από τη μονάδα Universal Asynchronous Receiver/Transmitter (UART) και τη Transmit (TX) θύρα του μικροελεγκτή, στο ολοκληρωμένο 8U2, για να μετατραπούν σε μία μορφή συμβατή με τη USB μεταφορά δεδομένων, ώστε να μπορεί να σταλούν στον υπολογιστή, μέσα από καλώδιο USB (Εικόνα ). 6

2.5 Παίρνοντας Δεδομένα από τον Arduino στον Υπολογιστή H Σειριακή Οθόνη Στη πλευρά του υπολογιστή, δεδομένα / μετρήσεις που στέλνονται στον υπολογιστή, από τον Arduino, μπορεί να εμφανίζονται / εκτυπώνονται σε μία σειριακή οθόνη, στο περιβάλλον ανάπτυξης του Arduino. Η σειριακή οθόνη είναι μέρος του περιβάλλοντος ανάπτυξης του Arduino. Ανοίγουμε τη σειριακή οθόνη, πατώντας το εικονίδιο της, στην επάνω δεξιά πλευρά του περιβάλλοντος ανάπτυξης. Η σειριακή οθόνη λειτουργεί σαν κανάλι επικοινωνίας μεταξύ του Arduino και του υπολογιστή. Είδαμε δηλαδή στη προηγούμενη άσκηση, πως μπορούμε να στέλνουμε δεδομένα και μετρήσεις, από τον Arduino, στον υπολογιστή, μέσα από τη USB θύρα / σύνδεση και να εκτυπώνουμε αυτές τις μετρήσεις, στη σειριακή οθόνη του περιβάλλοντος ανάπτυξης του Arduino, χρησιμοποιώντας την εντολή: Serial.println(val); Συνήθως, η εντολή περιέχει μία μεταβλητή. Θα δούμε αναλυτικότερα τι είναι οι μεταβλητές, σ ένα πρόγραμμα. Προς το παρών, ας δούμε τη μεταβλητή σαν ένα όνομα στο οποίο εκχωρούμε / δίνουμε μία τιμή ή διαβάζουμε μία μέτρηση, από μία θύρα εισόδου του Arduino. Για παράδειγμα, στο πρόγραμμα που μετράει την ένταση του φωτός με μία φωτοαντίσταση, στη μεταβλητή val διαβάζουμε τη τάση στη σειριακή θύρα Α0 του Arduino. Περιλαμβάνοντας μετά, τη μεταβλητή val μέσα στη Serial.println() (Εικόνα ), αυτή η εντολή στέλνει τη τιμή που προηγούμενα έχουμε εκχωρήσεις στη μεταβλητή val, στον υπολογιστή και την εκτυπώνει στη σειριακή οθόνη, στο περιβάλλον ανάπτυξης του Arduino (Εικόνα ). Αυτή είναι η μία λειτουργία της σειριακής οθόνης, δηλαδή να εμφανίζει τις τιμές που στέλνει ο Arduino στον υπολογιστή, μέσω της θύρα USB. Όμως, εκτός από αυτή τη λειτουργία, η σειριακή οθόνη μας επιτρέπει να γράφουμε ένα μήνυμα στο πεδίο κειμένου της οθόνης (Εικόνα ) και να στέλνουμε αυτό το μήνυμα στον Arduino, πατώντας Return ή το κουμπί Send. Στις δύο περιπτώσεις, το μήνυμα στέλνεται μέσα από τη USB σύνδεση. 2.6 Λαμβάνοντας Μηνύματα στον Arduino από τον Υπολογιστή Είδαμε παραπάνω πως δεδομένα και εντολές που στέλνουμε από τον υπολογιστή, στον Arduino, μετατρέπονται από τη USB παράσταση / πρωτόκολλο / τη παράστασή τους, κατά τη μετάδοση τους, μέσα από τη USB σύνδεση, σε μία μορφή συμβατή με το σειριακό πρωτόκολλο επικοινωνίας (στο ολοκληρωμένο 8U2), στέλνονται στη μονάδα UART του μικροελεγκτή και αποθηκεύονται σε μία προσωρινή μνήμη (memory buffer) στο μικροελεγκτή, από όπου μπορούμε να έχουμε πρόσβαση σ αυτά τα δεδομένα (Εικόνα 4). 7

Είπαμε ακόμα παραπάνω πως αυτή η προσωρινή μνήμη του Arduino είναι σαν το Inbox του Outlook. Όπως καινούργια emails που μας στέλνουν, αυτόματα, αποθηκεύονται στο Inbox του Outlook και μπορούμε να διαβάσουμε, ανοίγοντας το Outlook, έτσι και δεδομένα ή εντολές που στέλνονται από τον υπολογιστή, στον Arduino, αυτόματα αποθηκεύονται στη προσωρινή μνήμη του Arduino (Εικόνα 4) και παραμένουν εκεί, μέχρι να τα διαβάσουμε. Μπορούμε να διαβάζουμε, δηλαδή ένα πρόγραμμα που εκτελείται στον Arduino μπορεί να διαβάζει τα μηνύματα ή δεδομένα που στέλνονται από τoν υπολογιστή και αποθηκεύονται στη προσωρινή μνήμη του Arduino, εκτελώντας την εντολή: Serial.read(ch); Η εντολή Serial.read(ch) διαβάζει στη μεταβλητή ch, τον επόμενο διαθέσιμο χαρακτήρα, από τη τα μηνύματα ή τα δεδομένα στη προσωρινή μνήμη του Arduino. Πριν όμως επιχειρήσουμε, πριν δηλαδή ένα πρόγραμμα που εκτελείται στον Arduino, επιχειρήσει να διαβάσει ένα μήνυμα από τη προσωρινή μνήμη, χρειάζεται να ελέγξει αν υπάρχουν διαθέσιμα μηνύματα ή δεδομένα, αν δηλαδή υπάρχουν καινούργια μηνύματα ή δεδομένα που έχουν σταλεί από τον υπολογιστή, έχουν αποθηκευτεί στη προσωρινή μνήμη και δεν τα έχουμε ακόμα διαβάσει. Αυτός ο έλεγχος για διαθέσιμα δεδομένα στην προσωρινή μνήμη του Arduino, γίνεται με τη συνάρτηση: Serial. available() Παρακάτω, εξετάζουμε την αποστολή μηνυμάτων από τον υπολογιστή τη σειριακή οθόνη του υπολογιστή και την ανάγνωση και ανάλυση αυτών των μηνυμάτων στον Arduino, μέσα από μία εφαρμογή: ένα πρόγραμμα που διαβάζει μηνύματα που στέλνουμε από τη σειριακή οθόνη του υπολογιστή και ανάλογα με το μήνυμα, ανάβει ή σβήνει μία LED. Εφαρμογή 2.1 Γράψτε ένα πρόγραμμα για τον Arduino που να διαβάζει μηνύματα που γράφουμε και στέλνουμε στον Arduino, από τη σειριακή οθόνη του υπολογιστή. Ανάλογα με το μήνυμα που στέλνουμε, το πρόγραμμα θα πρέπει να ανάβει ή να σβήνει μία LED. Στην εντολή / μήνυμα 1, το πρόγραμμα θα πρέπει να ανάβει τη LED και στην εντολή 0 να τη σβήνει. Συνήθως, ένα μήνυμα από τον υπολογιστή στον Arduino, μπορεί να ρυθμίζει τη συχνότητα δειγματοληψίας, δηλαδή τη καθυστέρηση / χρόνο ανάμεσα σε διαδοχικές μετρήσεις που στέλνει o Arduino στον υπολογιστή. Μπορεί ακόμα να διακόπτει προσωρινά την αποστολή μετρήσεων από τον Arduino στον υπολογιστή ή να επαναρχίζει αυτή την αποστολή. Μηνύματα δηλαδή από τον υπολογιστή στον Arduino λειτουργούν ώστε να ρυθμίζουν τη μέτρηση από τον Arduino. Σ αυτή την εφαρμογή, τα μηνύματα που γράφουμε στην σειριακή οθόνη και στέλνουμε στον Arduino, προσδιορίζουν στο μικροελεγκτή μία λειτουργία: να ανάβει ή να 8

Εικόνα 5: Το πρόγραμμα που λειτουργεί μία LED, διαβάζοντας τιμές 1 ή 0, από τη σειριακή οθόνη του υπολογιστή... σβήνει μία LED. Η επικοινωνία μεταξύ συσκευών μπορεί να είναι να είναι δομημένη στο κύκλωμα (hardwired) αυτών των συσκευών. Όμως, επικοινωνία που είναι δομημένη (hardwired) στο κύκλωμα δύο συσκευών είναι πολύ περιορισμένη. Μπορεί να έχει / να εξυπηρετεί δηλαδή μία ή λίγες συγκεκριμένες λειτουργίες και δεν μπορεί να περιλαμβάνει την επικοινωνία / ανταλλαγή δεδομένων μεταξύ των δύο συσκευών. Έτσι, αν η επικοινωνία μεταξύ δύο συσκευών είναι να περιλαμβάνει την επικοινωνία / ανταλλαγή δεδομένων και μηνυμάτων μεταξύ των δύο συσκευών, όπως για παράδειγμα σ αυτή και στην επόμενη εφαρμογή, τότε αυτή η γενικότερη μορφή επικοινωνίας δεδομένων και μηνυμάτων μεταξύ δύο συσκευών απαραίτητα 9

Εικόνα 6: Το πρόγραμμα που λειτουργεί μία LED, διαβάζοντας και αναγνωρίζοντας συνθετότερα μηνύματα on ή off, από τη σειριακή οθόνη του υπολογιστή... προϋποθέτει τη δυνατότητα της εκτέλεσης ενός προγράμματος σε / από καθεμία συσκευή που να διαβάζει και να επεξεργάζεται τα δεδομένα ή μηνύματα ή πληροφορίες που αυτή η συσκευή παίρνει από μία άλλη και να εκτελεί τις λειτουργίες που προσδιορίζονται σ αυτά τα μηνύματα. Έτσι, αν είναι να ανάβουμε ή να σβήνουμε μία LED, μέσα από μηνύματα 1 ή 0 που στέλνονται από έναν υπολογιστή, θα πρέπει στη συσκευή που παίρνει αυτά τα μηνύματα, δηλαδή στον Arduino να υπάρχει και να εκτελείται ένα πρόγραμμα που να διαβάζει και να επεξεργάζεται αυτά τα μηνύματα (Εικόνα 5). 2.7 Αναγνωρίζοντας & Αναλύοντας Μηνύματα στον Arduino από τον Υπολογιστή Πως ένα πρόγραμμα στον Arduino μπορεί να αναλύει μηνύματα από τον υπολογιστή? Ένα / κάθε μήνυμα που πληκτρολογούμε στη σειριακή οθόνη και στέλνουμε στον 10

Arduino, από τον υπολογιστή, αποτελείται από χαρακτήρες και ψηφία. Για να αναλύσει αυτό το μήνυμα ένα πρόγραμμα που τρέχει στον Arduino, χρειάζεται να εξετάσει κάθε χαρακτήρα αυτού του μηνύματος και μετά να συνδυάσει αυτούς τους χαρακτήρες, για να ξαναδημιουργήσει την εντολή που περιέχει αυτό το μήνυμα. Μ αυτό τον τρόπο τον τρόπο το πρόγραμμα στον Arduino δείχνει πως μπορεί να διαβάζει κάθε χαρακτήρα ενός μηνύματος από τον υπολογιστή και να αναγνωρίζει κάθε χαρακτήρα, διαχωρίζοντας φωνήεντα από όλους τους υπόλοιπους χαρακτήρες σ αυτό το μήνυμα. Εφαρμογή 2.2 Γράψτε ένα πρόγραμμα για τον Arduino που να διαβάζει μηνύματα που γράφουμε και στέλνουμε στον Arduino, από τη σειριακή οθόνη του υπολογιστή. Ανάλογα με το μήνυμα που στέλνουμε, το πρόγραμμα θα πρέπει να ανάβει ή να σβήνει μία LED. Στην εντολή / μήνυμα on το πρόγραμμα θα πρέπει να ανάβει τη LED και στην εντολή off να τη σβήνει. Εφαρμογή 2.3 Μία συνθετότερη μορφή επεξεργασίας θα ήταν να γράψουμε ένα πρόγραμμα που λαμβάνει / διαβάζει μηνύματα από τον υπολογιστή, να μετατρέπει αυτά τα μηνύματα σε κώδικα Morse και να εκπέμπει αυτό το κώδικα, αναβοσβήνοντας μία LED. Ο κώδικας Morse αποτελείται από τελείες και παύλες Μία παύλα παριστάνεται από παλμό μεγαλύτερης διάρκειας από μία τελεία. Έτσι, η μετατροπή / εκπομπή ενός μηνύματος σε κώδικα Morse περιλαμβάνει την εκπομπή αυτού του μηνύματος μέσα από τετραγωνικούς παλμούς μεγαλύτερης σχετικά διάρκειας; (500 ms) και παλμούς μικρότερης διάρκειας (200 ms) Γράψτε ένα πρόγραμμα που να μετατρέπει κάθε μήνυμα από το υπολογιστή σε κώδικα Morse και να εκπέμπει αυτό το μήνυμα αναβοσβήνοντας τη LED. 11