{"id":3031,"date":"2020-04-22T09:11:38","date_gmt":"2020-04-22T07:11:38","guid":{"rendered":"http:\/\/www.ardpylab.fr\/?page_id=3031"},"modified":"2020-05-11T20:08:17","modified_gmt":"2020-05-11T18:08:17","slug":"synthese","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=3031","title":{"rendered":"Synth\u00e8se communication"},"content":{"rendered":"\n<h2 style=\"text-align: center;\"><strong>ARDUINO \/ PYTHON<\/strong><\/h2>\n<p>&nbsp;<\/p>\n\n\n\n<h6><span style=\"color: #999999;\"><br>(<em>Cliquez pour afficher la version PDF)<\/em><\/span><\/h6>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/synthese.pdf\">Synth\u00e8se de la communication Arduino-Python<\/a><a href=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/synthese.pdf\" class=\"wp-block-file__button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p>&nbsp;<\/p>\n<p>Les m\u00e9thodes de communications entre un arduino et un programme Python sont r\u00e9sum\u00e9es \u00e0 l\u2019aide des sch\u00e9mas suivant&nbsp;:<br><br><\/p>\n<h4><strong><span style=\"color: #0000ff;\">&#8211; <u>Communication Arduino &#8211; Python via le port s\u00e9rie avec \u201dPyserial\u201d<\/u>&nbsp;:<\/span><br><br><\/strong><\/h4>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"1024\" class=\"wp-image-3032 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt1-890x1024.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt1-890x1024.png 890w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt1-261x300.png 261w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt1-768x883.png 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt1-1335x1536.png 1335w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt1.png 1598w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<ul>\n<li>L&rsquo;Arduino envoie des donn\u00e9es sur le port s\u00e9rie par la fonction <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/?page_id=2497\" data-wplink-url-error=\"true\">Serial.print()<\/a>\u201d<\/strong><\/li>\n<li>Le programme Python r\u00e9ceptionne les donn\u00e9es de la liaison s\u00e9rie, envoy\u00e9es par l&rsquo;Arduino, \u00e0 l&rsquo;aide de la fonction <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/?page_id=2674\" data-wplink-url-error=\"true\">readline()<\/a>\u201d<\/strong><\/li>\n<li>Le programme Python envoie des donn\u00e9es sur le port s\u00e9rie avec la fonction <strong>\u201d<\/strong><strong><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2678\" data-wplink-url-error=\"true\">write()<\/a>\u201d<\/strong>&nbsp;<\/li>\n<li>L&rsquo;arduino r\u00e9ceptionne les donn\u00e9es envoy\u00e9es par le programme Python sur la liaison s\u00e9rie gr\u00e2ce \u00e0 la fonction <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/?page_id=2522\" data-wplink-url-error=\"true\">Serial.read()<\/a>\u201d<\/strong>&nbsp;<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n\n\n\n<h4><span style=\"color: #0000ff;\"><strong>&#8211;<\/strong> <strong><u>Communication Arduino-Python via le protocole de communication \u201d<\/u><\/strong><strong><u>Firmata\u201d<\/u><\/strong><\/span><br><br><\/h4>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"763\" height=\"1024\" class=\"wp-image-3033 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt2-763x1024.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt2-763x1024.png 763w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt2-223x300.png 223w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt2-768x1031.png 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt2-1144x1536.png 1144w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt2-1526x2048.png 1526w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt2.png 1598w\" sizes=\"auto, (max-width: 763px) 100vw, 763px\" \/><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<p>Avec le protocole de communication <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/?page_id=2725\" data-wplink-url-error=\"true\">Firmata<\/a>\u201d<\/strong>, la lecture et l\u2019\u00e9criture sur les entr\u00e9es et sorties de l\u2019Arduino se font directement \u00e0 partir du programme en Python.<br><a id=\"anc1\"><\/a><\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2739\" data-wplink-url-error=\"true\"><span style=\"text-decoration: underline;\"><strong>Firmata standard<\/strong><\/span><\/a><\/li>\n<\/ul>\n<p>Pour contr\u00f4ler l\u2019Arduino via le protocole de communication \u201d<strong>Firmata standard\u201d<\/strong>, le programme Python utilise la biblioth\u00e8que <strong>\u201dPyFirmata\u201d <\/strong>(le sketch <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/FirmataStandard.zip\" data-wplink-url-error=\"true\">Firmata standard<\/a>\u201d <\/strong>doit \u00eatre t\u00e9l\u00e9vers\u00e9 dans la m\u00e9moire de l&rsquo;Arduino au pr\u00e9alable).<\/p>\n<p>Toutes les fonctions utiles \u00e0 l\u2019utilisation de&nbsp;<strong>\u201dPyFirmata\u201d&nbsp;<\/strong>(fonction de d\u00e9claration des entr\u00e9es et sorties, d\u2019it\u00e9rateur, d\u2019\u00e9critures\u2026) que nous avons d\u00e9finies jusqu\u2019\u00e0 pr\u00e9sent ont \u00e9t\u00e9 regroup\u00e9es dans un fichier Python, nomm\u00e9&nbsp;<strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/synthesefirmatastandard.zip\" data-wplink-url-error=\"true\">PyFirmataDef.Py<\/a>\u201d<\/strong>&nbsp;que l\u2019on peut importer dans tous les programmes, \u00e0 condition que le fichier des fonctions soit dans le m\u00eame dossier que le fichier du programme, avec l\u2019instruction&nbsp;:<\/p>\n<p style=\"padding-left: 40px;\"><strong>from PyFirmataDef import *<\/strong><\/p>\n<p>&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/Codes\/PyFirmataDef.py\" error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"808\" height=\"1024\" class=\"wp-image-3044 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt3-808x1024.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt3-808x1024.png 808w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt3-237x300.png 237w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt3-768x974.png 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt3.png 900w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" \/><\/a><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<p>Le programme (<strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/synthesefirmatastandard.zip\" data-wplink-url-error=\"true\">SyntheseFirmataStandard.py<\/a>\u201d<\/strong>) ci-dessous met en application toutes ces fonctions avec le circuit suivant :<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2788 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-firm5-1024x561.png\" alt=\"\" width=\"571\" height=\"316\"><\/figure>\n<\/div>\n<h6 style=\"padding-left: 40px;\">Ce circuit est compos\u00e9:<\/h6>\n<h6 style=\"padding-left: 80px;\">. d\u2019une DEL RVB dont les DELs rouge, verte et bleue sont respectivement connect\u00e9s aux sorties, 11, 9 et 10 de l\u2019Arduino,<\/h6>\n<h6 style=\"padding-left: 80px;\">. d\u2019un potentiom\u00e8tre, dont le \u00ab point milieu \u00bb est reli\u00e9 \u00e0 l\u2019entr\u00e9e analogique A0 du microcontr\u00f4leur,<\/h6>\n<h6 style=\"padding-left: 80px;\">. et d&rsquo;un bouton poussoir dont la sortie est reli\u00e9e \u00e0 la borne 12 de l\u2019Arduino.<\/h6>\n\n\n\n<p><br>Avec ce programme:<\/p>\n<p style=\"padding-left: 40px;\">. La DEL bleue est allum\u00e9e ou \u00e9teinte avec le bouton poussoir,<\/p>\n<p style=\"padding-left: 40px;\">. La luminosit\u00e9 de la DEL rouge est r\u00e9gl\u00e9e avec le potentiom\u00e8tre.<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/Codes\/SyntheseFirmataStandard.py\" error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"875\" height=\"1024\" class=\"wp-image-3055 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt4-875x1024.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt4-875x1024.png 875w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt4-256x300.png 256w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt4-768x899.png 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt4.png 898w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><\/a><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<ul>\n<li><strong><a id=\"anc1\"><\/a>Firmata Express<a id=\"anc2\"><\/a><\/strong><\/li>\n<\/ul>\n\n\n\n<p>Pour contr\u00f4ler l\u2019Arduino via le protocole de communication \u201d<strong>Firmata Express<\/strong>,\u201d le programme Python utilise la biblioth\u00e8que <strong>\u201d<\/strong><strong><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/PymataExpress.zip\" data-wplink-url-error=\"true\">pymata-express<\/a>\u201d<\/strong><strong>&nbsp;<\/strong>(le sketch <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/FirmataExpress.zip\" data-wplink-url-error=\"true\">Firmata Express<\/a>\u201d <\/strong>doit \u00eatre t\u00e9l\u00e9vers\u00e9 dans la m\u00e9moire de l&rsquo;Arduino au pr\u00e9alable).<\/p>\n\n\n\n<p>Toutes les fonctions utiles \u00e0 l\u2019utilisation de&nbsp;<strong>\u201dPymata<\/strong><strong>-express<\/strong><strong>\u201d<\/strong>&nbsp;(fonction de d\u00e9claration des entr\u00e9es et sorties, de lectures, d\u2019\u00e9critures\u2026) que nous avons d\u00e9finies jusqu\u2019\u00e0 pr\u00e9sent ont \u00e9t\u00e9 regroup\u00e9es dans un fichier Python, nomm\u00e9&nbsp;<strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/synthesefirmataexpress.zip\" data-wplink-url-error=\"true\">PymataExpressDef.Py<\/a>\u201d<\/strong>&nbsp;que l\u2019on peut importer dans tous les programmes, \u00e0 condition que le fichier des fonctions soit dans le m\u00eame dossier que le fichier du programme, avec l\u2019instruction&nbsp;:<\/p>\n\n\n\n<p style=\"padding-left: 40px;\"><strong>from PymataExpressDef import *<br><br><\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/Codes\/PymataExpressDef.py\" error=\"true\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3072\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt5-3-607x1024.png\" alt=\"\" width=\"800\" height=\"1350\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt5-3-607x1024.png 607w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt5-3-178x300.png 178w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt5-3-768x1296.png 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt5-3-910x1536.png 910w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt5-3.png 1034w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<p>Avec le m\u00eame circuit que celui du programme de synth\u00e8se du protocole <strong>\u201dFirmata Standard\u201d<\/strong>, auquel un buzzer a \u00e9t\u00e9 ajout\u00e9 sur la broche N\u00b03 de l\u2019Arduino, le programme, nomm\u00e9 <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/synthesefirmataexpress.zip\" data-wplink-url-error=\"true\">Synth\u00e8seFirmataExpress.py<\/a>\u201d<\/strong>, met en application toutes ces fonctions :<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3078 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt7.png\" alt=\"\" width=\"571\" height=\"317\"><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/Codes\/SyntheseFirmataExpress.py\" error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"832\" height=\"1024\" class=\"wp-image-3083 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt6-1-832x1024.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt6-1-832x1024.png 832w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt6-1-244x300.png 244w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt6-1-768x945.png 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt6-1.png 913w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<p><br>Avec ce programme:<\/p>\n<p style=\"padding-left: 40px;\">. La DEL rouge est allum\u00e9e ou \u00e9teinte avec le bouton poussoir,<br><span style=\"font-size: inherit;\">. La luminosit\u00e9 de la DEL bleue est r\u00e9gl\u00e9e avec le potentiom\u00e8tre,<br><\/span>. Un son est \u00e9mis en appuyant sur le bouton poussoir.<\/p>\n<p>&nbsp;<\/p>\n\n\n\n<p><strong><u>Remarque<\/u><\/strong><strong>&nbsp;:<\/strong><\/p>\n<p>Comme vous avez pu le constater, le fichier Python, nomm\u00e9&nbsp;<strong>\u201dPymataExpressDef.Py\u201d<\/strong>, regroupant les fonctions utiles \u00e0 l\u2019utilisation de <strong>\u201dPymata-express\u201d<\/strong>, ne contient pas les fonctions g\u00e9rant les capteurs ultrasoniques.<\/p>\n<p>En effet, ces fonctions font intervenir une fonction <strong>asyncio<\/strong> (\u201d<strong>Get_Distance<\/strong>\u201d) qui utilise une variable globale et qui doit donc se trouver dans le fichier du programme principal.<\/p>\n<p>&nbsp;<\/p>\n<p>Il est cependant possible d\u2019importer les autres fonctions du fichier <strong>\u201dPymataExpressDef.Py\u201d <\/strong>afin de pouvoir les utiliser conjointement avec les fonctions de gestion des capteurs ultrasoniques, comme dans l\u2019exemple ci-dessous (programme <strong>\u201d<a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/sonar2.zip\" data-wplink-url-error=\"true\">Sonar2.py<\/a>\u201d<\/strong>) avec ce circuit&nbsp;:<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-721 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/circuit-ondes-ultrasonores-1024x665.png\" alt=\"\" width=\"571\" height=\"373\"><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Le programme permet de mesurer la distance entre un capteur ultrasonique \u00e0 2 broches (comme le HC\u2010SR04) et un obstacle, et de l\u2019afficher dans la console Python, quand le bouton poussoir est appuy\u00e9&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.ardpylab.fr\/downloads\/firmata\/Codes\/Sonar2.py\" error=\"true\"><img loading=\"lazy\" decoding=\"async\" width=\"808\" height=\"1024\" class=\"wp-image-3106 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt8-808x1024.png\" alt=\"\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt8-808x1024.png 808w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt8-237x300.png 237w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt8-768x973.png 768w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt8.png 917w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" \/><\/a><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<h4><span style=\"color: #0000ff;\"><strong>&#8211; <u>Conclusion<\/u><\/strong>&nbsp;:<br><br><\/span><\/h4>\n<p>Le principal avantage de la m\u00e9thode de communication par protocole \u201d<strong>Firmata\u201d<\/strong> est que toute la gestion de l\u2019Arduino se fait au sein du programme en Python.<\/p>\n<p>En effet, une fois le programme \u201dpilote\u201d (<strong>Firmata standard<\/strong> ou <strong>Express<\/strong>) t\u00e9l\u00e9vers\u00e9 dans la m\u00e9moire de l\u2019Arduino, il n\u2019est plus n\u00e9cessaire de le changer, puisque c\u2019est le programme en Python qui sera modifi\u00e9 en fonction du mat\u00e9riel connect\u00e9 au microcontr\u00f4leur.<\/p>\n<p>Cependant, dans le cas d\u2019utilisation de certains capteurs (par exemple, le capteur de temp\u00e9rature et d\u2019humidit\u00e9 <strong>DHT 11<\/strong>), avec des biblioth\u00e8ques uniquement d\u00e9velopp\u00e9es pour le langage <strong>\u201dArduino IDE\u201d<\/strong>, il est plus simple d\u2019utiliser un programme sp\u00e9cifique t\u00e9l\u00e9vers\u00e9 dans la m\u00e9moire de l\u2019Arduino et de communiquer avec celui-ci \u00e0 l\u2019aide de \u201d<strong>pyserial\u201d<\/strong>.<\/p>\n<p>Et si l\u2019Arduino doit \u00eatre utilis\u00e9 de fa\u00e7on autonome (sans liaison s\u00e9rie avec un ordinateur), il est possible d\u2019utiliser un module (un shield) ajoutant une carte SD \u00e0 l\u2019Arduino sur laquelle des donn\u00e9es pourront \u00eatre enregistr\u00e9es et exploit\u00e9es ult\u00e9rieurement.<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"257\" height=\"204\" class=\"wp-image-3108 aligncenter\" style=\"border: 3px solid #eeeeee; padding: 3px; margin: 3px;\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/04\/com-ardpy-synt9.png\" alt=\"\"><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n\n\n\n<p>Finalement, quel que soit la m\u00e9thode de communication utilis\u00e9e, le programme en python d\u2019analyse et d\u2019exploitation des donn\u00e9es reste le m\u00eame.<\/p>\n<p>&nbsp;<\/p>\n\n\n\n<p>L&rsquo;essentiel concernant la communication entre un Arduino et un programme Python ayant \u00e9t\u00e9 vu, il est maintenant possible de d\u00e9velopper des projets regroupant quelques activit\u00e9s programm\u00e9es en Python pour les Arduino Uno.<\/p>\n<p>\u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-stretch\" style=\"--_gs-gap-desktop:0px 0px;--_gs-m-desktop:0 0 0 0;--_gs-p-desktop:0 0 0 0;--_gs-bg-desktop:transparent none;--_gs-bg-xp-desktop:0px;--_gs-zi-desktop:auto;--_gs-d-desktop:block;--_gs-mw-desktop:calc(100% - 0 - 0);--_gs-gap-tablet:0px 0px;--_gs-m-tablet:0 0 0 0;--_gs-p-tablet:0 0 0 0;--_gs-bg-tablet:transparent none;--_gs-bg-xp-tablet:0px;--_gs-zi-tablet:auto;--_gs-d-tablet:block;--_gs-mw-tablet:calc(100% - 0 - 0);--_gs-gap-mobile:0px 0px;--_gs-m-mobile:0 0 0 0;--_gs-p-mobile:0 0 0 0;--_gs-bg-mobile:transparent none;--_gs-bg-xp-mobile:0px;--_gs-zi-mobile:auto;--_gs-d-mobile:block;--_gs-mw-mobile:calc(100% - 0 - 0);--_gs-columns:2;--_gs-rows:1\"><div class=\"grids-s-w_i\">\n<div class=\"grids-area\" style=\"--_ga-column:1\/2;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=2987\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\"\/><\/a><\/figure><\/div>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:2\/3;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=3141\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/plus.jpg\" alt=\"\" class=\"wp-image-106\"\/><\/a><\/figure><\/div>\n\n<\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>ARDUINO \/ PYTHON &nbsp; (Cliquez pour afficher la version PDF) &nbsp; Les m\u00e9thodes de communications entre un arduino et un programme Python sont r\u00e9sum\u00e9es \u00e0 l\u2019aide des sch\u00e9mas suivant&nbsp;: &#8211; Communication Arduino &#8211; Python via le port s\u00e9rie avec \u201dPyserial\u201d&nbsp;: &nbsp; L&rsquo;Arduino envoie des donn\u00e9es sur le port s\u00e9rie par la fonction \u201dSerial.print()\u201d Le programme [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3031","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/3031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3031"}],"version-history":[{"count":1,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/3031\/revisions"}],"predecessor-version":[{"id":5074,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/3031\/revisions\/5074"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}