Γνωριμία με την πλακέτα Arduino Uno
Το Arduino είναι μία πλακέτα “ανοικτού κώδικα” την οποία κάποιος, χωρίς ιδιαίτερες γνώσεις προγραμματισμού, μπορεί εύκολα να χρησιμοποιήσει για να κατασκευάσει εφαρμογές ρομποτικής και συστήματα αυτοματισμού.

Χαρακτηριστικά του Arduino
- Microcontroller: ATmega328
- Τάση λειτουργίας: 5V
- Τάση εισόδου: 7-12V
- Τάση εισόδου (όριο): 6-20V
- Digital I/O Pins: 14 (εκ των οποίων 6 περιέχουν PWM εξόδους)
- Analog Input Pins: 6
- DC ένταση ρεύματος I/O Pin: 40 mA
- DC ένταση ρεύματος για 3.3V Pin: 50 mA
- Flash Memory: 32 KB εκ των οποίων 0,5 KB χρησιμοποιείται από τον bootloader
- SRAM: 2 KB
- EEPROM: 1 KB
- Clock Speed: 16 MHz

Το Arduino αποτελείται από έναν μικροεπεξεργαστή, τον ATmega 328p της Atmel και έχει την δυνατότητα να συνδεθεί με αναλογικές και ψηφιακές μονάδες εισόδου / εξόδου. Υπάρχει μεγάλη πληθώρα συσκευών, συμβατές με τις πλακέτες Arduino. Κάποιες από αυτές είναι: Αισθητήρες θερμοκρασίας, υγρασίας, πίεσης, δύναμης, απόστασης, γυροσκόπια κ.α. Επίσης το Arduino μπορεί να ελέγξει μοτοράκια DC, βηματικούς (stepper) και servo (κινητήρες) ακόμη και leds, φώτα (220v), ρελέ και ό,τι άλλο μπορείτε να σκεφτείτε. Το Arduino μπορεί να προγραμματιστεί από τον υπολογιστή μέσω της σειριακής θύρας USB. Η σειριακή αυτή σύνδεση (Serial over Usb) χρησιμοποιείται για την μεταφορά προγραμμάτων από τον υπολογιστή προς την πλακέτα Arduino αλλά και το αντίστροφο, για την μεταφορά των δεδομένων που λαμβάνει το Arduino από τις περιφερειακές συσκευές, προς τον υπολογιστή.
Γενικά
Η καρδιά του Arduino Uno είναι φυσικά ένας μικροεπεξεργαστής. Αυτός είναι το «μυαλό» του Arduino και είναι προγραμματιζόμενος ώστε να ελέγχει τα 14 ψηφιακά input/output pins και τα 6 αναλογικά που υπάρχουν πάνω στην πλακέτα ανάπτυξης. Δια μέσου αυτών των 20 pins γίνονται όλες οι διασυνδέσεις με εξωτερικά στοιχεία (κινητήρες, LEDs, LCD οθόνες κλπ) και αισθητήρες (Ultrasonic, θερμόμετρα, accelometers κ.α).
Στην πλακέτα ανάπτυξης υπάρχει μια θύρα USB. Μέσω αυτής γίνεται η μεταφορά δεδομένων από αυτήν προς κάποια άλλη συσκευή, συνήθως έναν υπολογιστή, και το αντίστροφο. Ωστόσο, η κύρια χρήση στα αρχικά στάδια εκμάθησης είναι η μεταφορά του προγράμματος από τον υπολογιστή στον μικροεπεξεργαστή αλλά και η οπτικοποίηση των δεδομένων που απορρέουν από την λειτουργία της συσκευής μετά από το προγραμματισμό.

