Εισαγωγή
Για να διευκολυνθούμε στην ανάπτυξη έργων με την πλατφόρμα Arduino, δημιουργήσαμε μια αναπτυξιακή πλακέτα βασισμένη σε ένα συγκεκριμένο μέλος της οικογένειας Arduino, στο Arduino Nano, όπως την παρουσιάζουμε στη συνέχεια.

Μια αναπτυξιακή πλακέτα βασισμένη σε Arduino Nano R4, εξοπλισμένη με μονάδα απεικόνισης LCD, ενδείκτες LEDs, μπουτόν, ενσωματωμένη breadboard μαζί με την παροχή μιας ποικιλίας τάσεων DC, αποτελεί μια ιδιαίτερα αποτελεσματική λύση για εκπαίδευση, δημιουργία πρωτοτύπων και ανάπτυξη πραγματικών εφαρμογών στην πλατφόρμα Arduino.
Η λογική πίσω από μια τέτοια πλακέτα είναι απλή αλλά ισχυρή: προσφέρει σε έναν μόνο, οργανωμένο χώρο όλα τα βασικά υποσυστήματα που χρειάζεται ένας προγραμματιστής ή ένας σπουδαστής για να σχεδιάσει, να υλοποιήσει και να δοκιμάσει εφαρμογές μικροελεγκτών.
Η φιλοσοφία της πλατφόρμας
Μια τέτοια αναπτυξιακή πλακέτα είναι ένα πλήρες εργαστήριο μικροεφαρμογών, στο οποίο ο χρήστης μπορεί να πειραματιστεί με εισόδους, εξόδους, προβολή πληροφοριών, έλεγχο λογικής και επέκταση κυκλωμάτων. Η παρουσία μιας LCD επιτρέπει την οπτική ανάδραση, τα LEDs παρέχουν άμεση ένδειξη κατάστασης, τα μπουτόν δίνουν δυνατότητα αλληλεπίδρασης, ενώ η breadboard ανοίγει τον δρόμο για σύνδεση αισθητήρων και πρόσθετων ειδικών εξαρτημάτων.
Ο ρόλος του Arduino Nano R4
Στην καρδιά της πλακέτας βρίσκεται το Arduino Nano R4, το οποίο αναλαμβάνει την εκτέλεση του κώδικα, για τη διαχείριση των περιφερειακών και την επικοινωνία με τις συνδεδεμένες συσκευές. Η πλατφόρμα Arduino προσφέρει ένα οικείο και ώριμο οικοσύστημα λογισμικού, με πληθώρα βιβλιοθηκών, παραδειγμάτων και εργαλείων.
Για τον ηλεκτρονικό μηχανικό, αυτό σημαίνει γρήγορη ανάπτυξη και μικρό χρόνο προσαρμογής. Μπορεί να αξιοποιήσει τις ψηφιακές και αναλογικές εισόδους, τις PWM εξόδους, τις σειριακές διεπαφές I2C ή SPI και τους χρονιστές, δημιουργώντας εφαρμογές που ξεκινούν από απλά εκπαιδευτικά projects και φτάνουν μέχρι σύνθετα συστήματα ελέγχου και παρακολούθησης.
Βασικά δομικά στοιχεία: LCD, LEDs, Buttons
Η προσθήκη LCD μονάδας απεικόνισης δίνει τη δυνατότητα προβολής δεδομένων, μενού, καταστάσεων λειτουργίας, μετρήσεων, ειδοποιήσεων και μηνυμάτων σφαλμάτων. Σε μια τυπική εφαρμογή, ο χρήστης μπορεί να δει στην LCD την τρέχουσα θερμοκρασία, την κατάσταση ενός ρελέ, το επίπεδο έντασης φωτισμού ή τις ρυθμίσεις ενός συστήματος.
Τα LEDs παραμένουν ένα από τα πιο χρήσιμα εργαλεία σε κάθε αναπτυξιακή πλακέτα. Παρότι είναι απλά εξαρτήματα, επιτρέπουν άμεση απεικόνιση της κατάστασης του συστήματος χωρίς καμία καθυστέρηση ή πολυπλοκότητα. Ένα LED μπορεί να δηλώνει τροφοδοσία, ένα άλλο την επιτυχή εκτέλεση λειτουργίας, ένα τρίτο κατάσταση σφάλματος, ενώ άλλα μπορούν να χρησιμοποιηθούν για αποσφαλμάτωση ή προσομοίωση εξόδων.
Τα μπουτόν δίνουν στη συσκευή τη δυνατότητα να αποκτήσει πραγματική αλληλεπίδραση με τον χρήστη. Μέσω αυτών, μπορούν να υλοποιηθούν λειτουργίες όπως επιλογή μενού, επιβεβαίωση εντολής, αύξηση ή μείωση παραμέτρων, εκκίνηση μιας διαδικασίας, επανεκκίνησης του συστήματος ή πλοήγηση μέσα σε εφαρμογές.
Η ενσωματωμένη breadboard και η αξία της επέκτασης
Η breadboard είναι ίσως το στοιχείο που δίνει στην αναπτυξιακή πλακέτα τον χαρακτήρα «ανοιχτής πλατφόρμας». Χάρη σε αυτήν, ο χρήστης δεν περιορίζεται στα ενσωματωμένα περιφερειακά, αλλά μπορεί να προσθέτει γρήγορα αισθητήρες, μονάδες επικοινωνίας, βομβητές, τρανζίστορς, ρελέ, ολοκληρωμένα κυκλώματα μετατόπισης στάθμης, αναλογικά κυκλώματα ή οτιδήποτε άλλο απαιτεί η εφαρμογή.
Αυτό σημαίνει ότι η πλακέτα δεν λειτουργεί μόνο ως εκπαιδευτικό βοήθημα, αλλά και ως βάση δημιουργίας πρωτοτύπων. Ο ηλεκτρονικός μηχανικός μπορεί να δοκιμάσει γρήγορα διαφορετικές συνδέσεις, να μετρήσει σήματα, να επαληθεύσει λογικές συμπεριφορές και να αξιολογήσει την αλληλεπίδραση hardware και software χωρίς να χρειαστεί άμεσα σχεδίαση προσαρμοσμένου PCB.
Η παρουσία της breadboard είναι επίσης σημαντική επειδή ενισχύει την πειραματική προσέγγιση. Ο χρήστης δεν φοβάται να δοκιμάσει. Μπορεί να προσθέσει έναν αισθητήρα θερμοκρασίας, έπειτα έναν αισθητήρα φωτός, στη συνέχεια ένα μικρό βομβητή ή μια I2C μονάδα και να εξελίξει σταδιακά την εφαρμογή του. Αυτή η δυνατότητα γρήγορης επέκτασης είναι καθοριστική για την επιτυχία μιας αναπτυξιακής πλατφόρμας.
Γιατί αποτελεί εξαιρετική επιλογή για την πλατφόρμα Arduino
Η επιτυχία του Arduino οφείλεται σε μεγάλο βαθμό στο ότι έκανε την ανάπτυξη embedded εφαρμογών άμεση, προσιτή και παραγωγική. Μια αναπτυξιακή πλακέτα που ενσωματώνει Arduino Nano R4, LCD, LEDs, μπουτόν και breadboard συνεχίζει ακριβώς αυτή τη φιλοσοφία, αλλά την ανεβάζει σε πιο πρακτικό και ολοκληρωμένο επίπεδο.
Ο χρήστης δεν έχει μόνο έναν μικροελεγκτή για να προγραμματίσει. Έχει ένα πλήρες περιβάλλον δημιουργίας εφαρμογών. Μπορεί να σχεδιάσει λογική, να αλληλεπιδράσει με πραγματικές εισόδους, να εμφανίσει αποτελέσματα, να επεκτείνει το κύκλωμα και να μετατρέψει μια ιδέα σε λειτουργικό πρωτότυπο μέσα σε ελάχιστο χρόνο.
Αυτός ο συνδυασμός κάνει την πλακέτα ιδιαίτερα ελκυστική για χομπίστες, εκπαιδευτικούς, φοιτητές, τεχνικά εργαστήρια, επαγγελματίες μηχανικούς και ομάδες που θέλουν να επιταχύνουν την ανάπτυξη εφικτών εφαρμογών στην πλατφόρμα Arduino.
Περιγραφή του κυκλώματος της αναπτυξιακής πλακέτας
Το σχηματικό διάγραμμα της αναπτυξιακής πλακέτας είναι όπως ακολουθεί. Βλέπουμε ότι περιέχει μη κρίσιμα εξαρτήματα που μπορούμε εύκολα να βρούμε όπως στο ebay

