0% ont trouvé ce document utile (0 vote)
65 vues28 pages

Rapport Stage D'initiation Emetteur Récepteur BUS CAN Pour Communication Entre Cartes Arduino

Rapport Stage D'initiation Emetteur Récepteur BUS CAN pour communication entre cartes Arduino

Transféré par

KHADIJA BENMOUSSA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
65 vues28 pages

Rapport Stage D'initiation Emetteur Récepteur BUS CAN Pour Communication Entre Cartes Arduino

Rapport Stage D'initiation Emetteur Récepteur BUS CAN pour communication entre cartes Arduino

Transféré par

KHADIJA BENMOUSSA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 28

Rapport de stage d’initiation

Diplôme Universitaire de Technologie


Filière : Génie Electrique
Option : Electronique et Informatique Industrielle

Emetteur Récepteur BUS CAN pour


Communication entre Arduino

Réalisé et présenté par : Encadré par :

Mr. YOUSSOUFI Marouane Mr. HANAFI Ahmed


M. BENMOUSSA Khadija
2
Table des Matières:
Résumé………………………………………………………………………..4

Liste des figures ………………………………………………..5

Chapitre 1 : BUS CAN ………………………………………………..7

a. Couche physique………………………………………….8
b. Topologie…………………………………………………8
c. Support……………………………………………………9
d. Encodages des Bits………………………………………10
e. Connecteur……………………………………………….10
f. Les caractéristiques du Bus CAN………………….…….11
g. Alimentation et broches du Bus CAN…………………...12

Chapitre 2 : Arduino …………………………………………………14

Chapitre 3 : Arduino Nano…………………………………………..17

a. Alimentation /configuration de broches de la Nano…… .19


b. Les broches d’entrée/sortie……………………………....20
c. Caractéristiques de l’Arduino Nano……………………..20
d. Les inconvénients d’une carte Nano …………………….21
e. Les avantages d’une carte Nano ………………………...21

Chapitre 4 : émetteur récepteur Arduino nano……….…….23

a. Adressage des cartes……………………………………..24


b. Connexion des Bus CAN avec les cartes Nano……….…25
c. Connexion entre CAN MCP2515………………………..25
d. Les programmes sur les cartes Nano …………………....26

Conclusion :……………………………………………………28

3
Résumé :

Dans le cœur de ce sujet : Faire dialoguer deux cartes


électroniques Arduino identiques au moyen de deux BUS CAN.
L’intention émane de mieux illustrer la possibilité de contrôle des
commandes et pilotage des périphériques, ainsi que la mise en
communication entre microcontrôleurs rien qu’en les connectant à un
réseau de contrôleurs.

Ce sujet est initié par un aperçu sur le BUS CAN et s’ouvre


ensuite sur le fameux Arduino, suivi par la carte électronique Nano à
qui on a consacré un chapitre recouvrant une approche détaillée dans
ce sens. Puis arrive l’exemplaire Emetteur Récepteur BUS CAN
interféré avec les cartes Nano.

4
Liste des figures :
Fig 1: Connecteur DE-9 ………………………………………….10

Fig 2: Bus CAN………………………………………………….11

Fig 3 : Shield Bus CAN………………………………………….12

Fig 4 : Exemples de cartes Arduino………………………………15

Fig 5 : Exemples de cartes Arduino (Fritzing)……………………16

Fig 6 : Le microcontroleur ATMega328………………………….17

Fig 7 :La face ariére de la carte Arduino Nano……………..…….18

Fig 8 : La face avant de la carte Arduino Nano…………………...18

Fig 9: Le dispositif communicatin entre Arduino avec interface CAN

MCP2515…………………………………………………………23

5
6
Le progrès allant croissant du marché automobile exige aux entreprises
engagées dans ce domaine de développer des technologies innovantes alignées à
la fois avec les attentes des clients, confort, le renforcement de la sureté et la
performance des services offertes ainsi que les enjeux relatifs aux prix et
protection de l’environnement.

