Rapport Du Projet: Stm32f4 Avec Accéléromètre Et Afficheur LCD

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 17

Rapport du projet

Stm32f4 avec accéléromètre et afficheur LCD

Réalise par :
Mansouri Khalil
Gara Bechir
Sommaire
INTRODUCTION ................................................................................................................................................ 4
HARDWARE ...................................................................................................................................................... 5
MATÉRIEL UTILISÉE ................................................................................................................................................. 6
STM32F407 DISCOVERY ............................................................................................................................... 6
Accéléromètre GY-61 ................................................................................................................................... 6
Écran LCD 16x2............................................................................................................................................. 6
I2C PCF85741 ............................................................................................................................................... 7
BRANCHEMENT DES COMPOSANTS ............................................................................................................................. 7
SOFTWARE ....................................................................................................................................................... 8
ÉLÉMENTS FONDAMENTAUX ..................................................................................................................................... 9
Explication de l’I2C ....................................................................................................................................... 9
DMA (Direct Memory Access) ...................................................................................................................... 9
ADC (Analog to Digital Converter) ............................................................................................................... 9
LOGICIELS UTILISÉS ................................................................................................................................................ 10
Configuration du STM32cubeMX ............................................................................................................... 11
DESCRIPTION DU CODE .......................................................................................................................................... 14
La bibliothèque i2c-LCD .............................................................................................................................. 14
Fonction principale ..................................................................................................................................... 15
RÉSULTAT ET CONCLUSION ............................................................................................................................ 16
DISCUSSION DES RÉSULTATS ........................................................................................................................... 17
Conclusion .................................................................................................................................................. 17
INTRODUCTION
un accéléromètre est un instrument de mesure capable de détecter et / ou
mesurer l'accélération, effectuer le calcul de la force détectée par rapport à la
masse de l'objet (force par unité de masse).L'utilisation de l'accéléromètre a
considérablement augmenté au cours des dernières années parce que, en plus
des applications traditionnelles de la science et de l'aérospatiale, a été adopté
dans plusieurs domaines civil (automobile, smartphone, tests, analyse
mécanique, de loisirs, etc.) souvent combinés avec d'autres capteurs comme
gyroscopes, magnétomètres, etc.
➢ But de projet
L’objectif de notre projet est d’acquérir des mesures d’un accéléromètre et
afficher le résultat avec la communication I2C sur un écran LCD 16*2 avec un
contrôleur PCF8754T en utilisant la carte STM32F407DISCOVERY.
HARDWARE
Matériel utilisée
STM32F407 DISCOVERY
Le microcontrôleur haute performance STM32F407VG avec arm® Cortex®-M4 32
bits noyau. Il est basé sur STM32F407VG, il comprend un outil de débogage
intégré ST-LINK/V2-A, un accéléromètre numérique STMEMS, un microphone
numérique, un DAC audio avec classe D intégrée haut-parleur, LED, boutons
poussoirs et un connecteur USB OTG Micro-AB. Les cartes d’extension
spécialisées peuvent être connectées au moyen des connecteurs d’en-tête
d’extension.

Accéléromètre GY-61
Module accéléromètre analogique à 3 axes basé sur le circuit ADXL335.Ce
module permet de mesurer l’accélération statique et dynamique
Plages de mesure : ±3 g, Alimentation : 3.3 - 5V, sensibilité 300mv/g, Dimensions
: 21 x 16mm.
Définitions des Pin
➢ VCC : 3.3V or 5V
➢ X_OUT : Analog Output
➢ Y_OUT : Analog Output
➢ Z_OUT : Analog Output
➢ GND : Ground

Écran LCD 16x2

L'afficheur LCD est en particulier une interface visuelle


entre un système (projet) et l'homme (utilisateur). Il
affichera des données susceptibles d'être exploiter par
l'utilisateur d'un système.
I2C PCF85741
Dans ce projet, nous allons interfacer LCD avec STM32 à l'aide d'un
périphérique I2C (PCF8574). Le PCF8574 peut être utilisé comme
extension de port, auquel l'écran LCD sera connecté

