{"id":523,"date":"2013-01-23T14:16:37","date_gmt":"2013-01-23T13:16:37","guid":{"rendered":"http:\/\/telefab.fr\/?p=427"},"modified":"2026-04-30T17:34:00","modified_gmt":"2026-04-30T15:34:00","slug":"leds-draw-quand-un-smartphone-et-un-arduino-dessinent-ensemble","status":"publish","type":"projet","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/projet\/leds-draw-quand-un-smartphone-et-un-arduino-dessinent-ensemble\/","title":{"rendered":"LED&rsquo;s draw !"},"content":{"rendered":"<h2>Quand un Smartphone et un Arduino dessinent ensemble<\/h2>\n<p>\u00ab\u00a0LED&rsquo;s draw !\u00a0\u00bb est un projet men\u00e9 durant la premi\u00e8re semaine d\u2019intersemestres \u00ab\u00a0FabLab\u00a0\u00bb (du 21 janvier au 1er f\u00e9vrier 2013), en collaboration avec l&rsquo;intersemestre \u00ab\u00a0Bootcamp\u00a0\u00bb. Le projet a \u00e9t\u00e9 men\u00e9 par Ga\u00ebtan FAYON et Etienne LOUBOUTIN pour la partie \u00ab\u00a0mat\u00e9rielle\u00a0\u00bb du projet, et par Victor DUBOIS et Fran\u00e7ois GU\u00c9GAN pour la partie logicielle (application Smartphone).<\/p>\n<p>\u00ab\u00a0LED&rsquo;s draw !\u00a0\u00bb permet de dessiner une image sur son Smartphone (Android) et de l&rsquo;envoyer sur <a href=\"http:\/\/www.sureelectronics.net\/goods.php?id=1095\">une matrice \u00e0 LED 32&#215;16<\/a>. La matrice reproduit alors l&rsquo;image \u00e0 l&rsquo;identique.<\/p>\n<p>Pour r\u00e9aliser ce projet, le mat\u00e9riel suivant a d\u00fb \u00eatre utilis\u00e9 :<\/p>\n<ul>\n<li>un Arduino UNO ;<\/li>\n<li>un Arduino MEGA ADK ;<\/li>\n<li><a href=\"http:\/\/www.sureelectronics.net\/goods.php?id=1095\">une matrice \u00e0 LED (32&#215;16)<\/a> ;<\/li>\n<li>un Smartphone (Android) ;<\/li>\n<li><a href=\"http:\/\/android.developpez.com\/cours\/\">un environnement de d\u00e9veloppement JAVA-Android<\/a>.<\/li>\n<\/ul>\n<p>Veuillez \u00e9galement vous rendre \u00e0 cette page (<a href=\"http:\/\/developer.android.com\/tools\/adk\/adk.html\">http:\/\/developer.android.com\/tools\/adk\/adk.html<\/a>) pour bien configurer les deux parties du montage (la partie Arduino et la partie Android) pour pouvoir les faire communiquer de la meilleure des mani\u00e8res possibles.<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/2013\/01\/23\/leds-draw-quand-un-smartphone-et-un-arduino-dessinent-ensemble\/image_une\/\" rel=\"attachment wp-att-448\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-448 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2013\/01\/image_une-1024x634.jpg\" alt=\"image_une\" width=\"583\" height=\"360\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>Sch\u00e9ma du montage \u00e9lectronique<\/h2>\n<p>Pour d\u00e9velopper ce projet, nous avons tout d&rsquo;abord songer \u00e0 utiliser une liaison Bluetooth entre le Smartphone et <a href=\"http:\/\/arduino.cc\/en\/Main\/ArduinoBoardBluetooth\">un Arduino BT-V06<\/a>. Seulement, nous n&rsquo;avons absolument pas r\u00e9ussi \u00e0 faire fonctionner ce dernier (de nombreux myst\u00e8res semblent \u00eatre \u00e0 r\u00e9soudre de ce c\u00f4t\u00e9-l\u00e0 : faire fonctionner ce composant se r\u00e9v\u00e8le \u00eatre issu d&rsquo;un facteur chance assez incroyable). Nous avons alors essayer de faire fonctionner un autre module Bluetooth,<a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/lab\/media\/datasheet\/RFM70.pdf\"> le RFM70<\/a>, sans toutefois plus de succ\u00e8s. Il y a donc moyen d&rsquo;am\u00e9liorer le syst\u00e8me mis au point en essayant de faire fonctionner ces diff\u00e9rents modules de mani\u00e8re convenable.<\/p>\n<p>Au final, le montage r\u00e9alis\u00e9 correspond \u00e0 celui-ci :<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/2013\/01\/23\/leds-draw-quand-un-smartphone-et-un-arduino-dessinent-ensemble\/montage_led_s_draw\/\" rel=\"attachment wp-att-452\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-452\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2013\/01\/montage_led_s_draw-1024x589.png\" alt=\"montage_led_s_draw\" width=\"793\" height=\"455\" \/><\/a><\/p>\n<p>A la vue de ce sch\u00e9ma, une question simple doit se poser : pourquoi avoir utiliser deux Arduino (un UNO et un MEGA ADK, soit un pour g\u00e9rer l&rsquo;affichage des donn\u00e9e sur la matrice et un autre pour g\u00e9rer le flux de donner arrivant du portable) alors que l&rsquo;Arduino MEGA ADK poss\u00e8de \u00e0 priori assez de pins pour g\u00e9rer cela tout seul. Cependant, celui utilis\u00e9 semblait avoir un probl\u00e8me pour alimenter correctement la matrice \u00e0 LED en 5V. Nous sommes donc passer par un Arduino UNO pour le faire. Pour faire la liaison entre les deux Arduino, nous avons r\u00e9alis\u00e9 <a href=\"http:\/\/www.arduino.cc\/en\/Reference\/Wire\">un pont I2C<\/a>, en reliant la pin COM\/SDA20 (respectivement COM\/SCL21) de l&rsquo;Arduino MEGA ADK \u00e0 la pin ANALOG\/A4 (respectivement ANALOG\/A5) de l&rsquo;Arduino UNO.<\/p>\n<p>&nbsp;<\/p>\n<h2>Principe du codage (c\u00f4t\u00e9 Arduino)<\/h2>\n<p>Voici le principe g\u00e9n\u00e9ral du projet, informatiquement parlant :<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/2013\/01\/23\/leds-draw-quand-un-smartphone-et-un-arduino-dessinent-ensemble\/principe_du_codage\/\" rel=\"attachment wp-att-477\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-477 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2013\/01\/principe_du_codage-282x300.png\" alt=\"principe_du_codage\" width=\"282\" height=\"300\" \/><\/a><\/p>\n<p>Pour faire simple, l&rsquo;Arduino MEGA ADK doit g\u00e9rer ce qui vient du port USB h\u00f4te (reli\u00e9 au Smartphone de l&rsquo;utilisateur). Il re\u00e7oit trois donn\u00e9es principales : la couleur de la LED \u00e0 allumer, ses coordonn\u00e9es et l&rsquo;intensit\u00e9 de la LED. La couleur est cod\u00e9e sur un octet : 00000000 pour aucune couleur, 00000001 pour la couleur verte, 00000010 pour la couleur rouge et 00000011 pour la couleur orange. On utilise un octet et non deux bits pour la simplicit\u00e9 du protocole, sachant que l&rsquo;on re\u00e7oit les donn\u00e9es du Smartphone par octets obligatoirement via le protocole USB, il faudrait sinon d\u00e9paqueter chacun des octets. Pour les coordonn\u00e9es, on s\u00e9pare l&rsquo;axe X et l&rsquo;axe Y : chacun est cod\u00e9 sur un octet et varie soit entre 0 et 15 soit entre 0 et 31 (on utilise une matrice \u00e0 LED 32&#215;16). L&rsquo;intensit\u00e9 est \u00e9galement cod\u00e9 sur un octet et varie entre 0 et 15.<\/p>\n<p>L&rsquo;Arduino MEGA ADK transmet ensuite ces informations \u00e0 l&rsquo;Arduino UNO via I2C, et l&rsquo;Arduino UNO r\u00e9oriente ces donn\u00e9es vers la matrice \u00e0 LED, en branchant tout ces composants comme il l&rsquo;est indiqu\u00e9 sur le sch\u00e9ma de montage pr\u00e9c\u00e9dent. Il faut pr\u00eater attention \u00e0 bien connecter les pins de la matrice \u00e0 LED de mani\u00e8re convenable avec les pins de l&rsquo;Arduino UNO. Le meilleur moyen de ne pas se tromper et d&rsquo;utiliser un branchement \u00e0 base de d\u00e9trompeur, que vous pouvez cr\u00e9er vous-m\u00eame si vous avez les composants n\u00e9c\u00e9ssaires. Dans tous les cas, si vous respecter les branchements donn\u00e9s sur le sch\u00e9ma, il n&rsquo;y aura aucun soucis (d&rsquo;autant plus que le nom des pins est donn\u00e9 au dos de la matrice \u00e0 LED).<\/p>\n<p>Au niveau codage, il n&rsquo;y a rien de bien compliqu\u00e9, une fois les bonnes librairies t\u00e9l\u00e9charg\u00e9es. Vous pouvez t\u00e9l\u00e9charger librement les codes :<\/p>\n<ul>\n<li><a href=\"http:\/\/em6.clubs.resel.fr\/telefab\/led_s_draw\/led_s_draw_adk.zip\">Codes pour l&rsquo;Arduino MEGA ADK<\/a><span style=\"color: #ff0000;\"> <span style=\"color: #000000;\">;<\/span><br \/>\n<\/span><\/li>\n<li><a href=\"http:\/\/em6.clubs.resel.fr\/telefab\/led_s_draw\/led_s_draw_uno.zip\">Codes pour l&rsquo;Arduino UNO<\/a><span style=\"color: #ff0000;\"><span style=\"color: #000000;\"> ;<br \/>\n<\/span><\/span><\/li>\n<li>Librairies pour les compilations des codes (\u00e0 ins\u00e9rer dans votre r\u00e9pertoire principale de codage) : <a href=\"http:\/\/em6.clubs.resel.fr\/telefab\/led_s_draw\/led_s_draw_library_adk_matrice.zip\">pour la matrice<\/a>, <a href=\"http:\/\/em6.clubs.resel.fr\/telefab\/led_s_draw\/led_s_draw_library_adk.zip\">pour l&rsquo;Arduino MEGA ADK<\/a> et <a href=\"http:\/\/em6.clubs.resel.fr\/telefab\/led_s_draw\/led_s_draw_library_library_liaison_adk.zip\">pour la liaison USB<\/a>.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Principe du codage (c\u00f4t\u00e9 Android)<\/h2>\n<p>Le codage de la partie Android du projet n\u00e9cessite quant \u00e0 elle d&rsquo;\u00eatre plut\u00f4t \u00e0 l&rsquo;aise avec la programmation JAVA et des bases solides au niveau de la programmation Android. Pour vous former, n&rsquo;h\u00e9sitez pas \u00e0 consulter les nombreux tutoriels existant sur Internet : \u00e0 chaque probl\u00e8me existe une recherche Google ad\u00e9quate !<\/p>\n<p>Pour d\u00e9buter, je vous propose de commencer par l&rsquo;excellent tutoriel disponible \u00e0 cette adresse : <a href=\"http:\/\/nbenbourahla.developpez.com\/tutoriels\/android\/introduction-programmation-android\/\">http:\/\/nbenbourahla.developpez.com\/tutoriels\/android\/introduction-programmation-android\/<\/a>.<\/p>\n<p>Pour en revenir \u00e0 notre application en elle-m\u00eame, cette application permet :<\/p>\n<ul>\n<li>d&rsquo;enregistrer ou charger (via un mot cl\u00e9 et une commande vocale) une configuration de la grille ;<\/li>\n<li>d&rsquo;allumer\/\u00e9teindre une LED, ou une ligne\/colonne enti\u00e8re ;<\/li>\n<li>d&rsquo;\u00e9tablir le choix de la couleur pour chaque LED ;<\/li>\n<li>m\u00e9langer la grille en secouant le Smartphone.<\/li>\n<\/ul>\n<p>Pour approfondir sur le th\u00e8me de la commande vocale, il suffira par exemple que l&rsquo;utilisateur dise le mot \u00ab\u00a0maison\u00a0\u00bb, pour qu&rsquo;un dessin de maison s&rsquo;affiche \u00e0 la fois sur le Smartphone et sur la matrice \u00e0 LED. On peut \u00e9galement s\u00e9lectionner la couleur par commande vocale.<\/p>\n<p>Au niveau de l&rsquo;interface propos\u00e9, voil\u00e0 ce que nous avons r\u00e9ussi \u00e0 avoir pour le moment :<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/2013\/01\/23\/leds-draw-quand-un-smartphone-et-un-arduino-dessinent-ensemble\/application_interface\/\" rel=\"attachment wp-att-482\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-482 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2013\/01\/application_interface-638x1024.png\" alt=\"application_interface\" width=\"325\" height=\"520\" \/><\/a><\/p>\n<p>Le code de cette application Android contient de nombreuses classes, pour t\u00e9l\u00e9charger les codes sources, cliquez sur les liens suivants :<\/p>\n<ul>\n<li><a href=\"http:\/\/em6.clubs.resel.fr\/telefab\/led_s_draw\/led_s_draw_library_android.zip\">LED&rsquo;s draw &#8211; Archive compl\u00e8te Android<\/a>.<a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/2013\/01\/23\/leds-draw-quand-un-smartphone-et-un-arduino-dessinent-ensemble\/ledsdraw\/\"><br \/>\n<\/a><\/li>\n<\/ul>\n<p>Pour t\u00e9l\u00e9charger directement l&rsquo;application, il est n\u00e9cessaire de se rendre sur ce site : <a href=\"http:\/\/codecamp2013.pbworks.com\/w\/page\/62944320\/applis2013\">http:\/\/codecamp2013.pbworks.com\/w\/page\/62944320\/applis2013<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2>Perspectives d&rsquo;am\u00e9lioration<\/h2>\n<p>Actuellement, la connexion entre le Smartphone et la matrice \u00e0 LED se fait via une connexion filaire USB. Le premier objectif est donc de passer en sans-fil (Bluetooth ou Wi-Fi). Afin de donner tout son sens au projet. Les nombreux probl\u00e8mes que nous avons eu pour g\u00e9rer les diff\u00e9rents modules Bluetooth nous ont conduit \u00e0 utiliser une connexion filaire. Cependant, si vous arrivez \u00e0 dompter <a href=\"http:\/\/arduino.cc\/en\/Main\/ArduinoBoardBluetooth\">l&rsquo;Arduino BT-V06<\/a>, vous pourrez supprimer l&rsquo;Arduino MEGA ADK de la cha\u00eene de transmission (ce qui r\u00e9duira par la m\u00eame occasion l&rsquo;encombrement du syst\u00e8me). En effet, vous pourrez d\u00e8s lors uploader votre code sur <a href=\"http:\/\/arduino.cc\/en\/Main\/ArduinoBoardBluetooth\">l&rsquo;Arduino BT-V06<\/a> via votre ordinateur (si ce dernier est \u00e9quip\u00e9 d&rsquo;un module Bluetooth) et en m\u00eame temps utilis\u00e9 cet Arduino comme r\u00e9cepteur des informations envoy\u00e9s par le Smartphone. Pour les plus curieux d&rsquo;entre vous, un tutoriel pour s&rsquo;initier \u00e0 la manipulation de cet Arduino ce trouve ici : <a href=\"http:\/\/www.pobot.org\/Arduino-BT.html\">http:\/\/www.pobot.org\/Arduino-BT.htm<\/a>l.\u00a0 Il faudra \u00e9galement mettre \u00e0 jour le code Android pour que les donn\u00e9es qui sont envoy\u00e9es \u00e0 l&rsquo;Arduino le soient par Bluetooth et non par USB.<\/p>\n<p>Une autre am\u00e9lioration possible est d&rsquo;ajouter du c\u00f4t\u00e9 de la matrice \u00e0 LED un capteur de luminosit\u00e9 pour ajuster automatiquement l&rsquo;intensit\u00e9 des couleurs en fonction de la luminosit\u00e9 ambiante (il faudra alors s\u2019\u00e9quiper d&rsquo;une photor\u00e9sistance et suivre notamment le tutoriel disponible <a href=\"http:\/\/redmine.labo4g.enstb.fr\/projects\/arduino-projects\/wiki\/Atelier_Arduino\">ici \u00e0 la cinqui\u00e8me \u00e9tape<\/a>).<\/p>\n<p>&nbsp;<\/p>\n<h2>Documentation compl\u00e9mentaire<\/h2>\n<ul>\n<li>Documentation interne pour la cr\u00e9ation de l&rsquo;environnement de liaison entre l&rsquo;Arduino MEGA ACK et le Smartphone : <span style=\"color: #ff0000;\">[COMING SOON]<\/span><\/li>\n<li>Documentation relative \u00e0 la prise en main de l&rsquo;Arduino BT-V06 : <a href=\"http:\/\/arduino.cc\/en\/Guide\/ArduinoBT\">http:\/\/arduino.cc\/en\/Guide\/ArduinoBT<\/a> ;<\/li>\n<li>Documentation pour la r\u00e9alisation d&rsquo;une liaison Bluetooth entre un microcontr\u00f4leur et un Smartphone sous Android : <a href=\"http:\/\/nononux.free.fr\/index.php?page=elec-brico-bluetooth-android-microcontroleur\">http:\/\/nononux.free.fr\/index.php?page=elec-brico-bluetooth-android-microcontroleur<\/a> ;<\/li>\n<li>Documentation relative \u00e0 la connexion I2C : <a href=\"http:\/\/arduino.cc\/forum\/index.php\/topic,32645.0.html\">http:\/\/arduino.cc\/forum\/index.php\/topic,32645.0.html<\/a> et <a href=\"http:\/\/www.arduino.cc\/en\/Reference\/Wire\">http:\/\/www.arduino.cc\/en\/Reference\/Wire<\/a>.<\/li>\n<\/ul>\n","protected":false},"author":1,"featured_media":448,"parent":0,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"categories":[22,20],"type_projet":[],"class_list":["post-523","projet","type-projet","status-publish","has-post-thumbnail","hentry","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\/523","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\/523\/revisions"}],"predecessor-version":[{"id":10545,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/523\/revisions\/10545"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=523"},{"taxonomy":"type_projet","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/type_projet?post=523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}