Serveur Web Embarqué pour Réseau CAN

Transcription

Serveur Web Embarqué pour Réseau CAN
PROJET TUTEURE : SERVEUR WEB
EMBARQUE POUR RESEAU CAN
Etudiants :
- Obed Russel SIKAMA
- Carthic SEKAR
TUTEUR : Mr. Christophe LOMBARD
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Sommaire
Introduction………………………………………………………………………………………………….....3
1) Présentation du projet………………………………………………………………………………….4
2) Cahier des charges………………………………………………………………………….……………5
Problématique...……………………………………………………………………………………….……..5
2.1) Développement matériel…………………………………………………………………………..5
2.2) Développement software………………………………………………………………………….6
2.3) Analyse fonctionnelle………………………………………………………………………………..6
3) Choix des composants………………………………………………………………………….………7
3.1) Microcontrôleur PIC 18F2580……………………………………………………………………7
3.2) MCP 2551…………………………………………………………………………………………..……..9
3.3) PICKIT3……………………………………………………………………………………………….……10
3.4) Connecteur DB9………………………………………………………………………………………11
3.5) Arduino Uno……………………………………………………………………………………………11
4) Réalisation…………………………………………………………………………………….……………13
4.1) Schéma électrique…………………………………………………………………….…………….13
4.2) Schéma PCB……………………………………………………………………………..……………..14
4.3) Réseau CAN………………………………………………………………………………………..……17
4.4) Réception de la trame décodée………………………………………………………..……..18
4.5) Liaison SPI……………………………………………………………………………………..………..20
5) Problèmes rencontrés………………………………………………………………………………..23
Conclusion……………………………………………………………………………………………………..24
1
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Remerciement
Ce travail a été dans le cadre de la formation en Licence Professionnelle
Véhicule, Électronique et Gestion des Automatismes de l’Institut Universitaire
de Technologie de Belfort Montbéliard.
Nous remercions notre tuteur de projet Monsieur Christophe LOMBARD pour
sa qualité de l’encadrement dont nous avons pu bénéficier tout au long de
notre projet. Nous tenons à lui exprimer toute notre reconnaissance pour son
soutien durant ces quatre mois. Sa disponibilité, sa pédagogie, sa confiance et
ses conseils nous ont été précieux dans nos choix de conception et
d’élaboration de nos programmes.
Nous remercions par ailleurs nos professeurs, les intervenants du département
GEII de l’IUT et nos amis. Les informations précieuses qu’ils nous ont apportées
nous ont permis de poursuivre ce projet dans des meilleures conditions.
Introduction
2
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Dans le cadre de notre formation qui est Licence Professionnelle Véhicule
Électronique et Gestion des Automatismes il nous est demandé de réaliser un
projet tuteuré pendant un temps bien imparti. Ce projet tuteuré fait l’objet
d’une unité d’enseignement très indispensable. Parmi tant d’autres, celui qui a
retenu notre attention est intitulé « Serveur Web embarqué pour réseau
CAN ».
Ce projet a pour but de mettre en œuvre un serveur web embarqué à base
d’Arduino et récupérer des informations depuis un véhicule (vitesse ou régime
moteur ou autres) à partir d’un navigateur.
Pour la réalisation de ce projet nous devons remplir plusieurs objectifs dont les
principaux sont:
- un développement matériel
- un développement logiciel
Un cahier des charges a été réalisé pour nous permettre de poser les
problèmes et d’y apporter les solutions nécessaires dans le corps du sujet pour
mener à bien notre projet.
1) Présentation du projet
3
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Émission d’une trame via une liaison
CAN
CANALYZER
(Simulation des informations provenant
d’un véhicule)
Liaison CAN
CARTE µC MICROCHIP
Carte à réaliser pour réceptionner les
informations depuis un véhicule
(CANalyzer)
(Carte esclave)
Liaison SPI
ARDUINO UNO + SHIELD
ETHERNET
Arduino Uno est une Carte prototype
permettant d’afficher le résultat grâce à
sa fonction moniteur série
(Carte maître)
Liaison
Série
VISUALISATION DE
L’INFORMATION SUR PC
Le résultat sera affiché dans un premier
temps sur le moniteur série du logiciel
Arduino UNO et sur le navigateur
internet à l’aide du shield ethernet
(Carte complémentaire = Shield)
Il convient de fournir une application matérielle à base de microcontrôleur
dont le but est de décoder et transmettre les informations d’une trame
(envoyée par un script développé en CAPL à partir du Canalyzer) à l’Arduino
4
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
muni d’un shield Ethernet. Cet ensemble constitue la partie embarquée du
projet.
Une communication réseau filaire est envisagée dans un premier temps.
Ensuite après validation, on pourra envisager une communication RF.
La réception et la visualisation doivent se faire sur un navigateur (prévoir un
script en PHP par exemple).
Pour pouvoir aboutir à notre champ de recherche, nous avons divisé notre
travail en plusieurs parties dont nous détaillerons notre cahier de charge qui
fera ensuite l’objet de réalisation de notre diagramme de Gantt. Celui-ci nous
permettra d’analyser l’ensemble des tâches à réaliser dans notre projet.
2) Cahier des charges
Problématique
- Générer une trame à l’aide du Canalyzer
- Décoder la trame à l’aide d’un microcontrôleur Microchip
- Afficher la trame décodée sur un navigateur
2.1) Développement matériel
- Analyse et réflexion sur le cahier de charges
- Prise en main du matériel existant
- Conception détaillée (structure détaillée) d’un prototype de carte
électronique à base du microcontrôleur (recherche et assemblage des
composants nécessaires)
- Conception de la carte (PCB)
- Implantation des composants, test et validation matérielle
2.2) Développement Software
- Réception et décodage des informations provenant du véhicule
5
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
- Transmission des informations à l’Arduino : Validation des échanges via un
moniteur série
- Étude et réalisation de la communication réseau filaire : mise en œuvre du
Shield Ethernet
- Développement IHM : utilisation d’un navigateur internet
- Étude et réalisation de la communication RF (extension possible)
- Rapport final
- Présentation
2.3 Analyse fonctionnelle :
Première partie :
Réception :
Réception des données envoyées par un script développé en CAPL à partir du
Canalyzer
Décodage :
Création d’un programme qui permet de décoder cette trame reçue par le
microcontrôleur avant de l’envoyer à l’Arduino.
Microcontrôleur
CAN
Réception de la
trame
Programme C
Décodage de la
trame
Arduino
Canalyzer
On utilise le logiciel Canalyzer qui simule les trames provenant d'un véhicule
pour envoyer au microcontrôleur.
6
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Deuxième partie :
Affichage de la trame
décodée sur le moniteur
Arduino
Réception de la trame
décodée
Arduino
Pour envoyer la trame du microcontrôleur à l’Arduino on utilise la liaison SPI.
3) Choix des composants
3.1) Microcontrôleur: PIC 18F2580
Caractéristiques :
- Circuit en Boitier : SPDIL 28
- Fréquence d’horloge : 40 Mhz
- 1536 octets de mémoire RAM
- 256 octets de mémoire EEPROM
- In Circuit Serial Programming (ICSP) : programmable sur carte
- 1 Timer 8 bits
- 3 Timer 16 bits
- 2 sorties PWM (Pulse Width Modulation) (Modulation de largeur d’impulsion)
7
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
- Liaison série (EUSART)
- Bus CAN
ECT...
Le cœur de la carte est le microcontrôleur. Il doit être capable :
- Gérer des trames CAN par l’intermédiaire de transceiveur
- Être programmable via pickit 3
- Posséder les quatre broches SDO, SDI, CLK, SS pour la liaison SPI
Sur les conseils de notre tuteur, notre choix s’est tourné vers le pic 18F2580 qui
était conforme à ces exigences.
Voici la représentation du PIC 18F2580 :
3.2) MCP 2551
8
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Le transceiver CAN :
Nous avons choisi le transceiveur MCP2551 afin de pouvoir adapter les niveaux
de tension du CAN avec le microcontrôleur.
- CAN L : 1,5 v et 2,5 v
- CAN H : 2,5 v et 3,5 v
Voici la représentation du transceiver MCP2551 :
Description des broches du transcodeur MCP2551 :
Numéro de la patte
1
2
3
4
5
Nom de la patte
TXD
VSS
VDD
RXD
VREF
6
7
8
CANL
CANH
RS
Numéro
de la
broche
1
2
3
4
Nom de la broche
TXD
VSS
VDD
RXD
Description
Transmission des données
Masse
Alimentation
Réception des données
Référence de la Tension de
sortie
CAN Low
CAN High
Contrôle – Front montant et
descendant
Fonction de la broche
Transmit Data Input
Ground
Supply Voltage
Receve Data Output
9
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
5
6
7
8
VREF
CANL
CANH
RS
2014/20155
Reference Output Voltage
CAN Low-Level Voltage I/O
CAN High-Level Voltage I/O
Slope-Contrôle Input
3.3) Pickit 3
Nous avons utilisé le PICkit 3 pour programmer le microcontrôleur
PIC 18F2580 de Microchip.
3.4) Connecteur DB9
10
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
Numéro de broche
1
2
3
4
5
6
7
8
9
2014/20155
Nom de broche
Non connectée
CAN_L
VNon connectée
Shield
Ground
CAN_H
Non connectée
V+
3.5) Arduino Uno
Arduino est une plate-forme de prototypage d'objets interactifs à usage créatif
constituée d'une carte électronique et d'un environnement de programmation.
Sans tout connaître ni tout comprendre de l'électronique, cet environnement
matériel et logiciel permet à l'utilisateur de formuler ses projets par
l'expérimentation directe avec l'aide de nombreuses ressources disponibles en
ligne. Pont tendu entre le monde réel et le monde numérique, l’Arduino
permet d'étendre les capacités de relations humain/machine ou
environnement/machine. L’Arduino est un projet en source ouverte : la
communauté importante d'utilisateurs et de concepteurs permet à chacun de
trouver les réponses à ses questions.
L'Arduino est composé de matériel et de logiciel.
11
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
12
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
4) Réalisation
4.1) Schéma électrique
La carte est articulée autour de deux circuits intégrés, le 18F4580 et le
MCP2551. J1 représente le BD9, qui lui à son tour représente la liaison CAN qui
permet de véhiculer la trame provenant du Canalyzer. Le MCP2551 est en
outre appelé transceiver c’est-à-dire il joue le rôle de l’émetteur c’est bien par
lui que transite les informations avant d’arriver au microcontrôleur 18F2580.
La communication n’est pas faite au hasard le microcontrôleur et le transceiver
ont des broches spécifiques qui leur permettent d’établir la liaison CAN. CAN_L
13
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
et CAN_H en entrée du transceiver, RXD et TXD en sortie. CAN_TX et CAN_RX
au niveau du microcontrôleur.
4.2) Schéma PCB
Pour réaliser notre carte nous avons respecté les dimensions afin que la carte
puisse s'implanter avec la carte Arduino.
Voir la l'image ci-dessous.
14
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Carte réalisée montée sur l’Arduino :
Montage équivalent à notre carte réalisée :
15
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Façade Pistes
Façade Composants
16
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
4.3) Réseau CAN : émission de la trame
Le CAN : Control Area Network. C'est un protocole de communication
série qui supporte la distribution de commande en temps réel avec un
haut niveau de sécurité.En mode standard, chaque trame est constituée
d'un identifiant sur 11 bits et peut contenir 8 octets de donnée.
L'état binaire 0 est dominant, bus bloqué. L'état 1 est récessif, le bus est
libre.
Deux types de CAN existent en automobile :
- le CAN high speed, 500 K bds
- le CAN Low speed, 125 k bds
17
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Le CANalyzer est un logiciel d'analyse de réseau développé par Vector
Informatik. Ce logiciel est très utilisé pour le développement des
calculateurs dans l'automobile.
4.4) Réception de la trame
Utilisation de l’environnement Arduino
Historique :
Le projet Arduino est né en hiver 2005. Massimo Banzi enseigne dans une
école de Design à Ivrea en Italie, et souvent ses étudiants se plaignent de ne
pas avoir accès à des solutions bas prix pour accomplir leurs projets de
18
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
robotique. Banzi en discute avec David Cuartielles, un ingénieur Espagnol
spécialisé sur les microcontrôleurs…
Ils décident de créer leur propre carte en embarquant dans leur histoire un des
étudiants de Banzi, David Mellis qui sera chargé de créer le langage de
programmation allant avec la carte. En deux jours David écrira le code! Trois
jours de plus et la carte était créé…Ils décidèrent de l’appeler Arduino (un bar
fréquenté par les élèves à proximité de l’école)…
Cela devient un succès tout de suite auprès des étudiants. Tout le monde arrive
à en faire quelque chose très rapidement sans même avoir de connaissances
particulière ni en électronique ni en informatique: réponse à des capteurs, faire
clignoter des Leds, contrôler des moteurs…
Logiciel :
L'environnement de programmation Arduino (IDE en anglais) est une
application écrite en Java inspirée du langage Processing. L'IDE permet d'écrire,
de modifier un programme et de le convertir en une série d'instructions
compréhensi
bles pour la
carte.
Moniteur
série
19
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
4.5) Liaison SPI : Serial Peripheral Interface
Une liaison SPI s’établit entre le maître, Master (carte Arduino UNO avec le
microcontrôleur ATMEGA 328) et l’esclave, Slave (carte d’acquisition réalisée
avec le microcontrôleur Pic 18F2580) et permet l’échange, en série, de
données. L’échange de données peut s’effectuer dans les deux sens (Full
duplex).
Cette liaison, synchrone, s’effectue par l’intermédiaire de trois fils notés MOSI
(Master Output Slave Input), MISO (Master Input Slave Output) et SCK (SPI
Serial Clock).
La fréquence de l’horloge SCK est fixée par le maître et est programmable.
Master Output Slave Input (MOSI)
Master Input Slave Output (MISO)
SPI Serial Clock (SCK)
la ligne MOSI est utilisée pour
transférer les données, sous forme
série, entre le maître et l’esclave,
dans le sens maître vers esclave.
Cette ligne est donc en sortie pour le
maître et en entrée pour l’esclave. La
transmission se fait, le MSB en
premier et le LSB en dernier.
la ligne MISO est utilisée pour
transférer les données, sous forme
série, entre le maître et l’esclave,
dans le sens esclave vers maître.
Cette ligne est donc en entrée pour le
maître et en sortie pour l’esclave. La
transmission se fait, le MSB en
premier et le LSB en dernier.
ce signal sert à synchroniser l’envoi
de la donnée sur la ligne MOSI ou la
réception de la donnée sur la ligne
MISO. Ce signal d’horloge est généré
par le maître et est une succession de
8 périodes nécessaires à la
transmission (ou la réception) d’un
octet.
20
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
Slave Select (SS)
2014/20155
chaque périphérique esclave est
sélectionné par une broche, notée
/SS. Cette entrée doit être à l’état bas
pour
communiquer
avec
le
composant sélectionné. Pour éviter
tout conflit de BUS sur la ligne MISO,
un périphérique esclave et un seul
doit être sélectionné.
La figure ci-dessous nous montre une liaison SPI classique entre le
microcontrôleur ″maître″ et le microcontrôleur ″esclave’’.
Connections SPI MASTER (carte Arduino UNO avec le microcontrôleur ATMEGA
328) :
SPI MASTER
SCLK
Carte Arduino 13
UNO
MOSI
11
MISO
12
SS
10
Connections SPI SLAVE (carte d’acquisition réalisée avec le microcontrôleur PIC
18F2580) :
SPI SLAVE
SCLK
Carte réalisée 14
pour
acquisition
MOSI
15
MISO
16
SS
7
21
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Communication SPI réalisée :
Nous avons réussi à établir une liaison SPI avec la carte que nous avons réalisée
et l'Arduino.
22
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
5) Problèmes rencontrés
Le projet n'a pas pu aboutir pour la raison suivante :
- Communication liaison CAN n'est pas fonctionnelle
Le travail à réaliser:
- Décodage des trames CAN ;
- Utilisation du shield ethernet pour envoyer le résultat dans un réseau ;
- Réalisation d’une page en html par exemple.
23
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Conclusion
Le projet qui nous a été confié durant une période bien impartie s'est bien
déroulé malgré que tous les objectifs n'aient pas pu aboutir.
Notre travail en binôme nous a permis de repartir les différentes tâches.
Ce projet a été très enrichissant, car il nous a permis d’approfondir nos
connaissances sur l'architecture des différents circuits intégrés utilisés, ainsi de
découvrir leurs applications en dehors de celles qui ont été apprises
précédemment en cours et en travaux pratiques.
Aussi il nous a permis de découvrir la carte Arduino Uno, sa technologie et ses
différentes applications.
24
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
ANNEXES
Liste des composants
25
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Code langage C
#include<18F2580.h>
#fuses HS, NOWDT, NOPROTECT, NOLVP
#use delay(clock=20000000)
#include<can-18xxx8.c>
#include <Z:\Drivers\can_125k.c>
#use rs232(xmit=PIN_C6,rcv=PIN_C7,baud=9600)// utilisation rs232
unsigned int buffer[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //(tableau), contient les octets
du message
int32 rx_id;// (int32), adresse contenue dans le message
int rx_len;// (int), longueur du message
struct rx_stat rxstat; // (int), type de données
void main()
{
setup_spi(SPI_SLAVE | SPI_L_TO_H | SPI_CLK_DIV_4);// configuration du SPI sachant que la carte se
comporte comme esclave et SPI_CLK_DIV_4 par défaut
can_init();//Initialisation du Bus CAN
while (TRUE)
{
if (can_kbhit())// test de réception d’un message = TRUE si un message vient d’arriver
{
if (can_getd(rx_id,&buffer[0], rx_len, rxstat))
{
if (rx_id==0x94)// identifiant = 94
{
//output_high(PIN_C2);
}
}
}
}}
26
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Code Arduino pour la liaison SPI
#include <SPI.h> //ouverture de la librairie SPI
byte n=0; // initialisation de la variable pouvant stocker un nombre entre 0 et 255
void setup()
{
Serial.begin(9600);
// Initialisation de la liaison série et communication avec une vitesse de 9600 bd
SPI.begin(); // Initialisation du bus SPI
SPI.setDataMode(SPI_MODE1); //Mode 1 : données capturées sur front montant d'horloge et
transmises sur front descendant
pinMode(10,OUTPUT); // activation du port SS
}
void loop()
{
digitalWrite(10,LOW); // activation de la communication SPI et envoi de la commande de lecture
n= SPI.transfer(0); // Envoi du byte nul pour réception des données
digitalWrite(10,HIGH); // Fin de la communication
Serial.print("valeur = ");
Serial.println(n,DEC);// Envoi sur liaison série
delay(2000);
}
27
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Schéma électrique
28
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
TYPON
29
Projet tuteuré : Serveur Web Embarqué pour Réseau CAN
2014/20155
Diagramme de Gantt
30

Documents pareils