Une récente approche incontournable est alors apparue à cet égard dans
les années 80 grâce au fameux allemand BOSCH, et qui n’a pas uniquement
révolutionnée le monde des automobilistes mais plus encore s’est répandue et
s’est donc généralisée sur d’autres champs à aspect électronique à savoir
l’aéronautique, le médicale, la domotique, le transport et l’automatisme ..il s’agit
bien des Bus CAN.

Les Bus CAN (controller area network) ; autrement dit est un réseau de
contrôleurs conçu pour une première fois suite au besoin de mettre en place une
communication série entre les capteurs, les contrôleurs et les divers équipements
figurant dans les véhicules automobiles plus dépourvus de cerveau intelligent.

D’une façon plus générale les Bus CAN se présentent comme un


dispositif ayant pour objectif l’interconnexion et l’échange des données grâce
auquel des dysfonctionnements malsains sont éliminés et des ajustements
nécessaires sont apportés aux composants du système. On met l’accent en son
faveur sur deux qualités majeures qui ne sont d’autre que la réduction de nombre
de fils requis, l’accélération de transmission et donc temps de réalisation réduit .

Depuis sa première apparition le Bus CAN est pensé rectifier


impérativement les insuffisances liées à l’industrie automobile. Étant donné que
ces lourds systèmes imposent un degré sérieux de complexité, dans ces conditions
les interconnexions au sien du système en entier exigent de plus en plus de câbles.
Et par conséquent : dépenses irraisonnables sur le câblage. Par ailleurs, la place
qui lui est nécessaire au câblage peut paraitre tout simplement exagérée. On avait
donc pas le choix que de rendre accessibles des technologies qui ciblent
l’optimisation de place, de temps, fiabilité, robustesse, simplicité d’entretien et
réparation.

7
On présente l’architecure du Bus CAN :
a-Couche physique :
Il existe deux normes pour la couche physique :

→ ISO 11898-2 (2003): CAN high-speed jusqu'à 1 Mbit/s.


→ ISO 11898-3 (2006): CAN low-speed fault tolerant jusqu’à 125 kbit/s.

b- Topologie :
CAN est un bus de données série bidirectionnel half-duplex dans le domaine
automobile, mais est utilisé en unidirectionnel — simplex — dans l'aéronautique,
pour obtenir un comportement déterministe.
Chaque équipement connecté, appelé nœud peut communiquer avec tous les
autres.

Pour un bus de données CAN Basse Vitesse le nombre de nœuds est limité à 20.
Quant, Pour un bus de données CAN Haute Vitesse il est limité à 30.

8
c-Support :
Chaque nœud est connecté au bus par l'intermédiaire d'une paire torsadée (blindée
ou non).
Les deux extrémités du bus doivent être rebouclées par des résistances de 120 Ω
±10 % (tolérance entre 108 Ω et 132 Ω).

L'accès au bus de données CAN suit la technique CSMA/CR : écoute de chaque


station avant de parler mais pas de tour de parole, résolution des collisions par
priorité.
La longueur maximale du bus est déterminée par la vitesse utilisée :

Vitesse (kbits /s) Longueur(m)

1000 30
800 50
500 100
250 250
125 500
62,5 1000
20 2500
10 5000

9
d-Sortie Encodage des bits :
L'encodage utilisé est de type NRZ (non-retour à 0) :

e-Connecteur :
Le brochage sur le bus de données CAN est normalisé et utilise un connecteur
DE-9 :

Fig 1: connecteur DE-9

10
Fig 2: Bus CAN

f-Les caractéristiques du Bus CAN :

Les caractéristiques du Bus CAN

▪ Normalisé (ISO 11519-1 et ISO 11898).


