Projet capteurs

Sommaire
Enseignants
Informations pratiques
- Informations sur le développement sous Linux, notamment le changement d'environnement et de compilateur : eZ430-RF2500 development on Linux
- De la documentation sur le site TI : eZ430-RF2500
- Documentation du chip radio : CC2550
- Documentation du micro-controller utilisé : MSP430F22x2, MSP430F22x4
- Documentation utilisateur : MSP430x2xx Family
- Les timers en détails : MSP430 Timers In-Depth
- Blog plein de bonnes infos techniques sur le MSP430 Scientific Instruments Using the TI MSP430
Code de démarrage
- Dépot git pour les sources TI modifiés :
git+ssh://depots.ensimag.fr/depots/2017/timsp430gcc
- Dépot git pour les sources modifiés inspirés des TP de Thomas Watteyne :
git+ssh://depots.ensimag.fr/depots/2017/ezWSN
Lisez la partie Lab 2, qui contient les crash courses sur le MSP, le CC2500 et présente la carte eZ430-RF2500
- Programmer avec `mspdebug rf2500 "prog led_steady"`
Environnement de développement GNU pour les MSP430
Installation de MSPGCC
Le lien suivant indique la marche à suivre pour compiler et installer la version de gcc nécessaire pour faire la cross-compilation vers les micro-contrôleurs MSP. Installing MSPGCC4 and MSPDEBUG on Kubuntu 10.04.
Installation de MSPDebug
Le plus simple est de cloner le dépôt git de MSPDebug puis le compiler.
Utilisation du lien série
Normalement les cartes doivent apparaitre sous /dev/ttyACM0 une fois branchées, vous pouvez ensuite vous y connecter en utilisant minicom.
Protocole
Plus d'infos sur l'intranet : KIOSK
Format de trames
Pistes de réflexion sur le format des trames. L'idée est de partir du format donné par MRFI :
Length (1B) | Source (4B) | Destination (4B) | Payload (Length - 8B) |
Avec payload de taille maximale 53 Bytes.
On ajoute un octet de flags.
Length (1B) | Source (4B) | Destination (4B) | Flags (1B) | Payload (Length - 8B) |
Flags
- 0x1 = BEACON BIT : Si à 1 il s'agit d'une trame beacon.
- ...
Beacon frame
Les trames dont le BEACON BIT est positionné à 1 auront un format strict et spécial. La trame devra contenir :
- 8 bits : Un numéro de réseau
- 8 bits : Le numéro du slot actuel
11 (Length 1B) | Source (4B) | 0xFF (4B) | Flags & 0x01 (1B) | Network id (1B) | Slot num (1B) |
Remarques
Il est important que la durée de scan soit importante (minimum 2 duty cycles) afin d'être sûr de ne manquer aucun beacon.
Header Commun
#ifndef __COMMON_DEFINES_H__ #define __COMMON_DEFINES_H__ #include <mrfi.h> // Definition des adresses #define ET_1 0x1 #define ET_2 0x2 #define ET_3 0x3 #define ET_4 0x4 #define ET_5 0x5 #define ET_6 0x6 #define KH_1 0x7 #define KH_2 0x8 #define KH_3 0x9 #define KH_4 0xA #define VB_1 0xB #define VB_2 0xC #define VB_3 0xD #define VB_4 0xE // Definition des flags #define FDATA 0x0 #define FBEACON 0x1 // en ms #define DUREE_CYCLE 500 // en ms #define DUREE_SCAN 1000 // en ms #define DUREE_ACTIVE 200 // en ms #define DUREE_SLOT 2 // 32 slots ? #define N_SLOT 32 typedef struct { uint8_t length; uint8_t src[4]; uint8_t dst[4]; uint8_t flags; uint8_t data[MRFI_MAX_FRAME_SIZE-10]; } mPacket; typedef struct { uint8_t network_num; uint8_t slot_num; uint8_t slot_total; } mBeacon; #endif