# Présentation des librairies utilisées

## **M5Unified**

La librairie **M5Unified** est le cœur du développement sur les appareils M5Stack. Elle offre une interface unifiée pour contrôler la majorité des composants matériels intégrés aux modules M5Stack, comme l’écran LCD, les boutons, le haut-parleur, le microphone, etc. Grâce à cette abstraction, le même code peut fonctionner sur différents modèles de M5Stack sans modification majeure. M5Unified est compatible avec les plateformes Arduino et ESP-IDF, ce qui facilite le développement et améliore la portabilité du code<span class="whitespace-nowrap">.</span>

## **Wire**

La librairie **Wire** permet la communication via le bus I2C, un protocole de communication série très utilisé pour connecter des capteurs et modules externes à une carte microcontrôleur. Elle sert notamment à dialoguer avec des périphériques comme le lecteur RFID ou d’autres capteurs branchés sur le port Grove du M5Stack<span class="whitespace-nowrap">.</span>

## **WiFi**

La librairie **WiFi** permet de connecter l’ESP32 (présent dans le M5Stack Basic) à un réseau sans fil. Elle offre des fonctions pour scanner les réseaux disponibles, se connecter à un point d’accès, gérer les événements Wi-Fi et obtenir une adresse IP. Elle est essentielle pour tout projet nécessitant une communication réseau, comme l’envoi ou la réception de données sur Internet<span class="whitespace-nowrap">.</span>

## **HTTPClient**

**HTTPClient** est une librairie qui facilite la réalisation de requêtes HTTP (GET, POST, etc.) depuis l’ESP32. Elle permet d’interagir facilement avec des serveurs web ou des API (comme ici celui de TimeTonic), d’envoyer des données ou de récupérer des informations à distance. Cette librairie est souvent utilisée en complément de WiFi pour des applications IoT connectées<span class="whitespace-nowrap">.</span>

## **MFRC522\_I2C**

La librairie **MFRC522\_I2C** permet de piloter un module lecteur RFID MFRC522 via le protocole I2C. Elle simplifie la lecture et l’écriture de badges RFID/Mifare en fournissant des fonctions haut niveau pour détecter, lire et écrire sur les cartes. Cette librairie est compatible avec Arduino et ESP32, et nécessite de spécifier l’adresse I2C du module et la broche de reset<span class="whitespace-nowrap">. Attention toutefois, un certain nombre de librairies porte ce nom et seule celle disponible sur le [GitHub de M5Stack](https://github.com/m5stack/M5StickC/tree/master/examples/Unit/RFID) fonctionne avec leur capteur RFID.</span>

## **ArduinoJson**

**ArduinoJson** est une librairie puissante et optimisée pour la manipulation de données JSON sur microcontrôleurs. Elle permet de sérialiser (convertir des objets en texte JSON) et de désérialiser (analyser du texte JSON pour en extraire des données) facilement, ce qui est très utile pour échanger des données structurées avec des serveurs web ou des API (cellui de TimeTonic utilise principalement des objets JSON pour recevoir/envoyer des données). Elle gère les objets, les tableaux, les filtres et l’optimisation mémoire, ce qui la rend idéale pour les projets embarqués<span class="whitespace-nowrap">.</span>

---

## Résumé des rôles

<div class="group relative" id="bkmrk-librairie-r%C3%B4le-princ"><div class="w-full overflow-x-auto md:max-w-[90vw] border-borderMain/50 ring-borderMain/50 divide-borderMain/50 dark:divide-borderMainDark/50 dark:ring-borderMainDark/50 dark:border-borderMainDark/50 bg-transparent"><table class="border-borderMain dark:border-borderMainDark my-[1em] w-full table-auto border"><thead class="bg-offset dark:bg-offsetDark"><tr><th class="border-borderMain px-sm py-sm dark:border-borderMainDark break-normal border text-left align-top">Librairie</th><th class="border-borderMain px-sm py-sm dark:border-borderMainDark break-normal border text-left align-top">Rôle principal</th></tr></thead><tbody><tr><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">M5Unified</td><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">Contrôle du matériel M5Stack (écran, boutons, haut-parleur, etc.)</td></tr><tr><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">Wire</td><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">Communication I2C avec les modules externes</td></tr><tr><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">WiFi</td><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">Connexion réseau sans fil et gestion des événements Wi-Fi</td></tr><tr><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">HTTPClient</td><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">Envoi et réception de requêtes HTTP vers/depuis des serveurs web</td></tr><tr><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">MFRC522\_I2C</td><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">Lecture/écriture de badges RFID via le module MFRC522 en I2C</td></tr><tr><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">ArduinoJson</td><td class="border-borderMain px-sm dark:border-borderMainDark min-w-[48px] break-normal border">Manipulation et traitement de données JSON (sérialisation/désérialisation)</td></tr></tbody></table>

</div><div class="px-two bg-background border-border shadow-subtle pointer-coarse:opacity-100 right-xs absolute bottom-0 flex gap-2 rounded-lg border py-px opacity-0 transition-opacity group-hover:opacity-100"><div><div class="flex items-center min-w-0 font-medium gap-1 justify-center"><div class="flex shrink-0 items-center justify-center size-3.5"><svg class="tabler-icon tabler-icon-download " fill="none" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7142857142857142" viewbox="0 0 24 24" width="14" xmlns="http://www.w3.org/2000/svg"></svg>  
</div></div></div></div></div>---

L’utilisation combinée de ces librairies permet de gérer efficacement le matériel, de communiquer avec des serveurs distants et de traiter des données structurées, couvrant ainsi l’ensemble des besoins fonctionnels du projet.