▪ Communication série de type multi-maîtres.
▪ Notions de messages prioritaires et une distinction entre les erreurs
temporaires et permanentes.
▪ Messages jusqu'à 8 octets de données.
▪ Bus série de type CSMA/CA, arbitrage bit à bit.
▪ Codage NRZ avec bits de stuffing.
▪ Mode tension différentiel.
▪ Un bus avec un environnement de développement et de maintenance.
▪ La longueur des câbles dépend de la vitesse de transmission des données :
Avec un débit de 1 Mbit/s la distance ne dépasse pas 30 m, alors qu'à 10
Kbit/s le bus peut atteindre jusqu’à
5 Km.

11
Fig 3 : shield Bus CAN

g-Alimentation et broches du Shield CAN:

Pinout Description

VCC Alimentation 5V

GND masse

CS SPI SLAVE select pin (Active low)

SO SPI master input slave output lead

SI SPI master output slave input lead

SCLK SPI Clock pin

INT interruptions

Canal H Connection entre Bus CAN

Canal L Connection entre Bus CAN

12
Pour clore de cette partie, les Bus CAN sont largement implantés dans les
systèmes industriels, bien que jeux d’enfant, d’autant que les domiciles
intelligents…etc. On ne soucie plus de la simplicité et l’économie des coûts de
communication entre les entités du même système.

La partie qui vient par la suite portera plus sur la carte Arduino, son utilité et
exemple d’application notamment avec la carte Nano.

13
Depuis que l’électronique existait, sa croissance est fulgurante et continue
de l’être encore de nos jours. Si bien que faire de l’électronique est devenu
accessible à tous les électroniciens amateurs bien que professionnels.
C’est évident que la réalisation de projets électroniques nécessite en premier lieu
la disponibilité d’un microcontrôleur destiné comme c’est trivial à la
programmation. En revanche la dépendance de celui-ci envers l’environnement
ambiant ainsi que la situation de réalisation s’avèrent un obstacle qui limite sa
validation pour certains travaux. Une entrave Vaincue dès que les cartes Arduino
ont vu le jour.

Bref, l’Arduino un projet dont personne n’avait prédit les conséquences


fut lancé en 2005 par Massimo Banzi et ses collègues de l’Interactive Design
Institute Ivrea_à Ivrea en Italie_ se manifeste pour une plaque de prototypage
conçue dès le départ dans un but pédagogique en faveur des étudiants en mettant
à leur disposition un outil simple en vue de concevoir des produits innovants au
sien même du milieu scolaire surtout qu’il se situe au croisement entre
l’informatique, l’électronique et les travaux manuels.

Tant dire que l’Arduino un outil incontournable ; il ne présente que des


avantages aux écoliers : il est compatible au Mac, Windows et Linux. Il est pensé
pour être programmable avec un langage très simple et open source. En outre, il
est volontairement doté d’une grande quantité d’entrées et de sorties confiée alors
pour construire des dispositifs capables de combiner entre des circuits physiques
avec du code digital, il permet surtout d’interagir avec l’environnement où il se
situe. Ce système consiste à prendre des décisions basées sur des données
recueillies par l’intermédiaire des capteurs et évaluer ainsi l’état actuel ensuite
provoquer en retours des actions de format sonore, lumineuse ou encore
mouvement…

L’utilité ultime de l’électronique programmée_ Arduino en fait


partie_réside dans le fait qu’elle simplifie les schémas électroniques, et par
conséquent le coût et charge de réalisation.
Avec l’Arduino, on est face à une gigantesque étendue d’applications à base
seulement d’une carte et un panel assez large de composants électroniques, on en
cite en termes d’exemples : control des appareils domestiques, fabriquer son
propre robot, communication avec son ordinateur…

14
Il est question de mentionner qu’il en figure une variété de cartes
Arduino telles : Nano, MEGA, UNO …etc, puis Il est à constater que toutes ces
cartes se distinguent par leurs tailles et leurs nombres de broches de connexion et
donc possibilités de raccordement avec le monde extérieur, c’est pourquoi elles
se diffèrent aussi par leurs processus, leurs fréquences d’horloge et capacité de
stockage. Pourtant elles adhèrent au même principe de fonctionnement sauf que
pour chaque besoin et domaine d’application une carte Arduino est plus favorable
que l’autre.

