« SE3Groupe2025-6 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 89 : Ligne 89 :
== PROGRAMMATION ==
== PROGRAMMATION ==


Pour réaliser la partie logicielle de la montre, nous avons développé le programme embarqué en C pour le microcontrôleur ATmega32U4. *[(Voir /Logiciel)](https://gitea.plil.fr/gsailly/2025_PSE_B6_gsailly_bjoumier/src/branch/main/Logiciel)*
Nous avons utilisé plusieurs bibliothèques afin de faciliter la gestion des différents périphériques :
- **U8G2** : gestion de l’écran OLED SSD1306
- **LUFA** : gestion de la communication USB
- pilotes personnalisés pour :
  - le Bluetooth HC-05
  - le capteur MAX30102
  - l’I2C
  - les timers
  - la gestion de l’heure
##### Structure du projet
```text
Logiciel/
├── montre_connectee/
│ ├── include/
│ │  └── LUFA/
│ ├── lib/
│ │  └── U8g2/
│ ├── src/
│ │  ├── main.c
│ │  ├── display.c
│ │  ├── display.h
│ │  ├── i2c.c
│ │  ├── i2c.h
│ │  ├── max30102.c
│ │  ├── max30102.h
│ │  ├── timekeeper.c
│ │  ├── timekeeper.h
│ │  ├── timer.c
│ │  ├── timer.h
│ │  ├── uart.c
│ │  ├── uart.h
│ │  ├── usb_comm.c
│ │  └── usb_comm.h
│ └── Makefile
```
##### Fonctionnement général
Le programme initialise :
- l’écran OLED,
- la communication Bluetooth UART,
- les timers,
- la gestion du temps,
- ainsi que le capteur cardiaque MAX30102.
L’heure peut être synchronisée via Bluetooth grâce à l’application **Serial Bluetooth Terminal** sur tablette ou smartphone.
Un message au format suivant est envoyé :
```text
T14:30:00
```
Le microcontrôleur lit ensuite cette trame et met à jour l’horloge affichée à l’écran.
##### Affichage
L’écran affiche :
- l’heure actuelle,
- le rythme cardiaque en BPM (le capteur étant grillé, nous avons chois d'afficher une valeur de 80 BPM fixe),
- ainsi qu’une interface graphique réalisée avec la bibliothèque U8G2.
##### Communication Bluetooth
Le module **HC-05** communique avec l’ATmega32U4 via l’UART à 9600 bauds.
La réception Bluetooth est gérée directement dans la boucle principale du programme.
##### Capteur cardiaque
Le capteur **MAX30102** communique via le protocole I2C.
Nous avons développé un pilote permettant :
- l’initialisation du capteur,
- la lecture des valeurs IR,
- ainsi que le calcul du rythme cardiaque.
##### Compilation
Le projet est compilé avec `avr-gcc` via un `Makefile`.
Effacer :
```bash
make clean
```
Compilation :
```bash
make all
```
Appuer sur les boutons NHWB (maintenir) et RESET (1 pression) puis relâcher NHWB pour pouvoir re-flasher la carte.
Téléversement :
```bash
make upload
```
Débrancher puis Rebrancher la carte.


== Travail effectué ==
== Travail effectué ==

Version du 26 mai 2026 à 13:33

Programmation des systèmes embarqués

Carte électronique

Carte réalisée en utilisant le logiciel KiCAD : Fichier:2025-PSE-6-Prog.zip.

Schéma électronique de la carte :

Schéma KiCad

Résultat du routage :

Capture écran du PCB KiCad

Vue 3D de la carte :

Vue 3D

Photo de la carte soudée :

Recto Carte
Verso Carte

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

Cliquer pour voir la vidéo Carte en fonctionnement

Programmation

Code pour faire clignoter les LEDs : Ok

clignote_led.c


Code pour allumer/éteindre les LEDs avec les boutons : OK

switch_led.c


Code pour allumer/éteindre les LEDs via le terminal (communication LUFA) : OK

led_control.c


Code pour communiquer avec l'AVR ISP (trouver la signature de l'Arduino UNO) : OK

read_signature.c

Archive des fichiers descripteurs, minimal et makefile pour LUFA : Fichier:2025-PSE-6 arch lufa.zip.

Bilan

Séance 1 : Schématique + routage (demande fabrication carte)

Séance 2 : Cours (1h) et Soudage des premiers composants (1h)

Séance 3 : Carte complètement soudée

Séance 4 : Programmation de la carte (clignote_led.cet switch_led.c) + changement d'une LED cramée lors de la soudure


Eventuellement la vidéo brève du fonctionnement complet du programmateur : Média:2025-PSE-B6-PROG-final.mp4.

Premier système embarqué

Archive GIT

Mon archive GIT pour le projet KiCAD et pour les programmes : [1].

Structure : Matériel (y compris production - gerber, bill of materials) / Logiciel / Documentation (e.g. documentation technique).

Description du système embarqué

Objectif : Réaliser une montre connectée qui affiche l'heure et capture les BPM de l'utilisateur + autres fonctions si réalisables (podomètre, alerte téléphone si BPM anormal)

Carte électronique

Carte réalisée en utilisant le logiciel KiCAD :

Schéma électronique de la carte :

Schéma KiCad
Schéma KiCad


Résultat du routage :

Schéma KiCad
PCB KiCad
Schéma KiCad
Vue 3D KiCad

Photo de la carte soudée :

PROGRAMMATION

Pour réaliser la partie logicielle de la montre, nous avons développé le programme embarqué en C pour le microcontrôleur ATmega32U4. *[(Voir /Logiciel)](https://gitea.plil.fr/gsailly/2025_PSE_B6_gsailly_bjoumier/src/branch/main/Logiciel)*

Nous avons utilisé plusieurs bibliothèques afin de faciliter la gestion des différents périphériques :

- **U8G2** : gestion de l’écran OLED SSD1306 - **LUFA** : gestion de la communication USB - pilotes personnalisés pour :

 - le Bluetooth HC-05
 - le capteur MAX30102
 - l’I2C
 - les timers
 - la gestion de l’heure
          1. Structure du projet

```text Logiciel/ ├── montre_connectee/ │ ├── include/ │ │ └── LUFA/ │ ├── lib/ │ │ └── U8g2/ │ ├── src/ │ │ ├── main.c │ │ ├── display.c │ │ ├── display.h │ │ ├── i2c.c │ │ ├── i2c.h │ │ ├── max30102.c │ │ ├── max30102.h │ │ ├── timekeeper.c │ │ ├── timekeeper.h │ │ ├── timer.c │ │ ├── timer.h │ │ ├── uart.c │ │ ├── uart.h │ │ ├── usb_comm.c │ │ └── usb_comm.h │ └── Makefile ```

          1. Fonctionnement général

Le programme initialise : - l’écran OLED, - la communication Bluetooth UART, - les timers, - la gestion du temps, - ainsi que le capteur cardiaque MAX30102.

L’heure peut être synchronisée via Bluetooth grâce à l’application **Serial Bluetooth Terminal** sur tablette ou smartphone.

Un message au format suivant est envoyé : ```text T14:30:00 ```

Le microcontrôleur lit ensuite cette trame et met à jour l’horloge affichée à l’écran.

          1. Affichage

L’écran affiche : - l’heure actuelle, - le rythme cardiaque en BPM (le capteur étant grillé, nous avons chois d'afficher une valeur de 80 BPM fixe), - ainsi qu’une interface graphique réalisée avec la bibliothèque U8G2.

          1. Communication Bluetooth

Le module **HC-05** communique avec l’ATmega32U4 via l’UART à 9600 bauds.

La réception Bluetooth est gérée directement dans la boucle principale du programme.

          1. Capteur cardiaque

Le capteur **MAX30102** communique via le protocole I2C.

Nous avons développé un pilote permettant : - l’initialisation du capteur, - la lecture des valeurs IR, - ainsi que le calcul du rythme cardiaque.

          1. Compilation

Le projet est compilé avec `avr-gcc` via un `Makefile`.

Effacer : ```bash make clean ```

Compilation : ```bash make all ```

Appuer sur les boutons NHWB (maintenir) et RESET (1 pression) puis relâcher NHWB pour pouvoir re-flasher la carte.

Téléversement : ```bash make upload ```

Débrancher puis Rebrancher la carte.

Travail effectué

Séance 1 : Découverte projet + Création GIT et WIKI + Choix projet réalisé.

Séance 2 : Schématique OK (Mr Boé) | Empreintes OK -> placement des composants (à faire).

Séance 3 à 5 : Ajustements du schéma, modifications de composants (module de batterie, charge, régulateur de tension) et Routage de la carte.

Séance 6 : Corrections finales PCB (si validé par Mr Boe) et Refonte graphique du Wiki et du Git (notamment "infos_globales_proj.md").

Bilan

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