Ψηφιακοί και αναλογικοί ακροδέκτες του Arduino uno
Το Arduino έχει 14 ψηφιακούς ακροδέκτες Εισόδου/Εξόδου οι οποίοι μπορούν να τεθούν ως είσοδοι ή ως έξοδοι με τις κατάλληλες εντολές. Λειτουργούν στα 5 Volts και έχουν την δυνατότητα να παρέχουν ή να καταβυθίζουν ένταση της τάξεως των 40mA. Σε κάθε pin υπάρχει εσωτερικά ένας Pull-up αντιστάτης στα 20-50KΩ. Επιπλέον, έχει 6 αναλογικούς ακροδέκτες Εισόδου. Αυτοί μπορούν να διαβάσουν αναλογικές τιμές όπως η τάση μιας μπαταρίας κτλ και να τις μετατρέψουν σε έναν αριθμό από 0-1023. Η μέτρηση της τάσης γίνεται από προεπιλογή από 0 έως 5 volts. Εκτός αυτού, 6 εκ των 14 ψηφιακών ακροδεκτών οι D3, D5, D6, D9, D10 και D11 έχουν την δυνατότητα να προγραμματιστούν ώστε να λειτουργούν ως αναλογικές Έξοδοι.
Κάποιοι ακροδέκτες έχουν συγκεκριμένες λειτουργίες.
- Σειριακή Λειτουργία: 0 (RX) και 1 (TX). Χρησιμοποιούνται για λήψη (RX) και εκπομπή (TX) TTL σειριακών δεδομένων.
- Εξωτερικές Διακοπές: 2 και 3. Αυτοί οι ακροδέκτες μπορούν να ενεργοποιούν διακοπές αν ανιχνευθεί παλμός χαμηλής τάσης. Με την συνάρτηση attachInterrupt(). Ο σκανδαλισμός των διακοπών μπορεί να γίνεται στο λογικό 0, 1.
- PWM: 3, 5, 6, 9, 10, και 11 pins. Παρέχουν Έξοδο 8-bit PWM με την συνάρτηση analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Αυτοί οι ακροδέκτες επιτρέπουν σειριακή επικοινωνία με το πρωτόκολλο SPI.
- I2C: A4 (SDA), A5 (SCL). Αυτοί οι ακροδέκτες επιτρέπουν σειριακή επικοινωνία με το πρωτόκολλο I2C
- LED 13: Στον ακροδέκτη 13 υπάρχει ένα ενσωματωμένο LED. Όταν ο ακροδέκτης έχει τιμή HIGH, το LED ανάβει ενώ όταν το pin είναι LOW δεν ανάβει.