Nous nous servirons surtout de l’Arduino Nano de raison qu’elle est


plus adaptée pour faire son premier projet en électronique. Elle s’intègre
facilement dedans un petit boitier vu sa petite taille.…

Fig 4 : exemples de cartes Arduino

15
Fig 5 : exemples de cartes Arduino (Fritzing).

16
Rien au monde ne vale plus que manipuler des outils à usage le plus
simple qui soit ! paraît qu’on parle de l’Arduino Nano décrite en seulement
quelques mots !

L’Arduino Nano reconnue pour une particularité grandiose comme elle


est minimaliste et possède un empattement très réduit, ce qui la qualifie à être
conseillée pour des applications intelligentes et portables à la fois. On en est
vraiment reconnaissant grâce à sa souplesse et ces dimensions minimes, en fait
elle est très légère à la portée une raison pour laquelle est adoptée en électronique
embarquée, aux petits robots aussi... Pas que, Ces cartes sont majoritairement peu
couteuses avec un prix qui tourne aux environs de 20 euros. Ce qui est un critère
revendiqué et apprécié par les débutants en électronique.

Toutefois, cela serait une injustice d’établir le lien entre son prix
médiocre et sa fiabilité. Certes qu’elle est moins chère or elle est félicitée vu son
bon rapport qualité/prix au point que et malgré sa petite taille est assimilée à une
UNO au niveau performance parlant.

La particularité chez les Nano comme cité un peu plus tôt réside dans
son aptitude de l’adopter pour des sujets de réalisation où l’on est sollicité à
intervenir dans un espace restreint. Facile à insérer sur une breadboard. Il est
également question de la faire soudée sur des cartes électroniques.

Bref, la possibilité chez la Nano d’allier la performance aux critères prix


et format font d’elle sans l’ombre de doute un meilleur compromis.

Arduino Nano est plus compacte qu’une UNO, dotée de 14 broches


Entrée/Sortie digitaux dont 6 fournissent une sortie PWM à travers lesquels elle
débite en maximum 40 mA, elle se dispose de 8 pins analogiques 2 de plus que
la UNO mais pas de connecteur DC non plus. Elle couvre le besoin d’utiliser des
microcontrôleurs intégrés, en ce sens-là la Nano peut être reliée à un PC au moyen
d’un câble micro-USB au lieu de celui classique. Elle est basée sur un
microcontrôleur ATMega328.

Fig 6 : le microcontroleur ATMega328.

17
Fig 7 :la face ariére de la carte Arduino Nano.

Fig 8 : la face avant de la carte Arduino Nano.

18
a-Alimentation & configuration de broches de la Nano :

Catégorie des Nom des Détails


broches broches
Alimentation Vin
3.3V L’Arduino Nano peut être alimentée suivant plusieurs
5V façons :
GND
Vin : Alimentation externe non régulée 6-12V
5V : Alimentation régulée de 5V
3.3V: Alimentation 3,3V générée par le régulateur de
tension intégré. Le courant maximal consommé est de 50
mA
Prise USB : Alimentation par ordinateur ou chargeur de
téléphone via la connexion mini-USB
GND : Broches de masse

Liaison série Tx Recevoir et transmettre des données série TTL


Rx

Interruptions 2 Déclencher des interruptions


externes 3
Reset Reset Réinitialise le microcontrôleur

PWM 3,5,6,9,11 Sortie PWM 8 bits avec fonction analogWrite ()

LED broche 13 Allumer la LED intégrée


numérique

Broches D0 – D13 Entrée ou sortie 0V/5V


d’entrée /
sortie

