Αναπτυξιακή πλακέτα Arduino Nano

Για να διευκολυνθούμε στην ανάπτυξη έργων με την πλατφόρμα 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.

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

Αρχείο zip με αρχεία gerber pcb της αναπτυξιακής πλακέτας.