{"id":283,"date":"2022-01-11T22:01:37","date_gmt":"2022-01-12T02:01:37","guid":{"rendered":"http:\/\/www.functionalprototype.com\/news\/?p=283"},"modified":"2022-09-06T17:55:56","modified_gmt":"2022-09-06T21:55:56","slug":"sensor-debugging","status":"publish","type":"post","link":"https:\/\/www.functionalprototype.com\/news\/2022\/01\/11\/sensor-debugging\/","title":{"rendered":"Sensor Debugging"},"content":{"rendered":"<p>This has been a back-bench project for a couple of months but I thought I&#8217;d share some progress on how difficult physical computing can be.<\/p>\n<p>Here&#8217;s an example of sensors going bad:<\/p>\n<p><a href=\"http:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-285 size-large\" src=\"http:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24-1024x576.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24-1024x576.jpg 1024w, https:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24-300x169.jpg 300w, https:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24-768x432.jpg 768w, https:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24-1536x864.jpg 1536w, https:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24-220x124.jpg 220w, https:\/\/www.functionalprototype.com\/news\/wp-content\/uploads\/2022\/01\/office-2021-08-24.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Notice all the bouncing of CO2 and tVOC?\u00a0 That&#8217;s not good.\u00a0 Is the CCS881 dying?\u00a0 Did a software update to linux break something?<\/p>\n<p>Things I tried, and more importantly, in the order I tried them:<\/p>\n<ul>\n<li>Reset the baseline every 10 minutes, every 5 minutes.\u00a0 No change.<\/li>\n<li>Swap in a spare sensor.\u00a0 No change.<\/li>\n<li>Noticed a slight breeze while I&#8217;m swapping sensors.\u00a0 Did I rearrange the room on 9 Nov?\u00a0 I dunno.\u00a0 Block the breeze with some paper.\u00a0 Slight improvement<\/li>\n<li>Put a glass over the sensor.\u00a0 No improvement.\u00a0 Ok, so it&#8217;s certainly not the breeze or disturbed air, something is really wrong here.<\/li>\n<li>Detach the PM25. CCS881 works as expected.\u00a0 WTF?<\/li>\n<li>Reattach the PM25, turn it off in software.\u00a0 CCS881 is bouncing again.\u00a0 Glass is still covering the sensor.<\/li>\n<li>Set up an entirely new Pi from scratch, used the CCS881 solo, no problems.\u00a0 Added the PM25 and the fluctuations returned.<\/li>\n<\/ul>\n<p>So how is the PM25 interfering with the CCS881, even when it&#8217;s not being read?<\/p>\n<p>This is one downside to using someone else&#8217;s API. Is there an I2C bug?\u00a0 Is the PM25 dying?\u00a0 How could it alter the values returned by the CCS881?<\/p>\n<p>&#8220;To be continued&#8230;&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This has been a back-bench project for a couple of months but I thought I&#8217;d share some progress on how difficult physical computing can be. Here&#8217;s an example of sensors going bad: Notice all the bouncing of CO2 and tVOC?\u00a0 That&#8217;s not good.\u00a0 Is the CCS881 dying?\u00a0 Did a software update to linux break something? [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[21,34],"tags":[],"class_list":["post-283","post","type-post","status-publish","format-standard","hentry","category-design","category-environmental"],"_links":{"self":[{"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/posts\/283"}],"collection":[{"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":0,"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.functionalprototype.com\/news\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}