19
b-Les broches d’entrée/sortie :
→ Les broches numériques :
Tension d’alimentation allant de 0V à 5V, les 14 broches sont utilisées
comme sortie ou entrée. Les fonction pinMode(), digitalWrite() et
digitalRead() sont dédiées pour le configurer.

→ Les broches analogiques :


La carte dispose de 8 broches analogiques entrée/sortie repérées de A0 à
A7 qui admettent une tension entre 0 à 5V.la fonction analogRead() leur
est spécifiée.

c-Caractéristiques de l’Arduino Nano :

Les caractéristiques techniques générales de l’Arduino


Nano

▪ Poids : 5 g
▪ Fréquence d’horloge : 16 MHz
▪ Dimensions : 45 x 18 x 18 mm
▪ Microprocesseur : ATMega328
▪ Mémoire flash : 32 ko
▪ Mémoire SRAM : 2 ko
▪ Mémoire EEPROM : 1 ko
▪ Communication : Bus série, I2C et SPI
▪ Gestion des interruptions
▪ Boîtier DIL30
▪ Courant continu sur la broche de 3,3 V : 50 mA

20
d-Les inconvénients d’une carte Nano :

→ Connectivité :
Il s’emblerait qu’avec une Nano on n’est surtout pas à l’abri de manque
d’options de connectivité ce qui limite l’utilisation possible d’internet,
WIFI, Bluetooth… d’ailleurs, la Nano ne fait pas objet d’une exception.

→ Mémoire :
Encore une défaillance chez l’Arduino Nano émane de sa mémoire
embarquée limitée qui rend impensable la réalisation des programmes
complexes. Une mémoire calibrée de 32k ainsi qu’une horloge de 16 MHz
ne suffisent pas.

e-Les avantages d’une carte Nano :

→ Taille/prix :
L’utilité comme si cité en préambule de la Nano c’est qu’elle assure la même
prouesse que son homologue UNO, de même elle s’accommode aux projets
d’attribut léger.

→ La communauté Nano :
On parle ici d’un centre d’entraide dynamique et réactif fondé par des
amateurs ainsi que professionnels pour l’échange d’expertise et prise en main
en cas de difficultés confrontés.

21
En vue d’établir une approche concrète vers les Bus CAN, il s’avère
qu’il devrait se servir d’un MCP2515 pour plus d’illustration. On se propose alors
de réaliser une interface entre bus can MCP2515 à base d’Arduino.

NB 1 : l’Arduino ne dispose pas de port CAN, on aura donc recours au fameux


CAN Bus Module MCP2515. Ce dernier réussi à interférer avec la Nano via la
communication SPI. Découvrons du plus près ce qu’il y a derrière cette interface.

NB 2 : ce module CAN MCP2515 n’est pas adapté aux Arduino alimentés en 3,3V
car le bus est alimenté par la même tension que le contrôleur et il est préférable
d’avoir une tension de 5V sur le bus.

22
Conception de connections entre bus can et Arduino nano pour le
dispositif émetteur récepteur :

Fig 9: le dispositif communicatin entre Arduino avec interface CAN MCP2515.

23
a-Adressage des cartes :
Sachant que chaque carte Nano est caractérisée par une adresse codée
sur 11 bits soient 2032 adresse utile selon la norme standard ISO 11898. Avec
ces adresses là on a affaire à transmettre des données de 64 bits (8 octets). Puis il
est à considérer que ces adresses (identifiés sur chaque message) sont sorte
d’IDentifiants ID pour chacune des cartes sur le Bus CAN.
Les messages contenants les ID des cartes sont prises en charges par le
Bus CAN, la répartition des octets n’est pas laissée au hasard. On suit ainsi la
logique ci-après :

Octet n° 1 : Adresse de la carte cible :


Il contient le nombre identifiant de la carte souhaité exécuter des commandes.
Concrètement pour notre cas : le premier octet va contenir par exemple le
nombre ‘’2’’ désignant la 2éme carte via elle une des Led changera d’état.

Octet n° 2 : la commande à exécuter par la carte cible :


