0% ont trouvé ce document utile (0 vote)
100 vues25 pages

Tp1: Keypad Avec Stm32 en Utilisant Stm32Cubeide: Elect 2 GR 3

Ce document présente un TP sur l'interfaçage d'un clavier 4x3 avec un microcontrôleur STM32F401RE en utilisant STM32CubeIDE et les bibliothèques HAL. Les étudiants apprennent à gérer les entrées du clavier, contrôler des LED et mettre en place un code de verrouillage. Le projet met en avant la programmation embarquée et l'utilisation de périphériques courants dans les systèmes électroniques.

Transféré par

Nourane Bellazreg
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)
100 vues25 pages

Tp1: Keypad Avec Stm32 en Utilisant Stm32Cubeide: Elect 2 GR 3

Ce document présente un TP sur l'interfaçage d'un clavier 4x3 avec un microcontrôleur STM32F401RE en utilisant STM32CubeIDE et les bibliothèques HAL. Les étudiants apprennent à gérer les entrées du clavier, contrôler des LED et mettre en place un code de verrouillage. Le projet met en avant la programmation embarquée et l'utilisation de périphériques courants dans les systèmes électroniques.

Transféré par

Nourane Bellazreg
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

République Tunisienne

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique


Université de Monastir
École Nationale d’Ingénieurs de Monastir

TP1: Keypad avec STM32 en utilisant


STM32CubeIDE

ELECT 2 GR 3

Elaboré par :
ZAAG Jasser
MAHFOUDH Yosra

2022-2023
I. Introduction
Contexte et objectifs du TP
L'objectif général de ce TP est d'apprendre à interfaçer un clavier 4x3 avec un microcontrôleur
STM32 en utilisant les bibliothèques HAL. Les éléments clés du TP comprennent la lecture
des touches du clavier, le contrôle de quatre LED en fonction des touches appuyées, ainsi que
la mise en place d'un code de verrouillage.

Ce TP a pour objectif de permettre aux étudiants de développer leurs compétences en


programmation de microcontrôleurs STM32, en interfaçage de périphériques et en
manipulation des bibliothèques HAL.

L'interfaçage de claviers avec des microcontrôleurs est une tâche courante dans la conception
de systèmes embarqués. Les claviers sont souvent utilisés pour permettre à l'utilisateur
d'interagir avec le système, par exemple pour entrer des données ou pour contrôler l'affichage.
L'utilisation de bibliothèques HAL facilite grandement la mise en place de cette interface en
offrant des fonctions prêtes à l'emploi pour la gestion des entrées/sorties du microcontrôleur.

Présentation du microcontrôleur STM32F401RE


Le microcontrôleur STM32F401RE est un microcontrôleur 32 bits de la famille STM32. Il est
basé sur un processeur ARM Cortex-M4 cadencé à 84 MHz, dispose de 512 Ko de mémoire
Flash et de 96 Ko de RAM. Le microcontrôleur est doté de plusieurs périphériques tels que
des ports GPIO, des interfaces de communication série, des timers et des interruptions, ce qui
le rend particulièrement adapté à la mise en œuvre d'applications embarquées.

Caractéristique Valeur

Architecture ARM Cortex-M4

Fréquence d'horloge 84 MHz

Mémoire Flash 512 Ko

Mémoire RAM 96 Ko

Interfaces de communication I2C, SPI, USART, USB

Nombre de broches GPIO 51

2x 12-bit ADC, 1x 12-bit


Convertisseurs analogiques
DAC

Température de
-40°C à 85°C
fonctionnement

Alimentation 2,0 V à 3,6 V


Dans notre application, le microcontrôleur est utilisé pour interpréter les entrées du clavier,
gérer l'état de verrouillage de l'application, et contrôler l'allumage et l'extinction des LED en
fonction de l'état de l'application. La programmation du microcontrôleur est réalisée en
utilisant le logiciel de développement STM32CubeIDE et les bibliothèques HAL (Hardware
Abstraction Layer), qui facilitent le développement en fournissant une interface de
programmation uniforme pour les différents périphériques du microcontrôleur.