Généralement, pour pouvoir utiliser un écran LCD, nous avons besoin d'au
moins 6 broches libres, mais le nombre de broches peut être minimisé à
l'aide de ce composant externe tels que l'extenseur d'E/S I2C PCF8574 (ou
PCF8574A), cela nous permet d'utiliser seulement 2 broches de notre
microcontrôleur.

Branchement des composants


On effectue le branchement suivant

LCD_SDA ➔ PB7
LCD_SCL ➔ PB6
PA1 ➔ X_OUT
PA2 ➔ Y_OUT
PA3 ➔ Z_OUT
SOFTWARE
Éléments fondamentaux
Explication de l’I2C
I2C est une communication synchrone. I2C signifie Inter Circuits Intégrés. I2C est
également connu sous le nom d'interface TWI ou Twin Wire car il ne nécessite
que deux fils pour communiquer entre différents appareils.
Le bus I2C se compose de SCL (horloge) et de SDA (données).
Afin de communiquer avec un esclave, le maître envoie d'abord l'octet d'adresse
le long de la ligne de données. Tous les esclaves connectés au bus feront
correspondre leurs adresses avec l'adresse envoyée par le maître. En cas de
correspondance, l'esclave respectif envoie l'ACK (accusé de réception) au maître
et la communication commence.

DMA (Direct Memory Access)


Une unité d’accès direct à la mémoire (DMA) est un élément logique numérique
dans l’architecture informatique qui peut être utilisé conjointement avec le
microprocesseur principal sur la même puce afin de décharger les opérations de
transfert de mémoire. Cela réduit considérablement la charge du processeur.
Comme le contrôleur DMA peut effectuer des transferts de données de mémoire
à mémoire ainsi que des transferts de données de périphérique à mémoire ou
vice versa. L’existence de DMA avec un CPU peut accélérer son débit par ordre
de grandeur.
ADC (Analog to Digital Converter)
Le microcontrôleur STM32F407VG possède trois modules ADC de type à
approximation successifs tels que ADC1, ADC2 et ADC3. Ces modules ADC
partagent 16 canaux d'entrée analogiques. Cela signifie qu'il y a un total de 16
canaux d'entrée analogiques disponibles pour la carte de découverte STM32F4.
Un ADC (Analog-to-Digital Converter) est un périphérique qui permet de mesurer
la tension (entre 0 et Vref) sur une certaine entrée du microcontrôleur et de la
convertir en un nombre entre 0 et 2N-1 où N est la résolution ADC.

Le tableau suivant montre les broches d'entrée pour chaque canal analogique et
modules ADC.

Logiciels utilisés
• STM32CubeMX : un outil de configuration logicielle graphique qui permet
la génération automatique de C code d'initialisation à l'aide d'assistants
graphiques
• STM32CubeIDE : un outil de développement tout-en-un avec
configuration périphérique, génération de code, code fonctionnalités de
compilation et de débogage
Configuration du STM32cubeMX
Configuration du clock :

Utilise le clock externe (HSE)

Configuration du I2C1 :

Pour la communication avec le contrôleur pcf8754 on active le block du I2C1 et


par conséquence le logiciel cubeMX configure les pins PB6 et PB7 pour SCL et
SDA
Configuration du ADC :
Les convertisseurs analogique-numérique (CAN) multicanaux convertissent
généralement chaque canal d'entrée de manière séquentielle à l'aide d'un
multiplexeur d'entrée.

Configurer les 3 canaux de l'ADC pour multicanaux conversion.


Nous pouvons effectuer la conversion multicanale de l'ADC sur stm32 avec la
configuration suivante

Notez que 3 canaux sont


sélectionnés. Le mode de
conversion Continu et le scan
conversion mode sont actifs
DMA Config :
Afin de lire les multiples canaux, nous devons utiliser le DMA. L'avantage est que
la conversion aura lieu en arrière-plan et nous pouvons effectuer une autre
opération avec le contrôleur et lorsque nous avons besoin des valeurs, nous
pouvons simplement les lire facilement.

