SE3Groupe2024-1
Description
Objectif
Le projet consiste à créer un clavier sans fil capable d'envoyer des commandes programmables à un ordinateur. En plus des boutons classiques, il intègre des potentiomètres pour transmettre des signaux analogiques.
Cahier des charges
- Interface USB pour la partie enfichée sur le PC
- Communication radio entre les deux partie
- Gestion de batterie sur la partie distante
- Intégrer des potentiomètres pour transmettre des données analogiques
- LEDs utilisées pour indiquer l'état du clavier ou des commandes
- Boutons programmables pour exécuter des actions spécifiques sur le PC
Spécification techniques
- Communication sans fil via des modules NRF24L01
- Microcontrôleurs:
- ATmega16u4(récepteur):
- Assure la gestion de la communication USB (HID via LUFA) avec le PC
- Reçoit les commandes envoyées depuis le clavier
- ATmega328p(émétteur):
- Placé sur le clavier sans fil
- Gère les boutons programmables et les potentiomètres
- ATmega16u4(récepteur):
- Batterie 300mAh
- LEDs, boutons et potentiomètres
Carte électronique
Schématique & PCB
- Schéma Carte Récepteur :
- Schéma Carte émetteur :
Routage
Carte Récepteur :
- Carte émetteur :
Réalisation
Programmation
Programmation de la carte émetteur :
La carte émetteur repose sur un microcontrôleur ATmega328P et un module radio NRF24L01. Elle a été programmée en C à l’aide de AVR-GCC. Son rôle est de :
- Lire l’état de 9 boutons organisés en matrice 3x3.
- Lire la valeur d’un potentiomètre connecté à une entrée analogique.
- Transmettre ces informations sans fil via NRF24L01 au récepteur USB
Organisation Code :
- Initialisation des périphériques :
- SPI matériel (pour la communication avec le NRF24L01)
- ADC (pour la lecture du potentiomètre)
- GPIOs (pour la matrice de boutons)
- NRF24L01 (via SPI)
- Scan de la matrice de boutons :
- Les colonnes (PD0, PD1, PD2) sont configurées en entrées avec pull-up
- Les lignes (PD3, PD4, PD5) sont des sorties activées une à une à l’état bas
- Lorsqu’un bouton est appuyé, le microcontrôleur détecte un 0 sur une colonne active
- Lecture du potentiomètre et envoi :
- Si un bouton est détecté, la valeur du potentiomètre est lue via l’ADC
- Un paquet de 3 octets est envoyé :
- Octet 1 : numéro du bouton (1 à 9)
- Octet 2 : bits de poids fort (MSB) de la valeur ADC
- Octet 3 : bits de poids faible (LSB) de la valeur ADC
Code carte émetteur :
Programmation carte récepteur :
La carte réceptrice repose sur un ATmega16U2, utilisé à la fois pour :
- Réception des paquets radio via un NRF24L01 en SPI
- Émulation d’un périphérique USB HID (clavier) grâce à la bibliothèque LUFA
Le firmware du récepteur a pour but de :
- Initialiser le module NRF24L01 en réception
- Écouter en boucle les messages transmis par l’émetteur
- À chaque réception :
- Décoder le numéro du bouton et la valeur du potentiomètre
- Générer un rapport clavier USB via LUFA
- Envoyer ce rapport à l’ordinateur
Note : dans l’état actuel du développement, le programme suppose que le message reçu contient uniquement un seul octet correspondant au numéro du bouton pressé La lecture du potentiomètre n’est pas encore exploitée côté récepteur.
La compilation se fait avec :
make
Puis, le firmware peut être flashé sur l’ATmega16U2 via dfu-programmer
:
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash Clavier.hex
dfu-programmer atmega16u2 reset
Tests
Tests sur la carte récepteur (ATmega16U2):
- Les deux LEDs de la carte réceptrice (PD0 et PD1) ont été testées avec un code simple pour valider le bon fonctionnement de base du microcontrôleur.
- Le module NRF24L01 n’a pas été testé, car il n’a pas été soudé correctement : il a été posé avec du flux sans réelle brasure.
Tests sur la carte émetteur (ATmega328P)
- Le microcontrôleur a été programmé avec succès via un Arduino configuré en mode SPI (Arduino as ISP).
- Un programme de test a confirmé que la carte répond correctement aux flashs et peut exécuter un code BlinkLed.
- Le module NRF24L01 n’a pas été testé, car il n’a pas été soudé correctement : il a été posé avec du flux sans réelle brasure.
Rendus
Archive GIT
Lien gitea : https://gitea.plil.fr/mgourves/se3_2024_G1
Autres rendus
Projet KiCAd programmateur AVR : Fichier:2024-PSE-Prog-G1.zip
ReX : bien vu pour le connecteur 2x3 femelle.