Figure 1: Microcontrôleur STM32F401RE

Présentation des outils utilisés (STM32CubeIDE, bibliothèques HAL)


Pour réaliser ce TP, nous avons utilisé l'environnement de développement intégré (IDE)
STM32CubeIDE, ainsi que la bibliothèque Hardware Abstraction Layer (HAL) fournie par
STMicroelectronics. STM32CubeIDE est un IDE open-source qui permet de développer des
applications pour les microcontrôleurs STM32. Il intègre des outils de développement tels que
l'éditeur de code, le débogueur, le compilateur et le linker. La bibliothèque HAL fournit une
interface de programmation standardisée pour l'accès aux périphériques du microcontrôleur,
permettant ainsi une abstraction matérielle et simplifiant le développement d'applications.

Figure 2: Interface utilisateur de STM32CubeIDE

STM32CubeIDE est basé sur Eclipse et fournit une interface utilisateur conviviale pour le
développement de projets STM32. Il comprend une large gamme de fonctionnalités telles que
la configuration de projets, la gestion de périphériques, la génération de code et la détection
d'erreurs de codage. En outre, il offre une intégration facile avec les outils tiers couramment
utilisés tels que les analyseurs logiques, les émulateurs, les oscilloscopes et les moniteurs de
performances.
Figure 3: Structure de la bibliothèque HAL
La bibliothèque HAL fournit une couche d'abstraction matérielle pour les microcontrôleurs
STM32. Elle est organisée en couches pour faciliter la compréhension et la manipulation des
fonctions. La couche inférieure comprend les registres des périphériques, tandis que la couche
supérieure fournit des fonctions standardisées pour accéder aux périphériques. La bibliothèque
HAL offre des fonctionnalités telles que la configuration des pins, la gestion des interruptions,
la communication série, la gestion de l'horloge, etc. La bibliothèque HAL est générée
automatiquement par STM32CubeIDE, en fonction de la configuration matérielle du
microcontrôleur.

Nous avons utilisé STM32CubeIDE pour configurer le projet, ainsi que pour programmer le
microcontrôleur et déboguer l'application. Nous avons également utilisé la bibliothèque HAL
pour interagir avec les périphériques du microcontrôleur, tels que le clavier et les LED.

Cette combinaison d'outils nous a permis de développer et de tester rapidement notre


application, en minimisant les erreurs de programmation et en maximisant la fiabilité de
l'application.

Présentation du clavier 4x3

Le clavier 4x3 est un périphérique d'entrée utilisé dans de nombreux projets électroniques. Il
est constitué de 12 boutons disposés en 4 lignes et 3 colonnes, d'où son nom. Le principe de
fonctionnement de ce type de clavier est basé sur la matrice de boutons, où chaque bouton est
associé à une position unique dans la matrice.

Lorsqu'un bouton est enfoncé, une connexion est établie entre la ligne et la colonne
correspondantes, créant ainsi un circuit fermé. Le microcontrôleur peut détecter quel bouton
est enfoncé en activant les lignes une par une, puis en lisant les colonnes pour voir quel circuit
est fermé. En utilisant cette technique, le microcontrôleur peut identifier le bouton enfoncé et
prendre une décision en conséquence.

Le clavier 4x3 est largement utilisé car il est simple à mettre en œuvre et ne nécessite pas
beaucoup de broches pour être contrôlé. Dans notre projet, le clavier est connecté au
microcontrôleur STM32F401RE en utilisant des broches GPIO, ce qui permet de détecter l'état
de chaque bouton.
Voici une illustration du clavier 4x3 avec les emplacements des boutons et leur position

Figure 4: Clavier 4x3

Présentation de l'afficheur LCD 16x4


L'afficheur LCD 16x4 est un écran à cristaux liquides qui permet d'afficher du texte et des
caractères. Il est composé de 16 colonnes et 4 lignes, ce qui permet d'afficher jusqu'à 64
caractères.

Figure 5: Afficheur LCD 16x4

