SE3Groupe2024-1

De projets-se.plil.fr
Révision datée du 16 juin 2025 à 07:04 par Bcheklat (discussion | contributions) (→‎Programmation carte récepteur :)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

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:
    1. 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
    2. ATmega328p(émétteur):
      • Placé sur le clavier sans fil
      • Gère les boutons programmables et les potentiomètres
  • Batterie 300mAh
  • LEDs, boutons et potentiomètres

Carte électronique

Schématique & PCB

  • Schéma Carte Récepteur :
Schéma carte récepteur
  • Schéma Carte émetteur :
Schéma carte émetteur page 1
Schéma carte émetteur page 2


Routage

Carte Récepteur :

Routage Récepteur
  • Carte émetteur :
    Routage émetteur

Réalisation

Carte récepteur USB
Carte émetteur Clavier


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 :

  1. 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)
  2. 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
  3. 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

La compilation se fait avec :

make

Le fichier .hex généré peut ensuite être flashé dans la carte émetteur avec :

sudo avrdude -c arduino -p m328p -P /dev/ttyACM0 -U flash:w:emetteur.hex:i -F

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 :

  1. Initialiser le module NRF24L01 en réception
  2. Écouter en boucle les messages transmis par l’émetteur
  3. À 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

SE3 2024 G1 prog schema.pdf
SE3 2024 G1 prog PCB.png

Projet KiCAd programmateur AVR : Fichier:2024-PSE-Prog-G1.zip

ReX : bien vu pour le connecteur 2x3 femelle.