{"id":723,"date":"2011-04-04T08:00:56","date_gmt":"2011-04-04T13:00:56","guid":{"rendered":"http:\/\/protofusion.org\/wordpress\/?p=723"},"modified":"2011-05-19T21:31:47","modified_gmt":"2011-05-20T02:31:47","slug":"diy-audio-reactive-lighting","status":"publish","type":"post","link":"http:\/\/protofusion.org\/wordpress\/2011\/04\/diy-audio-reactive-lighting\/","title":{"rendered":"RGB Multi-Node Lighting"},"content":{"rendered":"<p><a href=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/tiny85.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-879\" title=\"\" src=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/tiny85-500x375.jpg\" alt=\"\" width=\"500\" height=\"375\" srcset=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/tiny85-500x375.jpg 500w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/tiny85-300x225.jpg 300w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/tiny85.jpg 1500w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>This project uses the open-source i2c RGB LED controller firmware &#8220;cyz_rgb&#8221; to create a modular high-power lighting network. The network is controlled by an Arduino, which scans the network for nodes controls them autonomously with onboard scripts, manually via serial console control, or over the serial computer-control interface for interaction with programs on a host machine.<\/p>\n<p><!--more--><\/p>\n<h3>Node: BlinkM Clone<\/h3>\n<p><a href=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Node.png\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-829\" title=\"\" src=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Node-500x278.png\" alt=\"\" width=\"500\" height=\"278\" srcset=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Node-500x278.png 500w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Node-300x167.png 300w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Node.png 882w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<h4>Hardware<\/h4>\n<p>Each node consists of only a few inexpensive components. The total cost of each node, not including shipping or bulk discounts, is around $5.50. If you order more than 3 of the 3W LEDs, the price drops drastically ($2.74 per LED and lower.<\/p>\n<ul>\n<li><a href=\"http:\/\/www.mouser.com\/ProductDetail\/Atmel\/ATtiny85V-10PU\/?qs=sGAEpiMZZMvu0Nwh4cA1wUVlLgw9m2DP78s3Ei4lJOM%3d\">ATTINY85 <\/a>&#8211; $1.82 &#8211; Cheap, small footprint, plenty of memory.<\/li>\n<li>3W RGB LED from <a href=\"http:\/\/www.dealextreme.com\/p\/3w-led-emitter-on-star-multicolored-rgb-4530\" target=\"_blank\">DealExtreme<\/a> &#8211; $3.35<\/li>\n<li>NPN Darlington transistors (only $.04 from <a href=\"http:\/\/www.mouser.com\/ProductDetail\/Fairchild-Semiconductor\/2N6427_Q\/?qs=sGAEpiMZZMupZfs%2fwBb3DAZvdrKXE1j%2f6Cyj0FX4BoA%3d\" target=\"_blank\">Mouser<\/a>!)<\/li>\n<li>10uF decoupling capacitor<\/li>\n<li>Current-limiting resistors for each LED (must be 2W+ rated!)<\/li>\n<li>Optional: Pin header, screw terminal, reset switch<\/li>\n<\/ul>\n<div id=\"attachment_861\" style=\"width: 510px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/101_0858.jpg\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-861\" class=\"size-large wp-image-861\" title=\"\" src=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/101_0858-500x305.jpg\" alt=\"\" width=\"500\" height=\"305\" srcset=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/101_0858-500x305.jpg 500w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/101_0858-300x183.jpg 300w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/101_0858.jpg 1500w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><p id=\"caption-attachment-861\" class=\"wp-caption-text\">Initial Prototype on protoboard (resistors have been upgraded to 2W in the final boards) <\/p><\/div>\n<p>The initial prototype node boards are shown below. These nodes include non-standard programming headers, screw-terminal power connectors, and incredibly under-rated resistors (1\/4 watt for the red LED resistor!). 2W+ rated resistors are necessary if you are using a  3W+  LED. I would also recommend adding terminals for the clock and data lines, unless you want to run ribbon cable between the ICSP headers of each board which, conveniently enough, breaks out the needed power and data lines.<\/p>\n<h3>Controller: MNLC<\/h3>\n<p><a href=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Amp.png\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-832\" title=\"\" src=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Amp.png\" alt=\"\" width=\"476\" height=\"365\" srcset=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Amp.png 476w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2013\/12\/MNLC-Amp-300x230.png 300w\" sizes=\"auto, (max-width: 476px) 100vw, 476px\" \/><\/a><\/p>\n<p>The controller for the network of i2c-connected nodes is an Arduino running <a href=\"http:\/\/protofusion.org\/hg\/mnlc\" target=\"_blank\">MNLC<\/a>. This sketch provides a simple serial terminal for manually communicating with the network of nodes, and also provides a non-interactive serial mode for host computer control. Included for testing is some code from <a href=\"http:\/\/jarv.org\/blinkm-music.shtml\" target=\"_blank\">jarv.org<\/a> which reads an analog audio signal  and cycles the network of LEDs through various patterns based on the amplitude of the incoming signal.<\/p>\n<div id=\"attachment_974\" style=\"width: 510px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2011\/04\/mnlc-node.jpg\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-974\" class=\"size-large wp-image-974\" title=\"\" src=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2011\/04\/mnlc-node-500x318.jpg\" alt=\"\" width=\"500\" height=\"318\" srcset=\"http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2011\/04\/mnlc-node-500x318.jpg 500w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2011\/04\/mnlc-node-300x190.jpg 300w, http:\/\/protofusion.org\/wordpress\/wp-content\/uploads\/2011\/04\/mnlc-node.jpg 1000w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><p id=\"caption-attachment-974\" class=\"wp-caption-text\">Fully assembled prototype board with proper resistors<\/p><\/div>\n<p><strong>Build your own:<br \/>\n<\/strong><\/p>\n<ol>\n<li>Assemble node(s) as shown in schematic above<\/li>\n<li>Connect programmer to each node and flash ATTINY85 chips with <a href=\"http:\/\/code.google.com\/p\/codalyze\/wiki\/CyzRgb\" target=\"_blank\">cyz_rgb_slave<\/a> firmware<\/li>\n<li>Unset the divide clock by 8 (DIV8) fuse on each node<\/li>\n<li>Assemble audio input circuit (if needed) and flash Arduino with <a href=\"http:\/\/protofusion.org\/hg\/mnlc\" target=\"_blank\">MNLC<\/a><\/li>\n<li>One at a time, connect each node to the Arduino<\/li>\n<li>Once the node is connected, enter the interactive serial interface and use the &#8220;i&#8221; command to set a unique address for each node.<\/li>\n<li>Daisy-chain clock and data lines of all nodes to the Arduino, add pull-up resistors on both the data and clock line, and run MNLC sketch<\/li>\n<\/ol>\n<p>Additional information on the construction of the final design and some notes about scaling this project up to a 12-node network with considerable distance between nodes will be added in the near future.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This project uses the open-source i2c RGB LED controller firmware &#8220;cyz_rgb&#8221; to create a modular high-power lighting network. The network is controlled by an Arduino, which scans the network for nodes controls them autonomously with onboard scripts, manually via serial<span class=\"ellipsis\">&hellip;<\/span><\/p>\n<div class=\"read-more\"><a href=\"http:\/\/protofusion.org\/wordpress\/2011\/04\/diy-audio-reactive-lighting\/\">Read more &#8250;<\/a><\/div>\n<p><!-- end of .read-more --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[36],"tags":[253,105,106,104,103],"class_list":["post-723","post","type-post","status-publish","format-standard","hentry","category-arduino","tag-arduino","tag-blinkm","tag-i2c","tag-led","tag-rgb"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pNjAs-bF","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/posts\/723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/comments?post=723"}],"version-history":[{"count":52,"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/posts\/723\/revisions"}],"predecessor-version":[{"id":993,"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/posts\/723\/revisions\/993"}],"wp:attachment":[{"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/media?parent=723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/categories?post=723"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/protofusion.org\/wordpress\/wp-json\/wp\/v2\/tags?post=723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}