L'afficheur est composé d'un écran LCD rétroéclairé et d'un contrôleur HD44780, qui gère
l'affichage des caractères et la communication avec le microcontrôleur. Le contrôleur utilise
une interface parallèle à 8 bits pour communiquer avec le microcontrôleur, ce qui signifie que
l'afficheur nécessite 8 broches pour la communication de données.

En plus des broches de données, l'afficheur LCD nécessite également trois broches de
commande : RS, E et RW. La broche RS (Register Select) est utilisée pour sélectionner le
registre dans lequel les données seront écrites, soit le registre de commande, soit le registre de
données. La broche E (Enable) est utilisée pour activer la lecture des données. La broche RW
(Read/Write) est utilisée pour sélectionner le mode d'écriture (écriture ou lecture).

Pour notre application, nous allons utiliser 4 broches de données pour communiquer avec
l'afficheur LCD. Nous allons également utiliser deux autres broches pour contrôler l'afficheur :
une pour le signal d'horloge (E) et une pour le signal de sélection de ligne (RS).
II. Implémentation
Ici, nous allons décrire les étapes pour configurer le microcontrôleur STM32F401RE à
l'aide de l'environnement de développement STM32CubeIDE et les bibliothèques
HAL.
Réalisation du montage

Figure 6: Schéma électronique sous ISIS

Configuration du projet dans STM32CubeIDE


La première étape consiste à créer un nouveau projet dans STM32CubeIDE. Pour
cela, nous allons dans le menu "File" et sélectionnons "New > STM32 Project".
Nous sélectionnons ensuite le microcontrôleur STM32F401RE dans la liste
déroulante, et nous choisissons un nom et un emplacement pour notre projet.
Configuration des broches GPIO des LED
Nous allons maintenant configurer les broches GPIO pour communiquer avec le clavier
et les LED. Dans STM32CubeIDE, nous pouvons utiliser l'outil "Pinout &
Configuration" pour sélectionner les broches et les configurer en mode entrée ou sortie.
Figure 7: Configuration des broches des Led sous STM32CubeIDE

Eclairage des Led pendant 200ms et garde de la LED 5 allumée

1. L'instruction:

Permet mettre la Led1 en 0 Led 1 allumée


2. On effectue cette opération pour le reste des Led jusqu'à la Led6 comme suit

3. Pour allumer les Led pendant 200ms on utilise l'instrction :


4. Pour garder la Led 5 allumée on l'affecte à 1 comme suit :

5. Après on garde la Led 5 seule allumée :


On affecte 1 pour la désectavation des Led1..6 sauf la Led 5 on l'affecte à 0 pour qu'elle
s'allume après le Delay par les instructions suivantes :
Simulation des résultats

Figure 8 : Led1..6 allumée

Figure 9 : Led5 reste allumée


Configuration de l'afficheur LCD

Figure 10 : Configuration graphique des broches de STM32 par STM32CubeIDE

Pour contrôler l'affichage sur l'écran LCD, nous utiliserons une bibliothèque logicielle telle que la
bibliothèque "lcd.h" . Cette bibliothèque facilite l'utilisation de l'écran LCD en encapsulant les
détails de la communication série avec le contrôleur LCD.

Pour utiliser la bibliothèque "lcd.h", nous devrons d'abord initialiser l'objet LiquidCrystal en
spécifiant les broches sur lesquelles l'écran LCD est connecté. Ensuite, nous pouvons appeler les
fonctions de la bibliothèque pour écrire du texte sur l'écran, déplacer le curseur à une position
spécifique, effacer l'écran, etc.
Configuration des broches du clavier(4*3) :
Row as interrptions

Columns as inputs
Figure 11 : Configuration graphique des broches du clavier par STM32CubeIDE

1. Configuration des Rows comme interruption et les Columns comme output dans System Core
2. Activer ensuite les interruptions et le Delay et choisir l'ordre prioritaire dans l'interruption
dans NVIC :

Pour Taper sur le clavier on suit les instructions suivantes :


