{"id":1301,"date":"2015-06-16T20:54:10","date_gmt":"2015-06-16T19:54:10","guid":{"rendered":"http:\/\/www.analysir.com\/blog\/?p=1301"},"modified":"2015-07-07T18:32:30","modified_gmt":"2015-07-07T17:32:30","slug":"porting-analysir-firmware-to-particles-photon-platform","status":"publish","type":"post","link":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/","title":{"rendered":"Porting AnalysIR firmware to Particle&#8217;s Photon platform"},"content":{"rendered":"<p>We have just completed porting our (single source) firmware from a range of other &#8216;Arduino&#8217; type platforms to Particle&#8217;s Photon, having received it yesterday &amp; thought it would be useful sharing some of our experiences for other \u2018newbies\u2019. The photon is one of a breed of modern IoT devices hitting the market at relatively low cost. It features a STM32F205 120Mhz ARM Cortex M3 processor running at 120MHz with 1MB flash, 128KB RAM and the all important WiFi. We have been wanting to support the previous Spark Core ($39), but couldn&#8217;t resist this little device at the low price point. Particle are also offering a similar embedded device in larger quantities of 10+,\u00a0 for $12, including FCC certification.<\/p>\n<figure id=\"attachment_1304\" aria-describedby=\"caption-attachment-1304\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon.jpg\" target=\"_blank\" rel=\"attachment wp-att-1304\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1304 \" src=\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg\" alt=\"Photon from Particle.io along with embedded sibling\" width=\"600\" height=\"282\" srcset=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg 1024w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-300x141.jpg 300w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon.jpg 1106w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-1304\" class=\"wp-caption-text\">Photon from Particle.io along with embedded sibling<\/figcaption><\/figure>\n<p><!--more--><\/p>\n<p>Essentially, our firmware uses D2 &amp; D3 on the Photon to read input from a pair of Infrared receivers to record signals and sends the data to our PC based AnalysIR (Infrared decoder and Analyzer) over serial @ 115,200 bps. We have been wanting to try out the Photon since it was announced last year, for $19+shipping.<\/p>\n<p>The good news is that we have finally got it going after a few &#8216;road-blocks&#8217; (self-inflicted) and it now seems to perform on a par with the other systems we support. At this time we are only using the cloud to update firmware on the device. <em>Later, we will look at adding in a TCP\/IP direct connection over LAN\/WiFi, to replace the serial connection.<\/em><\/p>\n<figure id=\"attachment_1303\" aria-describedby=\"caption-attachment-1303\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-Matchbox.jpg\" target=\"_blank\" rel=\"attachment wp-att-1303\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1303\" src=\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-Matchbox.jpg\" alt=\"Photon from Particle.io is really small and comes in a matchbox\" width=\"600\" height=\"322\" srcset=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-Matchbox.jpg 1020w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-Matchbox-300x161.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-1303\" class=\"wp-caption-text\">Photon from Particle.io is really small and comes in a matchbox<\/figcaption><\/figure>\n<p>Hopefully some of this post will help others similarly starting out with the Photon.<\/p>\n<p><strong>OTA Flashing<\/strong><br \/>\nThis one resulted in the biggest \u2018sink\u2019 of our time. In our &#8216;loop()&#8217; we always wrapped the actual code inside a while(true) loop to get the best performance, as Arduino does some extra processing at the end of each loop, which we don&#8217;t need. I suspect a similar approach on Photon meant that the OTA firmware requests were not being serviced (I presume this happens at the end of each loop by default [?]). As our first workaround, we placed a Spark.process() call every time thru the loop &amp; although this allowed OTA firmware updates to work, we then started missing interrupts (maybe 25%+). The final solution came by doing 20 Spark.process() calls during the first 20 seconds in Setup and then issuing a Spark.disconnect (to turn off the cloud connection), which was enough time to allow an OTA update after reset. There may be more elegant solutions, but this approach is sufficient to meet our needs for now.<\/p>\n<p><strong>Interrupts<\/strong><br \/>\nCurrently, interrupts are not working on some pins on the Photon, but we are OK as we just need 2 \u2013 on pins D2 &amp; D3. Our initial mistake here was using 0 &amp; 1 (\u00e0 la Arduino INT0 &amp; INT1) as the interrupt pins. Once we got some assurance on the forum that interrupts were indeed working, we quickly figured out our mistake and used D2 &amp; D3 as the pins in the attachInterrupt call. <em>A search on the forum will show which pins can be used at present &amp; the plans for a fix for the other pins.<\/em> The interrupts in our configuration can fire as often as every 17 uSecs when an IR signal is being received and we noticed that when the cloud was connected, the timings recorded were off a bit, occasionally. Now that we disconnect the cloud after the OTA \u2018window\u2019 during setup \u2013 the timings recorded are &#8216;spot on&#8217; every time.<\/p>\n<p><strong>General Code &amp; Getting Started<\/strong><br \/>\nClearly the Photon is a very different from a standard Arduino or Teensy etc. etc. However, our code ported well to the Photon environment with minimal changes. Most of the issues we encountered were related to OTA &amp; Cloud connections, which is to be expected. I guess a dose of RTFM will always help. There sure seems to be a lot of info available.<\/p>\n<p><strong>Conclusion<\/strong><br \/>\nThe next step is to get a few of our users to test it all out using their Photon and then later to get a direct network connection going to replace the current serial connection.. All in all, we managed to port our code with only a few extra lines of code (for OTA &amp; cloud disconnect) &amp; no material changes to our core Arduino code \u2013 nice.<\/p>\n<p><strong>Try it out<\/strong><br \/>\nExisting users of AnalysIR can try out this new Photon firmware by emailing us. Currently, we have no plans to support the Spark\/particle core platform, but the firmware should be similar, for anyone who wants to try it out. Just email us directly, to get a preview of the firmware.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We have just completed porting our (single source) firmware from a range of other &#8216;Arduino&#8217; type platforms to Particle&#8217;s Photon, having received it yesterday &amp; thought it would be useful sharing some of our experiences for other \u2018newbies\u2019. The photon is one of a breed of modern IoT devices hitting the market at relatively low &hellip; <a href=\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Porting AnalysIR firmware to Particle&#8217;s Photon platform<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[4,279,29,280,7,33,67,97,276,278,277],"class_list":["post-1301","post","type-post","status-publish","format-standard","hentry","category-analysir-blog","tag-analysir","tag-core","tag-decoding","tag-electron","tag-infrared","tag-ir","tag-ir-receiver","tag-ir-signals","tag-particle","tag-photon","tag-spark"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Porting AnalysIR firmware to Particle&#039;s Photon platform<\/title>\n<meta name=\"description\" content=\"We have just completed porting our (single source) firmware from a range of other &#039;Arduino&#039; type platforms to Particle&#039;s Photon, having got one yesterday\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Porting AnalysIR firmware to Particle&#039;s Photon platform\" \/>\n<meta property=\"og:description\" content=\"We have just completed porting our (single source) firmware from a range of other &#039;Arduino&#039; type platforms to Particle&#039;s Photon, having got one yesterday\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"AnalysIR Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/chris.analysir\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/chris.analysir\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-16T19:54:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-07-07T17:32:30+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg\" \/>\n<meta name=\"author\" content=\"User Two\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AnalysIR\" \/>\n<meta name=\"twitter:site\" content=\"@analysir\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"User Two\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\"},\"author\":{\"name\":\"User Two\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13\"},\"headline\":\"Porting AnalysIR firmware to Particle&#8217;s Photon platform\",\"datePublished\":\"2015-06-16T19:54:10+00:00\",\"dateModified\":\"2015-07-07T17:32:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\"},\"wordCount\":800,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg\",\"keywords\":[\"AnalysIR\",\"Core\",\"decoding\",\"Electron\",\"Infrared\",\"IR\",\"IR receiver\",\"IR signals\",\"Particle\",\"Photon\",\"Spark\"],\"articleSection\":[\"AnalysIR Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\",\"url\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\",\"name\":\"Porting AnalysIR firmware to Particle's Photon platform\",\"isPartOf\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg\",\"datePublished\":\"2015-06-16T19:54:10+00:00\",\"dateModified\":\"2015-07-07T17:32:30+00:00\",\"description\":\"We have just completed porting our (single source) firmware from a range of other 'Arduino' type platforms to Particle's Photon, having got one yesterday\",\"breadcrumb\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage\",\"url\":\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg\",\"contentUrl\":\"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.analysir.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Porting AnalysIR firmware to Particle&#8217;s Photon platform\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#website\",\"url\":\"https:\/\/www.analysir.com\/blog\/\",\"name\":\"AnalysIR Blog\",\"description\":\"All about infrared remote control, IR decoding and more\",\"publisher\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.analysir.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#organization\",\"name\":\"AnalysIR\",\"url\":\"https:\/\/www.analysir.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png\",\"contentUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png\",\"width\":200,\"height\":200,\"caption\":\"AnalysIR\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/chris.analysir\",\"https:\/\/x.com\/analysir\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13\",\"name\":\"User Two\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g\",\"caption\":\"User Two\"},\"sameAs\":[\"http:\/\/www.AnalysIR.com\",\"https:\/\/www.facebook.com\/chris.analysir\",\"https:\/\/x.com\/AnalysIR\"],\"url\":\"https:\/\/www.analysir.com\/blog\/author\/analysir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Porting AnalysIR firmware to Particle's Photon platform","description":"We have just completed porting our (single source) firmware from a range of other 'Arduino' type platforms to Particle's Photon, having got one yesterday","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/","og_locale":"en_US","og_type":"article","og_title":"Porting AnalysIR firmware to Particle's Photon platform","og_description":"We have just completed porting our (single source) firmware from a range of other 'Arduino' type platforms to Particle's Photon, having got one yesterday","og_url":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/","og_site_name":"AnalysIR Blog","article_publisher":"https:\/\/www.facebook.com\/chris.analysir","article_author":"https:\/\/www.facebook.com\/chris.analysir","article_published_time":"2015-06-16T19:54:10+00:00","article_modified_time":"2015-07-07T17:32:30+00:00","og_image":[{"url":"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg","type":"","width":"","height":""}],"author":"User Two","twitter_card":"summary_large_image","twitter_creator":"@AnalysIR","twitter_site":"@analysir","twitter_misc":{"Written by":"User Two","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#article","isPartOf":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/"},"author":{"name":"User Two","@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13"},"headline":"Porting AnalysIR firmware to Particle&#8217;s Photon platform","datePublished":"2015-06-16T19:54:10+00:00","dateModified":"2015-07-07T17:32:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/"},"wordCount":800,"commentCount":0,"publisher":{"@id":"https:\/\/www.analysir.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage"},"thumbnailUrl":"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg","keywords":["AnalysIR","Core","decoding","Electron","Infrared","IR","IR receiver","IR signals","Particle","Photon","Spark"],"articleSection":["AnalysIR Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/","url":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/","name":"Porting AnalysIR firmware to Particle's Photon platform","isPartOf":{"@id":"https:\/\/www.analysir.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage"},"thumbnailUrl":"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg","datePublished":"2015-06-16T19:54:10+00:00","dateModified":"2015-07-07T17:32:30+00:00","description":"We have just completed porting our (single source) firmware from a range of other 'Arduino' type platforms to Particle's Photon, having got one yesterday","breadcrumb":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#primaryimage","url":"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg","contentUrl":"http:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Photon-1024x481.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/16\/porting-analysir-firmware-to-particles-photon-platform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.analysir.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Porting AnalysIR firmware to Particle&#8217;s Photon platform"}]},{"@type":"WebSite","@id":"https:\/\/www.analysir.com\/blog\/#website","url":"https:\/\/www.analysir.com\/blog\/","name":"AnalysIR Blog","description":"All about infrared remote control, IR decoding and more","publisher":{"@id":"https:\/\/www.analysir.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.analysir.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.analysir.com\/blog\/#organization","name":"AnalysIR","url":"https:\/\/www.analysir.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png","contentUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png","width":200,"height":200,"caption":"AnalysIR"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/chris.analysir","https:\/\/x.com\/analysir"]},{"@type":"Person","@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13","name":"User Two","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g","caption":"User Two"},"sameAs":["http:\/\/www.AnalysIR.com","https:\/\/www.facebook.com\/chris.analysir","https:\/\/x.com\/AnalysIR"],"url":"https:\/\/www.analysir.com\/blog\/author\/analysir\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p42zhM-kZ","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1964,"url":"https:\/\/www.analysir.com\/blog\/2016\/01\/11\/preview-a-ir-shield-photon-a-high-end-infrared-shield-for-photon-2\/","url_meta":{"origin":1301,"position":0},"title":"Preview: A.IR Shield Photon, a high-end Infrared Shield for AnalysIR","author":"User Two","date":"January 11, 2016","format":false,"excerpt":"The final member of our first MakeIR series of devices & kits is the A.IR Shield Photon. This shield works out of the box with AnalysIR and is essentially plug & play, with additional prototyping options. The shield plugs into a (Particle) Photon with headers or pin-compatible clone. Although designed\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"A.IR Shield Photon block diagram RevA","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/A.IR-Photon-block-diagramRevA.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/A.IR-Photon-block-diagramRevA.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/A.IR-Photon-block-diagramRevA.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1996,"url":"https:\/\/www.analysir.com\/blog\/2016\/01\/14\/esp8266-nodemcu-infrared-decoding-added-to-analysir\/","url_meta":{"origin":1301,"position":1},"title":"ESP8266 NodeMCU Infrared decoding added to AnalysIR","author":"User Two","date":"January 14, 2016","format":false,"excerpt":"A few months ago a new user to AnalysIR, from Canada, asked us to assist in adding ESP8266 NodeMCU Infrared decoding over WiFi into\u00a0 AnalysIR. We set about making some upgrades to AnalysIR for this and in double quick time he had AnalysIR accepting IR signals from the ESP8266 over\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"AnalysIR supports ESP82266 NodeMCU","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/NodeMCU.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/NodeMCU.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/NodeMCU.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1638,"url":"https:\/\/www.analysir.com\/blog\/2015\/10\/02\/backdoor-upwm-hack-on-photon-for-infrared-signals-using-uart\/","url_meta":{"origin":1301,"position":2},"title":"Backdoor uPWM Hack on Photon for Infrared signals using UART","author":"User Two","date":"October 2, 2015","format":false,"excerpt":"Since we received our Photon several months ago it has been difficult to find a working example of Hardware PWM on the Photon. Initially, we ported our softPWM approach to the Photon, which is excellent. However, we figured it must be possible to use at least one of the spare\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"uPWM Circuit diagram for Photon","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3445,"url":"https:\/\/www.analysir.com\/blog\/2017\/08\/23\/preview-ir-shield-esp8266-trx-high-end-ir-shield\/","url_meta":{"origin":1301,"position":3},"title":"Preview: A.IR Shield ESP8266 TRx, a high-end IR Shield","author":"User Two","date":"August 23, 2017","format":false,"excerpt":"The latest member of our MakeIR series of devices & kits is the A.IR Shield ESP8266 TRx. This shield works out of the box with AnalysIR and is essentially plug & play, with additional custom Firmware options. The shield plugs into a Wemos D1 Mini (ESP8266) with headers or any\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"A.IR Shield block diagram ESP8266 TRx","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2017\/08\/A.IR-block-diagram-ESP8266TRx.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2017\/08\/A.IR-block-diagram-ESP8266TRx.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2017\/08\/A.IR-block-diagram-ESP8266TRx.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":3530,"url":"https:\/\/www.analysir.com\/blog\/2017\/10\/03\/preview-ir-shield-esp8266esp32-tx-high-end-ir-shield\/","url_meta":{"origin":1301,"position":4},"title":"Preview: A.IR Shield ESP8266\/ESP32 Tx, a high-end IR Shield","author":"User Two","date":"October 3, 2017","format":false,"excerpt":"The latest member of our MakeIR series of devices & kits is the A.IR Shield ESP8266\/ESP32 Tx. This shield works out of the box with AnalysIR and is essentially plug & play, with additional custom Firmware options. This shield is a 'sibling' to our related TRx shield, and features IR\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2017\/10\/A.IR-block-diagram-ESP8266_ESP32Tx.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2017\/10\/A.IR-block-diagram-ESP8266_ESP32Tx.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2017\/10\/A.IR-block-diagram-ESP8266_ESP32Tx.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2560,"url":"https:\/\/www.analysir.com\/blog\/2016\/07\/06\/esp8266-nodemcu-backdoor-upwm-hack-ir-signals-using-uart\/","url_meta":{"origin":1301,"position":5},"title":"ESP8266 NodeMCU Backdoor uPWM Hack for IR signals","author":"User Two","date":"July 6, 2016","format":false,"excerpt":"We received our ESP8266 NodeMCU several months ago it has been difficult to find a working example of Hardware PWM to generate crisp Infrared carrier signals. Most posts we have read suggest that there is no PWM readily available on any of the supported platforms. As we have already shown\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"ESP8266 NodeMCU uPWM NEC IR Signal","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/07\/ESP8266-NodeMCU-uPWM-NEC-IR-Signal.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/07\/ESP8266-NodeMCU-uPWM-NEC-IR-Signal.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/07\/ESP8266-NodeMCU-uPWM-NEC-IR-Signal.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/07\/ESP8266-NodeMCU-uPWM-NEC-IR-Signal.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/1301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/comments?post=1301"}],"version-history":[{"count":6,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/1301\/revisions"}],"predecessor-version":[{"id":1359,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/1301\/revisions\/1359"}],"wp:attachment":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/media?parent=1301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/categories?post=1301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/tags?post=1301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}