« I2L 2024 Groupe7 » : différence entre les versions
(→Code) |
|||
Ligne 105 : | Ligne 105 : | ||
= Démonstrations = | = Démonstrations = | ||
'''Organisation du stockage(brut) sur la carte SD''' | |||
Notre système enregistre des relevés de température et d'humidité qu'elle logue dans un bloc de la carte SD de manière contiguë. Voici comment cela se traduit : | |||
* '''Taille d’un bloc SD''' : 512 octets | |||
* '''Structure d’une entrée de journal (<code>LogEntry</code>)''' : | |||
** <code>int32_t temperature</code> : 4 octets | |||
** <code>int32_t humidity</code> : 4 octets | |||
** Total par entrée : 8 octets | |||
* '''Nombre d’entrées par bloc''' : 8 octets par entrée, donc un paquet transmis de 64 octet fait 8 échantillon . 512 octets contient donc 64 échantillons au total pour le bloc utilisé. La taille maximale d’un paquet bulk sur nos endpoints étant de 64 octet. | |||
* '''Disposition en mémoire''' : | |||
** Chaque bloc contient un tableau de 64 echantillon <code>LogEntry</code> consécutifs. | |||
** Les données sont écrites en little-endian (LSB en premier) pour chaque <code>int32_t</code>. | |||
** Pour lire un bloc « brut », on fait un simple <code>readBlock(&sd, numBloc, buffer)</code> puis on interprète <code>buffer</code> comme un <code>LogEntry buffer[64]</code>. | |||
* '''Cycle d’écriture''' : | |||
*# On remplit un tableau local <code>LogEntry logBuffer[64]</code> avec 64 relevés successifs. | |||
*# On appelle <code>writeBlock(&sd, blockNum, (uint8_t*)logBuffer)</code> pour ecrire ces 512 octets sur la SD. | |||
= Rendus = | = Rendus = |
Version du 26 avril 2025 à 19:57
Proposition de système
Le système proposé repose sur un microcontrôleur (ATmega32U4) associé à un capteur de température pour mesurer et suivre la température en temps réel. Les relevés sont affichés sur un écran LCD et enregistrés pour une analyse statistique, tandis que la connectivité USB permet le transfert des données vers un PC et la configuration des seuils d’alerte.
Fonctions clés
- Mesure
- Relevé temps réel
- Précision ±0,5°C
- Fréquence de mesure configurable
- Visualisation
- Affichage température instantanée sur écran LCD
- Interface PC pour visualisation graphique
- Export historique des données
- Analyse
- Enregistrement des températures
- Calcul statistiques (moyenne, min, max)
- Détection variations température
- Alertes sur seuils personnalisables
- Communication
- Interface USB pour transfert/configuration
- Stocker données sur mémoire embarquée
Composants
- microcontrôleur
- carte SD
- batterie
- chargeur de batterie
- capteur de température (DHT11 ou DHT22)
- écran LCD
- LEDs
Nous avons beaucoup galéré avec la prise en main de kicad , nous ne sommes pas arrivés à bien concevoir le schéma , il manque les liaisons entre les composants et aussi on a pas pu rajouter le capteur sur le schéma.
Contre-proposition
OK pour le projet.
Pour la gestion de l'écran vous pouvez vous inspirer du code des groupes 3 et 4 I2L en 2023/2024.
Pour la gestion du capteur de température/humidité référez vous à [1].
Pour la gestion de la carte SD vous pouvez regarder le projet [2] ou le projet [3].
Pour la fonctionnalité USB vous utiliserez la classe USB "vendeur spécifique" avec des points d'accès propres à votre application. Plus exactement vous prévoirez un point d'accès entrant pour récupérer les données stockées sur votre système. La première donnée récupérée sera le nombre d'échantillons à lire. Vous implanterez aussi un point d'accès sortant pour demander l'effacement des données.
Pour l'application sur PC vous utiliserez la bibliothèque C libusb-1.0
.
Proposition définitive
Répartition du travail
Carte
Schéma initial
- schéma n°1 : Fichier:I2L-2024-Carte-G7a.zip
Carte routée
Composants
- ATmega32u4 : disponible
- quartz GND24 : disponible
- perle ferrite MH2029-300Y : commandée
- potentiomètre vertical : disponible
- connecteur femelle 16 contacts : commandé
- capteur DHT11/DHT22 : disponible
- régulateur 3,3V : disponible
- releveur de niveau : disponible
- connecteur carte micro-SD : disponible
Carte au 23/02/2025
Non encore réalisé :
- ajouter la perle de ferrite ;
- ajouter les connecteurs J5, J6, J7 et J9 pour la charge ;
- ajouter le condensateur de 2,2uF pour la charge ;
- ajouter R8 et le potentiomètre pour l'écran LCD ;
- ajouter le capteur de température.
Carte au 27/02/2025
Non encore réalisé :
- ajouter la perle de ferrite.
Carte au 07/03/2025
Montage
Code
Le programme de test attaché en bas de cette page Wiki, permet de montrer que l'écran LCD, le capteur de température et le lecteur de carte microSD fonctionnent.
Démonstrations
Organisation du stockage(brut) sur la carte SD Notre système enregistre des relevés de température et d'humidité qu'elle logue dans un bloc de la carte SD de manière contiguë. Voici comment cela se traduit :
- Taille d’un bloc SD : 512 octets
- Structure d’une entrée de journal (
LogEntry
) :int32_t temperature
: 4 octetsint32_t humidity
: 4 octets- Total par entrée : 8 octets
- Nombre d’entrées par bloc : 8 octets par entrée, donc un paquet transmis de 64 octet fait 8 échantillon . 512 octets contient donc 64 échantillons au total pour le bloc utilisé. La taille maximale d’un paquet bulk sur nos endpoints étant de 64 octet.
- Disposition en mémoire :
- Chaque bloc contient un tableau de 64 echantillon
LogEntry
consécutifs. - Les données sont écrites en little-endian (LSB en premier) pour chaque
int32_t
. - Pour lire un bloc « brut », on fait un simple
readBlock(&sd, numBloc, buffer)
puis on interprètebuffer
comme unLogEntry buffer[64]
.
- Chaque bloc contient un tableau de 64 echantillon
- Cycle d’écriture :
- On remplit un tableau local
LogEntry logBuffer[64]
avec 64 relevés successifs. - On appelle
writeBlock(&sd, blockNum, (uint8_t*)logBuffer)
pour ecrire ces 512 octets sur la SD.
- On remplit un tableau local
Rendus
Projet KiCAD : Fichier:I2L-2024-Carte-G7.zip
Programmes :
- démonstration : Fichier:I2L-2024-Programmes-G7-rex.zip
- enregistreur de température : Fichier:I2L-2024-Programmes-G7.zip