P13 Plateforme expérimentation IOT
Sommaire
- 1 Présentation du projet
- 2 A la découverte de la programmation PDI
- 3 Atmel Software Framework (ASF)
- 4 USB
- 5 La composition d'un noeud
- 6 Plateforme intermédiaire
- 7 Plateforme
- 8 Développement web
- 9 Avancement du projet
Présentation du projet
Contexte
Dans un monde qui va devenir connectée, il a été décidé de réaliser un projet sur ces nouvelles technologies. La plateforme pourra être implantée dans la nouvelle bibliothèque universitaire du campus de Lille.
Les utilisateurs pourront bénéficier d’informations disponibles tel que les places disponibles, la température, la luminosité …
Ces informations dépendront des capteurs mis sur le nœud.
Le deuxième intérêt que l’internet des objets nous procure, c’est l’historique et la prévision. En effet on aura une possibilité de stocker les informations.
Exemple :
• Commander le chauffage en fonction des températures extérieures ou d’estimer la consommation par rapport aux années précédentes.
• Effectuer un suivi de la fréquentation de la bibliothèque. Cette fréquentation pourra être analysée afin de mettre plus de personnel lors des périodes de forte affluence comme des jobs étudiant.
Le but de ce projet est de développer une plateforme d’expérimentation.
Cahier des charges
Objectif :
-Réaliser un noeud de capteur
Il a été défini lors des réunions les points suivants :
-Structure d'un nœud de capteur
Un nœud de capteur sera composé d'une carte mère, de 8 cartes filles . Sur chacune des filles il y aura deux capteurs implantés dessus.
Ci-dessous un nœud de capteur :
-Communication interne du nœud
Le noeud sera capable de se recongifurer tout seul via la raspberry.
Par soucis de sécurité on pourra remonter les données issues des capteurs soit par la liaison série ou par liaison usb.Il faut noter
que la liaison USB sera utilisé en fonctionnement normal
Chaque capteur communique en liaisons radios entre eux.
-Communication externe du noeud
Le noeud communiquera vers d'autre noeud ou vers un puit grâce à une liaison radio située sur les cartes des petites filles soit via
le cable éthernet placé sur la carte mére.
-Information que l'on souhaite avoir
Afin de réaliser un noeud il a été choisi de faire remonter les informations suivantes :
Ces informations correspondent à des données utilisables en bibliothèque pour les étudiants que pour le personnel. Ces données pourront être stockées en vue d'analyse. Ces dernières seront traitées dans le projet P10.
A la découverte de la programmation PDI
Présentation du PDI
Le Programme et Débogue l'Interface (PDI) est une interface propriétaire Atmel pour
la programmation externe et son débogage.Il est constitué de deux éléments:
-Clock
-Data
Schéma du connecteur pour la programmation en pdi
Horloge
Relevé de l'horloge (PDI CLK)
On observe des oscillations. Ces dernières ont un dépassement de 20%
La fréquence minimale de programmation est de 10 KHZ . Nous sommes à la fréquence de 2 Mhz
Données
Relevé de la trame de données (PDI DATA)
Fréquence de la trame : 2.7174 Hz
Programmation à l'aide du mkII
Matériel nécessaire
-Pc avec AVR Studio
-Connecteur MKII
-Atxmega
-Led
-Résistance
Schéma d'installation :
AVR Studio
Le logiciel AVR Studio est disponible à l'adresse suivante :http://www.atmel.com/microsite/avr_studio_5/
Exemple
Clignotement d'une Led :
Code C :
- include <avr/io.h>
int main(void)
{
int i;
PORTB_DIR= 0XFF;
while(1)
{
PORTB_OUT= 0x00;
for(i=0;i<=10000;i++);
PORTB_OUT= 0xFF;
for(i=0;i<=10000;i++);
}
}
Relevé du résultat :
Programmation à l'aide de la Raspberry
Matériel nécessaire
Le matériel nécessaire pour programmer les cartes avec une Raspberry est le suivant :
- Pc
- Microcontrôleur : Atxmega par exemple
- Platine d'expérimentation
- Led
- Résistance
Bibliothèque
Les bibliothèques suivantes sont nécessaire pour reprogrammer en PDI :
- gcc-avr
- binutils-avr
- https://github.com/DiUS/xmega-pdi-pi2
- build-essential
- g ++
-libcm2835
Installation de la libcm2835
wget http://67.192.60.197/mikem/bcm2835/bcm2835-1.4.6.tar.gz
tar xvfz bcm2835-1.4.6.tar.gz;
cd bcm2835-1.4.6;
./configure;
make;
sudo make install
Connexion du Pdi sur la Raspbrerry
Le PDI sera connecté sur les broches suivantes de la Raspberry :
-broche 1 : 3.3V
-broche 25 : GND
-broche 16 : PDI_Data
-broche 18 : PDI_clk
Correspondance entre les broches et les gpio :
Sa programmation
Un exemple de programmation du microcontrôleur via le PDI
- Compilation du fichier C
$ avr-gcc -g -Os -mmcu=atxmega64a1 -c demo.c
- Génération du fichier .hex
$ avr-gcc -g -mmcu=atxmega64a1 -o demo.elf demo.o
$ avr-objcopy -j .text -j .data -O ihex demo.elf demo.hex
- Transfert du fichier .hex à la racine de la raspberry
scp nom_fichier.hex pi@adresse_raspberry:~/
- Transfert de la raspberry vers l'atxmega
sudo ./pdi -c (Numéro de la GBIO de la Clock) -d (Numéro de la GBIO de la Data) -a override base address (note: PDI address space) - F Nom du fichier.hex
Exemple
Clignotement d'une Led :
Code C :
- include <avr/io.h>
int main (void)
{
int i;
PORTB.DIR= 1;
while(1)
{
PORTB.OUT=0;
for(i=0;i<=10000;i++);
PORTB.OUT= 1;
for(i=0;i<=10000;i++);
}
}
Fichier hex généré pour l 'atxmega
Extrait du fichier hex :
- 1001F0000C94080111241FBECFEFDFE2DEBFCDBF9C
- 1002000018BE19BE1ABE1BBE0E940A010C94120130
- 100210000C9400008FEF80932006109224068093A8
- 080220002406FBCFF894FFCF88
- 00000001FF
Résultat :
Programmation à l'aide d'un microcontrôleur
Matériel nécessaire
Pour réaliser la programmation à l'aide du microcontrôleur on aura bessoin :
-2 Atxmega (note il faudra remplacer la variable mmcu par le nom de vôtre atxmega)
-Platine d'expérimentation
-Led
-Résistance
Schéma de connexions des deux Atxmega :
Atmel Software Framework (ASF)
Présentation
Extrait issue du site Atmel :
The Atmel® Software Framework (ASF) is a MCU software library providing a large collection of embedded software for Atmel flash MCUs: megaAVR, AVR XMEGA, AVR UC3 and SAM devices.
It simplifies the usage of microcontrollers, providing an abstraction to the hardware and high-value middlewares
ASF is designed to be used for evaluation, prototyping, design and production phases
ASF is integrated in the Atmel Studio IDE with a graphical user interface or available as standalone for GCC, IAR compilers
ASF can be downloaded for free
Access the ASF documentation.
Note: ASF in Atmel Studio does not require a specific download. Use Atmel Studio Extension Manager (Tools->Extension Manager) or visit Atmel Gallery to update ASF in Atmel Studio.
Le site se situe à l'adresse suivante : asf framework
Capture d'écran du site :
USART
Objectif
Les objectifs sont les suivants :
- Tester le code de l'exemple du site ASF
- Remonter les données des capteurs suivant la trame voulue
Le code présent sur le site atmel est le suivant :
int main(void)
{
uint8_t tx_buf[] = "\n\rHello AVR world ! : ";
uint8_t tx_length = 22;
uint8_t received_byte;
uint8_t i;
board_init();
sysclk_init();
// USART options.
static usart_rs232_options_t USART_SERIAL_OPTIONS = {
.baudrate = USART_SERIAL_EXAMPLE_BAUDRATE,
.charlength = USART_SERIAL_CHAR_LENGTH,
.paritytype = USART_SERIAL_PARITY,
.stopbits = USART_SERIAL_STOP_BIT
};
// Initialize usart driver in RS232 mode
usart_init_rs232(USART_SERIAL_EXAMPLE, &USART_SERIAL_OPTIONS);
// Send "message header"
for (i = 0; i < tx_length; i++) {
usart_putchar(USART_SERIAL_EXAMPLE, tx_buf[i]);
}
// Get and echo a character forever, specific '\r' processing.
while (true) {
received_byte = usart_getchar(USART_SERIAL_EXAMPLE);
if (received_byte == '\r') {
for (i = 0; i < tx_length; i++) {
usart_putchar(USART_SERIAL_EXAMPLE, tx_buf[i]);
}
} else
usart_putchar(USART_SERIAL_EXAMPLE, received_byte);
}
}
Ce code a été testé. Le résultat est conforme à nos attentes.
Nous sommes en mesure de remonté des données via la liaison série
Exemple
Format de la trame pour le projet P10
Le projet P10 souhaite que la trame issue de l'USART soit la suivante :
Mode de transmission ( S : USART ; U : USB ; R : Radio) |
ID | Numéro de la carte fille |
Numéro de la carte petite fille |
Data |
Exemple :
S | 005 | 8 | 2 | 255 |
Data transmise via l'uart | Noeud 5 | Carte fille 8 | Carte fille 2 | Mesure d'une témperature |
Implantation
Schéma
Fonctionnement
Générateur de trame
Programme de test
Données aléatoire
Données températures
USB
Présentation de la board EVB-USB2517
The SMSC USB2517 MultiTRAK™ is a Low-Power Full-Featured High-Speed USB 2.0 compliant hub with seven down-stream ports. The EVB-USB2517 Evaluation Board demonstrates a standalone application for the hub with advanced power saving options and configurable port assignments. It is a demonstration and low-cost evaluation platform that robustly demonstrates the unique features of this device using a low-cost PCB implementation with individual port power control. The EVB-USB2517 is designed for a low cost, power efficient implementation of a High-Speed USB Hub that supports internal default hub configurations as well as optionally supports an external EERPOM configuration. This evaluation platform supports a red LED indicator for the High-Speed hub state as well as standard USB Amber/Green LED indicators for operational state indication.
Source : Microship
La composition d'un noeud
La carte mère
Présentation
Elle sera composé de :
-une carte raspberry pi
-deux cartes XMega-A3BUX plained
Carte mère :
Schéma des fonctions principales que la carte doit assuré :
Configuration de la raspberry
Raspberry PI
Mapping de connection du noeud :
PDI_DATA | PDI_CLOCK | Action | |||
Broche | Gpio | Broche | Gpio | ||
Carte A (Hub USART) | 16 | 23 | 18 | 24 | Reprogrammez le HUB USART en pdi Il faut désactiver l'interface SPI de la raspberry |
Carte fille B (1) | 15 | 22 | 13 | 27 | Reprogrammez la carte fille B en pdi |
Carte fille C (2) | 19 | 10 | 21 | 9 | Reprogrammez la carte fille C en pdi |
Carte fille D (3) | 11 | 17 | 12 | 18 | Reprogrammez la carte fille D en pdi |
Carte fille E (4) | 7 | 4 | 22 | 25 | Reprogrammez la carte fille E en pdi |
Raspberry PI 2
PDI_DATA | PDI_CLOCK | Action | |||
Broche | Gpio | Broche | Gpio | ||
Carte A (Hub USART) | 11 | 17 | 13 | 27 | Reprogrammez le HUB USART en pdi Il faut désactiver l'interface SPI de la raspberry |
Carte fille B (1) | 29 | 5 | 31 | 6 | Reprogrammez la carte fille B en pdi |
Carte fille C (2) | 33 | 13 | 35 | 19 | Reprogrammez la carte fille C en pdi |
Carte fille D (3) | 16 | 23 | 18 | 24 | Reprogrammez la carte fille D en pdi |
Carte fille E (4) | 36 | 16 | 38 | 20 | Reprogrammez la carte fille E en pdi |
Carte fille F (5) | 15 | 22 | 37 | 26 | Reprogrammez la carte fille F en pdi |
Carte fille G (6) | 12 | 18 | 22 | 25 | Reprogrammez la carte fille G en pdi |
Carte fille H (7) | 32 | 12 | 40 | 21 | Reprogrammez la carte fille H en pdi |
Carte fille I (8) | 19 | 10 | 21 | 9 | Reprogrammez la carte fille I en pdi |
Commande hub USART (carte A)
Action | Envoi | Reception |
Récupérer l'ensemble des trames du noeud | A | -Trame B -Trame C -Trame D -Trame E -Trame F -Trame G -Trame H -Trame I |
Récupération partiel sous réserve de validation | ||
Récupérer la trame de la carte B | B | Trame B |
Récupérer la trame de la carte C | C | Trame C |
Récupérer la trame de la carte D | D | Trame D |
Récupérer la trame de la carte E | E | Trame E |
Récupérer la trame de la carte F | F | Trame F |
Récupérer la trame de la carte G | G | Trame G |
Récupérer la trame de la carte H | H | Trame H |
Récupérer la trame de la carte I | I | Trame I |
Mesure enérgetique
Cette carte mesure également la consommation du nœud. En effet on mesurera sur les convertisseurs analogique-numérique le courant.
Le courant ne peut pas être mesuré directement. Pour cela on va utiliser une résistance de quelque ohms.
Pour estimer la puissance consommé par le nœud on aura besoin de connaitre :
-la valeur de la résistance
-la tension
Formule à utiliser pour estimer la puissance:
On pose :
Mr : valeur issue du CAN
Ir: Estimation du courant dans la résistance
U : tension d'alimentation
Afin d'estimer le courant de la résistance il faut convertir Mr suivant la courbe du CAN. Cette dernière est linéaire.
Un fois la valeur convertie on aura à appliquer la formule suivante : P=U*Ir
La carte fille
Présentation
Elle sera composé de :
-Atmega A1U
-Deux cartes petites filles
Les fonctions de la carte sont :
Dénomination des cartes :
Ancienne appellation | Nouvelle appellation |
Carte fille 1 | Carte B |
Carte fille 2 | Carte C |
Carte fille 3 | Carte D |
Carte fille 4 | Carte E |
Carte fille 5 | Carte F |
Carte fille 6 | Carte G |
Carte fille 7 | Carte H |
Carte fille 8 | Carte I |
Configuration
Data | Programmation | |||||
PDI | SPI / I2C ... | |||||
Amont (vers la raspberry) |
Aval (vers les capteurs) |
Amont (vers la raspberry) |
Aval (vers les capteurs) |
Amont (vers la raspberry) |
Aval (vers les capteurs) |
|
Carte B | Carte A | - Carte B1 - Carte B2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte B1 - Carte B2 |
Carte C | Carte A | - Carte C1 - Carte C2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte C1 - Carte C2 |
Carte D | Carte A | - Carte D1 - Carte D2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte D1 - Carte D2 |
Carte E | Carte A | - Carte E1 - Carte E2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte E1 - Carte E2 |
Carte F | Carte A | - Carte F1 - Carte F2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte F1 - Carte F2 |
Carte G | Carte A | - Carte G1 - Carte G2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte G1 - Carte G2 |
Carte H | Carte A | - Carte H1 - Carte H2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte H1 - Carte H2 |
Carte I | Carte A | - Carte I1 - Carte I2 |
Carte mère (Voir configuration Rasbperry) |
NC | NC | - Carte I1 - Carte I2 |
USART
Action | Réception | Envoi |
Envoi la trame de la carte B | B | Envoi la trame |
Envoi la trame de la carte C | C | Envoi la trame |
Envoi la trame de la carte D | D | Envoi la trame |
Envoi la trame de la carte E | E | Envoi la trame |
Envoi la trame de la carte F | F | Envoi la trame |
Envoi la trame de la carte G | G | Envoi la trame |
Envoi la trame de la carte H | H | Envoi la trame |
Envoi la trame de la carte I | I | Envoi la trame |
La carte petite fille
Présentation
Elle sera composé de :
une carte XMega-A3BUX plained
Dénomination des cartes :
Carte parent | Ancienne appellation | Nouvelle appellation |
Carte B (Ex carte fille 1) | Carte Petite fille 1 | Carte B1 |
Carte Petite fille 2 | Carte B2 | |
Carte C (Ex carte fille 2) | Carte Petite fille 1 | Carte C1 |
Carte Petite fille 2 | Carte C2 | |
Carte D (Ex carte fille 3) | Carte Petite fille 1 | Carte D1 |
Carte Petite fille 2 | Carte D2 | |
Carte E (Ex carte fille 4) | Carte Petite fille 1 | Carte E1 |
Carte Petite fille 2 | Carte E2 | |
Carte F(Ex carte fille 5) | Carte Petite fille 1 | Carte F1 |
Carte Petite fille 2 | Carte F2 | |
Carte G (Ex carte fille 6) | Carte Petite fille 1 | Carte G1 |
Carte Petite fille 2 | Carte G2 | |
Carte H (Ex carte fille 7) | Carte Petite fille 1 | Carte H1 |
Carte Petite fille 2 | Carte H2 | |
Carte I (Ex carte fille 8) | Carte Petite fille 1 | Carte I1 |
Carte Petite fille 2 | Carte I2 |
Capteur
- Mesure de la température
Ce type de capteur utilise le convertisseur analogique numérique du microcontroleur. Les paramétres à configurés seront les suivantes :
* Quantum
* Plage de mesure
* Registre
Ce capteur à les caractéristiques suivantes :
Fournisseur : Conrard
Référence :Capteur de température numérique TSIC506 boîtier TO 92 B & B Thermotechnik TSIC506-TO92
Plage de mesure :-10 C - 60C
Tension d'alimentation :3-5.5V
Précision : +/- 0.1 C
Consommation : 30 - 60 µA
- Mesure du volume sonore
La mesure d'un volume sonore se réalise par la transformation d'un vibration en un signal éléctrique.Afin de pouvoir l'exploiter il faudra
le connecté sur le convertisseur analogique numérique du microcontroleur.Les paramétres à configurés seront les suivantes :
* Quantum
* Registre
Ce capteur à les caractéristiques suivantes :
Fournisseur : Zartronic.fr
Référence :Capteur Sonore Analogique
Tension d'alimentation :5V
- Mesure de la luminosité
La mesure de la luminosité s'effectue avec l'aide d'un photo-transistor. Le photo-tansistor fera varier une résistance. On peut mesurer sa tension
a ses bornes. Cette tension étant trés faible il est nécessaire d'avoir un amplificateur en sortie. La tension sera exploitable par le
convertisseur analogique numérique du microcontroleur.Les paramétres à configurés seront les suivantes :
* Quantum
* Registre
Ce capteur à les caractéristiques suivantes :
Fournisseur : Conrard
Référence :Photo-résistance FW200
Plateforme intermédiaire
Cette plateforme va être mise à la disposition du projet P10
Schéma
Schéma de la plateforme :
Implantation
Données
Programmation | ||
PDI_DATA | PDI_Clk | |
Carte A | GPIO 23 | GPIO 24 |
Carte B | GPIO 22 | GPIO 27 |
Vitesse de transfert | ||
USART | 9 600 | |
USB | 115 200 |
Configuration | ||
Amont (vers la raspberry) |
Aval (vers les capteurs ) |
|
Raspberry | Réseau - Projet P10 | Carte A Carte USB |
Carte A | Raspberry | Carte B |
Carte B | -Carte A - Carte USB |
NC |
Carte USB | Raspberry | Carte B |
Connections | ||
Carte Xmega-A3BU | ||
Port J1 | Port J2 | |
Carte A | Broche Rx et Tx USART vers la Raspberry |
Broche Rx et Tx USART vers la carte B |
Carte B | Broche Rx et Tx USART vers la carte A |
Broche Rx et Tx USART vers la carte USB |
Raspberry | ||
Broche | ||
1 | Alimentation de la carte A | |
8 | USART TX | |
10 | USART RX | |
13 | PDI Clk carte B | |
14 | GND Carte A | |
15 | PDI Data Carte B | |
16 | PDI Data carte A | |
17 | Alimentation Carte B | |
18 | PDI Clock Carte A | |
25 | GND Carte B |
Câble de connexion | ||
Couleur | ||
Rouge | +3.3 V | |
Bleu | GND | |
Jaune | PDI | |
Vert /Jaune | UART |
Implantation sur le réseaux
L'implantation s'est effectué sur une raspberry PI2 . Les configurations sont celles énoncé dans la partie 5.
Fichier source
Plateforme
Développement web
Adresse du site de présentation : [lien ]
Avancement du projet
Dans cette section vous trouverez une vue de l'avancement du projet. Cette section doit être interactive.
Problème rencontrées
Bloquant | En voie de résolution | Résolu | |
ASF de atmel | Développé sur Atmel Studio (Window) | ||
compilation des fichiers exemple de l'usart disponible sur l'asf sous debian | les fichiers sont compilé sous Windows et ensuite on envoie le .hex généré sur la raspberry | ||
saturation de la mémoire flash de la board (Erreur de type : Error failed to rewrite at the adress 2048) | Faut le passer en force jusqu’à 5 fois parfois. | ||
Liasion série sur la raspberry ne fonctionne pas pour remonter les données | Mr REDON m'a aidé à résoudre ce problème | ||
Programmé l'USART avec un seul fichier en pdi sur les cartes | Plusieur test ont été réalisé le 15 /01 /2016. Ce test consistait à mettre l'ensemble du programme de l'USART qui a été développé. Ce dernier a été envoyé sur l'ensemble des cartes connecté en pdi. Le résultat est le suivant: aucune informations n'ont pu être remonter à la raspberry |
A faire
A faire | En cours | Terminé | |
Reconfiguration en pdi des cartes via l'usart | Il existe une probabilité que cette tache ne soit pas réalisé du fait qu'on développe sous Windows Pour développer sous Linux il nous faudrait la bibliothèque ASF |
||
Mise en place de la liaison USB | Carte mise en place sur le nœud |
||
USART | Un code d'essai est opérationnelle. Nous somme en mesure de remonter plusieurs trame de données à la raspberry | ||
Reprogrammation des cartes d'exemples en PDI | La reprogrammation en PDI est opérationnelle. Cependant quelque résidu nous pose problèmes |
PDI bug
-25 janvier
Erreur to failed at the adress 4096 -> Reprogrammation effectué
8 tentative avant la reprogrammation de la flash