Ici, on choisit d’attribuer à chaque consigne une valeur qui bien lui est propre.il
revient à dire que ce choix est arbitraire nul ne force de s’en contenter.
Si la commande est désignée par :

▪ 0 : alors une Led est Allumée par la carte cible.


▪ 1 : alors une Led est Éteinte par la carte cible.
▪ 2 : alors une valeur est Affichée par la carte cible sur l’afficheur LCD
dans la zone « A ».
▪ 3 : alors une valeur est Affichée par la carte cible sur l’afficheur
LCD dans la zone « B ».
▪ 4 : alors l’afficheur LCD est Effacé par la carte cible.

Octet n°3 : précision de la commande :


Préciser qu’elle Led à faire piloter par la carte cible. Par exemple « 3 » c’est-à-
dire que la troisième Led qu’est mise en jeu.

Octet n°4 : cet octet est dédié aux valeurs souhaitées s’afficher sur l’écran LCD
de l’autre carte. Non exploités ici.

Octet n°5 : cet octet est consacré aux éventuelles valeurs possibles.
Octets n° 6,7 & 8 : non exploités ici.

24
b-Connexion des Bus CAN avec les cartes Nano :

MCP2515 Arduino Nano 1 MCP2515 Arduino Nano 2


Emetteur Récepteur
VCC +5V VCC +5V

GND GND GND GND


CS D10 CS D10
SO D12
SO D12
SI D11
SI D11
SCK D13
SCK D13
INT D2

c-Connexion entre CAN MCP2515 :

MCP2515 Récepteur
Canal L Canal H
MCP2515 Canal L X
Emetteur Canal H X

25
d-Les programmes sur les cartes Nano :

1- Le programme Emetteur
#include <SPI.h>
#include <mcp_can.h>

const int spiCSPin = 10;


MCP_CAN CAN(spiCSPin);

void setup()
{
Serial.begin(9600);

while (CAN_OK != CAN.begin(CAN_500KBPS))


{
Serial.println("Echec initialisation BUS CAN");
delay(100);
}
Serial.println("Shield BUS CAN initialisé !");
}

void loop()
{
unsigned char len = 0;
unsigned char buf[8];

if(CAN_MSGAVAIL == CAN.checkReceive())
{
CAN.readMsgBuf(&len, buf);

unsigned long canId = CAN.getCanId();

Serial.println("*** Nouveau message");


Serial.print("Provenant de ID = 0x");
Serial.println(canId, HEX);
Serial.print("Données = ");

for(int i = 0; i<len; i++)


{
Serial.print(buf[i]);
Serial.print("\t");
}
Serial.println();
}
}

26
2- Le programme Récepteur :

#include <SPI.h>
#include <mcp_can.h>

const int spiCSPin = 10;


MCP_CAN CAN(spiCSPin);

void setup()
{
Serial.begin(9600);

while (CAN_OK != CAN.begin(CAN_500KBPS))


{
Serial.println("Echec initialisation BUS CAN");
delay(100);
}
Serial.println("Shield BUS CAN initialisé !");
}

void loop()
{
unsigned char len = 0;
unsigned char buf[8];

if(CAN_MSGAVAIL == CAN.checkReceive())
{
CAN.readMsgBuf(&len, buf);

unsigned long canId = CAN.getCanId();

Serial.println("*** Nouveau message");


Serial.print("Provenant de ID = 0x");
Serial.println(canId, HEX);
Serial.print("Données = ");

for(int i = 0; i<len; i++)


{
Serial.print(buf[i]);
Serial.print("\t");
}
Serial.println();
}
}

27
En guise de conclusion, ce sujet n’a non seulement élargi notre
vocabulaire en l’Electronique, mais a dévoilé à quel point des conceptions en
électronique mal aperçues par argument d’ambigüité sont simples et prêtes à être
engagées dans la vie contemporaine de tous les jours.

28

Vous aimerez peut-être aussi