Η πλακέτα τροφοδοτείται από εξωτερικό τροφοδοτικό πρίζας 9V, το οποίο αποτελεί την κύρια είσοδο ισχύος του συστήματος. Προσέξτε την τάση τροφοδοσίας να μην υπερβαίνει την τάση των 9V. Η τάση των 9V οδηγείται στην είσοδο τραφοδοσίας Vin του Arduino Nano για την λειτουργία του. Επίσης, από αυτήν την τάση παράγονται οι δύο τάσεις λειτουργίας της πλακέτας, δηλαδή τα 5V και τα 3.3V. Η τάση των 5V προκύπτει μέσω switching τροφοδοτικού, ενώ η τάση των 3.3V παράγεται με τη βοήθεια του γραμμικού σταθεροποιητή LM1117. Αυτές οι παραγόμενες τάσεις είναι διαθέσιμες σε πινοσειρές στην κάτω αριστερή γωνία της πλακέτας.
Η χρήση switching converter αντί για γραμμικό ρυθμιστή στο στάδιο αυτό είναι ιδιαίτερα σημαντική, επειδή βελτιώνει σημαντικά την ενεργειακή απόδοση και μειώνει τις απώλειες ισχύος υπό μορφή θερμότητας. Για την τροφοδότηση κυκλωμάτων ή περιφερειακών χαμηλότερης τάσης, η πλακέτα περιλαμβάνει τον σταθεροποιητή τάσης LM1117, ο οποίος χρησιμοποιείται για τη παροχή τάσης 3.3V.
Στην καρδιά της πλακέτας βρίσκεται η βάση τοποθέτησης του Arduino Nano R4. Το Nano R4 λειτουργεί ως κεντρικός ελεγκτής της πλακέτας και αναλαμβάνει την εκτέλεση του προγράμματος, τη διαχείριση των σημάτων εισόδου και εξόδου, καθώς και την επικοινωνία με την LCD και τυχόν πρόσθετα περιφερειακά. Η παρουσία βάσης επιτρέπει την ασφαλή και σταθερή εγκατάσταση του module, διευκολύνοντας τόσο την ανάπτυξη όσο και την αντικατάστασή του όταν χρειάζεται. Παράλληλα, οι ακροδέκτες των ψηφιακών και αναλογικών εισόδων/εξόδων της αναπτυξιακής πλακέτας δρομολογούνται προς το Arduino Nano για την λειτουργίας του κυκλώματος.
Ένα από τα βασικά περιφερειακά της αναπτυξιακής πλακέτας είναι το LCD module χαρακτήρων. Η οθόνη αυτή επιτρέπει την εμφάνιση μηνυμάτων, μετρήσεων, μενού και καταστάσεων λειτουργίας, προσφέροντας άμεση οπτική ανάδραση στον χρήστη. Το κύκλωμα της πλακέτας είναι σχεδιασμένο έτσι ώστε η LCD να μπορεί να επικοινωνεί με το Arduino Nano R4 με δύο εναλλακτικούς τρόπους: α)παράλληλα β)σειριακά μέσω I2C. Η διπλή αυτή δυνατότητα προσφέρει μεγάλη ευελιξία στον χρήστη, καθώς μπορεί να επιλέξει τον τρόπο διασύνδεσης ανάλογα με τις απαιτήσεις της εφαρμογής, τη διαθεσιμότητα των GPIO pins και τη φιλοσοφία του λογισμικού που θέλει να αναπτύξει.
Στην παράλληλη λειτουργία, η LCD συνδέεται απευθείας με το Arduino Nano R4 μέσω πολλαπλών γραμμών ελέγχου και δεδομένων. Συνήθως χρησιμοποιούνται οι βασικές γραμμές ελέγχου, όπως RS και E, καθώς και οι γραμμές δεδομένων σε λειτουργία 4-bit. Το βασικό μειονέκτημα της παράλληλης σύνδεσης είναι ότι δεσμεύει περισσότερα GPIO pins. Σε εφαρμογές όπου απαιτούνται επιπλέον αισθητήρες, κουμπιά, LEDs ή άλλα περιφερειακά, η δέσμευση πολλών ακροδεκτών μόνο για την LCD μπορεί να περιορίσει την επεκτασιμότητα του συστήματος.
Η δεύτερη μέθοδος επικοινωνίας της LCD είναι μέσω του διαύλου I2C. Σε αυτήν την περίπτωση, η LCD δεν οδηγείται απευθείας από πολλές γραμμές του μικροελεγκτή, αλλά μέσω του ολοκληρωμένου κυκλώματος PCF8574N. Στην πράξη, το Arduino Nano R4 επικοινωνεί μέσω I2C με το PCF8574N, και το τελευταίο αναλαμβάνει να παράγει τα απαραίτητα σήματα για τον έλεγχο της LCD. Με αυτόν τον τρόπο, η ίδια οθόνη χαρακτήρων μπορεί να λειτουργήσει σαν I2C περιφερειακό, χωρίς να αλλάζει η βασική φύση του LCD controller της. Η προσέγγιση αυτή έχει σημαντικά πλεονεκτήματα: απαιτεί μόνο δύο γραμμές επικοινωνίας από το Nano R4 και απελευθερώνει GPIO pins για άλλες λειτουργίες.
Συναρμολόγιση της πλακέτας
Το pcb της αναπτυξιακής πλακέτας είναι διαστάσεων 19cm X 16cm. Η συναρμολόγηση του pcb γίνεται εύκολα, και η διάταξη των εξαρτημάτων γίνεται όπως στην ακόλουθη εικόνα:

Για την απεικόνιση των δεδομένων χρησιμοποιούμε ένα LCD display, το οποίο μπορεί να είναι μεγέθους 16Χ2, 16Χ4 ή 20Χ4 χαρακτήρων και για να μπορέσει να λειτουργήσει σωστά με το Arduino θα πρέπει να είναι βασισμένο στο ΗD44780 chip.
Τοποθέτηση του LCD display
To LCD display μπορεί να οδηγηθεί από τον μικροελεγκτή παράλληλα ή σειριακά μέσω του πρωτοκόλλου Ι2C. Στην κορυφή της πλακέτας υπάρχει μια διπλή πινοσειρά, στη οποία στην μία οριζόντια σειρά «κουμπώνει» το LCD κάθε φορά. Η κάτω σειρά συνδέει το LCD παράλληλα με το Arduino Nano, ενώ η πάνω σειρά συνδέει το Nano σειριακά με το display με οδηγό το chip PCF8574N κάνοντας χρήση το πρωτόκολλο I2C.

Λειτουργία παράλληλης σύνδεσης του LCD με το Arduino
Όταν επιθυμούμε το LCD display να επικοινωνεί παράλληλα με το Arduino, κουμπώνουμε το LCD στην κάτω σειρά της διπλής πινοσειράς. Σε αυτή την περίπτωση δεσμεύονται τα ακόλουθα πινς:
RS = 7, E = 6, DB4 = 5, DB5 = 4, DB6 = 3 και DB7 = 2.
Τα υπόλοιπα 8 πινς είναι διαθέσιμα για την επικοινωνία του Arduino με τον έξω κόσμο. Αυτά είναι τα εξής:
0/RXD, 1/TXD, 8, 9, 10/SS, 11/MOSI, 12/MISO, 13/SCK
Λειτουργία σειριακής σύνδεσης του LCD με το Arduino
Όταν θέλουμε το LCD να οδηγείται σειριακά μέσω του πρωτοκόλλου I2C που υλοποιείται με το ολοκληρωμένο κύκλωμα IC1 = PCF8574N, κουμπώσουμε το LCD display στην πάνω σειρά της πινοσειράς. Σε αυτή την περίπτωση είναι διαθέσιμα άλλα τα πινς εισόδου – εξόδου του Arduino, δηλαδή τα:
0/RXD, 1/TXD, 2, 3, 4, 5, 6, 7, 8, 9, 10/SS, 11/MOSI, 12/MISO, 13/SCK
Επίσης και για τους δυο τρόπους σύνδεσης του LCD display έχει την δυνατότητα για SPI επικοινωνία με εξωτερικές συσκευές. Στην περίπτωση που ενεργοποιηθεί χρησιμοποιούνται τα ακόλουθα πινς:
10/SS, 11/MOSI, 12/MISO, 13/SCK
Επίσης διαθέτει οκτώ εισόδους αναλογικού σήματος που οδηγούν ισάριθμους μετατροπείς από αναλογικού σε ψηφιακού σήματος. Το Arduino Nano R4 παρέχει σειριακή επικοινωνία τύπου I2C που γίνεται με τους ακροδέκτες αναλογικής εισόδου Α4 και Α5 που αντιστοιχούν στα σήματα SDA και SCL και μπορεί να πραγματοποιηθεί με το κατάλληλο κομμάτι κώδικα.
Σημείωση: οι δυο βραχυκυκλωτήρες στην πάνω πλευρά της πλακέτας συνδέουν τις εξόδους SDA και SCL του Arduino Nano με τα αντίστοιχα πινς του chip PCF8574N
Τρόπος απεικόνισης δεδομένων στη μονάδα LCD
Ο τρόπος προγραμματισμού του LCD στη πλατφόρμα Arduino περιγράφεται στα άρθρα:
Arduino > Διασύνδεση του I2C LCD με το Arduino
Arduino > Λειτουργία του LCD module χαρακτήρων
Συμπέρασμα
Μια αναπτυξιακή πλακέτα με Arduino Nano R4, LCD display, LEDs, μπουτόν και breadboard δεν είναι απλώς είναι μια ακόμα πλακέτα ανάπτυξης. Είναι μια ολοκληρωμένη πλατφόρμα πειραματισμού, εκπαίδευσης και δημιουργία πρωτοτύπων, σχεδιασμένη ώστε να επιτρέπει τη γρήγορη δημιουργία εφαρμογών στην πλατφόρμα Arduino με πρακτικό, οργανωμένο και αποδοτικό τρόπο.
Συνδυάζει τον εύκολο προγραμματισμό του οικοσυστήματος Arduino με τα βασικά στοιχεία που χρειάζεται κάθε πραγματική embedded εφαρμογή: είσοδο, έξοδο, ένδειξη, αλληλεπίδραση και δυνατότητα επέκτασης. Για αυτόν ακριβώς τον λόγο, αποτελεί ιδανική επιλογή τόσο για την εκμάθηση του embedded προγραμματισμού όσο και για την ανάπτυξη λειτουργικών πρωτοτύπων που μπορούν να εξελιχθούν σε τελικά προϊόντα.
Σε έναν κόσμο όπου η ταχύτητα ανάπτυξης, η καθαρή δομή και η άμεση επαλήθευση ιδεών είναι κρίσιμες, μια τέτοια πλατφόρμα προσφέρει το σωστό σημείο εκκίνησης για κάθε νέο project πάνω στο Arduino.
Κατάλογος εξαρτημάτων
Τα εξαρτήματα που χρησιμοποιούνται στην πλακέτα είναι:
Αντιστάσεις:
R1 = 1,5KΩ & R2 = 220Ω & R3, R4, R5, R6 = 470Ω & R7,R8,R9,R10=27KΩ & R11 = 820Ω & R12, R13, R14 = 10KΩ & R15,R16=10KΩ & TR1, TR2 = 10K trimmer
Πυκνωτές:
C1 = 33nF & C2, C3, C4 = 1000μF/16V & C5, C6, C7, C8 = 10μF/16V
Δίοδοι:
D1 = 1N5817 & D2, D3, D4, D5, D6 = LED RED
Αυτεπαγωγή:
L1 = 100μΗ
Ολοκληρωμένα:
IC1 = PCF8574N & IC2 = LM1117_3.3 & IC3 = LT1076-5
Διάφορα:
SW1 = slide switch SPDT – SW2 = Dip switch – 3P – J1 = DC connector
Εφαρμογή προγραμματισμού
Σε αυτό το παράδειγμα, χρησιμοποιούμε την αναπτυξιακή πλακέτα Arduino Nano που μόλις παρουσιάσαμε, για να δώσουμε ένα δείγμα προγραμματισμού και συγκεκριμένα, την αύξηση ή μείωση μιας ακέραιας μεταβλητής με χρήση των button της πλακέτας και εμφάνιση της τιμή της στο display.
Χρησιμοποιούμε την παράλληλη επικοινωνία με το display και για αυτό το λόγο “κουμπώνουμε” το display στην κάτω σειρά της διπλής πινοσειράς.
// Συμπερίληψη βιβλιοθήκης
#include <LiquidCrystal.h>
#define LED_UP 12
#define LED_DOWN 13
#define BUTTON_UP 10
#define BUTTON_DOWN 11
// Δήλωση μεταβλητής αύξησης & μείωσης
int num = 0;
// Δημιουργία αντικειμένου lcd
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// Σύνάρτηση προβολής αριθμού
void printNum(int n)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Number: ");
lcd.print(n);
}
// Συνάρτηση για το άναμα και σβήσιμο LED
void led(byte ld, byte onoff)
{
if(onoff) digitalWrite(ld, HIGH); else digitalWrite(ld, LOW);
}
void setup() {
// Αρχικοποίηση display
lcd.begin(20, 4);
lcd.clear();
lcd.setCursor(0, 0);
// Αρχικοποίηση pin εισόδων & εξόδων
pinMode(LED_UP, OUTPUT);
pinMode(LED_DOWN, OUTPUT);
pinMode(BUTTON_UP, INPUT);
pinMode(BUTTON_DOWN, INPUT);
}
void loop() {
// Εάν το BUTTON_UP είναι πιεσμένο
if(digitalRead(BUTTON_UP))
{
num++; // Αυξησε τον num
led(LED_UP, HIGH); // Άναψε το LED_UP
printNum(num); // Εκτύπωσε τον num
}
// Επανάληψη και καθηστέρηση όσο BUTTON_UP είναι 1
while(digitalRead(BUTTON_UP)) delay(200);
led(LED_UP, LOW); // Σβήσε το LED_UP
// Εάν το BUTTON_DOWN είναι πιεσμένο
if(digitalRead(BUTTON_DOWN))
{
num--; // Μείωσε τον num
led(LED_DOWN, HIGH); // Άναψε το LED_DOWN
printNum(num); // Εκτύπωσε τον num
}
// Επανάληψη και καθηστέρηση όσο BUTTON_DOWN είναι 1
while(digitalRead(BUTTON_DOWN)) delay(200);
led(LED_DOWN, LOW); // Σβήσε το LED_DOWN
delay(200); // Καθηστέρηση 0,2 sec
}

Αρχεία κατασκευής
Κάνοντας κλικ στον ακόλουθο σύνδεσμο μπορείτε να κατεβάσετε τα τα αντίστοιχα eagle 9.0 αρχεία της κατασκευής.
eagle 9.0 αρχεία αναπτυξιακής πλακέτας
Κάνοντας κλικ στον ακόλουθο σύνδεσμο μπορείτε να κατεβάσετε τα αρχεία Gerber του τυπωμένου κυκλώματος pcb σε μορφή zip αρχείου, για αποστολή σε επιχείρηση κατασκευής τυπωμένων κυκλωμάτων, όπως το jlc.com