« SE3Groupe2024-1 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
 
(10 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 17 : Ligne 17 :


* Microcontrôleurs:
* Microcontrôleurs:
*# ATmega16u4:
*# ATmega16u4(récepteur):
*#* Assure la gestion de la communication USB avec le PC
*#*Assure la gestion de la communication USB (HID via LUFA) avec le PC
*#* Reçoit les commandes envoyées sans fil depuis le clavier
*#*Reçoit les commandes envoyées depuis le clavier
*# ATmega328p:
*#ATmega328p(émétteur):
*#* Placé sur le clavier sans fil
*#*Placé sur le clavier sans fil
*#* Gère les boutons programmables et les potentiomètres
*#*Gère les boutons programmables et les potentiomètres
* Batterie 300mAh
*Batterie 300mAh
* LEDs, boutons et potentiomètres
*LEDs, boutons et potentiomètres


== Carte électronique ==
==Carte électronique==


=== Schématique ===
===Schématique & PCB===


=== Routage ===
* Schéma Carte Récepteur :


=== Réalisation ===
[[Fichier:Schéma carte récepteur.png|vignette|Schéma carte récepteur|centré]]


== Programmation ==
* Schéma Carte émetteur :


== Tests ==
[[Fichier:Schéma carte émetteur 1.png|centré|vignette|Schéma carte émetteur page 1]]
[[Fichier:Schéma carte émetteur 2.png|centré|vignette|Schéma carte émetteur page 2]]


== Rendus ==


=== Archive GIT ===
===Routage===
Carte Récepteur :
[[Fichier:PCB Récepteur.png|centré|vignette|Routage Récepteur]]


=== Autres rendus ===
* Carte émetteur : [[Fichier:PCB émetteur.png|centré|vignette|Routage émetteur]]
 
===Réalisation===
[[Fichier:Carte Récepteur.jpg|centré|vignette|400x400px|Carte récepteur USB]]
[[Fichier:Carte émetteur.jpg|centré|vignette|500x500px|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 :
 
# 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
La compilation se fait avec :<syntaxhighlight lang="bash">
make
</syntaxhighlight>Le fichier <code>.hex</code> généré peut ensuite être flashé dans la carte émetteur avec :<syntaxhighlight lang="bash">
sudo avrdude -c arduino -p m328p -P /dev/ttyACM0 -U flash:w:emetteur.hex:i -F
</syntaxhighlight>
 
==== 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 :<syntaxhighlight lang="bash">
make
</syntaxhighlight>Puis, le firmware peut être flashé sur l’ATmega16U2 via <code>dfu-programmer</code> :<syntaxhighlight lang="bash">
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash Clavier.hex
dfu-programmer atmega16u2 reset
 
</syntaxhighlight>
 
==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===


[[Fichier:SE3_2024_G1_prog_schema.pdf|thumb|left]]
[[Fichier:SE3_2024_G1_prog_schema.pdf|thumb|left]]
Ligne 49 : Ligne 136 :
Projet KiCAd programmateur AVR : [[File:2024-PSE-Prog-G1.zip]]
Projet KiCAd programmateur AVR : [[File:2024-PSE-Prog-G1.zip]]


ReX : bien vu pour le connecteur 2x3 femelle mais il devra être soudé sur la face inférieure.
ReX : bien vu pour le connecteur 2x3 femelle.

Version actuelle datée du 16 juin 2025 à 07:04

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.