0% ont trouvé ce document utile (0 vote)
16 vues7 pages

Programmation Arduino et communication série

Transféré par

Barry Mamadou Lamarane
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)
16 vues7 pages

Programmation Arduino et communication série

Transféré par

Barry Mamadou Lamarane
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

TP n°2 Programmation sur microcontrôleur

Nom / prénom : ...................................................................

Nom / prénom : ................................................................... Date : Note :


….. / ….. / …....... ..... / 20
Nom / prénom : ...................................................................

Nom / prénom : ...................................................................

Dans ce TP, nous allons utiliser un microcontrôleur Arduino (architecture AVR) pour mettre en place un
programme fonctionnant avec les contraintes liées à la programmation temps réel souple.
L'objectif final est de faire tourner plusieurs sous-programmes de manière non bloquante en utilisant le
paradigme « super loop »

1. « Bare metal » avec le paradigme « super loop »


a) Prise en main de l'IDE Arduino
La première étape consiste à télécharger l'IDE Arduino ainsi que les pilotes pour les contrôleurs
série FTDI ou CH340 en fonction de votre platine.

b) Utilisation des entrées / sorties


1 Le port série
1) Dites comment vous faîtes pour activer le port série et envoyer un message :

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

2) Quel est le protocole utilisé et quelles sont les informations envoyées ?

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

3) Ecrivez un programme qui agit comme un serveur echo en affichant les caractères envoyés :

Code figurant dans l'archive de rendu

2 Lecture / écriture digitale


4) Quelle est la procédure pour positionner une broche en entrée et faire une lecture ?

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

5) Quelle est la procédure pour positionner une broche en sortie et changer son niveau logique ?

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

1/7
3 Lecture analogique
Expliquez brièvement le fonctionnement de l’échantillonnage avec un convertisseur
analogique / numérique. Vous pouvez aborder le concept de précision et de discrétisation :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

Votre dessin ici :

6) Branchez un potentiomètre et indiquez les branchements ci-dessous :

7) Testez son fonctionnement en affichant périodiquement sa valeur sur le port série :

Code figurant dans l'archive de rendu

2/7
4 Signal PWM
8) Détaillez la forme et comment est réalisé un signal PWM. Vous pouvez aborder la notion de cycle de
travail ainsi que celle de timer :

...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

Votre dessin ici :

9) Utilisez un signal PWM, modulé proportionnellement à votre potentiomètre pour faire briller la LED
intégrée à la platine Arduino.

Code figurant dans l'archive de rendu

3/7
c) Api UART
L'intérêt d'une Api est d'offrir, au travers d'une interface spécifiée, un ensemble de
fonctionnalités. Dans notre cas, nous allons proposer le contrôle des broches au travers du
port série :
• changement d'état d'une broche (état haut ou bas) ;
• changement de sens d'une broche (entrée ou sortie) ;
• lecture de l'état d'une broche (état haut ou bas mais aussi la valeur) ;
• bascule de l'état d'une broche (état haut si bas et inversement) ;
• bascule temporaire d'une broche (idem précédent mais avec un timer) ;
• signal PWM sur une broche
• …

1 Définition d'un protocole


Chaque protocole, peu importe le niveau OSI auquel il appartient, possède un format prédéfini
qui lui permet de véhiculer des messages. Les messages sont utilisés pour différentes
fonctions :
• information sur l 'état des stations ;
• information sur l'état du réseau ;
• envoi d'informations ;
• demande de confirmation ;
• …
Dans notre cas de figure, les choses sont simples puisque la communication est full-duplex et
unicast. Il n'y aura donc pas a gérer le multicast, les collisions, les retransmissions, etc.

Les messages seront envoyés depuis le port série et « digérés » par un sous-programme qui
décidera de l'action à entreprendre : changement d'état d'une broche, lecture d'état, message
d'erreur, etc.

Pour les questions qui suivent, vous pouvez formuler votre analyse en vous appuyant sur des
protocoles existants comme ICMP, IP...
10) Lorsque l'on essaie de lire un message, souvent les problèmes suivants se posent :

• Comment détecter l'arrivée d'un message ?

• Comment détecter la fin d'un message ?

• Comment séparer les différents champs ?

