SE3Groupe2024-1

De projets-se.plil.fr
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

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

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 :

  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

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.