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