{"id":1910,"date":"2016-08-21T01:47:44","date_gmt":"2016-08-21T05:47:44","guid":{"rendered":"http:\/\/nagashur.com\/blog\/?p=1910"},"modified":"2016-08-21T01:47:44","modified_gmt":"2016-08-21T05:47:44","slug":"ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd","status":"publish","type":"post","link":"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/","title":{"rendered":"Ramdrive sur un Raspberry pi : r\u00e9duisez l&#8217;usure de la carte SD!"},"content":{"rendered":"<h2>Qu&#8217;est ce qu&#8217;un ramdrive?<\/h2>\n<p>Un <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Disque_virtuel\">ramdrive <\/a>est un espace de stockage qui utilise la <a href=\"https:\/\/fr.wikipedia.org\/wiki\/M%C3%A9moire_vive\">RAM<\/a> (m\u00e9moire vive) au lieu du disque dur, SSD, m\u00e9moire flash ou autre moyen habituel de stockage. La RAM est plus rapide que tous ces supports, mais en cas de coupure de courant ou si on \u00e9teint l&#8217;ordinateur, les donn\u00e9es sont perdues. Donc, \u00e0 quoi \u00e7a sert, un stockage qui oublie \u00e0 chaque reboot?<\/p>\n<h2>Pourquoi utiliser un ramdrive?<\/h2>\n<p>La r\u00e9ponse \u00e9vidente, c&#8217;est la vitesse : si vous avez besoin d&#8217;acc\u00e8s ultrarapides, \u00e7a peut \u00eatre une solution. Une seconde r\u00e9ponse int\u00e9ressera les utilisateurs de raspberry pis : \u00e9viter d&#8217;user la carte SD du syst\u00e8me. La m\u00e9moire flash s&#8217;use \u00e0 chaque \u00e9criture (c&#8217;est simplifi\u00e9, mais c&#8217;est l&#8217;id\u00e9e). Un SSD aura des techniques pour r\u00e9partir l&#8217;usure \u00e9quitablement et donc \u00e7a ne rentrera pas r\u00e9ellement en compte. Mais pour une carte SD, il n&#8217;y a pas ces algorithmes avanc\u00e9s. Donc quand on \u00e9crit tout le temps au m\u00eame endroit, on finira par &#8220;user&#8221; la carte, et elle aura des secteurs d\u00e9fectueux. C&#8217;est ici qu&#8217;intervient le ramdrive. Pour de nombreux projets \u00e0 base de Raspberry pi, nous utilisons des capteurs, et nous souhaitons stocker les valeurs des capteurs. Du coup, si \u00e0 chaque mesure on \u00e9crit sur la carte SD, elle l\u00e2chera bien vite, d&#8217;autant plus vite qu&#8217;on \u00e9crit souvent, par exemple chaque seconde. Dans ce contexte, je vous propose de cr\u00e9er un ramdrive pour pouvoir \u00e9crire dessus en continu, sans se soucier de l&#8217;usure, et de copier de temps en temps les donn\u00e9es vers la carte SD. En stockant les mesures chaque seconde sur le ramdrive, puis en copiant les donn\u00e9es toutes les heures, on \u00e9crira 3600 fois moins souvent sur la carte SD!<\/p>\n<p>Voyons maintenant comment r\u00e9aliser cela.<\/p>\n<p><!--more--><\/p>\n<h2>Comment cr\u00e9er un ramdrive<\/h2>\n<p>Les instructions suivantes sont valables sous linux, pas que sous raspbian. Le tutoriel est orient\u00e9 vers les Raspberry pi, mais \u00e7a reste valable pour tous les syst\u00e8mes <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Linux\">Linux<\/a>\u00a0(et sans doute \u00e9norm\u00e9ment d&#8217;<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Unix\">Unix<\/a>, et donc, oui, sous MacOS \u00e7a devrait aussi fonctionner \ud83d\ude42 ).<\/p>\n<h3>Cr\u00e9er temporairement le ramdrive<\/h3>\n<p>Tout d&#8217;abord, il faut cr\u00e9er un r\u00e9pertoire qui servira de point de montage. C&#8217;est \u00e0 dire que c&#8217;est l&#8217;endroit sur le syst\u00e8me de fichier ou sera situ\u00e9 le ramdrive. G\u00e9n\u00e9ralement, sous Linux, les disques sont mont\u00e9s dans le dossier <strong>\/mnt<\/strong>. Puisque c&#8217;est un ramdrive, nous irons dans <strong>\/mnt\/ramdrive<\/strong>.<\/p>\n<p>Pour cr\u00e9er ce r\u00e9pertoire, on utilisera la commande mkdir, en sudo, car l&#8217;utilisateur par d\u00e9faut ne poss\u00e8de pas les droits :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo mkdir \/mnt\/ramdrive<\/pre>\n<p>Ce r\u00e9pertoire ayant \u00e9t\u00e9 cr\u00e9\u00e9 par root, il faut changer le propri\u00e9taire pour que l&#8217;utilisateur pi puisse \u00e9crire dedans, avec la commande <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Chown\">chown <\/a>:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">sudo chown pi \/mnt\/ramdrive<\/pre>\n<p>Ici, nous donnons la propri\u00e9t\u00e9 du r\u00e9pertoire \/mnt\/ramdrive \u00e0 l&#8217;utilisateur pi. Ce n&#8217;est pas n\u00e9cessaire pour le fonctionnement du ramdrive \u00e0 proprement parler, mais si je souhaite qu&#8217;un programme lanc\u00e9 en tant qu&#8217;utilisateur (pi) puisse \u00e9crire dans ce r\u00e9pertoire, c&#8217;est une solution. Une autre serait de faire un <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Chmod\">chmod<\/a>.<\/p>\n<p>Il faut maintenant monter le ramdrive, en utilisant la commande <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Point_de_montage\">mount <\/a>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo mount -t tmpfs -o size=8m tmpfs \/mnt\/ramdrive<\/pre>\n<p>Ici, je monte un syst\u00e8me de fichier de type tmpfs, d&#8217;une taille de 8Mio dans le r\u00e9pertoire \/mnt\/ramdrive. Vous pouvez bien sur ajuster ces param\u00e8tres \u00e0 votre convenance. La taille du syst\u00e8me de fichier est importante, car la ram du Raspberry pi (ou de l&#8217;ordinateur utilis\u00e9) n&#8217;est pas infinie, et une valeur trop importante aura un impact sur les performances de la machine.<\/p>\n<h3>Cr\u00e9er le ramdrive de fa\u00e7on persistante (il sera recr\u00e9\u00e9 automatiquement au d\u00e9marrage)<\/h3>\n<p>Si l&#8217;on souhaite profiter syst\u00e9matiquement de la pr\u00e9sence du ramdrive au d\u00e9marrage du syst\u00e8me, sans avoir \u00e0 lancer de commande suppl\u00e9mentaire, il suffit de modifier le fichier fstab de fa\u00e7on appropri\u00e9e, pour que le ramdrive soit automatiquement mont\u00e9 au d\u00e9marrage. Les donn\u00e9es non sauvegard\u00e9es seront toujours perdues, mais le ramdrive sera cr\u00e9\u00e9 \u00e0 chaque fois.<\/p>\n<p>Pour cela, nous devons modifier le fichier fstab, par exemple avec vi ou nano, pour y ajouter la ligne suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">tmpfs \/mnt\/ramdisk tmpfs nodev,nosuid,noexec,nodiratime,size=8M 0 0<\/pre>\n<p>Ainsi, \u00e0 chaque d\u00e9marrage, nous aurons acc\u00e8s \u00e0 notre ramdrive.<\/p>\n<p>On pourra alors \u00e9crire sur le ramdrive sans probl\u00e8me, sans usure du syst\u00e8me, et sans avoir \u00e0 le cr\u00e9er au pr\u00e9alable.<\/p>\n<h2>Conclusions et ressources<\/h2>\n<p>En pratique, c&#8217;est quelque chose de simple \u00e0 faire, et qui peut s&#8217;av\u00e9rer utile. Toutefois, il convient de bien prendre en compte le fait que le contenu du ramdrive est perdu \u00e0 chaque red\u00e9marrage du syst\u00e8me. Il faut donc sauvegarder p\u00e9riodiquement les donn\u00e9es que l&#8217;on souhaite conserver sur la m\u00e9moire persistante.<\/p>\n<p>Je m&#8217;en sers pour mon projet <a href=\"http:\/\/nagashur.com\/blog\/projets\/rlieh\/\">Rlieh<\/a>, un contr\u00f4leur d&#8217;aquarium automatis\u00e9. Celui ci mesure la temp\u00e9rature de plusieurs cuves, et la temp\u00e9rature de l&#8217;air, chaque seconde. Je peux donc faire des statistiques d\u00e9taill\u00e9es, mais je ne sauvegarde pas tout cela en continu. Chaque seconde, j&#8217;\u00e9cris sur le ramdrive avec le programme qui r\u00e9cup\u00e8re les donn\u00e9es des capteurs, de sorte que d&#8217;autres programmes puissent s&#8217;en servir. Ainsi, il est facile de rendre les donn\u00e9es accessibles pour un \u00a0serveur web, ou n&#8217;importe quel programme. Je n&#8217;archive qu&#8217;une partie des donn\u00e9es (la temp\u00e9rature varie relativement peu, et change lentement, donc quelques mesures par heure suffisent; cependant je peux faire toutes sortes de statistiques sur les donn\u00e9es completes tant qu&#8217;elles sont en m\u00e9moire, avant de les vider apr\u00e8s X jours.), et donc je minimise encore l&#8217;usure de la carte.<\/p>\n<p>Pour la gestion de l&#8217;\u00e9criture de sauvegarde, il est possible de faire un <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Cron\">cron<\/a>, ou encore de <a href=\"http:\/\/www.nagashur.com\/wiki\/doku.php?id=raspberry_pi:creation_service\">cr\u00e9er un demon unix qui se chargera de cette t\u00e2che, comme nous l&#8217;avons d\u00e9taill\u00e9 dans ce pr\u00e9c\u00e9dent tutoriel sur le wiki<\/a>.<\/p>\n<p>On peut \u00e9galement <a href=\"http:\/\/nagashur.com\/blog\/2016\/07\/21\/partage-de-fichiers-samba-avec-le-raspberry-pi\/\">cr\u00e9er un partage samba pour pouvoir acc\u00e9der au ramdrive depuis le r\u00e9seau, comme d\u00e9taill\u00e9 dans notre tutoriel sur ce sujet<\/a>.<\/p>\n<p>Ce n&#8217;est qu&#8217;un exemple d&#8217;application parmi d&#8217;autres, mais c&#8217;est une corde \u00e0 avoir \u00e0 son arc!<\/p>\n<p>Pour aller plus loin, vous pouvez consulter <a href=\"https:\/\/www.jamescoyle.net\/how-to\/943-create-a-ram-disk-in-linux\">cet article en anglais sur le m\u00eame sujet<\/a>, ou encore <a href=\"https:\/\/www.jamescoyle.net\/knowledge\/951-the-difference-between-a-tmpfs-and-ramfs-ram-disk\">celui ci qui explique la diff\u00e9rence entre les syst\u00e8mes tmpfs et ramfs<\/a>\u00a0(wikipedia FR : <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Tmpfs\">tmpfs<\/a>, <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Ramfs\">ramfs<\/a>)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qu&#8217;est ce qu&#8217;un ramdrive? Un ramdrive est un espace de stockage qui utilise la RAM (m\u00e9moire vive) au lieu du disque dur, SSD, m\u00e9moire flash ou autre moyen habituel de stockage. La RAM est plus rapide que tous ces supports, mais en cas de coupure de courant ou si on \u00e9teint l&#8217;ordinateur, les donn\u00e9es sont [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1913,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":""},"categories":[3,168,335],"tags":[593,588,587,9,589,591,586,583,584,500,371,119,585,594,592,590],"jetpack_featured_media_url":"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2016\/08\/ramdrive_rlieh.png","jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ramdrive sur un Raspberry pi : r\u00e9duisez l&#039;usure de la carte SD! - Nagashur<\/title>\n<meta name=\"description\" content=\"Cr\u00e9er un ramdrive sur son raspberry pi pour prot\u00e9ger la carte SD de l&#039;usure.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ramdrive sur un Raspberry pi : r\u00e9duisez l&#039;usure de la carte SD! - Nagashur\" \/>\n<meta property=\"og:description\" content=\"Cr\u00e9er un ramdrive sur son raspberry pi pour prot\u00e9ger la carte SD de l&#039;usure.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/\" \/>\n<meta property=\"og:site_name\" content=\"Nagashur\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-21T05:47:44+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2016\/08\/ramdrive_rlieh.png\" \/>\n\t<meta property=\"og:image:width\" content=\"642\" \/>\n\t<meta property=\"og:image:height\" content=\"225\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@audreyrobinel\" \/>\n<meta name=\"twitter:site\" content=\"@audreyrobinel\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/nagashur.com\/blog\/#website\",\"url\":\"http:\/\/nagashur.com\/blog\/\",\"name\":\"Nagashur\",\"description\":\"raspi et arduino FTW :)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/nagashur.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/#primaryimage\",\"inLanguage\":\"fr-FR\",\"url\":\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2016\/08\/ramdrive_rlieh.png\",\"width\":642,\"height\":225,\"caption\":\"un ramdrive sur rlieh, pour enregistrer temporairement les valeurs des capteurs\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/#webpage\",\"url\":\"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/\",\"name\":\"Ramdrive sur un Raspberry pi : r\\u00e9duisez l'usure de la carte SD! - Nagashur\",\"isPartOf\":{\"@id\":\"http:\/\/nagashur.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/#primaryimage\"},\"datePublished\":\"2016-08-21T05:47:44+00:00\",\"dateModified\":\"2016-08-21T05:47:44+00:00\",\"author\":{\"@id\":\"http:\/\/nagashur.com\/blog\/#\/schema\/person\/11a329fa33df4e94444716624beb8186\"},\"description\":\"Cr\\u00e9er un ramdrive sur son raspberry pi pour prot\\u00e9ger la carte SD de l'usure.\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/nagashur.com\/blog\/2016\/08\/21\/ramdrive-raspberry-pi-reduisez-lusure-de-carte-sd\/\"]}]},{\"@type\":\"Person\",\"@id\":\"http:\/\/nagashur.com\/blog\/#\/schema\/person\/11a329fa33df4e94444716624beb8186\",\"name\":\"sky99\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6yqc2-uO","jetpack-related-posts":[{"id":1401,"url":"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/","url_meta":{"origin":1910,"position":0},"title":"DS3231 Raspberry pi RTC : ajouter une horloge temps r\u00e9el I2C - Alitest","date":"31 ao\u00fbt 2015","format":false,"excerpt":"Le Raspberry pi ne dispose pas de module RTC (Real Time Clock, horloge en temps r\u00e9el), et ne peut donc pas garder une trace pr\u00e9cise du temps \u00e9coul\u00e9 sans avoir recours \u00e0 une synchronisation sur un serveur de temps (NTP). Cela n'est pas toujours possible, notamment pour des projets ou\u2026","rel":"","context":"Dans &quot;composants&quot;","img":{"alt_text":"DS3231 Raspberry pi RTC - pinout","src":"https:\/\/i0.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2146,"url":"http:\/\/nagashur.com\/blog\/2020\/10\/06\/conception-dun-nas-raspberry-pi-pour-limpression-3d\/","url_meta":{"origin":1910,"position":1},"title":"Conception d'un NAS Raspberry Pi pour l'impression 3D","date":"6 octobre 2020","format":false,"excerpt":"J'ai con\u00e7u et construit un serveur NAS (stockage de fichiers) en bois, avec un CPU AMD classique dedans et 4 disques de 4To. Il tourne sous Open Media Vault 5 (OMV), avec tous mes dockers (Tous deux des logiciels libres et gratuits!). En plus, j'ai 4 disques externes de 4To,\u2026","rel":"","context":"Dans &quot;bricolo&quot;","img":{"alt_text":"Vue 3D de la cage \u00e0 disques du NAS","src":"https:\/\/i2.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2020\/10\/nas_freecad_3D.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":500,"url":"http:\/\/nagashur.com\/blog\/2013\/01\/05\/utilisation-dun-circuit-l293d-pour-commander-des-moteurs\/","url_meta":{"origin":1910,"position":2},"title":"Utilisation d'un circuit L293D pour commander des moteurs","date":"5 janvier 2013","format":false,"excerpt":"Si l'on branche un moteur \u00e0 courant continu (DC Motor) \u00e0 une source de courant adapt\u00e9e, celui ci tournera. Si l'on veut inverser le sens de rotation, il suffit d'inverser le branchement. Cependant, inverser des branchements \"\u00e0 la main\" ne convient pas \u00e0 un robot. Nous verrons donc aujourd'hui comment\u00a0contr\u00f4ler\u00a0le\u2026","rel":"","context":"Dans &quot;\u00e9lectronique&quot;","img":{"alt_text":"L293D : contr\u00f4leur de moteurs","src":"https:\/\/i2.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/01\/800px-L293D_Motor_Driver.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":584,"url":"http:\/\/nagashur.com\/blog\/2013\/01\/13\/lire-des-entrees-analogiques-sur-un-raspberry-avec-un-circuit-adc-le-mcp3008\/","url_meta":{"origin":1910,"position":3},"title":"Lire des entr\u00e9es analogiques sur un Raspberry avec un circuit ADC : le MCP3008","date":"13 janvier 2013","format":false,"excerpt":"Nous connectons un circuit MCP3008 \u00e0 4 ports GPIO du Raspberry pi, et nous pouvons alors connecter divers capteurs \u00e0 l'une des 8 broches libres du MCP3008 pour lire les valeurs de divers capteurs analogiques. Un exemple de code python r\u00e9alisant cela est fourni, et les sch\u00e9mas de c\u00e2blage de\u2026","rel":"","context":"Dans &quot;capteurs&quot;","img":{"alt_text":"Convertisseur analogique-num\u00e9rique MCP3008","src":"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/01\/MCP3008-01.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1215,"url":"http:\/\/nagashur.com\/blog\/2015\/08\/17\/raspberry-pi-mobile-lipo-un-systeme-autonome-et-rechargeable-a-bonne-autonomie\/","url_meta":{"origin":1910,"position":4},"title":"Raspberry pi mobile LiPo : un syst\u00e8me autonome et rechargeable \u00e0 bonne autonomie","date":"17 ao\u00fbt 2015","format":false,"excerpt":"Le Raspberry pi est un ordinateur compact et \u00e9conome en \u00e9nergie. Il est donc logiquement une solution int\u00e9ressante pour des projets embarqu\u00e9s. Je vais donc pr\u00e9senter ici un montage permettant de faire un Raspberry pi portable avec une batterie rechargeable Lithium Polym\u00e8re, et un chargeur efficace. L'objectif final sera d'avoir\u2026","rel":"","context":"Dans &quot;\u00e9lectronique&quot;","img":{"alt_text":"Raspberry pi A+ autonome avec batterie, chargeur et r\u00e9gulateur de tension","src":"https:\/\/i2.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/piAplus_on_battery_4644_800px.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":653,"url":"http:\/\/nagashur.com\/blog\/2013\/03\/27\/ajouter-des-gpio-au-raspberry-pi-en-utilisant-une-puce-mcp23017-ou-23008\/","url_meta":{"origin":1910,"position":5},"title":"Ajouter des GPIO au Raspberry Pi en utilisant une puce MCP23017 ou 23008","date":"27 mars 2013","format":false,"excerpt":"Si le nombre de GPIO disponibles sur le Raspberry Pi ne vous convient pas, pas d'inqui\u00e9tude, il est possible d'en rajouter. La puce\u00a0MCP23017 permet\u00a0d'ajouter 16 GPIO , et la puce\u00a0MCP23008 permet d'en rajouter 8. Dans les deux cas, ces puces se connectent au Raspberry Pi sur des GPIO \"sp\u00e9ciaux\",\u00a0d\u00e9di\u00e9s au\u2026","rel":"","context":"Dans &quot;composants&quot;","img":{"alt_text":"puce MCP23017, cr\u00e9dits photo Adafruit","src":"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/03\/MCP23017_adafruit.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts\/1910"}],"collection":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/comments?post=1910"}],"version-history":[{"count":0,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts\/1910\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/media\/1913"}],"wp:attachment":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/media?parent=1910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/categories?post=1910"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/tags?post=1910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}