Το επόμενο project σας κάντε το ασύρματο.

Πρόσφατα είχα την ευκαιρία να “παίξω” λίγο με ασύρματη επικοινωνία μεταξύ μικροελεγκτών. Για το “παιχνίδι” αυτό χρησιμοποίησα τον πομποδέκτη (transceiver) nRF24L01+ της εταιρίας Nordic.

Πρόκειται για ένα μόνο ολοκληρωμένο κύκλωμα που προσφέρει ασύρματη δικτύωση στα 2.4 GHz (GFSK, 125 κανάλια) με τρεις ταχύτητες μετάδοσης (250kbps, 1Mbps και 2Mbps) και τέσσερα επίπεδα ισχύος εκπομπής (0, -6, -12 και -18 dBm). Το nRF24L01+ κυκλοφορεί ευρέως στο Ebay σε ωραία “πλακετάκια” στην τιμή των 1,5 € το κομμάτι. Παράγγειλα 2 με 5 € (μαζί με τα μεταφορικά).

wireless

Nordic nRF24L01+.
Τεκμηρίωση του nRF24L01.
Τεκμηρίωση του ATmega8.
Τεκμηρίωση του ATmega328p.

nRF24L01+

Boards

pcb

Η επικοινωνία του μικροελεγκτή με το nRF24L01+ γίνεται μέσω διαύλου SPI, γεγονός που απλοποιεί πολύ τα πράγματα. Σε συνδυασμό με το μικρό και απλό φυλλάδιο τεκμηρίωσης μπορεί κάποιος να κατανοήσει εύκολα την λειτουργία του, και τι πρέπει να κάνει.

Συνολικά έχει 8 pins. Δύο τροφοδοσίας (Vcc, Gnd), τέσσερα για τον δίαυλο SPI (SCK, MISO, MOSI, CSN), ένα για τον έλεγχο εκπομπής λήψης (CE) και ένα interrupt (IRQ). Το pin IRQ μπορούμε να μην το χρησιμοποιήσουμε. Αν θέλαμε να διαβάζουμε/γράφουμε στο nRF24L01+ με την βοήθεια interrupt θα το χρησιμοποιούσαμε.

Ο κώδικας που χρησιμοποιώ βασίζεται αρκετά στο Mirf. Τα αρχεία του κώδικα για το nRF24L01 είναι τα mirf.h, mirf.c και το nRF24L01.h. Στο mirf.h υπάρχουν και διάφοροι παράμετροι που μπορεί να αλλάξει κάποιος. Το κανάλι, το μέγεθος των προς εκπομπή δεδομένων (payload) και των pin CE, CSN.

// Change channel here (0 to 125).
#define CHANNEL 1

// Change payload here (1 to 32).
#define PAYLOAD 6

// Change CE pin here.
#define CE_PORT PORTB
#define CE_DDR  DDRB
#define CE_PIN  PB1

// Change CSN pin here.
#define CSN_PORT PORTB
#define CSN_DDR  DDRB
#define CSN_PIN  PB2

Τα αρχεία του κώδικα υπάρχουν ΕΔΩ.

Τα pin επικοινωνίας του SPI του nRF24L01+ είναι ανεκτικά σε επίπεδα τάσης των 5 volt αλλά το ίδιο πρέπει να το τροφοδοτήσουμε με τάση των 3.3 volt. 5 volt στην τροφοδοσία του θα το καταστρέψουν. Εγώ χρησιμοποίησα για την τροφοδοσία του μία απλή μπαταρία CR2032 των 3 volt.

Schematic

Η εμβέλεια μπορεί να φτάσει και τα 30 μέτρα με την ενσωματωμένη κεραία και οπτική επαφή. Υπάρχουν όμως και modules με sma έξοδο που μπορεί να συνδεθεί καλύτερη κεραία που μπορεί να αυξήσει την εμβέλεια.

Antenna

Advertisements
This entry was posted in AVR, Electronics and tagged , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s