{"id":3713,"date":"2018-02-04T14:59:09","date_gmt":"2018-02-04T13:59:09","guid":{"rendered":"http:\/\/telefab.fr\/?p=3713"},"modified":"2026-04-30T17:33:59","modified_gmt":"2026-04-30T15:33:59","slug":"prothese-vegetale","status":"publish","type":"projet","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/projet\/prothese-vegetale\/","title":{"rendered":"Proth\u00e8se v\u00e9g\u00e9tale"},"content":{"rendered":"<h3>Contexte<\/h3>\n<p>Dans le cadre d\u2019une collaboration avec l\u2019EESAB, \u00e9cole d\u2019art et de design localis\u00e9 \u00e0 Brest, nous devions cr\u00e9er des objets qui revitaliserait et rendrait plus vivant le patio du centre vie de l\u2019IMT.<\/p>\n<h3><span style=\"font-size: large;\">Choix de cet objet:<\/span><\/h3>\n<p>L\u2019id\u00e9e initiale \u00e9tait d\u2019utiliser des lumi\u00e8res, des ombres et des mouvements afin de r\u00e9pondre \u00e0 cet objectif. N\u00e9anmoins, apr\u00e8s une deuxi\u00e8me visite sur le site d\u2019installation, nous avons remarqu\u00e9 que l\u2019\u00e9clairage quotidien du lieu aux heures de fr\u00e9quentation ne permettrait pas d\u2019utiliser les ombres. Puis, apr\u00e8s avoir \u00e9tudi\u00e9 diverses possibilit\u00e9s, nous avons d\u00e9cid\u00e9 de cr\u00e9er des feuilles en contreplaqu\u00e9 peuplier de la m\u00eame forme que celles l\u2019esp\u00e8ce monstera, en accord avec les plantes d\u00e9j\u00e0 pr\u00e9sente dans le patio.<\/p>\n<h3><span style=\"font-size: large;\">R\u00e9alisation:<\/span><\/h3>\n<p>Les plans des feuilles ont \u00e9t\u00e9 r\u00e9alis\u00e9 en utilisant Illustrator, puis la d\u00e9coupe laser a donn\u00e9 la forme au bois. Le principal d\u00e9fi technique a \u00e9t\u00e9 de donner le mouvement aux feuilles, \u00e9tant donn\u00e9 les grandes dimensions de la feuille, environ 60 cm x 30 cm.<\/p>\n<p><span lang=\"en-US\">Deux solutions possibles ont \u00e9t\u00e9 \u00e9tudi\u00e9es et prototyp\u00e9es. Une solution con<\/span><span lang=\"en-US\">s<\/span><span lang=\"en-US\">istait \u00e0 utiliser un petit moteur avec un poids coupl\u00e9 oscillant qui heurte la feuille et la fait vibrer. Pour cette solution, une carte prototype a \u00e9t\u00e9 d\u00e9velopp\u00e9e avec un driver de puissance pour piloter plusieurs moteurs, puisque l\u2019intention \u00e9tait d\u2019installer plus d\u2019une feuille. La carte contenait un pont en H avec des transistor bipolaires. <\/span><span lang=\"en-US\">N\u00e9anmoins, pour avoir un mouvement visible<\/span><span lang=\"en-US\"> avec les moteurs disponibles<\/span><span lang=\"en-US\">, il \u00e9tait n\u00e9cessaire de se placer \u00e0 la fr\u00e9quence de r\u00e9sonance de la feuille. <\/span><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/02\/coucou.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3717 alignleft\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/02\/coucou-300x225.png\" alt=\"\" width=\"300\" height=\"225\" \/><\/a><\/p>\n<p><span lang=\"en-US\">La deuxi\u00e8me solution \u00e9tudi\u00e9e utilise des servomoteurs <\/span><span lang=\"en-US\">contr\u00f4l\u00e9<\/span><span lang=\"en-US\">s<\/span><span lang=\"en-US\"> en angle coupl\u00e9<\/span><span lang=\"en-US\">s<\/span><span lang=\"en-US\"> \u00e0 un syst\u00e8me de poulie<\/span><span lang=\"en-US\"> pour d\u00e9placer la feuille.<\/span><span lang=\"en-US\"> Du fil de couture est attach\u00e9 \u00e0 une poulie \u00e0 une extr\u00e9mit\u00e9 et l&rsquo;autre est attach\u00e9 \u00e0 la feuille. Lorsque le servomoteur tire sur le fil, <\/span><span lang=\"en-US\">la feuille est tir\u00e9 vers le bas.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"en-US\">Cette solution a \u00e9t\u00e9 d\u00e9velopp\u00e9e avec une carte Arduino et des servomoteurs trouv\u00e9s sur le TELEFAB. Apr\u00e8s avoir \u00e9valu\u00e9 les r\u00e9sultats des tests pratiques des deux solutions par l\u2019\u00e9quipe de projet IMT Atlantique et EESAB, il a \u00e9t\u00e9 conclu que la deuxi\u00e8me solution pr\u00e9sentait un mouvement plus harmonique et esth\u00e9tique<\/span><span lang=\"en-US\">. En effet, <\/span><span lang=\"en-US\">la fr\u00e9quence de r\u00e9sonance de la feuille \u00e9tait trop haute<\/span><span lang=\"en-US\">, ce qui<\/span><span lang=\"en-US\"> imposait un mouvement trop rapide<\/span><span lang=\"en-US\">. Par cons\u00e9quent, <\/span><span lang=\"en-US\">la deuxi\u00e8me<\/span><span lang=\"en-US\"> solution a \u00e9t\u00e9 choisie.<\/span><\/p>\n<h3><\/h3>\n<h3><span style=\"font-size: large;\"><span lang=\"en-US\">Guide pour la r\u00e9alisation de la partie technique<\/span><span lang=\"en-US\">:<\/span><\/span><\/h3>\n<p><span lang=\"en-US\">Pour la mise en \u0153uvre de la solution choisie<\/span><span lang=\"en-US\"> sur les deux feuilles que nous poss\u00e9dions<\/span><span lang=\"en-US\">, les mat\u00e9riaux list\u00e9s ci-dessous ont \u00e9t\u00e9 utilis\u00e9s:<\/span><\/p>\n<ul>\n<li>2 kits Arduino Uno avec alimentations<\/li>\n<li>4 servomoteurs contr\u00f4l\u00e9s par logiciel<\/li>\n<li><span lang=\"en-US\">c\u00e2bles <\/span><\/li>\n<li><span lang=\"en-US\">bandes de n\u00e9opixels compos\u00e9 d&rsquo;au moins 10 n\u00e9opixels<\/span><\/li>\n<li><span lang=\"en-US\">Fil de couture<\/span><span lang=\"en-US\"> pour connecter les servomoteurs <\/span><span lang=\"en-US\">\u00e0 l&rsquo;arduino<\/span><\/li>\n<li><span lang=\"en-US\">I<\/span><span lang=\"en-US\">mpression 3D de 4 poulie<\/span><\/li>\n<li>Colle \u00e0 chaud pour coller les mat\u00e9riaux (pistocolle)<\/li>\n<\/ul>\n<h4><b>Partie m\u00e9canique<\/b><\/h4>\n<p>Une fois le mat\u00e9riel \u00e0 disposition, collez les n\u00e9opixels sur le support, juste en-dessous de la feuille. Accrocher du fil de couture sur les parties de la feuille que vous souhaitez faire mouvoir. Nouez les fils de la partie droite ensemble et collez l&rsquo;extr\u00e9mit\u00e9 \u00e0 la poulie. Fa\u00eetes de m\u00eame pour la partie gauche. la poulie se colle sur un plateau qui s&#8217;embo\u00eete dans le servomoteur. Ceux-ci sont vendus avec les servomoteurs. Vous n&rsquo;avez plus qu&rsquo;\u00e0 fixer les servomoteurs sur le support pour terminer cette partie.<\/p>\n<h4><b>Partie \u00e9lectronique<\/b><\/h4>\n<p>Voici maintenant les diff\u00e9rentes pins \u00e0 relier pour que le code ci-dessous fonctionne.<\/p>\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"4\">\n<colgroup>\n<col width=\"128*\" \/>\n<col width=\"128*\" \/> <\/colgroup>\n<tbody>\n<tr valign=\"top\">\n<td width=\"50%\">pin contr\u00f4le des n\u00e9opixels<\/td>\n<td width=\"50%\">pin 2 de l&rsquo;arduino<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td width=\"50%\">pin contr\u00f4le d&rsquo;un des servomoteurs<\/td>\n<td width=\"50%\">pin 6 de l&rsquo;arduino<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td width=\"50%\">pin contr\u00f4le de l&rsquo;autre<\/td>\n<td width=\"50%\">pin 7 de l&rsquo;arduino<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Une fois ces branchements faits, il reste ensuite \u00e0 relier les masses et l&rsquo;alimentation de l&rsquo;arduino aux masses et VCC des n\u00e9opixels et des servomoteurs.<\/p>\n<h4><b>Partie informatique<\/b><\/h4>\n<p>Dans le code que vous trouverez \u00e0 la fin de l&rsquo;article , en modifiant l&rsquo;angle max vous pouvez diminuer l&rsquo;amplitude des mouvements. En augmentant les delay, vous pouvez rendre le mouvement plus lent.<\/p>\n<h3>Exposition<\/h3>\n<p>Voici quelques photos de l&rsquo;exposition du mercredi<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/02\/feuilleMeca.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3714\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/02\/feuilleMeca-300x200.jpg\" alt=\"\" width=\"300\" height=\"200\" \/><\/a><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/02\/photoFeuille.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3715\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2018\/02\/photoFeuille-300x200.jpg\" alt=\"\" width=\"300\" height=\"200\" \/><\/a><\/p>\n<h3>Code<\/h3>\n<p>Voici le code permettant de faire mouvoir les deux c\u00f4t\u00e9s de la feuille de mani\u00e8re sym\u00e9trique (Note : si le fil est tir\u00e9 par la partie droite de la poulie d&rsquo;un c\u00f4t\u00e9 et par la partie gauche de l&rsquo;autre c\u00f4t\u00e9 alors ce code fait mouvoir la feuille de mani\u00e8re antisym\u00e9trique):<\/p>\n<pre>[cpp]<code>\n#include &lt;Adafruit_NeoPixel.h&gt;\n#include &lt;Wire.h&gt;\n#include &lt;Servo.h&gt;\n\n\/\/number of neopixels\n#define NUMPIXELS      20\n\nint pinLamp = 2;\nint pinServo = 6;\nint pinServo2 = 7;\nServo controleServo;\nServo controleServo2;\nint pos;\nint tempsDescente = 1500;\n\nint pas = 3\n;\nint angleMax = 180;\nint temps = 600;\n\nAdafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, pinLamp, NEO_GRB + NEO_KHZ800);\n\nint calculDelay = 1000\/(angleMax\/pas);\n\nvoid setup() {\n  \/\/ put your setup code here, to run once:\n  controleServo.attach(pinServo);\n  controleServo2.attach(pinServo2);\n  controleServo.write(0);\n  controleServo2.write(0);\n  pixels.begin();\n\n    for(int i=0;i&lt;NUMPIXELS;i++){\n  \t\tpixels.setPixelColor(i, pixels.Color(80,255,0)); \n    }\n    \n\n    pixels.show(); \/\/ This sends the updated pixel color to the hardware.\n\n}\n\nvoid loop() {\n  \/\/ put your main code here, to run repeatedly:\n  for (pos = 0; pos &lt;= angleMax; pos += pas) { \n  \/\/ tell servo to go to position in variable 'pos' \n    controleServo.write(pos); \n    controleServo2.write(pos); \n  \/\/ waits 20ms for the servo to reach the position \n    delay(20); \n  } \n  for (pos = angleMax; pos &gt;= 0; pos -= pas) { \n    controleServo.write(pos);\n    controleServo2.write(pos);\n    delay(20); \n  }\n \n}\n<\/code><\/pre>\n<p>[\\cpp]<code><\/code><\/p>\n<p>Voici le code permettant de faire mouvoir les deux c\u00f4t\u00e9s de la feuille de mani\u00e8re antisym\u00e9trique(Note : voir note pr\u00e9c\u00e9dente, ce code peut faire mouvoir la feuille de mani\u00e8re sym\u00e9trique):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"\">[cpp]\n#include &lt;Adafruit_NeoPixel.h&gt;\n#include &lt;Wire.h&gt;\n#include &lt;Servo.h&gt;\n\n\n#define NUMPIXELS      10\n\nint pinLamp = 2;\nint pinServo = 6;\nint pinServo2 = 7;\nServo controleServo;\nServo controleServo2;\nint pos;\nint tempsDescente = 1500;\n\nint pas = 3;\nint angleMax = 180;\nint temps = 600;\n\nAdafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, pinLamp, NEO_GRB + NEO_KHZ800);\n\nint calculDelay = 1000\/(angleMax\/pas);\n\nvoid setup() {\n  \/\/ put your setup code here, to run once:\n  controleServo.attach(pinServo);\n  controleServo2.attach(pinServo2);\n  controleServo.write(0);\n  controleServo2.write(0);\n    pixels.begin();\n\n    for(int i=0;i&lt;NUMPIXELS;i++){\n  \t\tpixels.setPixelColor(i, pixels.Color(80,255,0)); \n    }\n    \n\n    pixels.show(); \/\/ This sends the updated pixel color to the hardware.\n\n}\n\nvoid loop() {\n  \/\/ put your main code here, to run repeatedly:\n  for (pos = 0; pos &lt;= angleMax; pos += pas) { \/\/ goes from 0 degrees to angleMax degrees \n    controleServo.write(pos); \n    controleServo2.write(angleMax-pos);\n    delay(20); \n  } \n  for (pos = angleMax; pos &gt;= 0; pos -= pas) { \n    controleServo.write(pos);\n    controleServo2.write(angleMax-pos);\n    delay(20);                       \n  }\n \n}<\/pre>\n<p>[\\cpp]<code><\/code><\/p>\n","protected":false},"author":1,"featured_media":3714,"parent":0,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,22,20],"type_projet":[],"class_list":["post-3713","projet","type-projet","status-publish","has-post-thumbnail","hentry","category-formation","category-evenements","category-projets"],"acf":{"objectifs":"","categorie":false,"fichiers_associes":null},"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3713","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet"}],"about":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/types\/projet"}],"author":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":1,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3713\/revisions"}],"predecessor-version":[{"id":10492,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3713\/revisions\/10492"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=3713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=3713"},{"taxonomy":"type_projet","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/type_projet?post=3713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}