Transcript WSN RF LAB

WSN RF LAB
RF2500 NODES
MSP430 CC
1
2
3
4
5
6
7
8
9
10
11
12
PHY initialization
13
14
15
16
17
18
SimpliciTI
• Το SimpliciTI είναι ένα πρωτόκολλο
δικτύου RF για μικρά RF δίκτυα. Έχει
σχεδιαστεί για εύκολη εφαρμογή και
ανάπτυξη με τα RF αναπτυξιακά εργαλεία
της Texas Instruments όπως το eZ430RF2500 υποστηρίζοντας τις οικογένειες
πομποδεκτών CC1XXX/CC25XX/CC430.
Όλα τα απαραίτητα εργαλεία(κώδικες κλπ)
υπάρχουν διαθέσιμα και στο CD που
περιέχεται στο πακέτο.
19
20
21
IEEE 802.15.4
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
eZ430-RF2500
38
39
eZ430-RF2500
• Το eZ430-RF2500 είναι ένα ολοκληρωμένο αναπτυξιακό
εργαλείο που περιλαμβάνει όλο το υλικό και το λογισμικό
που απαιτείται για την λειτουργία ενός ασύρματου
συστήματος με τους MSP430 σε ένα USB stick.
Χρησιμοποιεί τον MSP430F22x4 και τον CC2500, έναν
πολυκάναλο πομποδέκτη RF για χαμηλής ισχύος
ασύρματες εφαρμογές.
• Ο USB προγραμματιστής του eZ430-RF2500 προσφέρει
έναν ελεγκτή UART δημιουργώντας μια θύρα για
απευθείας σειριακή επικοινωνία με το αναπτυξιακό.
Επίσης μπορεί να προγραμματίσει και τις εκδόσεις των
eZ430-F2013 και eZ430-F2012.
40
eZ430-RF2500
41
MSP430F2274
Το χρησιμοποιούμενο MSP430F2274 έχει 40 ακροδέκτες:
• Οι 4 χρησιμοποιούνται σε αναλογικές λειτουργίες
τροφοδοσίας
• 2 χρησιμοποιούνται για εργοστασιακό έλεγχο
• 2 χρησιμοποιούνται για την σύνδεση εξωτερικού
κρυστάλλου κάτι που δεν εφαρμόζεται στην πλατφόρμα
eZ430-RF2500
• 32 ακροδέκτες οργανωμένους σε 4 ψηφιακές πόρτες
42
43
eZ430-RF2500
(σχηματικό διάγραμμα)
44
Ez430-RF2500
(BOM Bill of Materials)
45
Ο μικροελεγκτής MSP430 και ο πομποδέκτης CC2500 διασυνδέονται με SPI 4-wire
(κόκκινες γραμμές) και με δύο γραμμές για interrupts (πράσινες διακεκομμένες). 46
Antenna
• Για όλους τους τύπους των κεραιών μία είναι η
κοινή προδιαγραφή: πρέπει να διασφαλίζεται 50
Ohm σύνθετη αντίσταση μεταξύ πομποδέκτη και
κεραίας ώστε να διασφαλίζεται η ελάχιστη
εξασθένηση και η μέγιστη μεταφορά ισχύος
(higher power efficiency).
• Δύο είναι οι γενικές κατηγορίες κεραιών :
differential και single ended.
• Οι περισσότεροι πομποδέκτες έχουν διαφορικές
εισόδους
47
Balunced-unbalanced (Balun)
48
Λεπτομέρειες για κεραίες….
• Οι Κεραίες με αναφορά σε ένα σημείο (Single
ended antennas) οδηγούνται από ένα σήμα που
αναφέρεται στην γή (σημείο αναφοράς του
κόμβου). Επειδή οι πομποδέκτες (transceivers)
έχουν διαφορικές εισόδους (differential inputs),
είναι αναγκαίο ένα κύκλωμα για την σχετική
μετατροπή (unbalanced to balanced και
αντιστρόφως). Αυτό το κύκλωμα αναφέρεται σαν
“balun” (BALanced - UNbalanced).
49
Τύποι κεραιών
Οι κεραίες που συνήθως χρησιμοποιούνται
σε κόμβους ασυρμάτων δικτύων
αισθητήρων είναι:
• Τυπωμένης πλακέτας (pcb antenna)
• Σύρματος (wire antenna)
• Κεραία τύπου ολοκληρωμένου (Chip
antenna)
Μια κεραία τύπου chip χρησιμοποιείται στο
eZ430-RF2500
50
51
CC2500
• Low-Cost Low-Power 2.4 GHz RF Transceiver
Analog Features
• OOK, 2-FSK, GFSK, and MSK (minimum-shift keying) supported
• Gaussian Frequency-Shift Keying (GFSK) is a type of Frequency
Shift Keying modulation that uses a Gaussian filter to smooth
positive/negative frequency deviations, which represent a binary 1 or
0. It is used by DECT, Bluetooth[1], Cypress WirelessUSB, Nordic
Semiconductor[2], Texas Instruments LPRF and z-wave devices.
For Bluetooth the minimum deviation is 115 kHz.
• Suitable for frequency hopping and multichannel systems due to a
fast settlingfrequency synthesizer with 90 us settling time
52
53
54
Απλό παράδειγμα TX/RX με
RF2500
• Στόχος: Στο πρώτο παράδειγμα 2 RF2500
προγραμματίζονται με τον ίδιο κώδικα και
παραμένουν σε κατάσταση Rx. Όταν
πατηθεί ένα κουμπί σε οποιοδήποτε από
τα δύο, στέλνει ένα μήνυμα και αλλάζει την
κατάσταση (toggles) του κόκκινου LED. Ο
κόμβος που λαμβάνει το μήνυμα
ασύρματα αλλάζει την κατάσταση (toggles)
του πράσινου LED.
55
56
Drivers…
• $PROJ_DIR$\..\drivers\bsp
• $PROJ_DIR$\..\drivers\bsp\drivers
• $PROJ_DIR$\..\drivers\bsp\boards\EZ430
RF
• $PROJ_DIR$\..\drivers\mrfi
57
Drivers…
• Bsp (board support package) (αρχεία
σχετικά με τις λεπτομέρειες των πλακετών
των κόμβων π.χ. πόσα leds, σε ποιους
ακροδέκτες ..)
• mrfi (minimal rf interface) (πως επικοινωνεί
ο μικροελεγκτής με τον πομποδέκτη στην
πλακέτα του κόμβου, πως υλοποιείται η
SPI επικοινωνία…)
58
Drivers…
Additional include directories
Defined symbols
\bsp
→Board Support Package
Οδηγοί αρχικοποίησης
MRFI_CC2500
\bsp\drivers
→buttons & leds
\bsp\boards\EZ430RF →Ορισμός συσκευής
Ορισμός RF συσκευής
\mrfi
→Minimal RF Interface
Οδηγοί αρχικοποίησης
59
Απλό παράδειγμα TX/RX με
RF2500
• INTERRUPT on button press (no
debounce!!)
• LPM0 after servicing the interrupt
• Send data to the proper node (address,
frequency channel )
60
Ο κώδικας…
#include "mrfi.h“
#include "radios/family1/mrfi_spi.h"
int main(void)
{
BSP_Init();
P1REN |= 0x04;
P1IE |= 0x04;
MRFI_Init();
MRFI_WakeUp();
MRFI_RxOn();
__bis_SR_register(GIE+LPM4_bits);
}
void MRFI_RxCompleteISR()
{
P1OUT ^= 0x02;
}
#pragma vector=PORT1_VECTOR
__interrupt void Port_1 (void)
{
P1IFG &= ~0x04;
mrfiPacket_t packet;
packet.frame[0]=8+20;
MRFI_Transmit(&packet, MRFI_TX_TYPE_FORCED);
P1OUT ^= 0x01;
}
61
Ο κώδικας…
• Line 4 is a function from the drivers (right-click on it, and choose Go to
definition of "BSP_Init()" if you want to know) which disables the watchdog,
initializes the MCLK at 8MHz, sets LED ports as outputs and the button port as
input. Note that it does neither enables the internal resistor of the button, nor
enables interrupts. This is done on lines 5 and 6.
•Line 7. MRFI stands for Minimal Radio-Frequency Interface; functions starting
with MRFI are used to drive the CC2500 radio chip. MRFI_Init() initializes the 6
wires between the MSP430 and the CC2500, powers-up the CC2500 and
configures the CC2500 47 registers and turns on interrupts from the CC2500;
•Line 8 wakes up the radio, i.e. it turns on the 26MHz crystal attach to it without
entering Rx or Tx mode;
• Line 9 switches the radio to Rx mode; from this line on, it can receive packets,
in which case the interrupt function MRFI_RxCompleteISR is called.
62
Ο κώδικας…
• BSP_Init() →
Απενεργοποιεί τον
watchdog timer, ορίζει συχνότητα λειτουργίας
του MCLK στα 8MHz, τα Led σαν εξόδους και το
button σαν είσοδο.
• MRFI_Init()→ Ενεργοποιεί την σύνδεση του
μικροελεγκτή με τον πομποδέκτη μέσω (SPI) και
αρχικοποιεί κατάλληλα τους καταχωρητές του
CC2500.
• MRFI_WakeUp()→ Ξεκινά την RF επικοινωνία
ενεργοποιώντας τον κρύσταλλο στο CC2500.
63
64
Ο κώδικας…
•
•
•
•
Μπορούμε να αλλάξουμε την συχνότητα
εκπομπής επιλέγοντας διαφορετικό κανάλι
προσθέτοντας τις παρακάτω γραμμές κώδικα
όπου χρειάζεται αφού τις συμπληρώσετε με τις
κατάλληλες τιμές για την μεταβλητή ΧΧ που
αντιστοιχεί στο κανάλι:
#include "radios/family1/mrfi_spi.h"
....
mrfiSpiWriteReg(CHANNR, XX );
65
Επιλέγοντας Συχνότητα
• Το CC2500 μπορεί να εκπέμψει στην περιοχή
συχνοτήτων 2400.0-2483.5MHz της ISM ζώνης.
• Το chip υποδιαιρεί το φάσμα συχνοτήτων
2400.0-2483.5 MHz σε κανάλια με μια
ρυθμιζόμενη απόσταση μεταξύ των καναλιώνchannel spacing. Εξ’ ορισμού στο CC250 η
απόσταση αυτή είναι 200kHz. Το channel 0
αντιστοιχεί στα 2433.0Mhz, το channel 1 στα
2433.2Mhz, και ούτω καθ’ εξής. Το κανάλι
ρυθμίζεται με τον καταχωρητή CHANNR.
66
67
68
Ο κώδικας…
Μια μεταβλητή τύπου mrfiPacket_t είναι μια δομή που
αποτελείται από δύο τμήματα:
• packet.frame
• packet.rxMetrics
Το packet.frame είναι το πλαίσιο (frame) που πρόκειται
να εκπεμφθεί. Το πρώτο byte είναι το μήκος-Length της
εκπεμπόμενης πληροφορίας-payload μαζί με τις
διευθύνσεις του αποστολέα-source και του παραλήπτηdestination. Με την συγκεκριμένη υλοποίηση του οδηγούdriver οι διευθύνσεις κωδικοποιούνται σε4 bytes, με
αποτέλεσμα το Payload length να είναι 20 bytes. Το
CC2500 δεν πραγματοποιεί κάποιο είδος φιλτραρίσματος
στις διευθύνσεις και επομένως δεν ασχολούμαστε με τις
τιμές των πεδίων διεύθυνσης-address fields.
69
Ο κώδικας…
Το τμήμα packet.rxMetrics άφορά στατιστικά δεδομένα του
λαμβανόμενου πακέτου.
Το πρώτο byte είναι η ένδειξη της έντασης του λαμβανόμενου σήματος
Received Signal Strength Indicator (RSSI) κατά την ανίχνευση της
λέξης συγχρονισμού- sync word detection. Είναι το επίπεδο του
λαμβανόμενου σήματος σε dBm.
Το επόμενο bit δηλώνει αν ο έλεγχος Cyclic Redundancy Check
(CRC) ήταν επιτυχής. Στην κανονική λειτουργία του το CC2500
απορρίπτει τα πακέτα με ανεπιτυχή CRC έλεγχο, επομένως στην
πράξη αυτό το bit είναι πάντα1). Τα τελευταία 7 bits είναι η ένδειξη
ποιότητας της ζεύξης Link Quality Indicator (LQI). Το LQI δίνει μια
εκτίμηση ποιότητας συσσωρεύοντας τα σφάλματα αποδιαμόρφωσης
των 64 συμβόλων για τα δεδομένα μετά την λέξη συγχρονισμού.
70
Συνεχόμενες εκπομπές
• Βάζοντας σχόλιο στην γραμμή 19, μόλις
πιέζουμε τον διακόπτη στον κόμβο, ο
κόμβος που θα στέλνει έναν ατελείωτο
αριθμό μηνυμάτων. Αυτό οφείλεται στο ότι
δεν “καθαρίζεται” η σημαία εξυπηρέτησης
της δακοπής και εκτελείται ξανά και ξανά η
σχετική ρουτίνα εξυπηρέτησης.
71
72
73
74