{"id":125,"date":"2017-06-15T13:04:24","date_gmt":"2017-06-15T20:04:24","guid":{"rendered":"http:\/\/www.migration.andersknelson.com\/blog\/?p=125"},"modified":"2023-11-01T00:45:44","modified_gmt":"2023-11-01T04:45:44","slug":"torch-grid","status":"publish","type":"post","link":"https:\/\/www.andersknelson.com\/blog\/?p=125","title":{"rendered":"Torch Grid"},"content":{"rendered":"\n<p>A centrally-controlled grid of wind-sensitive tea candles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Background<\/h2>\n\n\n\n<p>I wanted to make a light-art piece for my barren walls at home to impress unsuspecting people who happened to stop by.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What it does<\/h2>\n\n\n\n<p>It generally looks like a grid of typical electronic tea candles, until you induce a wind current by blowing across the grid. The wind makes the candles wig out in a semi-natural manner.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What it&#8217;s made of<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Several 12-packs of <a href=\"http:\/\/www.100candles.com\/i-6320\/Amber-Floating-LED-Light-Non-Flicker\">non-flickering LED tea candles<\/a><\/li>\n\n\n\n<li>Wind sensors from <a href=\"http:\/\/moderndevice.com\/product\/wind-sensor\/\">Modern Device<\/a><\/li>\n\n\n\n<li>PIC32MX<\/li>\n\n\n\n<li>iCE40 FPGA<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/ufanders\/torchGrid\">Firmware<\/a>&nbsp;written in C using&nbsp;<a style=\"font-weight: inherit; font-style: inherit;\" href=\"https:\/\/www.microchip.com\/pagehandler\/en-us\/family\/mplabx\/\">MPLABX<\/a>,&nbsp;compiled by&nbsp;XC32 and loaded using an&nbsp;<a style=\"font-weight: inherit; font-style: inherit;\" href=\"http:\/\/www.microchip.com\/Developmenttools\/ProductDetails.aspx?PartNO=DV164035\">ICD3<\/a><\/li>\n\n\n\n<li>Custom PCB&nbsp;designed in&nbsp;<a style=\"font-weight: inherit; font-style: inherit;\" href=\"http:\/\/www.cadsoftusa.com\/eagle-pcb-design-software\/product-overview\/?language=en\">EAGLE<\/a>&nbsp;and fabricated at&nbsp;<a style=\"font-weight: inherit; font-style: inherit;\" href=\"http:\/\/quoting.sunstone.com\/quoteexpress.aspx\">PCBExpress<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Theory of operation<\/h2>\n\n\n\n<p>I pulled the main workings from <a href=\"http:\/\/people.ece.cornell.edu\/land\/courses\/eceprojectsland\/STUDENTPROJ\/2001to2002\/pc59\/\/index.htm\">a brilliant Cornell ECE project<\/a> created by <a href=\"%20pc59@cornell.edu\">Philip Ching<\/a>. I added a 16-bit PWM matrix driver to the equation so the main loop can be reasonably responsive, and wiring becomes far easier. PIC32s with a crypto engine contain a very cool hardware (True and Pseudo) Random Number Generator, &#8220;TRNG&#8221; and &#8220;PRNG&#8221; respectively which we use to do flickery for all torches in the grid.<\/p>\n\n\n\n<p>Suggested reading:<a href=\"http:\/\/www.microchip.com\/forums\/m240165.aspx\">&nbsp;<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/www.microchip.com\/forums\/m240165.aspx\">http:\/\/www.microchip.com\/forums\/m240165.aspx<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/www.dmcole.net\/digital-candle-%E2%80%94-version-1\/\">http:\/\/www.dmcole.net\/digital-candle-%E2%80%94-version-1\/<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>A centrally-controlled grid of wind-sensitive tea candles. Background I wanted [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,2],"tags":[],"class_list":["post-125","post","type-post","status-publish","format-standard","hentry","category-concept","category-projects"],"_links":{"self":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=125"}],"version-history":[{"count":9,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":1120,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions\/1120"}],"wp:attachment":[{"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.andersknelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}