Εισαγωγή
Για να διευκολυνθούμε στην ανάπτυξη έργων με την πλατφόρμα Arduino, δημιουργήσαμε μια αναπτυξιακή πλακέτα βασισμένη σε ένα συγκεκριμένο μέλος της οικογένειας Arduino, στο Arduino Nano, όπως την παρουσιάζουμε στη συνέχεια.
Παρουσίαση της κατασκευής
Καρδιά της πλακέτας είναι το module Arduino Nano όπου πάνω του υπάρχει ένας μικροελεγκτής AVR και συγκεκριμένα ο ATmega328Ρ που μαζί με τα απαραίτητα εξαρτήματα αποτελούν ένα αυτόνομο modulo διαστάσεων 4,2cm X 1,6cm. Πάνω στην πλακέτα τοποθετούνται δυο μικρά breadboard για την γρήγορη υλοποίηση του κυκλώματος και δοκιμή με την πλατφόρμα Arduino.
Περιγραφή του κυκλώματος
Το σχηματικό διάγραμμα της αναπτυξιακής πλακέτας είναι όπως ακολουθεί. Βλέπουμε ότι περιέχει μη κρίσιμα εξαρτήματα που μπορούμε εύκολα να βρούμε όπως στο ebay
Πάνω στην αναπτυξιακή πλακέτα διαστάσεων 19cm X 16cm που παρουσιάζουμε υπάρχει υποδοχή για το Arduino Nano καθώς επίσης και θέση για να φιλοξενήσει ένα αλφαριθμητικό LCD display για την απεικόνιση των δεδομένων.
Τροφοδοσία της κατασκευής
Η τροφοδοσία γίνεται με ένα τροφοδοτικό πρίζας με έξοδο 9 volts που τροφοδοτεί το Arduino. Προσέξτε η τάση του τροφοδοτικού πρίζας να μην είναι μεγαλύτερη από 9V. Επιπλέον μέσω ενός switching σταθεροποιητή, πάνω στην πλακέτα, έχουμε τάση 5 volts για την τροφοδοσία των περιφερειακών μονάδων. Επίσης υπάρχει και ο σταθεροποιητής LM1117 με έξοδο 3,3 volt για πληρότητα τάσης.
Συναρμολόγηση της πλακέτας
Η συναρμολόγηση του 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.
Λειτουργία παράλληλης σύνδεσης του display με το 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
Λειτουργία σειριακής σύνδεσης του display με το 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
Επίσης διαθέτει οκτώ εισόδους αναλογικού σήματος που οδηγούν ισάριθμους μετατροπείς από αναλογικού σε ψηφιακού σήματος.
Σημείωση: οι δυο βραχυκυκλωτήρες στην πάνω πλευρά της πλακέτας συνδέουν τις εξόδους SDA και SCL του Arduino Nano με τα αντίστοιχα πινς του chip PCF8574N
Ο τρόπος προγραμματισμού του LCD στη πλατφόρμα Arduino περιγράφεται στα άρθρα:
Arduino > Διασύνδεση του I2C LCD με το Arduino
Arduino > Λειτουργία του LCD module χαρακτήρων
Κατάλογος εξαρτημάτων
Τα εξαρτήματα που χρησιμοποιούνται στην πλακέτα είναι:
Αντιστάσεις:
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_UP είναι πιεσμένο
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