{"id":134,"date":"2011-04-17T15:54:00","date_gmt":"2011-04-17T13:54:00","guid":{"rendered":"http:\/\/www.sululab.com\/blog\/2011\/04\/17\/wireless-pixels\/"},"modified":"2022-04-20T18:53:04","modified_gmt":"2022-04-20T16:53:04","slug":"wireless-pixels","status":"publish","type":"post","link":"https:\/\/www.sululab.com\/blog\/2011\/04\/17\/wireless-pixels\/","title":{"rendered":"Wireless Pixels"},"content":{"rendered":"<div style=\"clear: both; text-align: center;\"><\/div>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/2.bp.blogspot.com\/-qY-lHljqvbA\/Tar3O8wZjdI\/AAAAAAAAACU\/kszltVnE3rk\/s1600\/WirelessP1.jpg\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" height=\"213\" src=\"http:\/\/2.bp.blogspot.com\/-qY-lHljqvbA\/Tar3O8wZjdI\/AAAAAAAAACU\/kszltVnE3rk\/s320\/WirelessP1.jpg\" width=\"320\"><\/a><\/div>\n<p>English version below.<\/p>\n<p>Questa applicazione per la quale abbiamo usato i <a href=\"http:\/\/jeelabs.net\/projects\/hardware\/wiki\/JeeNode\">JeeNode<\/a> (gi\u00e0 usati in <a href=\"http:\/\/sululab.blogspot.com\/2011\/03\/radio-controlled-rgb-led.html\">questo<\/a> post) e il <a href=\"http:\/\/www.seeedstudio.com\/depot\/rainbowduino-led-driver-platform-plug-and-shine-p-371.html\">Ranbowduino<\/a> (gi\u00e0 usato in <a href=\"http:\/\/sululab.blogspot.com\/2011\/03\/midi-sequencer.html\">questo<\/a> post) \u00e8 stata presentata in occasione dell&#8217;<a href=\"http:\/\/www.discienza.org\/arduino\/\">Arduino Day<\/a> insieme al <a href=\"http:\/\/sululab.blogspot.com\/2011\/04\/midi-rainbow.html\">MIDIRainbow<\/a>.<\/p>\n<div>La giornata \u00e8 stata densa di scambi con gli altri espositori e con i visitatori, un&#8217;ottima occasione per conoscersi tra appassionati e professionisti, tutti coinvolti con grande entusiasmo, compresi i ragazzi dell&#8217;organizzazione <a href=\"http:\/\/www.discienza.org\/\">DiScienza<\/a>. Molto interessanti anche gli interventi della conferenza.<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/3.bp.blogspot.com\/-4U8iMQzWysA\/Tar3XssEMmI\/AAAAAAAAACg\/vnFdNsvmolw\/s1600\/ArdDay.jpg\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" height=\"240\" src=\"http:\/\/3.bp.blogspot.com\/-4U8iMQzWysA\/Tar3XssEMmI\/AAAAAAAAACg\/vnFdNsvmolw\/s320\/ArdDay.jpg\" width=\"320\"><\/a><\/div>\n<p>Parti Hardware utilizzate:<br \/>\n&#8211; Un PC con <a href=\"http:\/\/processing.org\/\">Processing<\/a><br \/>\n&#8211; Due <a href=\"http:\/\/jeelabs.net\/projects\/hardware\/wiki\/JeeNode\">JeeNode<\/a><br \/>\n&#8211; Un <a href=\"http:\/\/www.seeedstudio.com\/depot\/rainbowduino-led-driver-platform-plug-and-shine-p-371.html\">Rainbowduino<\/a><br \/>\n&#8211; Una <a href=\"http:\/\/www.seeedstudio.com\/depot\/60mm-square-88-led-matrix-super-bright-rgb-p-113.html?cPath=163_165\">matrice<\/a> di LED RGB 8&#215;8<\/p>\n<p>Software\/Firmware utilizzato:<br \/>\n&#8211; Un&#8217;applicazione scritta in Processing (<a href=\"http:\/\/www.hifilab.it\/doc\/neorainbowduino_plasma.zip\">neorainbowduino_plasma.zip<\/a>)<br \/>\n&#8211; La libreria <a href=\"http:\/\/code.google.com\/p\/neorainbowduino\/\">neorainbow-0.82<\/a> che \u00e8 composta di tre parti:<br \/>\n+ Un firmware per il Rainbowduino<br \/>\n+ Un firmware per Arduino<br \/>\n+ Una libreria per Processing<br \/>\n&#8211; Il firmware per i due JeeNode (<a href=\"http:\/\/www.hifilab.it\/doc\/neoLed_tx.zip\">neoLed_tx.zip<\/a>) (<a href=\"http:\/\/www.hifilab.it\/doc\/neoLed_rx.zip\">neoLed_rx.zip<\/a>)<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/1.bp.blogspot.com\/-HFLSvQDaCtw\/Tar3RTGdESI\/AAAAAAAAACY\/jv7aV0kXcD8\/s1600\/WirelessP2.jpg\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" height=\"213\" src=\"http:\/\/1.bp.blogspot.com\/-HFLSvQDaCtw\/Tar3RTGdESI\/AAAAAAAAACY\/jv7aV0kXcD8\/s320\/WirelessP2.jpg\" width=\"320\"><\/a><\/div>\n<p>Sul PC gira l&#8217;applicazione processing, ottenuta integrando l&#8217;esempio della libreria neorainbow-0.82 &#8220;neorainbowduino_simple&#8221; con l&#8217;algoritmo &#8220;Plasma&#8221; (preso dagli esempi di Processing: File -&gt; Examples -&gt; Topics -&gt; Effects -&gt; Plasma), che genera un immagine 8&#215;8.<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/3.bp.blogspot.com\/-KtJbWkCVbwQ\/Tar3V_GcLbI\/AAAAAAAAACc\/3qLc78bLMb4\/s1600\/WirelessP3.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" height=\"248\" src=\"http:\/\/3.bp.blogspot.com\/-KtJbWkCVbwQ\/Tar3V_GcLbI\/AAAAAAAAACc\/3qLc78bLMb4\/s320\/WirelessP3.png\" width=\"320\"><\/a><\/div>\n<p>Questa matrice di pixel viene inviata via seriale al primo dei due JeeNode sul quale gira una versione modificata del firmware per Arduino della libreria neorainbow-0.82.<br \/>\nLa modifica effettuata consente al JeeNode di ricevere i byte relativi alle componenti RGB dei pixels che compongono l&#8217;immagine e di inviarli via radio al secondo dei JeeNode (con l&#8217;uso della libreria RF12 sviluppata da <a href=\"http:\/\/jeelabs.net\/projects\/cafe\/wiki\">JeeLabs<\/a> per utilizzare facilmente il modulo radio RFM12B).<br \/>\nIl firmware sul secondo JeeNode gli permette di ricevere l&#8217;immagine dal primo usanda la libreria RF12 e di inviarla al Rainbowduino via I2C con la libreria Wire (inclusa nel sistema di sviluppo di Arduino).<br \/>\nSul Rainbowduino gira il firmware preso dalla neorainbow-0.82 che si occupa di ricevere il flusso di byte che compongono l&#8217;immagine dalla porta I2C e di accendere i LED della matrice RGB in maniera opportuna.<\/p>\n<p><iframe loading=\"lazy\" frameborder=\"0\" height=\"300\" src=\"http:\/\/player.vimeo.com\/video\/22512765\" width=\"400\"><\/iframe><br \/>\n<a href=\"http:\/\/vimeo.com\/22512765\">Wireless Pixels<\/a> from <a href=\"http:\/\/vimeo.com\/user6326320\">SuLuLab<\/a> on <a href=\"http:\/\/vimeo.com\/\">Vimeo<\/a>.<\/p>\n<hr>\n<p>This application, for which we have used the <a href=\"http:\/\/jeelabs.net\/projects\/hardware\/wiki\/JeeNode\">JeeNode<\/a> (already used in <a href=\"http:\/\/sululab.blogspot.com\/2011\/03\/radio-controlled-rgb-led.html\">this<\/a> post) and the <a href=\"http:\/\/www.seeedstudio.com\/depot\/rainbowduino-led-driver-platform-plug-and-shine-p-371.html\">Rainbowduino<\/a> (already used in <a href=\"http:\/\/sululab.blogspot.com\/2011\/03\/midi-sequencer.html\">this<\/a> post), was presented at the <a href=\"http:\/\/www.discienza.org\/arduino\/\">Arduino Day<\/a>, as well as the <a href=\"http:\/\/sululab.blogspot.com\/2011\/04\/midi-rainbow.html\">MIDIRainbow<\/a>.<\/p>\n<p>Hardware components:<br \/>\n&#8211; A PC with <a href=\"http:\/\/processing.org\/\">Processing<\/a><br \/>\n&#8211; Two <a href=\"http:\/\/jeelabs.net\/projects\/hardware\/wiki\/JeeNode\">JeeNode<\/a><br \/>\n&#8211; A <a href=\"http:\/\/www.seeedstudio.com\/depot\/rainbowduino-led-driver-platform-plug-and-shine-p-371.html\">Rainbowduino<\/a><br \/>\n&#8211; An 8&#215;8 RGB LED <a href=\"http:\/\/www.seeedstudio.com\/depot\/60mm-square-88-led-matrix-super-bright-rgb-p-113.html?cPath=163_165\">Matrix<\/a><\/p>\n<p>Software\/Firmware components:<br \/>\n&#8211; An application written in Processing (<a href=\"http:\/\/www.hifilab.it\/doc\/neorainbowduino_plasma.zip\">neorainbowduino_plasma.zip<\/a>)<br \/>\n&#8211; The library <a href=\"http:\/\/code.google.com\/p\/neorainbowduino\/\">neorainbow-0.82<\/a> which is composed of three parts:<br \/>\n+ A Rainbowduino firmware<br \/>\n+ An Arduino firmware<br \/>\n+ A Processing library<br \/>\n&#8211; The firmware for the two JeeNode&#8217;s (<a href=\"http:\/\/www.hifilab.it\/doc\/neoLed_tx.zip\">neoLed_tx.zip<\/a>) (<a href=\"http:\/\/www.hifilab.it\/doc\/neoLed_rx.zip\">neoLed_rx.zip<\/a>)<\/p>\n<p>On the PC is running the processing application, obtained by integrating the &#8220;neorainbowduino_simple&#8221; example of the neorainbow-0.82 library, with the &#8220;Plasma&#8221; algorithm (taken from the examples of Processing: File -&gt; Examples -&gt; Topics -&gt; Effects -&gt; Plasma), which creates a 8&#215;8 image.<br \/>\nThis matrix of pixels is sent via serial port to the first of the two JeeNode&#8217;s on which runs a modified version of the Arduino firmware from the neorainbow-0.82 library.<br \/>\nThis firmware variation allows the JeeNode \u200b\u200bto receive the bytes for the pixels&#8217; RGB components in the image and send it via radio to the second JeeNode (using the RF12 library developed by <a href=\"http:\/\/jeelabs.net\/projects\/cafe\/wiki\">JeeLabs<\/a>, to easily use the RFM12B radio module).<br \/>\nThe firmware on the second JeeNode allows it to receive the image from the first one, using the RF12 library, and send it to the Rainbowduino via I2C by the Wire library (included in the Arduino IDE).<br \/>\nThe Rainbowduino runs the firmware, taken from neorainbow-0.82 library, that is responsible for receiving the stream of bytes that makes up the image from the I2C port and turns on the proper LED on the RGB Matrix with the right colour.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>English version below. Questa applicazione per la quale abbiamo usato i JeeNode (gi\u00e0 usati in questo post) e il Ranbowduino (gi\u00e0 usato in questo post) \u00e8 stata presentata in occasione dell&#8217;Arduino Day insieme al MIDIRainbow. La giornata \u00e8 stata densa&#8230; <a class=\"more-link\" href=\"https:\/\/www.sululab.com\/blog\/2011\/04\/17\/wireless-pixels\/\">Continua a leggere &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":1135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[72,225,216,226,227],"tags":[],"class_list":["post-134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-jeenode","category-processing","category-rainbowduino","category-wireless"],"_links":{"self":[{"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/posts\/134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/comments?post=134"}],"version-history":[{"count":2,"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/posts\/134\/revisions"}],"predecessor-version":[{"id":1137,"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/posts\/134\/revisions\/1137"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/media\/1135"}],"wp:attachment":[{"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/media?parent=134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/categories?post=134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sululab.com\/blog\/wp-json\/wp\/v2\/tags?post=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}