• Comment déterminer l'action à entreprendre ?

• Comment déterminer une erreur ?


• …

4/7
Définissez le format des messages en expliquant comment vous adressez les problématiques ci-dessus :

Début d'un message :


...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Fin d'un message :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Séparation des champs :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Choix de l'action à entreprendre :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................
Gestion des erreurs :
...........................................................................................................................................................................
...........................................................................................................................................................................
...........................................................................................................................................................................

Format de vos messages :

11) Définissez les différents messages qui circuleront sur votre réseau ainsi que leur signification en
fonction de la réponse à la question précédente :

5/7
2 Définition de l'API
Maintenant que les messages sont définis, il ne vous reste plus qu'a spécifier votre API en expliquant comment réaliser les actions :
Message avec un exemple Retour Action
Succès : Permet la lecture de l'état d'une broche digital

Erreur :

Succès : Permet la lecture de l'état d'une broche


analogique
Erreur :

Succès : Permet la modification de l'état d'une broche

Erreur :

Succès : Permet la bascule de l'état d'une broche

Erreur :

Succès : Permet la lecture du mode d'une broche

Erreur :

Succès : Permet la modification du mode d'une broche

Erreur :

Succès : Permet l'activation de la modulation PWM sur une


broche
Erreur :
Succès : Permet l'a bascule de l'état d'une broche de
manière temporaire (timer)
Erreur :

Lors de l'élaboration de votre API expliquez comment avez vous adressé les difficultés suivantes :
• RAZ du mécanisme de lecture des messages :
....................................................................................................................................................................................................................................................................
....................................................................................................................................................................................................................................................................

• Sauvegarde du sens d'une broche :


....................................................................................................................................................................................................................................................................
....................................................................................................................................................................................................................................................................

• Implémentation des timers :


....................................................................................................................................................................................................................................................................
....................................................................................................................................................................................................................................................................

Vous joindrez le code de votre API à l'archive de rendu

Common questions

Alimenté par l’IA

The API involves setting up messages to alter pin states, read values, and handle PWM signals. Challenges include resetting message read mechanisms, saving pin direction states, and implementing timers for temporary state changes. Each message must have a clearly defined action and error handling method .

The main steps involve downloading and installing the Arduino Integrated Development Environment (IDE) along with necessary drivers like FTDI or CH340 based on your board. This setup will facilitate the handling of multiple non-blocking subprograms using the 'super loop' paradigm .

A communication protocol should have a defined start and end for messages, clear separation of fields, an action section, and error detection/correction mechanisms. This ensures messages are accurately parsed and appropriate actions taken without collision or misinterpretation .

Analog sampling in Arduino using an ADC involves converting analog input to digital values through discretization. Precision is influenced by factors like the resolution (10-bit in Arduino), voltage reference, and noise levels in the input signal .

To set a pin as an input, you use `pinMode(pinNumber, INPUT);`. To read its state, `digitalRead(pinNumber);` is used, which returns either HIGH or LOW depending on the voltage at the pin .

The duty cycle in PWM is the percentage of one cycle in which a signal is active. It is significant as it controls the amount of power delivered to a device. In Arduino, PWM is implemented using analogWrite(pin, value); where `value` determines the duty cycle by setting a value between 0 (always off) and 255 (always on).

The 'super loop' paradigm continuously cycles through tasks, checking for conditions to perform operations, allowing functions to run concurrently without blocking. Its advantage lies in simple task scheduling without complex real-time operating system overheads, making it efficient for many real-time applications .

Connect the potentiometer’s outer pins to 5V and GND, and the middle pin to an analog input. Read its value using `analogRead()`, then map this value to a 0-255 range for PWM using `analogWrite(pin, value);` to control the brightness of an LED .

Challenges include detecting the start and end of messages, separating fields, determining actions to take, and identifying errors. Message format must ensure these aspects are addressed to prevent issues in communication, especially since the system operates in a full-duplex mode .

To activate the serial port, you configure it using functions such as `Serial.begin(baudRate);` where `baudRate` specifies the speed of data transfer. The protocol used is typically a simple asynchronous serial communication where data is transmitted in bytes .

Vous aimerez peut-être aussi