{"id":405,"date":"2021-11-26T22:05:46","date_gmt":"2021-11-26T21:05:46","guid":{"rendered":"https:\/\/rfhyper.wordpress.com\/?p=405"},"modified":"2021-11-26T22:05:46","modified_gmt":"2021-11-26T21:05:46","slug":"programmer-en-circuitpython-sur-une-carte-adafruit-feather-nrf52840","status":"publish","type":"post","link":"https:\/\/leblogrf.fr\/index.php\/2021\/11\/26\/programmer-en-circuitpython-sur-une-carte-adafruit-feather-nrf52840\/","title":{"rendered":"Programmer en CircuitPython sur une carte Adafruit Feather nRF52840"},"content":{"rendered":"\n<p>La carte Adafruit Feather nRF52840 est une carte de prototypage au format Feather qui g\u00e8re le protocole Bluetooth Low Energy grace au composant nRF52840. Il existe deux versions \u00ab&nbsp;express&nbsp;\u00bb et \u00ab&nbsp;sense&nbsp;\u00bb, c\u2019est presque les m\u00eames, la diff\u00e9rence est que la \u00ab&nbsp;sense&nbsp;\u00bb embarque plusieurs capteurs (Temp\u00e9rature, mouvement, etc\u2026)<br>On peut la programmer en Arduino ou en CircuitPython. Dans cet article nous allons montrer comment la programmer en CircuitPython.<br>Le langage CircuitPython est un d\u00e9riv\u00e9 du MicroPython qui est une version du Python pour microcontr\u00f4leur.<br>Le CircuitPython est id\u00e9al pour faire du prototypage. Il y a juste besoin de copier le code dans un fichier et de le copier sur le lecteur USB.<\/p>\n\n\n\n<p>T\u00e9l\u00e9charger la derni\u00e8re version du CircuitPython (fichier .UF2) pour votre carte.<br>Pour la Feather nRF52840 Sense&nbsp;:<br><a href=\"https:\/\/circuitpython.org\/board\/feather_bluefruit_sense\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/circuitpython.org\/board\/feather_bluefruit_sense\/<\/a><br>Pour la Feather nRF52840 Express&nbsp;:<br><a href=\"https:\/\/circuitpython.org\/board\/feather_nrf52840_express\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/circuitpython.org\/board\/feather_nrf52840_express\/<\/a><br>Brancher la carte avec un c\u00e2ble USB sur le PC.<br><strong>Attention \u00e0 ne pas utiliser un c\u00e2ble de charge, mais un vrai c\u00e2ble qui permet de transmettre des donn\u00e9es&nbsp;!<\/strong><br>Double-cliquer sur le bouton <strong>Reset<\/strong> de la carte.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"http:\/\/leblogs.cluster029.hosting.ovh.net\/wp-content\/uploads\/2021\/11\/feathernrf52840sense_reset.jpg?w=746\" alt=\"\" class=\"wp-image-413\" width=\"-179\" height=\"-129\" srcset=\"https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/feathernrf52840sense_reset.jpg 746w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/feathernrf52840sense_reset-300x218.jpg 300w\" sizes=\"(max-width: 746px) 100vw, 746px\" \/><figcaption>Bouton Reset<\/figcaption><\/figure><\/div>\n\n\n\n<p>La grosse LED NeoPixel RGB doit s\u2019allumer en vert. Si elle s\u2019allume en rouge, v\u00e9rifier le c\u00e2ble USB ou essayer un autre port USB du PC. La petite LED \u00e0 c\u00f4t\u00e9 du connecteur USB doit clignoter en rouge.<br>Si le double-click ne marche pas la premi\u00e8re fois, essayer une autre fois.<br>Un disque USB va apparaitre sous Windows.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"http:\/\/leblogs.cluster029.hosting.ovh.net\/wp-content\/uploads\/2021\/11\/usb_drive.jpg?w=407\" alt=\"\" class=\"wp-image-416\" width=\"-76\" height=\"-31\" srcset=\"https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/usb_drive.jpg 407w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/usb_drive-300x126.jpg 300w\" sizes=\"(max-width: 407px) 100vw, 407px\" \/><\/figure><\/div>\n\n\n\n<p>Copier le fichier adafruit-circuitpython-feather_bluefruit_sense-fr-7.0.0.uf2 t\u00e9l\u00e9charg\u00e9 pr\u00e9c\u00e9demment sur le lecteur USB.<br>La LED va clignoter, puis the disque FTHRSNSBOOT va dispara\u00eetre et un nouveau disque va appara\u00eetre avec comme nom CIRCUITPY.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/leblogs.cluster029.hosting.ovh.net\/wp-content\/uploads\/2021\/11\/usb_drive2.jpg?w=515\" alt=\"\" class=\"wp-image-418\" width=\"359\" height=\"182\" srcset=\"https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/usb_drive2.jpg 515w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/usb_drive2-300x152.jpg 300w\" sizes=\"auto, (max-width: 359px) 100vw, 359px\" \/><\/figure><\/div>\n\n\n\n<p>On peut voir qu\u2019il y a un fichier en Python code.py, c\u2019est le programme principal de notre carte. <br>La premi\u00e8re fois que l\u2019on installe le CircuitPython, le fichier code.py contient l\u2019instruction&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">print(\"Hello World!\")<\/pre>\n\n\n\n<p>Vous pouvez \u00e9crire du code dans ce fichier, et tout changement dans le contenu du disque CIRCUITPY va initier un reset sur la carte.<br>Pour observer l\u2019affichage du programme, il faut se connecter avec un programme terminal.<br>Par exemple Putty <a rel=\"noreferrer noopener\" href=\"https:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/latest.html\" target=\"_blank\">https:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/latest.html<\/a><br>Identifier le num\u00e9ro du port COM de la carte sur le PC.<br>Aller dans \u00ab&nbsp;Gestionnaire p\u00e9riph\u00e9rique&nbsp;\u00bb et noter le num\u00e9ro.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"http:\/\/leblogs.cluster029.hosting.ovh.net\/wp-content\/uploads\/2021\/11\/portcom.jpg?w=976\" alt=\"\" class=\"wp-image-423\" width=\"-78\" height=\"-56\" srcset=\"https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/portcom.jpg 976w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/portcom-300x220.jpg 300w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/portcom-768x563.jpg 768w\" sizes=\"(max-width: 976px) 100vw, 976px\" \/><\/figure><\/div>\n\n\n\n<p>Ensuite lancer Putty et renseigner \u00ab&nbsp;Serial line&nbsp;\u00bb et \u00ab&nbsp;Speed&nbsp;\u00bb, puis cliquer sur Open<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/leblogs.cluster029.hosting.ovh.net\/wp-content\/uploads\/2021\/11\/putty.jpg?w=602\" alt=\"\" class=\"wp-image-425\" width=\"500\" height=\"450\" srcset=\"https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/putty.jpg 602w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/putty-300x270.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n\n<p>Le terminal s\u2019affiche, et on peut voir que \u00ab&nbsp;Hello world&nbsp;!&nbsp;\u00bb a bien \u00e9t\u00e9 affich\u00e9.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"http:\/\/leblogs.cluster029.hosting.ovh.net\/wp-content\/uploads\/2021\/11\/terminal.jpg?w=825\" alt=\"\" class=\"wp-image-427\" width=\"-99\" height=\"-62\" srcset=\"https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/terminal.jpg 825w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/terminal-300x189.jpg 300w, https:\/\/leblogrf.fr\/wp-content\/uploads\/2021\/11\/terminal-768x485.jpg 768w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><\/figure><\/div>\n\n\n\n<p>En appuyant sur une touche, le mode REPL va se lancer, et vous pourrez taper directement des commandes Python ou alors appuyer sur CTRL+D pour relancer le programme code.py<br>Pour finir, on peut remplacer le contenu du fichier code.py sur la carte par ce code, cela va faire clignoter la LED rouge sur la carte.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import board\nimport digitalio\nimport time\n\nled = digitalio.DigitalInOut(board.LED)\nled.direction = digitalio.Direction.OUTPUT\n\nwhile True:\n    led.value = True\n    time.sleep(0.5)\n    led.value = False\n    time.sleep(0.5)<\/pre>\n\n\n\n<p>Voil\u00e0, c\u2019est fini pour cette introduction \u00e0 l\u2019utilisation de CircuitPython sur carte Feather nRF52840. Plus d\u2019info et des exemples de programmes sont disponibles sur les liens suivants&nbsp;:<br><a href=\"https:\/\/learn.adafruit.com\/welcome-to-circuitpython\/overview\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/learn.adafruit.com\/welcome-to-circuitpython\/overview<\/a><br><a href=\"https:\/\/learn.adafruit.com\/adafruit-feather-sense\/getting-started-with-ble-and-circuitpython\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/learn.adafruit.com\/adafruit-feather-sense\/getting-started-with-ble-and-circuitpython<\/a><br><a href=\"https:\/\/learn.adafruit.com\/adafruit-feather-sense\/circuitpython-on-feather-sense\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/learn.adafruit.com\/adafruit-feather-sense\/circuitpython-on-feather-sense<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La carte Adafruit Feather nRF52840 est une carte de prototypage au format Feather qui g\u00e8re le protocole Bluetooth Low Energy grace au composant nRF52840. Il existe deux versions \u00ab&nbsp;express&nbsp;\u00bb et \u00ab&nbsp;sense&nbsp;\u00bb, c\u2019est presque les m\u00eames, la diff\u00e9rence est que la \u00ab&nbsp;sense&nbsp;\u00bb embarque plusieurs capteurs (Temp\u00e9rature, mouvement, etc\u2026)On peut la programmer en Arduino ou en CircuitPython. &hellip; <a href=\"https:\/\/leblogrf.fr\/index.php\/2021\/11\/26\/programmer-en-circuitpython-sur-une-carte-adafruit-feather-nrf52840\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Programmer en CircuitPython sur une carte Adafruit Feather nRF52840<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":409,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-405","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-circuitpython"],"_links":{"self":[{"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/posts\/405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/comments?post=405"}],"version-history":[{"count":0,"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/posts\/405\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/media\/409"}],"wp:attachment":[{"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/media?parent=405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/categories?post=405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leblogrf.fr\/index.php\/wp-json\/wp\/v2\/tags?post=405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}