SE3Groupe2025-15
Programmation des systèmes embarqués
Cette page est un exemple. N'oubliez pas de remplacer BB par votre numéro de binôme dans tous les noms de documents. Cliquez simplement sur le lien rouge pour téléverser un document.
Carte électronique
Carte réalisée en utilisant le logiciel KiCAD : Fichier:2025-pse-b15-prog.zip.
Schéma électronique de la carte :
Résultat du routage :
Vue 3D de la carte :
Photo de la carte soudée :
Vidéo très courte et en basse résolution de la carte en fonctionnement :
Media:2025-PSE-BB-PROG-video.mp4
Programmation
1. led.c
Programme de test des LED. Les broches PC5 et PC6 sont configurées en sortie et les LED clignotent afin de vérifier le bon fonctionnement de la carte.
Compilation :
avr-gcc -mmcu=atmega16u2 -DF_CPU=16000000UL -Os led.c -o led.elf avr-objcopy -O ihex led.elf led.hex
2. bouton_led.c
Programme de test des boutons et des LED.
PD1 → bouton B1 → LED1 (PC5)
PD0 → bouton B2 → LED2 (PC6)
Compilation :
avr-gcc -mmcu=atmega16u2 -DF_CPU=16000000UL -Os bouton_led.c -o bouton_led.elf avr-objcopy -O ihex bouton_led.elf bouton_led.hex
3. pc_libusb.c
Programme exécuté sur le PC utilisant libusb pour communiquer avec le périphérique USB. 4-usb_programmer :
usb_programmer/
│
├── GenericHID.c
├── GenericHID.h
├── Descriptors.c
├── Descriptors.h
├── makefile
│
├── Config/
│ └── AppConfig.h
│
├── LUFA/
│
├── pc_libusb.c
├── led/
│ └── led.c
│ └── bouton_led.c
│ └── pc_libusb.c
Partie microcontrôleur (ATmega16u2)
fichiers utilisés GenericHID.c GenericHID.h Descriptors.c Descriptors.h makefile
Ces fichiers servent à créer :
le périphérique USB du programmeur
ce que fait le firmware
firmware :
- initialise
USB
SPI (ISP)
RESET cible
LEDs
- crée un périphérique USB
avec :
endpoint OUT endpoint IN
- reçoit commandes du PC
via endpoint OUT.
--exécute commandes ISP
exemples :
commande fonction LED test LED 0x10 lire signature AVR 0x20 lire flash 0x30 charger page flash 0x31 écrire page flash
-- renvoie réponse
via endpoint IN.
-- partie PC
fichier :
pc_libusb.c
compile avec :
gcc pc_libusb.c -o pc_libusb -lusb-1.0 rôle
programme PC qui :
-- ouvre le périphérique USB
VID 0x03EB PID 0x204F
-- envoie commandes
libusb_interrupt_transfer
-- reçoit réponse
endpoint IN
-- fonctionnement global
architecture finale :
PC │ │ libusb │ ▼ USB │ ▼ ATmega16u2 │ │ SPI │ ▼ AVR cible
connecteur ISP
✔ test LED avec firmware simple.
✔ passage en DFU lsusb
→ DFU bootloader détecté.
✔ firmware LUFA création périphérique USB.
✔ endpoint IN / OUT via LUFA.
✔ programme PC avec libusb.
✔ lecture signature AVR
via SPI ISP.
✔ lecture flash cible commande ISP.
✔ écriture flash cible commande ISP.
compilation
make produit :
GenericHID.hex
flash avec :
dfu-programmer atmega16u2 erase dfu-programmer atmega16u2 flash GenericHID.hex dfu-programmer atmega16u2 reset
Bilan
Le projet a été réalisé sur 5 séances.
Séance 1 :
Conception du schéma électronique et routage de la carte PCB sous KiCad.
Séance 2 :
Développement du programme pc_libusb.c permettant la communication USB entre le PC et le périphérique.
Séance 3 :
Soudage des composants sur la carte (microcontrôleur, résistances, condensateurs, LED, connecteurs).
Séance 4 :
Vérification des soudures et préparation de la programmation du microcontrôleur.
Séance 5 :
Test de la carte. Ajout de deux programmes de test :
led.c : test du clignotement des LED
bouton_led.c : test des boutons et des LED
Cependant, les tests complets n'ont pas pu être réalisés car le câble adaptateur pour la programmation ne fonctionnait pas correctement.
Eventuellement la vidéo brève du fonctionnement complet du programmateur : Media:2025-PSE-BB-PROG-final.mp4.
Premier système embarqué
Archive GIT
Mon archive GIT pour le projet KiCAD et pour les programmes : <login1>/2025_PSE_15_eahmedya_sbaqoulo .
Archive privée. Binôme comme administrateur. Boé et Redon comme administrateur.
Ajouter un .gitignore pour KiCAD et langage C.
Structure avec matériel (y compris production - gerber, bill of materials) / logiciel / documentation (e.g. documentation technique).
Description du système embarqué
Ce projet consiste à concevoir et réaliser une carte électronique permettant la communication NFC (Near Field Communication) à l’aide du circuit PN532. Le système est piloté par un microcontrôleur ATmega8U2, qui gère la communication avec le PN532 et permet l’échange de données avec un ordinateur via USB.
Le PN532 est un contrôleur NFC capable de lire et d’écrire des cartes ou des tags compatibles (par exemple les cartes Mifare). Pour fonctionner correctement, il nécessite un circuit spécifique comprenant notamment une antenne NFC, un circuit de matching RF, un quartz, ainsi qu’une alimentation stable en 3.3V.
Dans notre projet, le PN532 est configuré en mode SPI, ce qui permet une communication rapide avec le microcontrôleur. Les signaux principaux utilisés sont MOSI, MISO, SCK, NSS et IRQ.
Carte électronique
Carte réalisée en utilisant le logiciel KiCAD : Fichier:2025-PSE-15-systeme.zip.
Schéma électronique de la carte :
Résultat du routage :
Photo de la carte soudée :
Vidéo très courte et en basse résolution de la carte en fonctionnement :
Media:2025-PSE-BB-systeme-video.mp4
Travail effectué
Séance 1 : Recherche et compréhension du projet
Pendant la première séance, nous avons commencé par comprendre le projet et analyser les composants principaux.
Nous avons :
étudié le fonctionnement général du projet ;
recherché la documentation du PN532 et de l’ATmega8U2 ;
analysé un schéma de référence existant afin de comprendre l’architecture générale de la carte.
Séance 2 : Intégration du PN532 dans notre carte
Pendant cette séance, nous avons travaillé sur l’intégration du PN532 dans notre schéma.
Nous avons :
étudié le schéma de référence du PN532 pour comprendre son fonctionnement ;
sélectionné les parties importantes à conserver (antenne, circuit de matching, quartz, alimentation) ;
supprimé les parties liées à Arduino qui ne sont pas nécessaires dans notre projet ;
ajouté un régulateur 3.3V pour alimenter le PN532 ;
configuré le bus de communication en mode SPI ;
relié les signaux SPI entre l’ATmega et le PN532 :
SCK
MOSI
MISO
NSS
IRQ
vérifié que les alimentations et les connexions sont cohérentes.
Séance 3 : Modifications après retour du professeur
Suite au retour du professeur sur notre schéma, nous avons apporté les modifications demandées.
Nous avons :
corrigé certaines connexions ;
ajusté l’organisation du schéma pour qu’il soit plus clair ;
vérifié les alimentations et les signaux SPI.
séance 4 : nous avons corrigé les points demandés par le professeur.
Nous avons :
ajouté les résistances sur les lignes SPI,
intégré la partie batterie et le régulateur,
corrigé le montage du cristal,
simplifié les nomenclatures ambiguës des signaux.
séance 5 :
Nous avons mis à jour notre schéma électronique en suivant les conseils du professeur pour rendre la carte plus fiable. Nous avons
d'abord ajouté des résistances de protection sur les connexions SPI et USB, puis corrigé le montage du cristal pour stabiliser
l'horloge. Pour l'alimentation, nous avons intégré un régulateur qui transforme le 5V en 3.3V avec des condensateurs pour éviter les
parasites, tout en ajoutant un circuit de charge de batterie (MAX1811) relié à l'USB. Enfin, nous avons bien séparé les branchements
de l'antenne NFC (ANT1/ANT2) pour assurer une bonne communication sans fil
séance 6 :
L’objectif de cette séance était de rendre le schéma électronique plus cohérent et fonctionnel pour le projet de scanner de badges NFC basé sur le PN532, tout en corrigeant les incohérences de composants et d’alimentation.
1) Remplacement du microcontrôleur
Suite à la remarque de l’enseignant, le microcontrôleur a été remplacé :
ancien composant : ATmega8U2 nouveau composant : ATmega32U4
Ce changement permet une meilleure intégration de la communication USB et offre plus de flexibilité pour le projet.
2) Reconfiguration du bloc horloge
Le circuit d’horloge externe a été revu :
ajout / vérification du quartz Y3 connexion aux broches : XTAL1 XTAL2 ajout des deux condensateurs : C6 = 22 pF C7 = 22 pF connexion du boîtier du quartz à la masse (GND)
Cette partie a été vérifiée pour assurer un fonctionnement stable du microcontrôleur.
3) Bloc reset et boot
Le circuit de reset a été corrigé :
ligne RESET résistance de pull-up : R5 = 10 kΩ bouton poussoir de reset ligne nHWB avec résistance de tirage
Cela permet la reprogrammation et le démarrage correct du microcontrôleur.
4) Alimentation
Le bloc d’alimentation a été clarifié :
utilisation du régulateur AMS1117-3.3 conversion : 5 V USB → 3.3 V ajout / vérification des condensateurs de découplage : C29 = 100 nF C30 = 100 nF
L’objectif est d’alimenter correctement :
le PN532 le ATmega32U4
en 3.3 V
5) Communication USB
Le connecteur USB a été revu :
lignes : D+ D− VBUS résistances série : R10 = 22 Ω R11 = 22 Ω
Le signal VBUS a été conservé pour l’alimentation et la détection USB.
6) Interface NFC / PN532
Le câblage SPI entre le microcontrôleur et le PN532 a été préparé :
SCK MOSI MISO NSS RSTPD_N
Les noms des labels ont été harmonisés pour garder un schéma cohérent.
7) Partie batterie
Le bloc charge batterie a été corrigé autour du MAX1811 :
entrée alimentation USB sortie VBAT connexion vers le connecteur batterie condensateur de stabilisation LED de charge
Les broches de sélection SELI / SELV ont été revues.
Bilan
J'indique où j'en suis arrivé à la fin des séances.
Eventuellement la vidéo brève du fonctionnement complet du programmateur : Media:2025-PSE-BB-systeme-final.mp4.