{"id":1673,"date":"2025-05-29T16:05:41","date_gmt":"2025-05-29T20:05:41","guid":{"rendered":"https:\/\/tgemaisonneuve.com\/?p=1673"},"modified":"2025-05-29T16:07:44","modified_gmt":"2025-05-29T20:07:44","slug":"compteur-de-pompes","status":"publish","type":"post","link":"https:\/\/tgemaisonneuve.com\/index.php\/2025\/05\/29\/compteur-de-pompes\/","title":{"rendered":"Compteur de Pompes"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"502\" src=\"https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/IMG_1692-1024x502.jpeg\" alt=\"\" class=\"wp-image-1905\" srcset=\"https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/IMG_1692-1024x502.jpeg 1024w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/IMG_1692-300x147.jpeg 300w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/IMG_1692-768x377.jpeg 768w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/IMG_1692-1536x753.jpeg 1536w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/IMG_1692-2048x1004.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p style=\"border-radius:0px\">Ce projet est pour cr\u00e9er un compteur de pompes intelligent \u00e0 l\u2019aide d\u2019un microcontr\u00f4leur ESP32. Il permet d&rsquo;automatiser le comptage des r\u00e9p\u00e9titions pendant les entra\u00eenements et il permet \u00e0 l&rsquo;utilisateur un retour en temps r\u00e9el, visuel, sonore et num\u00e9rique.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pr\u00e9sentation g\u00e9n\u00e9rale et contexte<\/strong><\/h2>\n\n\n\n<p>L\u2019id\u00e9e de d\u00e9part vient de rendre le comptage des \u00ab\u00a0pushups\u00a0\u00bb plus simple en utilisant un capteur de distance ultrasonique qui peut d\u00e9tecter les mouvements du corps pendant les pompes. Il contient un \u00e9cran LCD qui affiche les informations en temps r\u00e9el et un petit module audio (DFPlayerMini) qui joue des sons pour motiver l\u2019utilisateur ou indiquer la fin d\u2019un exercice. De plus, il est possible de voir la progression sur un site web local qui affiche le nombre de pompes effectu\u00e9es dans la journ\u00e9e et un graphique qui repr\u00e9sente la progression.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Photos PCB<\/h2>\n\n\n\n<p>Voici le PCB qui est dans le projet :<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"846\" data-id=\"1904\" src=\"https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/PCB-1.png\" alt=\"\" class=\"wp-image-1904\" srcset=\"https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/PCB-1.png 747w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/PCB-1-265x300.png 265w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Sch\u00e9ma Bloc<\/h2>\n\n\n\n<p>Voici le sch\u00e9ma bloc du projet :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"562\" src=\"https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/Screenshot-2025-05-12-171347-1-1024x562.png\" alt=\"\" class=\"wp-image-1907\" srcset=\"https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/Screenshot-2025-05-12-171347-1-1024x562.png 1024w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/Screenshot-2025-05-12-171347-1-300x165.png 300w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/Screenshot-2025-05-12-171347-1-768x421.png 768w, https:\/\/tgemaisonneuve.com\/wp-content\/uploads\/2025\/05\/Screenshot-2025-05-12-171347-1.png 1252w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Description des principes utilis\u00e9s<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Principe #1 : Communication UART avec l&rsquo;\u00e9cran LCD et le DFPlayerMini<\/h4>\n\n\n\n<p>L&rsquo;\u00e9cran LCD et le DFPlayerMini sont connect\u00e9s \u00e0 l&rsquo;ESP32 avec une interface UART. Cette liaison s\u00e9rie permet \u00e0 l&rsquo;ESP32 d&rsquo;envoyer des donn\u00e9es et recevoir les donn\u00e9es. La communication UART fonctionne en utilisant deux broches:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TX (Transmission)<\/strong> : broche par laquelle l&rsquo;ESP32 envoie des donn\u00e9es vers l&rsquo;\u00e9cran.<\/li>\n\n\n\n<li><strong>RX (R\u00e9ception)<\/strong> : broche par laquelle l&rsquo;ESP32 re\u00e7oit des donn\u00e9es de l&rsquo;\u00e9cran, si n\u00e9cessaire.<\/li>\n<\/ul>\n\n\n\n<p>Cette communication est asynchrone, ce qui signifie qu&rsquo;il n&rsquo;y a pas de signal d&rsquo;horloge. Les deux pi\u00e8ces doivent avoir le m\u00eame d\u00e9bit en bauds (baud rate).<\/p>\n\n\n\n<p>Pour le projet:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u00c9cran LCD<\/strong> : la broche TX de l&rsquo;ESP32 est utilis\u00e9e seulement pour envoyer des donn\u00e9es \u00e0 l&rsquo;\u00e9cran.<\/li>\n\n\n\n<li><strong>DFPlayer Mini<\/strong> : les broches TX et RX de l&rsquo;ESP32 sont utilis\u00e9s pour permettre une communication bidirectionnelle entre l&rsquo;ESP32 et le module audio.<\/li>\n<\/ul>\n\n\n\n<p>Le d\u00e9bit en bauds configur\u00e9 pour l&rsquo;\u00e9cran LCD et le DFPlayer Mini est de 9600 bauds, ce qui est le standard.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Principe #2 : D\u00e9tection de mouvement avec capteur ultrasonique HC-SR04<\/h4>\n\n\n\n<p>Le compteur de pompes utilise un capteur de distance <strong>HC-SR04<\/strong>, qui fonctionne par ultrasons. Ce capteur permet de mesurer la distance entre le haut du corps de l\u2019utilisateur et la planche pendant l\u2019exercice. Il \u00e9met une petite impulsion sonore qui est inaudible \u00e0 l\u2019aide de son \u00e9metteur (TRIG), qui se propage dans l\u2019air. Lorsque cette impulsion rencontre un obstacle (le corps de l\u2019utilisateur), elle est r\u00e9fl\u00e9chie et capt\u00e9e par le r\u00e9cepteur (ECHO). Le temps \u00e9coul\u00e9 entre l\u2019\u00e9mission et la r\u00e9ception est mesur\u00e9 par l\u2019ESP32. Avec le temps \u00e9coul\u00e9, on peut utiliser cette formule : distance (cm) = (temps \u00e9coul\u00e9 x vitesse de son)\/2. Pour le projet, une descente est d\u00e9tect\u00e9e lorsque l\u2019utilisateur se rapproche \u00e0 moins de 7 cm, et une mont\u00e9e est d\u00e9tect\u00e9e lorsqu\u2019il remonte \u00e0 plus de 21 cm. Une pompe compl\u00e8te est donc compt\u00e9e seulement si ces deux conditions sont vraies dans le bon ordre.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Principe #3 : Sauvegarde des donn\u00e9es avec la m\u00e9moire non volatile (NVS)<\/h4>\n\n\n\n<p>Pour conserver les r\u00e9sultats apr\u00e8s un red\u00e9marrage, le projet utilise la m\u00e9moire non volatile NVS (Non-Volatile Storage) de l\u2019ESP32. Cette m\u00e9moire permet d&rsquo;enregistrer les donn\u00e9es sous forme de cl\u00e9 et valeur. Alors, pour le projet, j&rsquo;utilise la librairie \u00ab\u00a0Preferences\u00a0\u00bb pour enregistrer le nombre de pompes avec la date et l&rsquo;heure. Ces donn\u00e9es seront utilis\u00e9es comme journaux pour les deux modes. Quand l&rsquo;utilisateur va red\u00e9marrer le projet, les journaux seront gard\u00e9s en m\u00e9moire.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Principe #4: Site web local sur l\u2019ESP32<\/h4>\n\n\n\n<p>Avec le ESP32, je suis en mesure de me connecter \u00e0 l&rsquo;internet pour me cr\u00e9er un serveur local. Pour le projet, je l&rsquo;utilise pour afficher les journaux des exercices enregistr\u00e9s pour le mode entrainement et le record personnel. Avec l&rsquo;aide de la librairie <strong>Chart.js<\/strong>, je peux visualiser la progression des nombres de pompes avec un graphique. De plus, avec la librairie <strong>mDNS<\/strong>, il est possible de donner un nom personnalis\u00e9 au site web (par exemple : <strong><a class=\"\" href=\"http:\/\/pushup.local\">http:\/\/pushup.local<\/a><\/strong>) au lieu d\u2019entrer une adresse IP.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ce projet est pour cr\u00e9er un compteur de pompes intelligent \u00e0 l\u2019aide d\u2019un microcontr\u00f4leur ESP32. Il permet d&rsquo;automatiser le comptage des r\u00e9p\u00e9titions pendant les entra\u00eenements et il permet \u00e0 l&rsquo;utilisateur un retour en temps r\u00e9el, visuel, sonore et num\u00e9rique. Pr\u00e9sentation g\u00e9n\u00e9rale et contexte L\u2019id\u00e9e de d\u00e9part vient de rendre le comptage des \u00ab\u00a0pushups\u00a0\u00bb plus simple&#8230;<\/p>\n","protected":false},"author":5400,"featured_media":1905,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[64,6],"tags":[37,35,34,97],"ppma_author":[100],"class_list":["post-1673","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projet-etudiant","category-projets","tag-esp32","tag-impression-3d","tag-microcontrolleur","tag-push-up"],"authors":[{"term_id":100,"user_id":5400,"is_guest":0,"slug":"indirarikash-inthiranathan","display_name":"Indirarikash Inthiranathan","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3ce1307a39bb4a3a35a1102d6ffd4904a480ec3e2f3018de870ece6ecad92ece?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/posts\/1673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/users\/5400"}],"replies":[{"embeddable":true,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/comments?post=1673"}],"version-history":[{"count":10,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/posts\/1673\/revisions"}],"predecessor-version":[{"id":2397,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/posts\/1673\/revisions\/2397"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/media\/1905"}],"wp:attachment":[{"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/media?parent=1673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/categories?post=1673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/tags?post=1673"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/tgemaisonneuve.com\/index.php\/wp-json\/wp\/v2\/ppma_author?post=1673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}