Σειριακή Θύρα
Χρησιμοποιείται για την επικοινωνία μεταξύ της πλατφόρμας Arduino και ενός υπολογιστή ή με άλλες συσκευές. Επομένως, όλες οι πλακέτες έχουν τουλάχιστον μια σειριακή θύρα. Επικοινωνεί με τις ψηφιακές ακίδες 0 (RX) και 1 (TX), καθώς και με τον υπολογιστή μέσω USB. Έτσι, εάν χρησιμοποιείται αυτή η λειτουργία(USB), δεν μπορούν ταυτόχρονα να χρησιμοποιηθούν οι ακίδες 0 και 1 για ψηφιακή είσοδο ή έξοδο.
Αξίζει να αναφερθεί ότι στο περιβάλλον IDE του Arduino, υπάρχει ενσωματωμένη σειριακή οθόνη (serial monitor) που μπορεί να χρησιμοποιηθεί για να απεικονίζει δεδομένα που αποστέλλονται από την πλακέτα Arduino.
Βασικές μνήμες
Οι πλατφόρμες Arduino διαθέτουν τρείς βασικές μνήμες:
- Flash memory (32 Kbytes) στην οποία τοποθετείται κάθε φορά το πρόγραμμα που πρόκειται να εκτελεστεί καθώς και ο φορτωτής εκκίνησης (bootloader) που διευκολύνει την διαδικασία του προγραμματισμού της πλατφόρμας.
- SRAM memory (στατική μνήμη τυχαίας προσπέλασης των 2 KBytes) η οποία χρησιμοποιείται για την προσωρινή αποθήκευση των στατικών και των μεταβλητών δεδομένων του προγράμματος που εκτελείται.
- ΕEPROM memory (1 Kbytes) στην οποία αποθηκεύονται οι τιμές των μεταβλητών όταν η πλατφόρμα σβήσει(OFF). Χρησιμοποιείται για την αποθήκευση ρυθμίσεων και άλλων παραμέτρων ανάμεσα στα Reset του Arduino.
Η μνήμη Flash και η μνήμη ΕEPROM είναι μη πρόσκαιρες μνήμες (δηλ. τα δεδομένα διατηρούνται μετά την απενεργοποίησης της τροφοδοσίας). Η μνήμη SRAM είναι πρόσκαιρη μνήμη και οι πληροφορίες χάνονται όταν διακόπτεται η τροφοδοσία.
Επειδή η μνήμη SRAM δεν είναι πολύ μεγαλή, αν γεμίσει, το πρόγραμμα μπορεί να αποτύχει με απροσδόκητο τρόπο. Μπορεί να φαίνεται ότι φορτώνει με επιτυχία, αλλά δεν τρέχει, ή τρέχει με λάθη. Για να ελεγχθεί εάν αυτό συμβαίνει, μπορούν να μειωθούν τα σχόλια ή οι σειρές ή άλλες δομές δεδομένων στο πρόγραμμα (χωρίς να αλλάξει ο κώδικας). Εάν λειτουργεί με επιτυχία στη συνέχεια, κατά πάσα πιθανότητα έχει εξαντληθεί η SRAM. Ένας τρόπος για να αντιμετωπιστεί αυτό το πρόβλημα είναι αν υπάρχουν πίνακες αναζήτησης ή άλλοι μεγάλοι πίνακες, τότε μπορεί να χρησιμοποιηθεί ο μικρότερος τύπος δεδομένων που είναι αναγκαίος για να αποθηκευτούν οι τιμές που χρειάζονται.
Τροφοδοσία
Το Arduino Uno τροφοδοτείται, είτε από εξωτερική τροφοδοσία, είτε μέσω μιας υποδοχής των 2.1mm (θετικός πόλος στο κέντρο) που βρίσκεται πάνω στην πλακέτα του Arduino, είτε απευθείας από την θύρα USB του υπολογιστή. H επιλογή της πηγής γίνεται αυτόματα από το αναπτυξιακό. Ως εξωτερική τροφοδοσία ορίζεται είτε μια μπαταρία, είτε μετασχηματιστής των 9Volt από 220V. Η μπαταρία μπορεί να συνδεθεί στις υποδοχές του Arduino Vin και GND όπου τοποθετούνται ο θετικός πόλος και ο αρνητικός αντίστοιχα. Από την άλλη αν τροφοδοτηθεί με μετασχηματιστή απλά πρέπει να τοποθετηθεί το βύσμα στην υποδοχή που υπάρχει με το θετικό πόλο στο κέντρο.
Η πλακέτα μπορεί να λειτουργήσει με εξωτερική πηγή από 6 έως 20 Volts. Αν ωστόσο τροφοδοτηθεί με λιγότερα από 7 Volt τα pin εξόδου 5Volt δεν θα καταφέρουν να εξάγουν τάση 5 Volts. Αντίθετα, αν δώσουμε πάνω από 12 Volts θα υπερθερμανθεί ο σταθεροποιητής τάσης στην πλακέτα και ενδεχομένως να καταστραφεί. Συνεπώς, μια ιδανική τάση είναι τα 9 Volts.
Οι ακροδέκτες τροφοδοσίας είναι οι εξής:
VIN: Ακροδέκτης για 7-12 volts τάση. Συνήθως εδώ συνδέεται μια εξωτερική πηγή τροφοδοσίας.
5V: Ακροδέκτης σταθεροποιημένης τάσης 5Volt. Μπορεί να τροφοδοτήσει εξωτερικές συσκευές του κυκλώματος που δεν έχουν μεγάλες απαιτήσεις σε ρεύμα.
3V3: Μπορεί να τροφοδοτήσει εξωτερικές συσκευές του κυκλώματος με τάση 3,3 volts. Μέγιστη ένταση ρεύματος 50mA.
GND: Ακροδέκτες γείωσης.
