Saturday, March 10, 2012

Arduino ethernet shield intro


Το arduino έχει πάρα πολλά shields και ανάλογα με τη δουλειά που θέλουμε να κάνουμε μπορούμε να φτιάξουμε και το δικό μας. Το Ethernet shield όμως είναι ίσως από τα πιο χρήσιμα αφού προσφέρει έναν επιπλέον τρόπο για επικοινωνία με το arduino και αυτός είναι μέσω του δικτύου. Είτε αφορά μόνο το τοπικό είτε το "βγάλετε" στο internet, όπως και να έχει αυτό το shield τα σπάει :)



Υπάρχουν δύο τύποι Ethernet shield απ' όσο ξέρω στη αγορά.
Το ένα βασίζεται στο W5100 chip (datasheet: http://www.wiznet.co.kr/UpLoad_Files/ReferenceFiles/W5100_Datasheet_v1.2.2.pdf) και είναι το "αυθεντικό" για το οποίο υπάρχει έτοιμη βιβλιοθήκη μέσα στο IDE του arduino. Λογικά θα είναι και πιο εύκολο στη χρήση.

Το άλλο βασίζεται στο ENC28J60 (datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/39662c.pdf). Το καλό με αυτή την υλοποίηση είναι ότι είναι πιο φτηνή ενώ παράλληλα κάνει και τη δουλειά μας. Αντίθετα με την προηγούμενη, εδώ θα πρέπει να βάλουμε extra βιβλιοθήκες. Υπάρχουν δύο, η μία βασίζεται στο open-source TCP/IP () και η άλλη από έναν χρήστη, που ουσιαστικά φτιάχνει κώδικα ώστε να είναι δυνατός ο προγραμματισμός με την υπάρχουσα βιβλιοθήκη που υπάρχει ήδη στο IDE.



Στη συνέχεια θα δούμε ένα απλό παράδειγμα με το κλασσικό ethernet shield W5100. Ουσιαστικά πως θα το βάλουμε στο LAN, μέσω ενός τυπικού router. Μιας και το arduino θέλει στατική διεύθυνση IP για να συνδεθεί στο τοπικό δίκτυο (δεν υποστηρίζει DCHP).
Το router που έχω είναι ένα κλασσικό Thomson από τη Forthnet.
Κουμπώνουμε λοιπόν το shield στο arduino, αλλά προσοχή! Υπάρχουν διαφορές στη συνδεσμολογία από Mega με τα υπόλοιπα arduino. Συγκεκριμένα τα SPI pins είναι διαφορετικά και τα χρησιμοποιεί το ethernet. Γι' αυτό εάν δεν δουλέψει με τη μία ανατρέξτε εδώ για να βρείτε τις αντιστοιχίες.

Πάμε λοιπόν στις ρυθμίσεις του router μας () και επιλέγουμε:

Home Network -> Interfaces -> Local Network (από το δέντρο που φαίνεται στο κέντρο) -> Configure (πάνω δεξιά)

Στην κατηγορία IP Addresses βάζουμε μια διεύθυνση IP για το arduino (και την μάσκα υποδικτύου,εάν θέλουμε, νομίζω δεν χρειάζεται) και αποθηκεύουμε τις αλλαγές. Έχουμε έτσι δώσει μια στατική διεύθυνση την οποία θα χρησιμοποιεί το arduino για να συνδέεται στο LAN.
Σε μερικά router ίσως χρειαστεί να δώσουμε και MAC address. Σε αυτή την περίπτωση συμπληρώνουμε το αντίστοιχο πεδίο με αυτήν που φαίνεται στον κώδικα ή μια άλλη αντίστοιχης μορφής.

Αντίστοιχα στον κώδικα του arduino βάζουμε τις τιμές αυτές στα κατάλληλα ορίσματα όπως φαίνεται και στην εικόνα.
Το παράδειγμα που χρησιμοποίησα είναι το ethernet -> WebServer , και υπάρχει στα παραδείγματα.
Ουσιαστικά διαβάζει την τιμή των αναλογικών εισόδων Α0 έως Α5. Δεν χρειάζεται να συνδέσετε κάτι για τις ανάγκες αυτού του απλού παραδείγματος. Απλά θα εμφανίζονται τυχαίες τιμές σε κάθε ανανέωση. 






No comments:

Post a Comment