SE3Groupe2025-15

De projets-se.plil.fr
Aller à la navigation Aller à la recherche

Fichier:2025-pse-b15-prog.zip

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 :

Mon schéma électronique

Résultat du routage :

Mon routage

Vue 3D de la carte :

Vue 3D

Photo de la carte soudée :

Ma carte

Vidéo très courte et en basse résolution de la carte en fonctionnement :

Media:2025-PSE-BB-PROG-video.mp4

Programmation

Fichier:Programe.zip

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 :

Fichier:2025 PSE-BB-systeme-schema.pdf
Mon schéma électronique

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.