le paramètre DMA pour l'ADC.


Nous nous assurons que le DMA est circulaire et que la largeur des données est
sélectionnée comme WORD. En effet, nous utilisons l'ADC avec une résolution
de 12 bits et pour stocker 12 bits, nous avons besoin de la variable de la même
taille.
Description du code
La bibliothèque i2c-LCD
Cette bibliothèque a été développée par des développeurs pour faciliter
l'interaction des utilisateurs avec l'écran LCD et le module PCF8574grâce à des
fonctions prédéfinies.

Importation du bibliothèque i2c-LCD

L'adresse du PCF8574 est 0 1 0 0 A2 A1 A0 R/W. Pour changer l'adresse, nous


disposons des broches A0, A1 et A2.
Par défaut, ces trois broches sont hautes, donc l'adresse par défaut est 01001110
qui est 0x4E.
#define SLAVE_ADDRESS_LCD 0x4E // change this according to ur setup

L'adresse esclave par défaut définie dans i2c-lcd. c’est 0x4E. C'est la valeur par
défaut pour le PCF8574.
void lcd_init (void); // initialize lcd

void lcd_send_cmd (char cmd); // envoyer la commande à l'écran lcd

void lcd_send_data (char data); // envoyer des données à l'écran lcd

void lcd_send_string (char *str); // envoyer la chaîne à l'écran lcd

void lcd_put_cur(int row, int col); // placez le curseur à la position


entrée ligne (0 ou 1), col (0-15);

void lcd_clear (void); // effacer l'écran lcd

Fonction principale
HAL_ADC_Start_DMA(&hadc1, value, 3); // start the adc in dma mode

Démarre l'ADC en mode DMA et les données converties sont stockées dans le
tampon « valeur ». « 3 » est la longueur des données à transférer du
périphérique ADC vers la mémoire.
while (1)
{
HAL_ADC_Start_DMA(&hadc1, value, 3); // start the adc in dma mode

//Afficher X

lcd_send_cmd (0x80); // met le curseur en position 00


lcd_send_string ("x= "); // send string
lcd_send_data ((value[0]/1000)+48); // afficher les milliers de X
lcd_send_data (((value[0]%1000)/100)+48); //afficher les centaines de X
lcd_send_data (((value[0]%100)/10)+48); //afficher les Dizaines de X
lcd_send_data (((value[0]%10))+48); // Afficher les unites valeur de X

//Afficher Y

lcd_send_string (" y= ");


lcd_send_data((value[1]/1000)+48); // afficher les milliers de Y
lcd_send_data(((value[1]%1000)/100)+48); //afficher les centaines de Y
lcd_send_data(((value[1]%100)/10)+48); //afficher les Dizaines de Y
lcd_send_data(((value[1]%10))+48); // Afficher les unites valeur de Y

//Afficher Z
lcd_send_cmd (0xc0);
lcd_send_string (" z=");
lcd_send_data((value[2]/1000)+48); // afficher les milliers de Z
lcd_send_data(((value[2]%1000)/100)+48); //afficher les centaines de Z
lcd_send_data(((value[2]%100)/10)+48); //afficher les Dizaines de Z
lcd_send_data(((value[2]%10))+48); // Afficher les unites valeur de Z
HAL_Delay (200); // 200ms delay
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
Résultat et conclusion
DISCUSSION DES RÉSULTATS

Les résultats obtenus sont plus que satisfaisants. on peut voir les valeurs
mesurées par l'accéléromètre affichées dans l'écran lcd.
Conclusion
Dans ce projet nous nous adaptons à l'environnement stm32. Nous apprenons à
lire plusieurs canaux dans ADC dans STM32 et à afficher les valeurs sur lcd. Nous
avons appris à communiquer avec le protocole i2c.

Vous aimerez peut-être aussi