{"id":1044,"date":"2013-07-12T08:48:50","date_gmt":"2013-07-12T07:48:50","guid":{"rendered":"http:\/\/www.bergeret.org\/blog\/?p=1044"},"modified":"2022-07-24T15:19:04","modified_gmt":"2022-07-24T14:19:04","slug":"lecture-dune-photoresistance-et-publication-sur-internet","status":"publish","type":"post","link":"https:\/\/www.bergeret.org\/blog\/2013\/07\/12\/lecture-dune-photoresistance-et-publication-sur-internet\/","title":{"rendered":"Lecture d&rsquo;une photor\u00e9sistance et publication sur Internet"},"content":{"rendered":"<p>Voici la premi\u00e8re r\u00e9alisation de montage Raspberry Pi que je publie sur Internet.<br \/>\nLe Raspberry Pi est vraiment un concept g\u00e9nial, mais il lui manque une chose fondamentale : la possibilit\u00e9 de lire une valeur analogique. En effet, ses entr\u00e9e\/sorties sont purement logique. Ca ne pose aucun probl\u00e8me pour piloter la puissance d&rsquo;une diode, par exemple, en utilisant des solutions de type <a title=\"PWM\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Modulation_de_largeur_d'impulsion\" target=\"_blank\" rel=\"noopener\">PWM<\/a>.<!--more--><\/p>\n<p>Pour une entr\u00e9e, c&rsquo;est plus compliqu\u00e9 : on est oblig\u00e9 de faire appel \u00e0 un autre composant, un convertisseur analogique\/num\u00e9rique (CAN en fran\u00e7ais, ou DAC en anglais) qui va faire l&rsquo;acquisition, et qui va discuter avec le Raspberry Pi pour transmettre cette information.<\/p>\n<p>J&rsquo;ai utilis\u00e9 ici un MCP-3008, CAN 10 bits, \u00e0 8 entr\u00e9es analogiques, dialoguant avec le Raspberry Pi par <a title=\"SPI\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Serial_Peripheral_Interface\" target=\"_blank\" rel=\"noopener\">SPI<\/a>.<\/p>\n<p>Derri\u00e8re le CAN, j&rsquo;ai ajout\u00e9 une <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Photor%C3%A9sistance\" target=\"_blank\" rel=\"noopener\">photor\u00e9sistance<\/a>&nbsp;et une r\u00e9sistance mont\u00e9s en diviseur de tension. Plus la tension mesur\u00e9e est forte, plus la luminosit\u00e9 est forte.<\/p>\n<p><a href=\"https:\/\/www.bergeret.org\/blog\/wp-content\/mcp3008LDR_bb.png\"><img decoding=\"async\" class=\"alignleft size-full wp-image-1045\" alt=\"mcp3008LDR_bb\" src=\"https:\/\/www.bergeret.org\/blog\/wp-content\/mcp3008LDR_bb.png\" width=\"350\" srcset=\"https:\/\/www.bergeret.org\/blog\/wp-content\/mcp3008LDR_bb.png 1755w, https:\/\/www.bergeret.org\/blog\/wp-content\/mcp3008LDR_bb-150x150.png 150w, https:\/\/www.bergeret.org\/blog\/wp-content\/mcp3008LDR_bb-300x300.png 300w, https:\/\/www.bergeret.org\/blog\/wp-content\/mcp3008LDR_bb-1024x1024.png 1024w\" sizes=\"(max-width: 1755px) 100vw, 1755px\" \/><\/a><br \/>\nPour l&rsquo;impl\u00e9mentation du SPI, j&rsquo;ai r\u00e9utilis\u00e9 des exemples trouv\u00e9s sur le net, qui n&rsquo;exploitent pas les fonctions SPI natives du Raspberry Pi.<\/p>\n<p>Les exemples trouv\u00e9s \u00e9taient \u00e9crits en Python, je les ai adapt\u00e9s en C en utilisant la librairie <a href=\"http:\/\/wiringpi.com\/\" target=\"_blank\" rel=\"noopener\">wiringpi<\/a>. Les exemples en Python encha\u00eenaient all\u00e8grement deux changements d&rsquo;\u00e9tats sur une m\u00eame sortie sans mettre de temporisation entre les deux, ce qui est possible en raison de la lenteur d&rsquo;interpr\u00e9tation du langage. En C, le changement d&rsquo;\u00e9tat de la sortie n&rsquo;\u00e9tait pas pris en compte par le MCP 3008 ; il a donc fallu mettre des temporisations (100?s) entre les changements d&rsquo;\u00e9tats.<\/p>\n<p>Une fois la communication impl\u00e9ment\u00e9e, j&rsquo;ai trouv\u00e9 int\u00e9ressant de publier les mesures sur le net, pour avoir une visualisation des donn\u00e9es.<\/p>\n<p>Le site&nbsp;<a href=\"https:\/\/xively.com\/\">http:\/\/xively.com\/<\/a>&nbsp;propose ce genre de service : il suffit de s&rsquo;enregistrer, de lire la doc de l&rsquo;API (soit niveau HTTP, soit une impl\u00e9mentation en C, ou autres langages), de t\u00e9l\u00e9charger et compiler l&rsquo;impl\u00e9mentation de l&rsquo;API, et roule.<\/p>\n<p><a href=\"https:\/\/www.bergeret.org\/blog\/wp-content\/graphe.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-full wp-image-1046\" alt=\"graphe\" src=\"https:\/\/www.bergeret.org\/blog\/wp-content\/graphe.png\" width=\"461\" height=\"256\" srcset=\"https:\/\/www.bergeret.org\/blog\/wp-content\/graphe.png 461w, https:\/\/www.bergeret.org\/blog\/wp-content\/graphe-300x166.png 300w\" sizes=\"(max-width: 461px) 100vw, 461px\" \/><\/a><\/p>\n<p>On obtient alors ce genre de graphe : le pic apr\u00e8s 6h correspond \u00e0 l&rsquo;utilisation de la lumi\u00e8re \u00e9lectrique, que l&rsquo;on retrouve apr\u00e8s 18h.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/anonymous\/b69fe409f5ccb1c756e6.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici la premi\u00e8re r\u00e9alisation de montage Raspberry Pi que je publie sur Internet. Le Raspberry Pi est vraiment un concept g\u00e9nial, mais il lui manque une chose fondamentale : la possibilit\u00e9 de lire une valeur analogique. En effet, ses entr\u00e9e\/sorties sont purement logique. Ca ne pose aucun probl\u00e8me pour piloter la puissance d&rsquo;une diode, par [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[94],"tags":[],"_links":{"self":[{"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/posts\/1044"}],"collection":[{"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/comments?post=1044"}],"version-history":[{"count":11,"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/posts\/1044\/revisions"}],"predecessor-version":[{"id":1144,"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/posts\/1044\/revisions\/1144"}],"wp:attachment":[{"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/media?parent=1044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/categories?post=1044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bergeret.org\/blog\/wp-json\/wp\/v2\/tags?post=1044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}