Affecter tous les Columns à 1 afin de les activer. Pour ceci on utilise ce bloc
d'instruction situé entre /* USER CODE BEGIN 2 */ et /* USER CODE END 2 */ :

Fonction pour tapper sur le clavier :

Configuration des Rows comme des Inputs :

Activer Column 1 :
Taper toute la Comlumn 1 : les boutons "1", "4", "7" , "*" :
Afficher le caractère "1" & allumer la Led 1 :

Afficher le caractère "4" & éteindre la Led 2 :

Afficher le caractère "7" & allumer la Led 4 :

Afficher le caractère "*" & changer l'état des Led 1 et Led 2 :

Activer Column 2 :

Taper toute la Comlumn 2 : les boutons "2", "5", "8" , "0" :

Afficher le caractère "2" & éteindre la Led 1 :

Afficher le caractère "5" & allumer la Led 3 :

Afficher le caractère "8" & éteindre la Led 4 :

Afficher le caractère "0" & allumer l'état des Led 1, Led 2, Led 3, Led 4 :
Activer Column 3 :

Taper toute la Comlumn 3 : les boutons "3", "6", "9" , "#" :


Afficher le caractère "3" & allumer la Led 2 :

Afficher le caractère "6" & éteindre la Led 3 :

Afficher le caractère "9" & éteindre l'état des Led 1, Led 2, Led 3, Led 4 :

Afficher le caractère "#" & changer l'état des Led 3 et Led 4 :

Configuration des Columns :


Simulation :

Figure 12 : Exemple d'execution de bouton "1"

Figure 13 : Exemple d'execution de bouton "0"


Entrée d'un code "2023" et permission d'accés :
1. Introduire un code de 4 chiffres :
Définir une chaine de caractère de 4 chiffres "2023" :
Pour fixer le code à introduire à 4 chiffres et le stocker pour le comparer avec le
code d'accès il faut tout d'abord définir la chaine pour stocker le code et entier
comme compteur pour contrôler le nombre des caractères :

Afficher le code introduit (à inserer à la fin de la fonction HAL_GPIO_EXTI_Callback) :

2. Effacer le code après insertion par le bouton"*" :


Pour effacer le code introduit en cas de faute de saisie il faut modifier la partie du code dans
la fonction HAL_GPIO_EXTI_Callback responsable du bouton "*"
Puisque on ne peut pas introduire plus qu'une fois l'interaction avec l'afficheur LCD pendant
l'interruption , on est obligé d'utiliser un entier a :

Si "*" est appui donc a reçoit 1 ( c'est la modification a introduire dans l'interruption )

Pour effacer le code introduit on envoi a l'afficheur LCD un ligne contenant des
espaces (ce code doit être dans la boucle while(1) )

3. Vérification du code introduit :

Pour vérifier le code introduit il faut ajouté deux entiers code_correct et code_incorrect

On modifie le code responsable au bouton "#" pour lancer la vérification


Codes identiques : (accés accepté) :

Codes différents : (accés réfusé) :

Simulation :

Figure 14 : Insertion de code de 4 chiffres


Code supprimé

changement d'état de Led1


et Led 2

Figure 15 : Supression du code par le bouton "*"

Figure 16 : Vérification du code "1234" comparé par "2023" par le bouton "#"
Figure 17 : Vérification du code "2023" comparé par "2023" par le bouton "#"

IV. Conclusion :
En conclusion, ce projet a permis d'explorer la programmation embarquée sur une carte STM32
Nucleo-64 et d'apprendre à utiliser des périphériques couramment utilisés dans des applications
électroniques telles que des LED, un clavier matriciel et un écran LCD. Nous avons également vu
comment configurer les broches GPIO pour ces périphériques et comment utiliser les interruptions
pour détecter les entrées du clavier. Enfin, nous avons mis en œuvre un système de contrôle de
l'état des LED à partir de l'entrée du clavier et de la commande de l'utilisateur. Ce projet a fourni
une base solide pour la poursuite de l'apprentissage et de la compréhension des systèmes
embarqués.
ANNEX:

Vous aimerez peut-être aussi