Académique Documents
Professionnel Documents
Culture Documents
Microcontroleurs GAM 2023 2024
Microcontroleurs GAM 2023 2024
Niveau : 3
Par
Arnaud NANFAK
nanfak.arnaud@yahoo.fr
i
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
CHAPITRE 1 : ....................................................................................................................................... 1
Introduction ........................................................................................................................................ 1
Introduction ...................................................................................................................................... 14
ii
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Introduction ........................................................................................................................................ 1
iii
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
iv
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
v
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
CHAPITRE 1 :
RAPPEL SUR LES MICROPROCESSEURS
Introduction
Un microprocesseur est un circuit intégré complexe caractérisé par une très grande intégration et
doté des facultés d'interprétation et d'exécution des instructions d'un programme. Il est chargé d’organiser
les tâches précisées par le programme et d’assurer leur exécution. A l’heure actuelle, un microprocesseur
regroupe sur quelques millimètres carrés des fonctionnalités toujours plus complexes les unes que les
autres. Leur puissance continue de s’accroître et leur encombrement diminue régulièrement respectant
toujours, pour le moment, la fameuse loi de Moore.
Ces deux éléments sont associés à des registres chargées de stocker les différentes informations à traiter.
Ces trois éléments sont reliés entre eux par des bus interne permettant les échanges d’informations.
Programme
Unité de Unité de
traitement commande
Données
Arnaud NANFAK 1
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Bus d’adresse
Bus de données
Elle permet de séquencer le déroulement des instructions. Elle effectue la recherche en mémoire
de l'instruction, le décodage de l’instruction codée sous forme binaire. Enfin elle pilote l’exécution de
l’instruction. Pour cela, elle est composée par :
C’est le cœur du microprocesseur. Elle regroupe les circuits qui assurent les traitements nécessaires
à l'exécution des instructions. Il est constitué de :
▪ Les accumulateurs sont des registres de travail qui servent à stocker une opérande au début d'une
opération arithmétique et le résultat à la fin de l'opération.
Arnaud NANFAK 2
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Registre d’adresse
PC
Séquenceur
Registre Décodeur
d’instruction d’instruction
Arnaud NANFAK 3
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
▪ Unité de calcul en virgule flottante : C’est une unité qui est capable de réaliser les opérations de
calcul pour les réels ainsi que les calculs mathématiques et scientifiques complexes. A l’origine, la
tâche de cette unité était réalisée par tout un processeur à part, en 1989 elle a été intégré dans les
microprocesseurs afin d’optimiser les calculs.
▪ Unité multimédia : C’est une unité qui est chargée d’accélérer l’exécution des programmes
multimédia comportant des vidéos, du son, graphisme en 3D etc.…
Arnaud NANFAK 4
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Un registre est une zone mémoire à l’intérieur du microprocesseur de faible taille, qui permet de
mémoriser des mots mémoires ou des adresses d’une façon temporaire lors de l’exécution des instructions.
La structure des registres du CPU varie considérablement d’un constructeur à l’autre. Cependant les
fonctions de base réalisées par les différents registres sont essentiellement les mêmes. On peut citer :
▪ Les registres généraux : Ce sont des mémoires rapides, à l'intérieur du microprocesseur, qui
permettent à l'unité d'exécution de manipuler des données à vitesse élevée. Ils sont connectés au
bus de données interne au microprocesseur. L'adresse d'un registre est associée à son nom (on
donne généralement comme nom une lettre) A,B,C... Ces registres permettent de sauvegarder des
informations utilisées dans les programmes ou des résultats intermédiaires, cela évite des accès à
la mémoire, accélérant ainsi l’exécution des programmes.
▪ Le compteur ordinal : c’est un registre d’adresse. À chaque instant il contient l’adresse de la
prochaine instruction à exécuter. Lors de l’exécution d’une instruction il est prévu, au cours de
cette exécution, la modification du contenu du CO. Ainsi en fin d’exécution de
l’instruction courante le compteur ordinal pointe sur la prochaine instruction à exécuter
et le programme machine peut continuer à se dérouler.
Remarque : La valeur initiale du compteur est fixée par le constructeur du microprocesseur. Elle vaut une
valeur bien définie à chaque mise sous tension ou bien lors d’une remise à zéro (reset).
Arnaud NANFAK 5
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
instruction), provenant de, ou allant vers la mémoire doit passer par le MDR, puisque c’est le seul
registre connecté au bus de données de la mémoire.
▪ Le registre accumulateur : C’est un registre de travail très important de l’UAL, dans la plus part
des opérations arithmétiques et logiques, l’accumulateur contient un des opérandes avant
l’exécution et le résultat après. Il peut aussi servir de registre tampon dans les opérations
d’entrée/sortie. Généralement, l’accumulateur a la même taille qu’un mot mémoire.
▪ Le registre d’état: (PSW program status word) : C’est un registre qui contient les différents bits
appelés drapeaux (Flags) indiquant l’état d’une condition particulière dans le CPU. Ces bits peuvent
être testés par un programme et donc décider des suites d’actions à prendre.
▪ Le pointeur de pile (SP) est un registre présent sur les microprocesseurs qui possède une pile. Il
permet de stocker l’adresse du sommet de la pile. Une pile est une partie de la mémoire, elle permet
de stocker des informations (le contenu des registres) relatives au traitement des interruptions et
des sous-programmes. La pile est gérée en LIFO : (Last In First Out) dernier entré premier sorti.
Le fonctionnement est identique à une pile d’assiette. Le pointeur de pile est décrémenté avant
chaque empilement (instruction PUSH) et incrémenté après chaque dépilement (instruction POP).
▪ La lecture : L’adresse du mot à lire est transférée au registre d’adresse, le dispositif d’accès à la
mémoire se charge de chercher le mot et de le mettre dans le registre de données.
▪ L’écriture : Le registre d’adresse est chargé par l’adresse mémoire ou on va écrire, le mot à écrire
est placé dans le registre de données. Lorsque l’ordre de l’écriture est donné, le contenu des cases
mémoires sera écrasé et remplacé par la nouvelle valeur.
I.4. Les autres unités des microprocesseurs
▪ Unité de mémoire cache : La mémoire cache a pour fonction principale d’optimiser les accès
aux différentes instructions et données que le microprocesseur a besoin lors de l’exécution des
programmes. La tâche de cette unité est de mettre dans la mémoire cache qui est beaucoup plus
rapide d’accès que la mémoire centrale, les informations les plus utilisées et que le microprocesseur
a besoin fréquemment. L’accès aux informations sera donc plus rapide et l’exécution des
programmes optimale.
▪ Unité d’interface de bus : Gère les échanges à travers le bus entre le microprocesseur et les autres
composantes, si le microprocesseur a besoin par exemple d’une donnée en mémoire vive, l’unité
Arnaud NANFAK 6
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 7
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Une instruction est une opération élémentaire d’un langage de programmation, c’est à dire le plus
petit ordre que peut comprendre un ordinateur. Ainsi, une instruction machine est une chaîne binaire
composée essentiellement de deux parties :
▪ Zone opération : Cette zone permet de déterminer la nature de l’opération à effectuer par le
microprocesseur (addition, ou logique, lecture en mémoire) ;
▪ Zone adresse : Cette zone contient les adresses en mémoire des opérandes qui participent dans
une opération, dans certains cas elle contient l’opérande même.
II.2. Les différents types d’instructions
Les instructions du langage machine peuvent être rangées selon six catégories :
▪ les instructions arithmétiques et logiques : ce sont les instructions qui permettent de réaliser
les calculs entre nombres (addition, soustraction, multiplication…) et les opérations logiques (ou,
et, ou exclusif…). Elles mettent en jeu les circuits de l’UAL.
▪ les instructions de transfert de données : ce sont les instructions qui permettent de transférer
une donnée depuis les registres du processeur vers la mémoire centrale et vice versa ainsi qu’entre
registres du processeur.
▪ les instructions d’entrées-sorties : ce sont les instructions qui permettent au processeur de lire
une donnée depuis un périphérique (par exemple le clavier) ou d’écrire une donnée vers un
périphérique (par exemple l’imprimante);
▪ les instructions de rupture de séquence d’exécution encore appelées instructions de saut
ou de branchement : ce sont des instructions qui permettent de rompre l’exécution séquentielle
des instructions d’un programme. L’instruction exécutée à la suite d’un saut n’est pas celle qui suit
immédiatement l’instruction de saut, mais celle dont l’adresse a été spécifiée dans l’instruction de
saut. On distingue ici deux types d’instructions de sauts. Les instructions de sauts inconditionnels
effectuent toujours le débranchement de l’exécution à l’adresse spécifiée. Les instructions de sauts
conditionnels effectuent ce débranchement si et seulement si une condition liée aux indicateurs du
registre d’état de l’UAL est vérifiée.
▪ les instructions d’appels de sous-programmes (CALL, RET) qui permettent de modifier la
valeur courante du compteur ordinal CO pour aller exécuter une suite d’instructions machine
constituant une fonction (c’est l’objet de l’instruction CALL qui effectue l’appel de sous-
programme) puis de revenir exécuter les instructions machine situées juste après l’appel
(instruction RET);
▪ les instructions particulières permettant par exemple d’arrêter le processeur (HALT)
ou encore de masquer/démasquer les interruptions (DI/EI).
Arnaud NANFAK 8
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Le microprocesseur ne comprend qu’un certain nombre d’instructions qui sont codées en binaire.
Le traitement d’une instruction peut être décomposé en trois phases.
▪ Le PC contient l'adresse de l'instruction suivante du programme. Cette valeur est placée sur le bus
d'adresses par l'unité de commande qui émet un ordre de lecture.
▪ Au bout d'un certain temps (temps d'accès à la mémoire), le contenu de la case mémoire
sélectionnée est disponible sur le bus des données.
▪ L'instruction est stockée dans le registre instruction du processeur.
Le registre d'instruction contient maintenant le premier mot de l'instruction qui peut être codée sur
plusieurs mots. Ce premier mot contient le code opératoire qui définit la nature de l'opération à effectuer
(addition, rotation,...) et le nombre de mots de l'instruction.
Arnaud NANFAK 9
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
On appelle « mode d’adressage » la manière de définir la localisation d’un opérande. Selon le mode
d’adressage la taille de l’instruction peut varier de 1 à 4 octets.
On parle de mode d’adressage immédiat lorsque le champ opérande contient une donnée. Ce type
d’instruction met en jeu un registre et une valeur (qu’il s’agisse d’une affectation, une addition, une
soustraction ou bien même une comparaison). On obtient l’opérande sans avoir à faire un accès
supplémentaire à la mémoire puisque ce dernier fait partie intégrante de l’instruction, d’où le qualificatif
immédiat. La taille de l’opérande dépendra donc du type de registre mis en jeu (1 octet pour un registre de
8 bits, 2 pour un registre de 16 bits).
L’adressage direct est sans doute le mode d’adressage le plus souvent utilisé et est très simple. Dans
ce mode, le champ opérande d’une instruction contient l’adresse effective d’une donnée en mémoire. Une
adresse étant codée sur 16 bits, la taille du champ opérande est donc de 2 octets. Il peut s’agir par exemple
de l’affectation à un registre d’une donnée contenue dans une case mémoire. Ce code d’adressage provoque
un temps d’exécution de l’instruction plus long car l’accès à la mémoire principale est plus long que l’accès
à un registre.
Opérande
………….
Exemple : ADD A, 7FH (A = A + contenu de l’adresse 7F)
Arnaud NANFAK 10
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Le mode d’adressage indirect permet d’accéder à une donnée par l’intermédiaire d’un registre qui
contient son adresse ou l’adresse d’une position mémoire qui, elle, contient l’adresse de l’opérande.
Opérande
………….
Exemple : ADD A, @R0 (A = A + contenu de l’adresse pointé par R0)
Il existe deux grandes familles de microprocesseurs ayant un jeu d’instruction différent qui ont
tous deux des avantages qui peuvent les rendre complémentaires.
▪ Les microprocesseurs CISC (Complex Instruction Set Computer) qui possèdent un grand
nombre d’instructions (plusieurs dizaines, voire centaines) permettant de réaliser de nombreuses
instructions complexes. Chaque instruction est exécutée en un certain nombre de cycles d’horloge
dépendant de l’instruction elle-même, mais aussi du mode d’adressage utilisé. Les
microprocesseurs CISC privilégient la puissance de traitement au détriment de la rapidité.
▪ Les microprocesseurs RISC (Reduced Instruction Set Computer) possède un nombre
d’instructions bien plus faible (quelques dizaines au maximum) qui permettent de réaliser des
opérations simples, mais chaque instruction est exécutée en un seul cycle d’horloge. Il en résulte
une vitesse de calcul très supérieure à celle de la famille CISC.
Le choix dépendra des applications visées. En effet, si on diminue le nombre d'instructions, on crée des
instructions complexes (CISC) qui nécessitent plus de cycles pour être décodées et si on diminue le nombre
de cycles par instruction, on crée des instructions simples (RISC) mais on augmente alors le nombre
d'instructions nécessaires pour réaliser le même traitement.
Arnaud NANFAK 11
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
On peut caractériser la puissance d’un microprocesseur par le nombre d’instructions qu’il est
capable de traiter par seconde. Pour cela, on définit :
▪ Le CPI (Cycle Par Instruction) qui représente le nombre moyen de cycles d’horloge nécessaire
pour l’exécution d’une instruction pour un microprocesseur donné.
▪ Le MIPS (Millions d’Instructions Par Seconde) qui représente la puissance de traitement du
microprocesseur.
𝐹𝐻
𝑀𝐼𝑃𝑆 = 𝑎𝑣𝑒𝑐 𝐹𝐻 𝑒𝑛 𝑀𝐻𝑧
𝐶𝑃𝐼
▪ La famille x86 : cette famille de microprocesseurs a été initialement commercialisée par Intel.
Dans cette famille, on retrouve les Intel Pentium et AMD Athlons.
▪ La famille x64 : cette famille de microprocesseurs fait suite à celle des x86.Celle-ci a été créé avec
pour objectif de permettre une meilleur gestion de la mémoire vive des ordinateurs qui ne cesse
d’augmenter ces dernières années.
▪ La famille PowerPC : ces microprocesseurs ont été développés par Motorola et IBM.
▪ La famille ARM : c’est la famille des microprocesseurs la plus répandue du marché et elle est
fabriquée par la société Acorn RISC Machines. Ces processeurs se retrouvent dans les tablettes,
les téléphones ou encore les systèmes embarqués comme le Raspberry PI.
Pour manipuler les données, les processeurs 64 bits possèdent 15 registres de 64 bits à usage généraux
résumés dans le tableau ci-dessus.
Arnaud NANFAK 12
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 13
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
CHAPITRE 2 : MICROCONTROLEUR
Introduction
Les microcontrôleurs sont des micro-ordinateurs spéciaux sur puce qui sont adaptés à des
applications spécifiques. Il s'agit généralement de tâches de commande ou de communication qui sont
programmées une seule fois, puis exécutées sur le microcontrôleur pendant toute la durée de vie du
microcontrôleur. Les domaines d'application sont très larges. Les microcontrôleurs travaillent
généralement de manière invisible dans une multitude de domaines, les équipements et installations qui
nous entourent dans notre vie quotidienne. Les domaines d'application typiques sont les suivants :
En termes simples, un microcontrôleur peut être considéré comme un micro-ordinateur monopuce avec
des périphériques spécialement conçus pour les tâches de contrôle ou de communication.
L’architecture d’un microcontrôleur est un élément important qui conditionne directement les
performances du processeur. Pour l’organisation des différentes unités, il existe deux types fondamentaux
de structures dites « Von Neumann » et « Harvard ».
L’architecture, dite architecture de Von Neumann, est un modèle pour microcontrôleur qui
utilise une structure de stockage unique pour conserver à la fois les instructions et les
données requises ou générées par le calcul. La mémoire programme, la mémoire des données et les
périphériques d’entrées/sorties partagent le même bus d’adresses et de données. Cette architecture est
maintenant principalement utilisée pour la conception des processeurs d’ordinateurs (PC, MAC).
Arnaud NANFAK 14
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
L’architecture de type Harvard est une conception de microcontrôleur qui sépare physiquement la
mémoire de données et la mémoire programme. L’accès à chacune des deux mémoires s’effectue via deux
bus distincts. Quoique cette architecture puisse être complexe, elle permet de transférer une instruction et
les données simultanément, ce qui rend l’exécution des programmes plus rapide. En revanche elle nécessite
des instructions différentes pour accéder à la mémoire programme et à la mémoire de données.
L’architecture Harvard est souvent utilisée dans les processeurs numériques du signal ; les
microcontrôleurs notamment les PIC de Microchip et les AVR d’Atmel.
Arnaud NANFAK 15
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 16
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
▪ un microprocesseur (C.P.U.), avec une largeur du chemin de données allant de 4 bits pour les
modèles les plus basiques à 32 ou 64 bits pour les modèles les plus évolués,
▪ de la mémoire vive (RAM) pour stocker les données et variables,
▪ de la mémoire non volatile (ROM) pour stocker les programmes, différentes technologies
EPROM, EEPROM, flash,
▪ souvent un oscillateur pour le ca dencement. Il peut être réalisé avec un quartz, un circuit RC
ou encore une PLL,
▪ des périphériques, capables d'effectuer des tâches spécifiques.
Arnaud NANFAK 17
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
▪ les générateurs de signaux à modulation de largeur d'impulsion (MLI, ou en anglais, PWM pour
Pulse Width Modulation),
▪ les timers/compteurs (compteurs d'impulsions d'horloge interne ou d'événements externes),
▪ les chiens de garde (watchdog),
▪ les comparateurs (comparent deux tensions électriques),
▪ les contrôleurs de bus de communication (UART, I²C, SSP, CAN, FlexRay, USB, Ethernet, etc.).
II.1. L’horloge :
II.2. Mémoires
C’est le lieu de stockage du programme exécuté et les données manipulées par le microprocesseur.
Elle contient les instructions du programme. C’est une mémoire morte dont le type exact dépend
du modèle de microcontrôleur. On distingue :
▪ ROM (Read Only Memory), ne peuvent être programmé qu’une seule fois par son constructeur
au cours du processus de fabrication ;
▪ PROM (Programmable Read Only Memory), inscrite une seule fois par l’utilisateur grâce à un
programmateur ;
Arnaud NANFAK 18
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
C’est l’endroit où le microprocesseur enregistre temporairement les instructions les données des
programmes qu’il exécute. C’est une mémoire volatile (qui s’efface lorsqu’elle n’est plus alimentée en
courant électrique) accessible en lecture et en écriture. On en trouve trois catégories :
▪ SRAM (Static Random access memory : mémoire statique à accès aléatoire), mémoire volatile dont
les informations sont mémorisées par des bascules. Rapides et onéreuses, elles sont de capacité
limitée ;
▪ DRAM (Dynamic Random access memory : mémoire dynamique à accès aléatoire), mémoire
volatile dont les informations sont mémorisées par des condensateurs. Il faut procéder à un
rafraichissement périodique à cause des courants de fuites. Lentes et peu couteuses, elles sont de
plus grande capacité;
▪ NOURAM, c’est l’association dans un même boitier d’une RAM et d’une EEPROM. Quand le
circuit est alimenté en courant, c’est la RAM qui fonctionne permettant au système de bénéficier
de son temps d’accès très court. Quand l’alimentation est coupée, le contenu de la RAM est
transféré dans la EEPROM. On obtient ainsi une mémoire non volatile présentant une bonne
rapidité.
La mémoire peut être vue comme un ensemble de cellules ou cases contenant chacune une information :
une instruction ou une donnée. Chaque case mémoire est repérée par un numéro d’ordre unique : son
adresse. La figure ci-dessous donne la représentation de la structure des mémoires.
Arnaud NANFAK 19
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Figure
Une case mémoire peut être lue ou écrite par le microprocesseur (cas des mémoires vives) ou bien
seulement lue (cas des mémoires mortes).
Figure
A0 à An-1 : bits d’adresses. Ils sont utilisés pour définir l’adresse d’une case mémoire
CS : Chip Select. Lorsque cette broche est active (état bas), le circuit peut être lu ou écrit. Lorsqu’elle est
inactive (état haut), le circuit est exclu du service.
Arnaud NANFAK 20
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Elles peuvent être configurées soit en entrées, soit en sorties, ce qui leur permet de :
▪ prendre en compte des états logiques représentant des informations externes, comme les résultats
de mesure par des capteurs ;
▪ générer des états logiques destinés à la commande d’actionneurs.
Les interfaces parallèles sont regroupées en plusieurs ports d’entrées/sorties. La configuration et les états
logiques des différentes broches sont définis dans des registres associés aux ports.
Une interface série permet de communiquer avec d’autres systèmes. On rencontre principalement
une liaison RS232 ou une liaison I2C.
Il permet de prendre en compte des informations analogiques, par exemple des résultats issus de
capteurs. Il utilise la méthode des approximations successives.
Il permet de produire un signal analogique (tension) à partir des états logiques internes.
II.7. Timers/Compteurs
▪ comptage d’événements,
▪ temporisation,
▪ génération d’une impulsion calibrée,
▪ génération d’un signal périodique.
II.8. Chien de garde (watchdog)
Arnaud NANFAK 21
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Les " chiens de garde " sont des composants qui sont souvent utilisés dans le domaine du temps
réel pour surveiller le déroulement du programme d'un microcontrôleur. Leur tâche est de détecter les
bourrages ou les plantages des programmes et d'y réagir.
II.9. Bus
Le microprocesseur échange des informations avec la mémoire et l’unité d’E/S, sous forme de mots
binaires, au moyen d’un ensemble de connexions appelé bus. Un bus permet de transféré des données sous
forme parallèle, c’est-à-dire en faisant circuler n bits simultanément. On distingue trois types de bus :
▪ le bus d’adresses véhicule l’adresse qui spécifie l’origine ou la destination de l’information qui
transite sur le bus de données. C’est un bus unidirectionnel c’est-à-dire que les informations qu’il
véhicule transitent du microprocesseur vers l’un de ses périphériques.
▪ le bus de données transporte les données échangées par les différents périphériques externes du
microcontrôleur. C’est un bus bidirectionnel c’est-à-dire que les informations qu’il véhicule
peuvent transiter du microcontrôleur vers l’un de ses périphériques ou d’un périphérique vers le
microcontrôleur.
▪ le bus de commande. C’est en ensemble de lignes transportant les différents signaux de commande
et de synchronisation nécessaires pour le bon déroulement des échanges entre les divers éléments
du système.
Figure
Remarques :
R1 : Les microprocesseurs peuvent être classés selon la longueur maximale des mots binaires qu’ils peuvent
échanger avec la mémoire et les E/S : microprocesseurs 8 bits, 16 bits, 32 bits, ...
R2 : les bus de données et de commande sont bidirectionnels, le bus d’adresse est unidirectionnel :
Arnaud NANFAK 22
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Les microcontrôleurs sont des composants microprogrammés. Les programmes peuvent être
écrits à trois niveaux différents :
Le langage de programmation est un ensemble de mots-clés associé à un ensemble de règles très précises
indiquant comment on peut assembler ces mots pour former des « phrases » que l’interpréteur ou le
Arnaud NANFAK 23
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
compilateur puisse traduire en langage machine (binaire). Suivant son niveau d’abstraction, on pourra dire
d’un langage qu’il est « de bas niveau » (ex : assembleur) ou « de haut niveau » (ex : Pascal, C, C++, Python,
Lisp...). Un langage de bas niveau est constitué d’instructions très élémentaires, très « proches de la machine
». Un langage de haut niveau comporte des instructions plus abstraites, plus « puissantes ». Cela signifie
que chacune de ces instructions pourra être traduite par l’interpréteur ou le compilateur en un grand
nombre d’instructions machine élémentaires. Les avantages que présentent les langages de haut niveau
sont énormes : il est beaucoup plus facile d’écrire un programme dans un langage de haut niveau ; l’écriture
du programme prend donc beaucoup moins de temps ; la probabilité d’y faire des fautes est nettement
plus faible ; la maintenance (c’est-à-dire l’apport de modifications ultérieures) et la recherche des erreurs
(les « bugs ») sont grandement facilitées. De plus, un programme écrit dans un langage de haut niveau sera
souvent portable, c’est-à-dire que l’on pourra le faire fonctionner sans guère de modifications sur des
machines ou des systèmes d’exploitation différents.
Le programme tel que rédiger en langage de haut niveau à l’aide d’un logiciel éditeur est appelé
programme source (ou code source). Il existe deux techniques principales pour effectuer la traduction d’un
tel programme source en code binaire (langage machine) exécutable par le microcontrôleur :
l’interprétation et la compilation.
• Dans la technique appelée interprétation, le logiciel interpréteur doit être utilisé chaque fois que
l’on veut faire fonctionner le programme. Dans cette technique en effet, chaque ligne du
programme source analysé est traduite au fur et à mesure en quelques instructions du langage
machine, qui sont ensuite directement exécutées. Aucun programme objet n’est généré ;
• La compilation consiste à traduire la totalité du texte source en une fois. Le logiciel compilateur lit
toutes les lignes du programme source et produit une nouvelle suite de codes que l’on appelle
programme objet (ou code objet). Celui-ci peut désormais être exécuté indépendamment du
compilateur et être conservé tel quel dans un fichier (« fichier exécutable »).
Arnaud NANFAK 24
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Remarque : Certains langages modernes tentent de combiner les deux techniques afin de retirer le
meilleur de chacune. C’est le cas de Python et aussi de Java. Lorsque vous lui fournissez un programme
source, Python commence par le compiler pour produire un code intermédiaire, similaire à un langage
machine, que l’on appelle bytecode, lequel sera ensuite transmis à un interpréteur pour l’exécution finale.
La programmation est une démarche très complexe, et comme c’est le cas dans toute activité
humaine, on y commet de nombreuses erreurs. Les erreurs de programmation s’appellent des « bugs » (ou
« bogues », en Français), et l’ensemble des techniques que l’on met en œuvre pour les détecter et les corriger
s’appelle « debug » (ou « débogage »). En fait, il peut exister dans un programme trois types d’erreurs assez
différentes à savoir : les erreurs de syntaxe, les erreurs sémantiques et les erreurs à l’exécution.
Le terme syntaxe se réfère aux règles que les auteurs du langage ont établies pour la structure du
programme. Tout langage comporte sa syntaxe. Dans la langue française, par exemple, une phrase doit
toujours commencer par une majuscule et se terminer par un point. « ainsi cette phrase comporte deux
erreurs de syntaxe »
Arnaud NANFAK 25
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
S’il existe une erreur de ce type dans un de vos programmes, celui-ci s’exécute parfaitement, en ce sens
que vous n’obtenez aucun message d’erreur, mais le résultat n’est pas celui que vous attendiez : vous
obtenez autre chose. En réalité, le programme fait exactement ce que vous lui avez dit de faire. Le
problème est que ce que vous lui avez dit de faire ne correspond pas à ce que vous vouliez qu’il fasse. La
séquence d’instructions de votre programme ne correspond pas à l’objectif poursuivi. La sémantique (la
logique) est incorrecte.
Rechercher des fautes de logique peut être une tâche ardue. Il faut analyser ce qui sort de la machine et
tâcher de se représenter une par une les opérations qu’elle a effectuées, à la suite de chaque instruction.
L’erreur en cours d’exécution (Run-time error), qui apparaît seulement lorsque votre programme
fonctionne déjà, mais que des circonstances particulières se présentent (par exemple, votre programme
essaie de lire un fichier qui n’existe plus). Ces erreurs sont également appelées des exceptions, parce qu’elles
indiquent généralement que quelque chose d’exceptionnel s’est produit (et qui n’avait pas été prévu).
L’une des compétences les plus importantes à acquérir au cours de votre apprentissage est celle qui consiste
à déboguer efficacement un programme. Ce travail ressemble par bien des aspects à une enquête policière.
Vous examinez un ensemble de faits, et vous devez émettre des hypothèses explicatives pour reconstituer
les processus et les événements qui ont logiquement entraîné les résultats que vous constatez. Vous vous
faites une première idée de ce qui ne va pas, vous modifiez votre programme et vous essayez à nouveau.
Vous avez émis une hypothèse, qui vous permet de prédire ce que devra donner la modification. Si la
prédiction se vérifie, alors vous avez progressé d’un pas sur la voie d’un programme qui fonctionne. Si la
prédiction se révèle fausse, alors il vous faut émettre une nouvelle hypothèse.
Arnaud NANFAK 26
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
l’Arduino UNO
Introduction
La carte arduino est un microcontrôleur open source. Le modèle UNO qui fera l’objet de ce
cours, de la société arduino est une carte électronique dont le cœur est un microcontrôleur ATMEL de
référence ATMega 328. L’ATMega 328 est un microcontrôleur 8 bits de la famille AVR dont la
programmation peut être rédigée en langage C/C++.
L’intérêt principal des microcontrôleurs arduino est leur facilité de mise en œuvre. Un environnement de
développement (IDE) s’appuyant sur des outils opensource est fourni. Entre autre charger le programme
compilé dans la mémoire du microcontrôleur se fait très simplement (via le part USB) dans cet IDE. Enfin
beaucoup de bibliothèques de fonctions sont également fournies pour faciliter l’exploitation des
entrées/sorties, la gestion des convertisseurs analogique-numérique et numérique-analogique, la
génération des signaux PWM, l’exploitation des servomoteurs, d’afficheur LCD,…
ATMEGA328
Figure 3.1 : Schéma simplifié de la carte arduino UNO
Arnaud NANFAK 1
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Remarque : Il existe deux modèles d’Arduino Uno : l’un avec un microcontrôleur de grande taille, et un
autre avec un microcontrôleur dit SMD (SMD: Surface Mounted Device, soit composants montés en surface,
en opposition aux composants qui traversent la carte électronique et qui sont soudés du côté opposé).
D’un point de vue utilisation, il n’y a pas de différence entre les deux types de microcontrôleurs.
Arnaud NANFAK 2
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
C’est le cerveau de notre carte. Il va recevoir le programme que nous allons créer et va le stocker
dans sa mémoire avant de l’exécuter. Grâce à ce programme, il va savoir faire des choses, qui peuvent être
: faire clignoter une LED, afficher des caractères sur un écran, envoyer des données à un ordinateur, mettre
en route ou arrêter un moteur…
Chaque timer peut être utilisé pour générer deux signaux PWM (6 broches OCxA/OCxB). Les broches
OC0A(PD6), OC0B(PD5), 0C1A(PB1), OC1B(PB2), OC2A(PB3), OC2B(PD3) peuvent servir de
sortie PWM (Pulse Width Modulation), c'est-à-dire des sorties qui joueront le rôle de sorties analogiques.
Elles correspondent aux broches des connecteurs 3,5,6,9,10 et 11 de la carte arduino.
Arnaud NANFAK 3
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Les entrées/sorties (I/O – input/output) représentent le moyen qu’a la carte arduino d’interagir
avec l’extérieur. Les sorties sont contrôlées par la carte, cela permet au programme du microcontrôleur de
déclencher des actions (allumer ou d’éteindre une LED, un ventilateur, un moteur). Les entrées sont lues
par le microcontrôleur, ce qui lui permet de connaitre l’état du système auquel il est relié.
La valeur d’un port numérique peut donc être codée sur un bit (0 ou 1).
Le microcontrôleur arduino UNO comporte 14 I/O numériques (appelé DIGITAL sur la carte),
numéroté de 0 à 13 et appelés D0, D1, …, D13. Chacun de ces ports peut-être déclaré comme étant une
entrée ou comme une sortie dans le programme du microcontrôleur. Les deux premiers ports (D0 et D1)
sont réservés à la communication série, et ne sont pas à
utiliser. Le dernier port, D13, possède un indicateur lumineux, une LED qui s’allume quand le port est
HIGH, et qui s’éteint quand le port est LOW.
Chacun des 14 ports numériques de la carte peuvent être utilisés en sortie. Si un port est déclaré
comme une sortie, le microcontrôleur contrôle la valeur de ce port. Les sorties numériques ne peuvent pas
fournir une grande puissance électrique (40 mA max sur
5 V). L’instruction de programmation utilisée pour programmer un port en sortie est pinMode(X,
OUTPUT); // définit le port DX comme une sortie ;
Remarques : Les situations suivantes sont à éviter parce qu’elles peuvent endommager la carte :
▪ un port, déclaré comme une sortie, est directement reliée à la masse (port GND) avec une
résistance très faible (un fil), et que le programme bascule la sortie en HIGH (5 V).
▪ un port, déclaré comme une sortie, est directement relié au port 5V et le programme bascule la
sortie en LOW (GND).
Chacun des 14 ports numériques de la carte peuvent être utilisés en entrée. Si un port est déclaré
comme une entrée, l’état du port sera lu par arduino et cette valeur pourra être utilisée par le programme
Arnaud NANFAK 4
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
pour telle ou telle action. Les tensions inférieures à 1V seront lues comme LOW et les tensions supérieures
à 4V seront lues comme HIGH. Toutefois, il faut eviter les tensions intermédiaires, qui risquent de donner
un résultat indéterminé. L’instruction de programmation utilisée pour programmer un port en entrée est
pinMode(X, INTPUT); // définit le port DX comme une entrée.
Remarque : une entrée numérique non connectée sera flottante (sans tension affectée), son état sera
indéterminé. La lecture de ce port peut donner n’importe quel résultat.
Une entrée analogique est une sorte de voltmètre : la carte lit la tension qui est appliquée sur le
port. Cependant le microcontrôleur ne travaille qu’avec des chiffres : il faut donc transformer la tension
appliquée en sa valeur numérique. C’est le travail du convertisseur analogue/digital, dit « CAD ». La carte
arduino UNO comporte 6 entrées analogiques (appelés ANALOG IN sur la carte) numérotés de 0 à 5 et
appelés A0,A1,…,A5.
Le convertisseur analogique-numérique de l’arduino UNO travaille sur 10 bits. Il accepte en entrée une
tension comprise entre 0V et Vref (une tension de référence prise par défaut égale à 5V), et fournit au
microcontrôleur un chiffre compris entre 0 et 1023. L’instruction de programmation qui retourne un entier
compris entre 0 et 1023 selon la valeur appliquée sur le port AX est : analogRead(X).
La carte arduino ne possède pas de vraies sorties analogiques capable de produire une tension
d’une valeur arbitraire choisie par l’utilisateur. Certains ports numériques peuvent cependant servir de
sorties analogiques en utilisant la technique PWM. Il s’agit des ports numériques D3, D5, D6, D9, D10 et
D11 (signalés par un ~ sur la carte). La carte arduino est capable de faire varier la valeur moyenne de ces
ports entre 0 et 5V avec une sensibilité de 8 bits, c’est-à-dire on fournit un nombre entier compris entre 0
et 255 et le port délivre une tension moyenne comprise entre 0 et 5V (0V à 0 et 5V à 255). L’instruction
de programmation qui retourne une tension moyenne de 2.5V sur port D3 par exemple est :
analogWrite(3,127).
La carte arduino fournit des ports permettant d’accéder à certaines tensions de référence. GND
est la référence de la carte par rapport à laquelle toutes les différences de tensions sont mesurées. Si la carte
est reliée à l’ordinateur par un câble USB, cette tension est celle de la
terre.
Arnaud NANFAK 5
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Les ports 5V et 3V3 donnent accès aux tensions de 5 V et de 3.3 V. Ces tensions sont
normalement régulées et précises. Une exception : quand la carte est branchée sur un port USB sans
alimentation externe, le port 5V ne provient plus de la carte arduino mais directement du câble USB, la
tension de référence 5 V n’est alors plus aussi bien régulée.
VIN est la tension de l’alimentation externe, quand il y en a une.
Remarque : Attention : si vous reliez directement le port 5 V au port GND (ou le port 3V3 au port GND, ou le
port 5V au port 3V3), vous provoquerez un court-circuit qui endommagera la carte !
Le port USB permet à la fois l’alimentation de la carte Arduino et la communication série entre
la carte et l’ordinateur. Une fois connectée, la carte Arduino apparaît dans le gestionnaire de matériel de
votre ordinateur, connecté à un port série (COM1, COM4, …). Vous devez vérifier que l’IDE (le
programme fourni par Arduino) est bien configuré pour dialoguer sur le bon port COM (et pour le bon
type de carte Arduino !). L’IDE permet de scanner le port COM et de récupérer les messages éventuels de
la carte.
La façon dont le microcontrôleur gère ses entrées/sorties est fixée par un programme, contenu
dans le microcontrôleur. Ce programme doit être écrit par l’utilisateur. En pratique, l’utilisateur écrit le
programme en langage C, en utilisant un environnement de développement spécialisé (IDE) installé sur
Arnaud NANFAK 6
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
un ordinateur. Ce programme est ensuite compilé et téléversé dans le microcontrôleur par liaison série
(USB).
Cet espace de développement intégré (EDI) dédié au langage Arduino et à la programmation des cartes
Arduino comporte :
▪ une BARRE DE MENU comme pour tout logiciel une interface graphique (GUI),
▪ une BARRE DE BOUTONS qui donne un accès direct aux fonctions essentielles du logiciel et
fait toute sa simplicité d'utilisation,
▪ un EDITEUR (à coloration syntaxique) pour écrire le code de vos programme, avec onglets de
navigation,
▪ une ZONE DE MESSAGES qui affiche indique l'état des actions en cours,
▪ une CONSOLE TEXTE qui affiche les messages concernant le résultat de la compilation du
programme
▪ un TERMINAL SERIE (fenêtre séparée) qui permet d'afficher des messages textes reçus de la
carte Arduino et d'envoyer des caractères vers la carte Arduino. Cette fonctionnalité permet une
mise au point facilitée des programmes, permettant d'afficher sur l'ordinateur l'état de variables, de
résultats de calculs ou de conversions analogique-numérique : un élément essentiel pour améliorer,
tester et corriger ses programmes.
Arnaud NANFAK 7
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 8
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Une fois que vous avez sélectionné le bon port série et la bonne carte Arduino, cliquez sur le bouton
UPLOAD (Transfert vers la carte) dans la barre d'outils, ou bien sélectionner le menu File>Upload to
I/O board (Fichier > Transférer vers la carte). Sur la plupart des cartes, vous devez voir les LEDs des
lignes RX et TX clignoter rapidement, témoignant que le programme est bien transféré. Durant le transfert,
le bouton devient jaune et le logiciel Arduino affiche un message indiquant que le transfert est en cours.
Arnaud NANFAK 9
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
TRAVAUX PRATIQUES
Arnaud NANFAK 10
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Durée du TP : 03 heures
Liste du matériel
1 /*
2 * Programme pour arduino uno
3 * Projet commande d’une LED
4 int pinLed = 13 ;
5
6 void setup () {
7 pinMode (pinLed, OUTPUT) ;
Arnaud NANFAK 11
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
8}
9
10 void loop () {
11 digitalWrite (pinLed, HIGH) ;
12 delay(1000) ;
13 digitalWrite (pinLed, LOW) ;
14 delay(1000) ;
15 }
1 /*
2 * Programme pour arduino uno
3 * Projet Chenillard à LED
4
5 void setup () {
6 pinMode (4, OUTPUT) ;
7 pinMode (5, OUTPUT) ;
8 pinMode (6, OUTPUT) ;
9 pinMode (7, OUTPUT) ;
10 pinMode (8, OUTPUT) ;
Arnaud NANFAK 12
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Compte rendu
Arnaud NANFAK 13
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Durée du TP : 03 heures
Liste du matériel
Arnaud NANFAK 14
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
puis cliquez sur » ajouter la bibliothèque .ZIP « .Sélectionnez alors le dossier .zip de la bibliothèque.
Une fois la bibliothèque installée et le logiciel Arduino redémarré, vous devriez la voir apparaître
dans la liste des bibliothèques installées. Dans le logiciel, cliquer sur « Ouvrir » puis « LiquidCrystal
et sélectionner enfin « HelloWorld ». Compiler et téléverser le programme dans la carte Arduino.
Vérifier que votre programme fonctionne et sur l’écran LCD.
void setup() {
// Specify the LCD's number of columns and rows. Change to (20, 4) for a 20x4 LCD:
lcd.begin(16, 2);
}
void loop() {
// Set the cursor on the third column and the first row, counting starts at 0:
lcd.setCursor(2, 0);
// Print the string 'Hello World!':
lcd.print("Hello World!");
// Set the cursor on the third column and the second row:
lcd.setCursor(2, 1);
// Print the string 'LCD tutorial':
lcd.print("TP LCD ENSPD");
}
Programme 2
void setup() {
lcd.begin(16, 2);
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("'Hello World!");
delay(1000);
lcd.setCursor(0, 1);
lcd.print("TP LCD ENSPD");
delay (1000);
for (int i = 0; i < 16; i++) {
lcd.scrollDisplayLeft();
Arnaud NANFAK 15
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
delay(300);
}
lcd.clear();
Compte rendu
1. Définir bibliothèque
2. Définir la nature des broches de l’écran LCD
Arnaud NANFAK 16
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Durée du TP : 03 heures
Le capteur d'humidité et de température DHT11 mesure les températures entre 0°C et 50°C et une
humidité relative entre 20 et 90 %. Les mesures sont effectuées toutes les secondes, avec une
précision de ±2°C pour la température et de ±5% pour l'humidité relative. À une humidité relative
de 0 %, l'air est complètement sec, et à 100% de condensation se produit.
Manipulation
Liste du matériel
Arnaud NANFAK 17
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 18
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 19
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Compte rendu
Arnaud NANFAK 20
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Fonctionnement du capteur
Le principe de fonctionnement du capteur est entièrement basé sur la vitesse du son. Voilà
comment se déroule une prise de mesure :
Durée du TP : 03 heures
Liste du matériel
Arnaud NANFAK 21
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Manipulation
01 #include <NewPing.h>
02 #define TRIGGER_PIN 12
03 #define ECHO_PIN 11
04 #define MAX_DISTANCE 200
05
06 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
07
08 void setup() {
09 Serial.begin(115200);
10 }
11
12 void loop() {
13 delay(50);
14 Serial.print("Ping: ");
15 Serial.print(sonar.ping_cm());
16 Serial.println("cm");
17 }
Pour visualiser la distance mesurée on utilise le moniteur série (console). Pour ce faire, dans l’IDE
Arduino cliquez sur outil, allez sur Moniteur série. Régler la même vitesse de transmission dans la
console que celle qui a été initialisé dans la fonction « Setup ».
Compte rendu
Arnaud NANFAK 22
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 23
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Fonctionnement du capteur
Le circuit DS1307 est une horloge temps réel (Real Time Clock), qui fournit secondes, minutes,
heures, jours, dates, mois et années. C'est une horloge numérique autonome qui donne l'heure
quand on la lui demande. Ce module RTC est capable de gérer l'heure (heures, minutes, secondes)
et la date (jours, mois, année) tout en s'occupant des mois de 30 ou 31 jours, des années bissextiles,
etc. Le calendrier intégré dans le module DS1307 est valable de l'an 2000 à l'an 2100. La
communication avec le microcontrôleur maître se fait via un bus I²C. Le module dispose de tout
le nécessaire pour garder en mémoire l'heure en cas de coupure d'alimentation grâce à une batterie
externe. Une simple pile bouton permet de garder l'heure et la date à jour durant plusieurs années
sans alimentation.
Durée du TP : 03 heures
Liste du matériel
Arnaud NANFAK 24
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
01 #include <Wire.h>
02 #include <LiquidCrystal_I2C.h>
03 #include <RTClib.h>
04 #if defined(ARDUINO) && ARDUINO >= 100
05 #define printByte(args) write(args);
06 #else
07 #define printByte(args) print(args,BYTE);
08 #endif
12 void setup()
13 {
14 lcd.init();
15 lcd.backlight();
16 lcd.print("Initialising...");
17 lcd.createChar(2, clock);
18 Wire.begin();
19 RTC.begin();
20 RTC.adjust(DateTime(__DATE__, __TIME__));
21 }
22 void loop()
23 {
Arnaud NANFAK 25
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
24 lcd.clear(); //code pour afficher heure et date de la clock (du RTC) sur l'écran LCD
25 DateTime now = RTC.now();
26 lcd.printByte(2);
27 lcd.print(" ");
28 lcd.print(now.hour(), DEC);
29 lcd.print(':');
30 lcd.print(now.minute(), DEC);
31 lcd.print(':');
32 lcd.print(now.second(), DEC);
33 lcd.setCursor(0, 1);
34 lcd.print(now.day(), DEC);
35 lcd.print('/');
36 lcd.print(now.month(), DEC);
37 lcd.print('/');
38 lcd.print(now.year(), DEC);
39 lcd.print(' ');
40 delay(1000);
41 }
Compte rendu
Arnaud NANFAK 26
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Fonctionnement du capteur
▪
5V ou 3.3V pour l’alimentation du module
▪
GND la masse du module
▪
CS ou ChipSelect pour activer la communication
▪
MISO (Master Input, Slave Output) broche de transmission équivalent à la borne Tx d’un
port série. Sortie du module.
▪ MOSI (Master Output, Slave Input) broche de réception équivalent à la borne Rx d’un
port série. Entrée du module.
▪ SCK (Clock) horloge permettant de synchroniser la communication
Durée du TP : 03 heures
Liste du matériel
Arnaud NANFAK 27
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
01 #include SPI.h
02 #include SD.h
03 int SELECTED_CHIP = 4;
04 int count = 0;
05 void setup() {
06 Serial.begin(9600);
07 if (SD.begin(SELECTED_CHIP)) {
08 Serial.println("SD-Card initialized.");
09 } else {
10 Serial.println("SD-Card failed or is missing");
11 }
12 }
03 void loop() {
14 String line = String("Bonjour le monde #") + String(count);
15 writeToSD(line);
16 count = count + 1;
17 delay(1000);
18 }
19 void writeToSD(String line) {
20 File dataFile = SD.open("test.csv", FILE_WRITE);
21 if (dataFile) {
22 dataFile.println(line); // Enregistrer sur la carte
23 dataFile.close(); // Fermer le fichier
24 Serial.println(line);
25 } else {
26 Serial.println("Error opening datafile");
27 }
28 }
Arnaud NANFAK 28
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Compte rendu
Arnaud NANFAK 29
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Durée du TP : 03 heures
Liste du matériel
Arnaud NANFAK 30
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
01 #include <SD.h>
02 File file;
03 String filename = "data.csv";
04 #include <DS3231.h>
05 DS3231 rtc(SDA, SCL);
06 #include <dht.h>
07 dht DHT;
08 int CSpin = 10;
09 int lightPin = A3;
10 int PCBpin = 6;
11 int i = 0;
12 int check, light, temp, humid;
13 String data, date, time;
14
15 void setup()
16 {
17 Serial.begin(9600);
18 rtc.begin();
19 Serial.println("checking SD card");
20 if(SD.begin(CSpin) == 0)
21 {
22 Serial.println("Card fail");
23 return;
24 }
25 Serial.println("Card OK");
26 if(SD.exists(filename)>0) SD.remove(filename);
27 file = SD.open(filename, FILE_WRITE);
28 if(file == 1)
29 {
30 String header = "record, time, light, temp, humid, on ";
31 header = header + String(rtc.getDateStr());
32 file.println(header);
33 file.close();
34 }
35 else Serial.println("Couldn't access file");
36 }
37
38 void loop()
39 {
40 i++;
41 Serial.print("record ");Serial.println(i);
42 light= analogRead(lightPin);
43 check = DHT.read11(PCBpin);
44 temp = DHT.temperature;
45 humid = DHT.humidity;
46 time = rtc.getTimeStr();
47 data = String(i) + "," + String(time) + "," + String(light);
48 data = data + "," + String(temp)+ "," + String(humid);
49 file = SD.open(filename, FILE_WRITE);
50 file.println(data);
51 file.close();
52 delay(1000);
53 }
Arnaud NANFAK 31
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Compte rendu
Arnaud NANFAK 32
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Durée du TP : 03 heures
Liste du matériel
Arnaud NANFAK 33
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
#include <IRremote.h>
Const int RECV_PIN = 5;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600) ;
irrecv.enableIRIn(); // Initialise le recepteur infrarouge
allumer_vert=0;
allumer_rouge=0;
allumer_oranger=0;
pinMode(led_verte, OUTPUT);
pinMode(led_oranger, OUTPUT);
pinMode(led_rouge, OUTPUT);
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value,HEX);
if (results.value == 0xFF30CF) {
if (allumer_vert == 0) {
allumer_vert = 1;
digitalWrite(led_verte, HIGH); }
else {
allumer_vert = 0;
digitalWrite(led_verte, LOW); }
}
if (results.value == 0xFF18E7) {
if (allumer_oranger == 0) {
allumer_oranger = 1;
digitalWrite(led_oranger, HIGH); }
else {
allumer_oranger = 0;
digitalWrite(led_oranger, LOW); }
}
if (results.value == 0xFF7A85) {
if (allumer_rouge == 0) {
allumer_rouge = 1;
digitalWrite(led_rouge, HIGH); }
else {
allumer_rouge = 0;
digitalWrite(led_rouge, LOW); }
}
}
irrecv.resume();
}
Arnaud NANFAK 34
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Compte rendu
Arnaud NANFAK 35
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Durée du TP : 03 heures
Liste du matériel
01 #include <MD_Parola.h>
02 #include <MD_MAX72xx.h>
03 #include <SPI.h>
04 // Define hardware type, size, and output pins:
05 #define HARDWARE_TYPE MD_MAX72XX::FC16_HW
06 #define MAX_DEVICES 4
07 #define CS_PIN 3
08 // Create a new instance of the MD_Parola class with hardware SPI connection:
09 MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
10 // Setup for software SPI:
11 // #define DATAPIN 2
12 // #define CLK_PIN 4
13 // MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN,
MAX_DEVICES);
Arnaud NANFAK 36
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
14
15 void setup() {
16 // Intialize the object:
17 myDisplay.begin();
18 // Set the intensity (brightness) of the display (0-15):
19 myDisplay.setIntensity(0);
20 // Clear the display:
21 myDisplay.displayClear();
22 }
23
24 void loop() {
25 myDisplay.setTextAlignment(PA_CENTER);
26 myDisplay.print("Center");
27 delay(2000);
28 myDisplay.setTextAlignment(PA_LEFT);
29 myDisplay.print("Left");
30 delay(2000);
31 myDisplay.setTextAlignment(PA_RIGHT);
32 myDisplay.print("Right");
33 delay(2000);
34 myDisplay.setTextAlignment(PA_CENTER);
35 myDisplay.setInvert(true);
36 myDisplay.print("Invert");
37 delay(2000);
38 myDisplay.setInvert(false);
39 myDisplay.print(1234);
40 delay(2000);
41 }
Programme 2
Dans l’environnement de développement Arduino, saisir le programme ci-dessous.
01 #include <MD_Parola.h>
02 #include <MD_MAX72xx.h>
03 #include <SPI.h>
04 // Define hardware type, size, and output pins:
05 #define HARDWARE_TYPE MD_MAX72XX::FC16_HW
06 #define MAX_DEVICES 4
07 #define CS_PIN 3
08 // Create a new instance of the MD_Parola class with hardware SPI connection:
09 MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
10 // Setup for software SPI:
11 // #define DATAPIN 2
12 // #define CLK_PIN 4
13 // MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN,
MAX_DEVICES);
14
15 void setup() {
16 // Intialize the object:
17 myDisplay.begin();
18 // Set the intensity (brightness) of the display (0-15):
19 myDisplay.setIntensity(0);
20 // Clear the display:
21 myDisplay.displayClear();
22 myDisplay.displayText("Scrolling text", PA_CENTER, 100, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
23 }
24
25 void loop() {
26 if (myDisplay.displayAnimate()) {
27 myDisplay.displayReset();
Arnaud NANFAK 37
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
28 }
29 }
Compte rendu
Arnaud NANFAK 38
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Durée du TP : 03 heures
Liste du matériel
Arnaud NANFAK 1
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Programme 1
Dans l’environnement de développement Arduino, ajouter les bibliothèques DMD et TimerOne et Wire
misent à votre disposition par l’enseignant. Saisir le programme ci-dessous.
#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
#include <Wire.h>
#define ROW_MODULE 4
#define COLUMN_MODULE 1
DMD p10(ROW_MODULE, COLUMN_MODULE);
char message[500];
char char_read;
byte pos_index = 0;
int i;
char welcome_screen[] = "Ecole national polytechnique de Douala";
void p10scan()
{
p10.scanDisplayBySPI();
}
void setup()
{
Serial.begin(9600);
delay(1000); // wait for console opening
Timer1.initialize(1000);
Timer1.attachInterrupt(p10scan);
p10.clearScreen( true );
strcpy(message,welcome_screen);
}
void loop()
{
if(Serial.available())
{
for(i=0; i<199; i++)
{
message[i] = '\0';
Serial.print(message[i]);
}
pos_index=0;
}
while(Serial.available() > 0)
{
p10.clearScreen( true );
if(pos_index < (199))
{
char_read = Serial.read();
message[pos_index] = char_read;
pos_index++;
}
}
Arnaud NANFAK 2
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
p10.clearScreen( true );
p10.selectFont(Arial_Black_16);
p10.drawMarquee(message,45,(32*ROW_MODULE)-1,0);
long start=millis();
long timer_start=start;
boolean flag=false;
while(!flag)
{
if ((timer_start+250) < millis())
{
flag=p10.stepMarquee(-1,0);
timer_start=millis();
}
}
}
Télécharger et installer l’application android « bluetooth terminal HC-05 » mise à votre disposition par l’enseignant.
Compte rendu
Arnaud NANFAK 3
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Arnaud NANFAK 4
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
1. Définir les termes suivants : Timer, Registre, Microcontrôleur, Bus, et Watchdog (10 points)
2. Donner la signification des acronymes suivants : USB, I2C, UAL, RAM et CPU (10 points)
3. Donner les différences entre un microprocesseur et un microcontrôleur ? (5 points)
4. Décrire le processus de lecture et d’écriture en mémoire centrale (5 points)
5. Décrire étape par étape le traitement d’une instruction (6 points)
6. Expliquer le principe de l’adressage indirect (4 points)
7. Faites une étude comparative entre les architectures RISC et CISC (10 points)
Arnaud NANFAK 5
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Dans le cadre de votre projet de fin d’étude, vous devez réaliser un dispositif de relevé de la température
dans un séchoir de fruit. Pour la réalisation, vous optez pour le microcontrôleur UNO de la famille Arduino.
Votre dispositif doit remplir le cahier de charge suivant : Alimentation par batterie, relevé toutes les 60
secondes de la température dans le séchoir avec enregistrement dans une carte mémoire SD (Date, temps et
température) et un affichage temps réel de la température dans le séchoir sur un afficheur LCD (la
communication entre la carte arduino et l’afficheur LCD se fera par l’intermédiaire du module I2C).
Présentation : 5 points
Arnaud NANFAK 6
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Un timer est un compteur qui sert à la temporisation et a créer des interruptions. (2 points)
Un registre est une zone mémoire à l’intérieur du microprocesseur de faible taille, qui permet de
mémoriser des mots mémoires ou des adresses d’une façon temporaire lors de l’exécution des instructions.
(2 points)
Un microcontrôleur est un circuit intégré qui rassemble les éléments essentiels d’un ordinateur à savoir
un microprocesseur (généralement peu puissant), plusieurs types de mémoires et des périphériques de
communication (Entrées-Sorties). (2 points)
Un bus est un ensemble de lignes transportant des informations codées binaires. (2 points)
Un watchdog est un composant qui est souvent utilisé dans le domaine du temps réel pour surveiller le
déroulement du programme d'un microcontrôleur. (2 points)
Arnaud NANFAK 1
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
La lecture : L’adresse du mot à lire est transférée au registre d’adresse, le dispositif d’accès à la mémoire
se charge de chercher le mot et de le mettre dans le registre de données. (2.5 points)
L’écriture : Le registre d’adresse est chargé par l’adresse mémoire ou on va écrire, le mot à écrire est placé
dans le registre de données. Lorsque l’ordre de l’écriture est donné, le contenu des cases mémoires sera
écrasé et remplacé par la nouvelle valeur. (2.5 points)
▪ Le PC contient l'adresse de l'instruction suivante du programme. Cette valeur est placée sur le bus
d'adresses par l'unité de commande qui émet un ordre de lecture.
▪ Au bout d'un certain temps (temps d'accès à la mémoire), le contenu de la case mémoire
sélectionnée est disponible sur le bus des données.
▪ L'instruction est stockée dans le registre instruction du processeur.
Le registre d'instruction contient maintenant le premier mot de l'instruction qui peut être codée sur
plusieurs mots. Ce premier mot contient le code opératoire qui définit la nature de l'opération à effectuer
(addition, rotation,...) et le nombre de mots de l'instruction.
Arnaud NANFAK 2
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Le mode d’adressage indirect permet d’accéder à une donnée par l’intermédiaire d’un registre
qui contient son adresse ou l’adresse d’une position mémoire qui, elle, contient l’adresse de
l’opérande. (4 points)
Arnaud NANFAK 3
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Compiler c’est traduire un langage (appelé le langage source) en un autre (le langage cible), généralement
dans le but de créer un fichier exécutable. (1 points)
Batterie avec connexion Jack ; capteur de température LM35 ; afficheur LCD ; bus I2C ; arduino
UNO ; RTC DS1307 ; Shield carte SD ; Machine avec l’IDE installé (10 points)
5. Citer les bibliothèques que vous allez utiliser lors de la rédaction de votre programme
(préciser le composant concerné)
Bibliothèque Wire.h (bus I2C) ; LiquidCrystal.h (afficheur LCD) ; DS1307.h (RTC DS1307) et
SD.h (Shield SD). (2x4 points)
Arnaud NANFAK 4
Ph.D. in Electrical Energy, Robotic & Signal processing
Université de Douala | Ecole Nationale Supérieure Polytechnique de Douala |
DépaM Niveau 3 | Ingénieur | Génie Automobile et Mécatronique (GAM)
Microcontrôleurs | Année académique 2023 - 2024
Le principal avantage à utiliser le module I2C est de réduire le nombre de port nécessaire pour
communication entre le microcontrôleur UNO et l’afficheur LCD. (2 points)
Présentation : 5 point
Arnaud NANFAK 5
Ph.D. in Electrical Energy, Robotic & Signal processing