<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Blog - All Comments</title><link>/challenges-projects/project14/remote-monitoring-control-devices/b/blog</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Automation in the Antarctic; Adding Resilience to Remote Data Capture Systems</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/automation-in-the-antarctic-adding-resilience-to-remote-data-capture-systems</link><pubDate>Tue, 20 Oct 2020 10:05:23 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9b32c4dd-b827-4047-95a3-c1821cf08285</guid><dc:creator>dubbie</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Interesting. Some pictures of the microturbine would be good. Just how big (or should it be small?) is a microturbine?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Dubbie&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=10085&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Micro Monster - Succulent Plants Monitoring System (part-6) Final Testing and Demo</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/micro-monster---succulent-plants-monitoring-system-part-6-final-testing-and-demo</link><pubDate>Wed, 12 Feb 2020 11:39:55 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:88ba9fc7-b9d0-4af3-b0d4-c95c731c6002</guid><dc:creator>alton</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Aawesome.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Can you add small clear tube and water pump. When it signals dry... pump will water plant. Give it 3-5 seconds depending on how much pumps out at a given time.&lt;/p&gt;&lt;p&gt;then send a notice to cell phone msg of plant A dry,&amp;nbsp; plant A watered.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;also, can I set up to 6 potted plants with a single raspberry pi?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;plz email me at &lt;/span&gt;&lt;a class="jive-link-email-small" href="mailto:altonddavisjr@yahoo.com"&gt;altonddavisjr@yahoo.com&lt;/a&gt;&lt;span&gt; so I can receive info quickest.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;thx boss!&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7614&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Makevember Project - How Much More Can a 140 Foot Vessel Grow?</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/makevember-project---how-much-more-can-a-140-foot-vessel-grow</link><pubDate>Mon, 25 Nov 2019 01:00:07 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dd334848-f813-48e7-8076-19beefc41fff</guid><dc:creator>Sean_Miller</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Updated with my findings and Prototype #2 in the works.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Happy Holidays!&lt;/p&gt;&lt;p&gt;Sean&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=8230&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Makevember Project - How Much More Can a 140 Foot Vessel Grow?</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/makevember-project---how-much-more-can-a-140-foot-vessel-grow</link><pubDate>Tue, 19 Nov 2019 21:25:07 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dd334848-f813-48e7-8076-19beefc41fff</guid><dc:creator>genebren</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Nice reuse on your datalogger project. Being able to build on an earlier project for a new purpose is the sign of a good engineer.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=8230&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Makevember Project - How Much More Can a 140 Foot Vessel Grow?</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/makevember-project---how-much-more-can-a-140-foot-vessel-grow</link><pubDate>Tue, 19 Nov 2019 19:53:06 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dd334848-f813-48e7-8076-19beefc41fff</guid><dc:creator>DAB</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Nice build.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;DAB&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=8230&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Makevember Project - How Much More Can a 140 Foot Vessel Grow?</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/makevember-project---how-much-more-can-a-140-foot-vessel-grow</link><pubDate>Tue, 19 Nov 2019 14:52:31 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dd334848-f813-48e7-8076-19beefc41fff</guid><dc:creator>dougw</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Great project. Let us know if it works and whether the data was useful.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=8230&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Makevember Project - How Much More Can a 140 Foot Vessel Grow?</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/makevember-project---how-much-more-can-a-140-foot-vessel-grow</link><pubDate>Tue, 19 Nov 2019 11:00:13 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dd334848-f813-48e7-8076-19beefc41fff</guid><dc:creator>dubbie</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;A good project. Did it measure the data as required?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Dubbie&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=8230&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Plant a seed and watch it grow...  (Part 3: presenting a new unfuzzy creation, well almost)</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/plant-a-seed-and-watch-it-grow-part-3-presenting-a-new-unfuzzy-creation-well-almost</link><pubDate>Tue, 20 Aug 2019 21:01:32 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c691a630-4ae3-4728-94a7-f98f5579a24e</guid><dc:creator>BigG</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I just had to put this one to bed... Here is my environmental sensor unit set up. It is now a standalone unit and uses the BLE Environmental Sensing Service with some added customised characteristics.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;When I started out on the &amp;quot;feature creep&amp;quot; part, I was scratching my head as to which would be the simplest BLE module to use with my Arduino UNO, when the solution was sitting right under my nose in a box, looking all forlorn. It was the now defunct Arduino 101. And boy oh boy, it worked a treat and so much simpler than say trying to use the ESP32 BLE Arduino libraries, which don&amp;#39;t use the correct terminology and are way too over complicated, memory/resource hungry and crash far too frequently (all classic signs, in my opinion, that the competent code writers did not fully grasp the BLE spec).&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span id="bb1b2ff8_57db_417b_a8fa_cc7908fd9b07"&gt;&lt;span&gt;[View:https://www.youtube.com/watch?v=C_VlHhhs6Go:740:466]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The fun part of the project, was including a characteristic for a small USB (5V) fan. I have options for the remote turning on and off of the fan and for auto mode, which triggers every time the sensors are sampled (the idea is to raise a bit of dust with the fan on in order to measure dust particulate concentration).&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The code for the project is as follows:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:3ef06e6b-9b7d-4651-b12d-db8be7f5e991:type=c_cpp&amp;amp;text=%2F*%0A+++Copyright+%28c%29+2016+Intel+Corporation.++All+rights+reserved.%0A+++See+the+bottom+of+this+file+for+the+license+terms.%0A*%2F%0A%0A%0A%2F*%0A+*+Sketch%3A+_101BLE_EnvironmentalSensingService_Demo.ino%0A+*%0A+*+Description%3A%0A+*+++++This+sketch+example+partially+implements+the+standard+Bluetooth%0A+*+++Low-Energy+Environmental+Sensing+service+and+connection+interval+paramater+update.%0A+*%0A+*+++For+more+information%3A%0A+*+++++https%3A%2F%2Fdeveloper.bluetooth.org%2Fgatt%2Fservices%2FPages%2FServicesHome.aspx%0A+*%0A+*%2F%0A%0A%0A+%2F*****************************************************************************+%0A+*%0A+*+Copyright+Gerrikoio%2C+August+2019%0A+*+%0A+*++This+code+measures+a+range+of+environmental+sensors+as+well+as+air+quality+%28dust+particulates%29.+%0A+*++%0A+*++The+sensors+include%3A++%0A+*++A+BMP085+Barometric+Pressure+%26+Temp+Sensor+%28using+the+Adafruit+BMP085+Breakout+library%29++%0A+*++A+Sensioron+SVM30+sensor+%28library+is+a+combo%29%0A+*++%0A+*++Connect+VCC+of+the+BMP085+pressure+and+the+Si1145+UV+sensor+to+3.3V+%28NOT+5.0V%21%29%0A+*++Pressure+Sensor%3A+EOC+is+not+used%2C+it+signifies+an+end+of+conversion.+XCLR+is+a+reset+pin%2C+also+not+used+here%0A+*++The+environmental+sensors+use+I2C+to+communicate%0A+*++Connect+SCL+to+i2c+clock+%28Analog+pin+5+on+UNO%29%0A+*++Connect+SDA+to+i2c+data+%28Analog+pin+4+on+UNO%29%0A+*+%0A+*+Permission+is+hereby+granted%2C+free+of+charge%2C+to+any+person+obtaining+a+copy%0A+*+of+this+software+and+associated+documentation+files+%28the+%22Software%22%29%2C+to+deal%0A+*+in+the+Software+without+restriction%2C+including+without+limitation+the+rights%0A+*+to+use%2C+copy%2C+modify%2C+merge%2C+publish%2C+distribute%2C+sublicense%2C+and%2For+sell%0A+*+copies+of+the+Software%2C+and+to+permit+persons+to+whom+the+Software+is%0A+*+furnished+to+do+so%2C+subject+to+the+following+conditions%3A%0A+*+%0A+*+The+above+copyright+notice+and+this+permission+notice+shall+be+included+in%0A+*+all+copies+or+substantial+portions+of+the+Software.%0A+*+%0A+*+THE+SOFTWARE+IS+PROVIDED+%22AS+IS%22%2C+WITHOUT+WARRANTY+OF+ANY+KIND%2C+EXPRESS+OR%0A+*+IMPLIED%2C+INCLUDING+BUT+NOT+LIMITED+TO+THE+WARRANTIES+OF+MERCHANTABILITY%2C%0A+*+FITNESS+FOR+A+PARTICULAR+PURPOSE+AND+NONINFRINGEMENT.+IN+NO+EVENT+SHALL+THE%0A+*+AUTHORS+OR+COPYRIGHT+HOLDERS+BE+LIABLE+FOR+ANY+CLAIM%2C+DAMAGES+OR+OTHER%0A+*+LIABILITY%2C+WHETHER+IN+AN+ACTION+OF+CONTRACT%2C+TORT+OR+OTHERWISE%2C+ARISING+FROM%2C%0A+*+OUT+OF+OR+IN+CONNECTION+WITH+THE+SOFTWARE+OR+THE+USE+OR+OTHER+DEALINGS+IN%0A+*+THE+SOFTWARE.%0A+*++%0A++%0A++Adafruit+invests+time+and+resources+providing+this+open+source+code%2C+%0A++please+support+Adafruit+and+open-source+hardware+by+purchasing+%0A++products+from+Adafruit%21%0A%0A%0A++Adafruit+Library+Code+Written+by+Limor+Fried%2FLadyada+for+Adafruit+Industries.++%0A++BSD+license%2C+all+text+above+must+be+included+in+any+redistribution%0A%0A%0A++Adafruit+sensors+include%3A%0A++----%3E+https%3A%2F%2Fwww.adafruit.com%2Fproducts%2F1777%0A++----%3E+https%3A%2F%2Fwww.adafruit.com%2Fproducts%2F391%0A%0A%0A******************************************************************************%2F%0A%0A%0A%0A%23include+%3CCurieBLE.h%3E%0A%0A%0A%23include+%3CWire.h%3E%0A%23include+%22SHTSensor.h%22%0A%23include+%22Adafruit_BMP085.h%22%0A%23include+%22Adafruit_SGP30.h%22%0A%0A%0A%23include+%3CSoftwareSerial.h%3E%0A%0A%0A%23define+DT+__DATE__%0A%23define+TM+__TIME__%0A%0A%0A%23define+DEBUG+1%0A%0A%0A%23define+GP2Y_RXD++++%282u%29%0A%23define+GP2Y_TXD++++%283u%29%0A%23define+RELAYPIN++++%2817u%29%0A%0A%0Aconst+uint16_t+DEFAULTFANONTIME+%3D+++++3000%3B+++%2F%2F+3+seconds%0Aconst+uint16_t+DEFAULTSAMPLETIME+%3D++++20000%3B++%2F%2F+20+seconds%0A%0A%0Aconst+uint8_t+CO2Descr%5B7%5D+%3D+++++++++++%7B+%27C%27%2C+%27O%27%2C+%272%27%2C+%27+%27%2C+%27p%27%2C+%27p%27%2C+%27m%27+%7D%3B%0Aconst+uint8_t+TVOCDecsr%5B8%5D+%3D++++++++++%7B+%27T%27%2C+%27V%27%2C+%27O%27%2C+%27C%27%2C+%27+%27%2C+%27p%27%2C+%27p%27%2C+%27b%27+%7D%3B%0Aconst+uint8_t+DustDecsr%5B10%5D+%3D+++++++++%7B+%27D%27%2C+%27u%27%2C+%27s%27%2C+%27t%27%2C+%27+%27%2C+%27u%27%2C+%27g%27%2C+%27%2F%27%2C+%27m%27%2C+%273%27+%7D%3B%0Aconst+uint8_t+ConfigDecsr%5B6%5D+%3D++++++++%7B%27C%27%2C+%27o%27%2C+%27n%27%2C+%27f%27%2C+%27i%27%2C+%27g%27%7D%3B%0A%0A%0Aconst+uint8_t+IDVALCONFIRM+%3D+0xBC%3B%0Aconst+uint8_t+IDVALCHECK+%3D+0xCB%3B%0A%0A%0Aconst+uint8_t+PresentFmt1%5B7%5D+%3D+%7B%0A++0x06%2C+++++++%2F%2F+Format+%3D+6+%3D+%22unsigned+16-bit+integer%22%0A++0x00%2C+++++++%2F%2F+Exponent+%3D+0%0A++0x27%2C+++++++%2F%2F+unit+less+%28part1%29%0A++0x00%2C+++++++%2F%2F+unit+less+%28part2%29%0A++0x01%2C+++++++%2F%2F+Namespace+%3D+1+%3D+%22Bluetooth+SIG+Assigned+Numbers%22%0A++0x00%2C%0A++0x00%2C+++++++%2F%2F+ditto+%28high+byte%29%0A%7D%3B%0A%0A%0ABLEService+envSensingService%28%22181A%22%29%3B+%2F%2F+BLE+Environemtal+Sensing+Service%0A++++++++++++++++++++++++++++%0A%2F%2F+BLE+Humdidity+Characteristic+using+standard+16-bit+characteristic+UUID%0A%2F%2F+Unit+is+in+percent+with+a+resolution+of+0.01+percent+%28so+we+multiply+value+by+100%29%0A%2F%2F+Format+is+uint16%0ABLEUnsignedShortCharacteristic+HumidityChar%28%222A6F%22%2C+BLERead+%7C+BLENotify+%29%3B%0A%0A%0A%2F%2F+BLE+Pressure+Characteristic+using+32-bit+characteristic+UUID%0A%2F%2F+Unit+is+in+pascals+with+a+resolution+of+0.1+Pa+%28so+we+mulitply+value+by+10%29%0A%2F%2F+Format+is+uint32%0ABLEUnsignedIntCharacteristic+PressureChar%28%222A6D%22%2C+BLERead+%7C+BLENotify+%29%3B%0A%0A%0A%2F%2F+BLE+Temperature+Characteristic+using+standard+16-bit+characteristic+UUID%0A%2F%2F+Unit+is+in+degrees+Celsius+with+a+resolution+of+0.01+degrees+Celsius+%28so+we+multiply+value+by+100%29%0A%2F%2F+Format+is+sint16%0ABLEShortCharacteristic+TemperatureChar%28%222A6E%22%2C+BLERead+%7C+BLENotify+%29%3B%0A%0A%0A%2F%2F+BLE+Air+Quality+CO2+Characteristic+using+a+16-bit+characteristic+UUID%0A%2F%2F+Unit+is+in+degrees+ppm+with+a+resolution+of+1+ppm+%28so+we+multiply+value+by+1%29%0A%2F%2F+Format+is+uint16%0ABLEUnsignedShortCharacteristic+CO2Char%28%22AC02%22%2C+BLERead+%7C+BLENotify+%29%3B%0ABLEDescriptor+CO2Descriptor1+%3D+BLEDescriptor%28%222901%22%2C+CO2Descr%2C+7%29%3B%0ABLEDescriptor+CO2Descriptor2+%3D+BLEDescriptor%28%222904%22%2C+PresentFmt1%2C+sizeof%28PresentFmt1%29%29%3B%0A%0A%0A%2F%2F+BLE+Air+Quality+TVOC+Characteristic+using+a+16-bit+characteristic+UUID%0A%2F%2F+Unit+is+in+degrees+ppb+with+a+resolution+of+1+ppb+%28so+we+multiply+value+by+1%29%0A%2F%2F+Format+is+uint16%0ABLEUnsignedShortCharacteristic+TVOCChar%28%22AC03%22%2C+BLERead+%7C+BLENotify+%29%3B%0ABLEDescriptor+TVOCDescriptor1+%3D+BLEDescriptor%28%222901%22%2C+TVOCDecsr%2C+8%29%3B%0ABLEDescriptor+TVOCDescriptor2+%3D+BLEDescriptor%28%222904%22%2C+PresentFmt1%2C+sizeof%28PresentFmt1%29%29%3B%0A%0A%0A%2F%2F+BLE+Dust+Characteristic+using+a+16-bit+characteristic+UUID%0A%2F%2F+unit+is+in+ug%2Fm3+with+a+resolution+of+0.02+%28so+we+multiply+value+by+100%29%3B%0ABLEUnsignedShortCharacteristic+DustChar%28%22AC04%22%2C+BLERead+%7C+BLENotify+%29%3B%0ABLEDescriptor+DustDescriptor1+%3D+BLEDescriptor%28%222901%22%2C+DustDecsr%2C+10%29%3B%0ABLEDescriptor+DustDescriptor2+%3D+BLEDescriptor%28%222904%22%2C+PresentFmt1%2C+sizeof%28PresentFmt1%29%29%3B%0A%0A%0A%2F%2F+BLE+Config+Characteristic+for+fan+etc.+using+a+16-bit+characteristic+UUID%0ABLEUnsignedShortCharacteristic+ConfigChar%28%22AC05%22%2C+BLEWrite+%7C+BLERead+%29%3B%0ABLEDescriptor+ConfigDescriptor1+%3D+BLEDescriptor%28%222901%22%2C+ConfigDecsr%2C+6%29%3B%0A%0A%0Auint32_t+%0A++previousMillis+%3D+0%3B++%2F%2F+last+time+the+battery+level+was+checked%2C+in+ms%0A%0A%0Auint32_t%0A++oldPressureVal+%3D++++++++++0%3B++%2F%2F+last+pressure+value%0A%0A%0Auint16_t%0A++fanOnTime+%3D+++++++++++++++DEFAULTFANONTIME%2C%0A++oldHumidityVal+%3D++++++++++0%2C++%2F%2F+last+humidity+value%0A++oldCO2val+%3D+++++++++++++++0%2C++%2F%2F+last+CO2+value%0A++oldTVOCval+%3D++++++++++++++0%2C++%2F%2F+last+TVOC+value%0A++oldDustVal+%3D++++++++++++++0%2C++%2F%2F+last+Dust+value%0A++oldConfigVal+%3D++++++++++++0%3B%0A%0A%0Aint%0A++TempVals%5B3%5D+%3D+++++++++++++%7B0%2C0%2C0%7D%2C%0A++oldTempVal+%3D++++++++++++++0%3B++%2F%2F+last+temperature+value%0A++%0Abool%0A++FanAutoTriggerOn+%3D++++++++false%3B++++++++++%2F%2F+If+true+then+fan+will+trigger+upon+event%0A%0A%0A%2F%2F+Bosch+BMP085+Digital+Pressure+Sensor%0AAdafruit_BMP085+bmp%3B%0A%0A%0A%2F%2F+We+use+the+specific+temp+humidity+sensor+on+the+SVM30%3A%0ASHTSensor+sht%28SHTSensor%3A%3ASHTC1%29%3B%0A%0A%0A%2F%2F+This+is+to+measure+TVOC+and+CO2%0AAdafruit_SGP30+sgp%3B%0A%0A%0A%2F%2F+Use+software+serial+port+for+communicating+with+GP2Y1026.%0ASoftwareSerial+GP2Y%28GP2Y_RXD%2C+GP2Y_TXD%29%3B%0A%0A%0A%2F%2F+-------------------------------------------------------%0A%2F%2F+Event+Handler%0A%2F%2F+%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0Avoid+configWrittenHandler%28BLEDevice+central%2C+BLECharacteristic+characteristic%29+%7B%0A++%2F%2F+central+wrote+new+value+to+characteristic%2C+update+LED%0A++uint16_t+ConfigVal+%3D+ConfigChar.value%28%29%3B%0A++uint8_t+ConfigArr%5B2%5D+%3D+%7B%27%5C0%27%7D%3B%0A%0A%0A++ConfigArr%5B1%5D%3D%28uint8_t%29%28ConfigVal+%3E%3E8%29%3B%0A++ConfigArr%5B0%5D%3D%28uint8_t%29%28ConfigVal%29%3B++%0A%0A%0A++Serial.print%28%22Config+Characteristic+update%3A+%22%29%3B%0A++Serial.print%28ConfigArr%5B0%5D%2C+HEX%29%3B+Serial.print%28%22%3A%22%29%3B%0A++Serial.println%28ConfigArr%5B1%5D%2C+HEX%29%3B%0A%0A%0A++%2F%2F+0x03+is+for+fan+manual+control%0A++if+%28ConfigArr%5B0%5D+%3D%3D+0x03%29+%7B%0A++++if+%28ConfigArr%5B1%5D+%3D%3D+0x00%29+%7B%0A++++++Serial.println%28F%28%22FAN+Default+Settings%22%29%29%3B%0A++++%7D%0A++++else+if+%28ConfigArr%5B1%5D+%3D%3D+0x01%29+%7B%0A++++++Serial.println%28F%28%22FAN+ON%22%29%29%3B%0A++++++digitalWrite%28RELAYPIN%2C+HIGH%29%3B%0A++++%7D%0A++++else+if+%28ConfigArr%5B1%5D+%3D%3D+0x02%29+%7B%0A++++++Serial.println%28F%28%22FAN+OFF%22%29%29%3B%0A++++++digitalWrite%28RELAYPIN%2C+LOW%29%3B%0A++++%7D%0A++++else+if+%28ConfigArr%5B1%5D+%3D%3D+0x03%29+%7B%0A++++++Serial.println%28F%28%22FAN+AUTO+ON%22%29%29%3B%0A++++++FanAutoTriggerOn+%3D+true%3B%0A++++%7D%0A++++else+if+%28ConfigArr%5B1%5D+%3D%3D+0x04%29+%7B%0A++++++Serial.println%28F%28%22FAN+AUTO+OFF%22%29%29%3B%0A++++++FanAutoTriggerOn+%3D+false%3B%0A++++%7D%0A++%7D%0A++else+if+%28ConfigArr%5B0%5D+%3D%3D+0x04%29+%7B%0A++++Serial.print%28F%28%22Setting+FAN+Auto+duration+%28sec%29%3A+%22%29%29%3B%0A++++Serial.println%28ConfigArr%5B1%5D%2C+DEC%29%3B%0A++++%2F%2F+We+have+a+design+rule+here+that+max+is+up+to+30+seconds%0A++++if+%28%21ConfigArr%5B1%5D%29+%7B%0A++++++Serial.print%28F%28%22Note%2C+FAN+Auto+duration+can%27t+be+zero%22%29%29%3B%0A++++%7D%0A++++else+if+%28ConfigArr%5B1%5D+%3E+15%29+%7B%0A++++++Serial.print%28F%28%22Note%2C+FAN+Auto+duration+exceedded+max+15+seconds%22%29%29%3B%0A++++%7D%0A++++else+%7B%0A++++++fanOnTime+%3D+ConfigArr%5B1%5D+*+1000%3B%0A++++%7D%0A++++%0A++%7D%0A++else+if+%28ConfigArr%5B0%5D+%3D%3D+0x05%29+%7B%0A++++if+%28ConfigArr%5B1%5D+%3D%3D+IDVALCHECK%29+%7B%0A++++++Serial.println%28F%28%22Sending+Config+Confirmation%22%29%29%3B%0A++++++ConfigChar.setValue%28IDVALCONFIRM%29%3B%0A++++%7D%0A++%7D%0A%0A%0A%7D%0A%0A%0A%2F%2F+-------------------------------------------------------%0A%2F%2F+Setup%0A%2F%2F+%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0Avoid+setup%28%29+%7B%0A++pinMode%28LED_BUILTIN%2C+OUTPUT%29%3B+++%2F%2F+initialize+the+LED+on+pin+13+to+indicate+when+a+central+is+connected%0A++pinMode%28RELAYPIN%2C+OUTPUT%29%3B++++++%2F%2F+initialize+the+Relay+Output+pin%0A%0A%0A++%23ifdef+DEBUG%0A++while+%28%21Serial%29+%7B%3B%3B%7D%0A++Serial.begin%28115200%29%3B++++%2F%2F+initialize+serial+communication%0A++%23endif%0A%0A%0A++if+%28%21bmp.begin%28%29%29+%7B%0A++Serial.println%28F%28%22Could+not+find+BMP085+sensor%22%29%29%3B%0A++while+%281%29+%7B%7D%0A++%7D%0A%0A%0A++%2F%2F+Initialise+the+temp+%26+humidity+sensor+%28SHTC1%29%0A++if+%28%21sht.init%28%29%29+%7B%0A++++Serial.println%28F%28%22SHTC1+Sensor+failed+to+initialise%22%29%29%3B%0A++++digitalWrite%28LED_BUILTIN%2C+HIGH%29%3B%0A++++while+%281%29%3B%0A++%7D%0A++%0A++sht.setAccuracy%28SHTSensor%3A%3ASHT_ACCURACY_MEDIUM%29%3B+%2F%2F+only+supported+by+SHT3x%0A%0A%0A++if+%28%21+sgp.begin%28%29%29%7B%0A++++Serial.println%28F%28%22SGP30+Sensor+not+found+%3A%28%22%29%29%3B%0A++++while+%281%29%3B%0A++%7D%0A%0A%0A++%2F%2F+Start+the+software+serial+port+for+receiving+data+from+GP2Y1026.%0A++GP2Y.begin%282400%29%3B%0A++%2F%2F+Wait+a+second+for+startup.%0A++delay%281000%29%3B%0A++%0A++BLE.setLocalName%28%22AmbientMonitor%22%29%3B%0A++BLE.setAdvertisedService%28envSensingService%29%3B++%2F%2F+add+the+service+UUID%0A%0A%0A++%2F%2FAdd+customised+attributes%0A++CO2Char.addDescriptor%28CO2Descriptor1%29%3B%0A++CO2Char.addDescriptor%28CO2Descriptor2%29%3B%0A++TVOCChar.addDescriptor%28TVOCDescriptor1%29%3B%0A++TVOCChar.addDescriptor%28TVOCDescriptor2%29%3B%0A++DustChar.addDescriptor%28DustDescriptor1%29%3B%0A++DustChar.addDescriptor%28DustDescriptor2%29%3B%0A++ConfigChar.addDescriptor%28ConfigDescriptor1%29%3B%0A%0A%0A++%2F%2F+assign+event+handlers+for+characteristic%0A++ConfigChar.setEventHandler%28BLEWritten%2C+configWrittenHandler%29%3B%0A%0A%0A++%0A++envSensingService.addCharacteristic%28HumidityChar%29%3B+%2F%2F+add+the+Humdidity+characteristic%0A++envSensingService.addCharacteristic%28PressureChar%29%3B+%2F%2F+add+the+Pressure+characteristic%0A++envSensingService.addCharacteristic%28TemperatureChar%29%3B+%2F%2F+add+the+Temperature+characteristic%0A++envSensingService.addCharacteristic%28CO2Char%29%3B+%2F%2F+add+the+CO2+characteristic%0A++%0A++envSensingService.addCharacteristic%28TVOCChar%29%3B+%2F%2F+add+the+TVOC+characteristic%0A++envSensingService.addCharacteristic%28DustChar%29%3B+%2F%2F+add+the+Dust+Particulates+characteristic%0A++envSensingService.addCharacteristic%28ConfigChar%29%3B+%2F%2F+add+the+Fan+characteristic%0A++%0A++BLE.addService%28envSensingService%29%3B+++%2F%2F+Add+the+BLE+Environmental+Sensing+service%0A%0A%0A++%2F%2F+initial+values+for+each+characteristic%0A++HumidityChar.setValue%28oldHumidityVal%29%3B%0A++PressureChar.setValue%28oldPressureVal%29%3B%0A++TemperatureChar.setValue%28oldTempVal%29%3B%0A++CO2Char.setValue%28oldCO2val%29%3B%0A++TVOCChar.setValue%28oldTVOCval%29%3B%0A++DustChar.setValue%28oldDustVal%29%3B%0A++ConfigChar.setValue%28oldConfigVal%29%3B%0A%0A%0A++%2F*+Start+advertising+BLE.++It+will+start+continuously+transmitting+BLE%0A+++++advertising+packets+and+will+be+visible+to+remote+BLE+central+devices%0A+++++until+it+receives+a+new+connection+*%2F%0A%0A%0A++%2F%2F+begin+initialization%0A++BLE.begin%28%29%3B%0A%0A%0A++%2F%2F+start+advertising%0A++BLE.advertise%28%29%3B%0A%0A%0A++Serial.println%28F%28%22Bluetooth+advertising+and+active%2C+waiting+for+connection...%22%29%29%3B%0A++Serial.print%28DT%29%3B+Serial.print%28%22+%22%29%3B+Serial.println%28TM%29%3B%0A++%0A%7D%0A%0A%0A%0A%0A%2F%2F+-------------------------------------------------------%0A%2F%2F+MAIN%0A%2F%2F+%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0Avoid+loop%28%29+%7B%0A++%2F%2F+listen+for+BLE+peripherals+to+connect%3A%0A++BLEDevice+central+%3D+BLE.central%28%29%3B%0A%0A%0A++%2F%2F+if+a+central+is+connected+to+peripheral%3A%0A++if+%28central%29+%7B%0A++++Serial.print%28F%28%22Connected+to+central%3A+%22%29%29%3B%0A++++%2F%2F+print+the+central%27s+MAC+address%3A%0A++++Serial.println%28central.address%28%29%29%3B%0A++++%2F%2F+turn+on+the+LED+to+indicate+the+connection%3A%0A++++digitalWrite%28LED_BUILTIN%2C+HIGH%29%3B%0A%0A%0A++++%2F%2F+will+check+update+the+sensor+values+at+every+default+Sample+Period%0A++++%2F%2F+as+long+as+the+central+is+still+connected%3A%0A++++while+%28central.connected%28%29%29+%7B%0A++++++long+currentMillis+%3D+millis%28%29%3B%0A++++++if+%28currentMillis+-+previousMillis+%3E%3D+DEFAULTSAMPLETIME%29+%7B%0A++++++++previousMillis+%3D+currentMillis%3B%0A++++++++updateTempHumidityLevel%28%29%3B%0A++++++++updateCO2Val%28%29%3B%0A++++++++updatePressureVal%28%29%3B%0A++++++++prepareDustVal%28%29%3B%0A++++++%7D%0A++++%7D%0A++++%2F%2F+when+the+central+disconnects%2C+turn+off+the+LED%3A%0A++++digitalWrite%28LED_BUILTIN%2C+LOW%29%3B%0A++++Serial.print%28F%28%22Disconnected+from+central%3A+%22%29%29%3B%0A++++Serial.print%28F%28%22Start+Advertising+again...%22%29%29%3B%0A++++Serial.println%28central.address%28%29%29%3B%0A++++restoreToOriginalState%28%29%3B%0A++++%2F%2F+restart+advertising%0A++++BLE.advertise%28%29%3B%0A++%7D%0A%7D%0A%0A%0A%2F%2F+-------------------------------------------------------%0A%2F%2F+Functions%0A%2F%2F+%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%0A%2F%2F+restore+variables+to+original+state%0Avoid+restoreToOriginalState%28%29+%7B%0A++previousMillis+%3D+0%3B++%2F%2F+last+time+the+battery+level+was+checked%2C+in+ms%0A++oldPressureVal+%3D++++++++++0%3B++%2F%2F+last+pressure+value%0A++fanOnTime+%3D+++++++++++++++DEFAULTFANONTIME%3B%0A++oldHumidityVal+%3D++++++++++0%3B%0A++oldCO2val+%3D+++++++++++++++0%3B%0A++oldTVOCval+%3D++++++++++++++0%3B%0A++oldDustVal+%3D++++++++++++++0%3B%0A++oldConfigVal+%3D++++++++++++0%3B%0A++TempVals%5B0%5D+%3D+++++++++++++0%3B%0A++TempVals%5B1%5D+%3D+++++++++++++0%3B%0A++TempVals%5B2%5D+%3D+++++++++++++0%3B%0A++oldTempVal+%3D++++++++++++++0%3B%0A++FanAutoTriggerOn+%3D++++++++false%3B++++++++++%2F%2F+If+true+then+fan+will+trigger+upon+event++%0A%7D%0A%0A%0A%2F*+return+absolute+humidity+%5Bmg%2Fm%5E3%5D+with+approximation+formula%0A*+%40param+temperature+%5B%C2%B0C%5D%0A*+%40param+humidity+%5B%25RH%5D%0A*%2F%0Auint32_t+getAbsoluteHumidity%28float+temperature%2C+float+humidity%29+%7B%0A++++%2F%2F+approximation+formula+from+Sensirion+SGP30+Driver+Integration+chapter+3.15%0A++++const+float+absoluteHumidity+%3D+216.7f+*+%28%28humidity+%2F+100.0f%29+*+6.112f+*+exp%28%2817.62f+*+temperature%29+%2F+%28243.12f+%2B+temperature%29%29+%2F+%28273.15f+%2B+temperature%29%29%3B+%2F%2F+%5Bg%2Fm%5E3%5D%0A++++const+uint32_t+absoluteHumidityScaled+%3D+static_cast%3Cuint32_t%3E%281000.0f+*+absoluteHumidity%29%3B+%2F%2F+%5Bmg%2Fm%5E3%5D%0A++++return+absoluteHumidityScaled%3B%0A%7D%0A%0A%0A%0A%0Avoid+updateTempHumidityLevel%28%29+%7B%0A%0A%0A++bool+UpdateSGPHumidity+%3D+false%3B%0A++%0A++if+%28sht.readSample%28%29%29+%7B%0A++++uint16_t+humidityVal+%3D+sht.getHumidity%28%29+*+100%3B%0A++++TempVals%5B2%5D+%3D+sht.getTemperature%28%29+*+100%3B+++++++++%2F%2F+We+grab+this+too%0A++++Serial.print%28F%28%22RH+%25%3A+%22%29%29%3B++Serial.println%28float%28humidityVal%29%2F100.0%2C+1%29%3B%0A++%0A++++TempVals%5B1%5D+%3D+bmp.readTemperature%28%29+*+100%3B%0A++++%0A++++Serial.print%28%22Temp+%28BMP085%29+%3D+%22%29%3B+Serial.print%28float%28TempVals%5B1%5D%29%2F100.0%2C1%29%3B+Serial.println%28%22+*C%22%29%3B%0A++++Serial.print%28%22Temp+%28SHTC1%29+%3D+%22%29%3B+Serial.print%28float%28TempVals%5B2%5D%29%2F100.0%2C1%29%3B+Serial.println%28%22+*C%22%29%3B%0A%0A%0A++++%2F%2FCalculate+Average%0A++++TempVals%5B0%5D+%3D+%28TempVals%5B1%5D%2BTempVals%5B2%5D%2B0.5%29%2F2%3B%0A++++Serial.print%28%22Average+Temp+%3D+%22%29%3B+Serial.print%28float%28TempVals%5B0%5D%2F100.0%29%2C1%29%3B+Serial.println%28%22+*C%22%29%3B%0A++++%0A++++if+%28humidityVal+%21%3D+oldHumidityVal%29+%7B%0A++++++oldHumidityVal+%3D+humidityVal%3B%0A++++++HumidityChar.setValue%28oldHumidityVal%29%3B%0A++++++UpdateSGPHumidity+%3D+true%3B%0A++++%7D%0A++++%0A++++if+%28oldTempVal+%21%3D+TempVals%5B0%5D%29+%7B%0A++++++oldTempVal+%3D+TempVals%5B0%5D%3B%0A++++++TemperatureChar.setValue%28oldTempVal%29%3B%0A++++++UpdateSGPHumidity+%3D+true%3B%0A++++%7D%0A%0A%0A++++if+%28UpdateSGPHumidity%29+%7B%0A++++++sgp.setHumidity%28getAbsoluteHumidity%28float%28TempVals%5B0%5D%29%2F100.0%2C+float%28humidityVal%29%2F100.0%29%29%3B%0A++++++delay%28100%29%3B%0A++++%7D%0A++%7D%0A%7D%0A%0A%0Avoid+updatePressureVal%28%29+%7B%0A++uint32_t+PressureVal+%3D+bmp.readPressure%28%29%3B%0A++Serial.print%28%22Pressure+%3D+%22%29%3B+Serial.print%28bmp.readPressure%28%29%29%3B+Serial.println%28%22+Pa%22%29%3B%0A++PressureVal+*%3D+10L%3B%0A++if+%28oldPressureVal+%21%3D+PressureVal%29+%7B%0A++++oldPressureVal+%3D+PressureVal%3B%0A++++PressureChar.setValue%28oldPressureVal%29%3B%0A++%7D%0A%7D%0A%0A%0A%0A%0Avoid+updateCO2Val%28%29+%7B%0A++if+%28+sgp.IAQmeasure%28%29%29+%7B%0A%0A%0A++++uint16_t+TVOCval+%3D+sgp.TVOC%3B%0A++++uint16_t+CO2val+%3D+sgp.eCO2%3B%0A++++++%0A++++Serial.print%28%22TVOC+%22%29%3B+Serial.print%28TVOCval%29%3B+Serial.print%28%22+ppb%5Ct%22%29%3B%0A++++Serial.print%28%22eCO2+%22%29%3B+Serial.print%28CO2val%29%3B+Serial.println%28%22+ppm%22%29%3B%0A%0A%0A++++if+%28oldTVOCval+%21%3D+TVOCval%29+%7B%0A++++++oldTVOCval+%3D+TVOCval%3B%0A++++++TVOCChar.setValue%28oldTVOCval%29%3B%0A++++%7D%0A++++if+%28oldCO2val+%21%3D+CO2val%29+%7B%0A++++++oldCO2val+%3D+CO2val%3B%0A++++++CO2Char.setValue%28oldCO2val%29%3B%0A++++%7D%0A++%7D%0A%7D%0A%0A%0A%0A%0Avoid+prepareDustVal%28%29+%7B%0A++if+%28FanAutoTriggerOn%29+%7B%0A++++digitalWrite%28RELAYPIN%2C+HIGH%29%3B%0A++++delay%28fanOnTime%29%3B%0A++++digitalWrite%28RELAYPIN%2C+LOW%29%3B%0A++%7D%0A++uint16_t+DustVal%5B3%5D+%3D+%7B%27%5C0%27%7D%3B%0A++delay%2825%29%3B%0A++DustVal%5B0%5D+%3D+updateDustVal%28%29%3B%0A++delay%281000%29%3B%0A++DustVal%5B1%5D+%3D+updateDustVal%28%29%3B%0A%0A%0A++DustVal%5B2%5D+%3D+%28uint16_t%29%28float%28DustVal%5B0%5D%29+%2B+float%28DustVal%5B1%5D%29+%2B+0.5%29%2F2.0%3B%0A++Serial.print%28%22Ave+Dust+Value+for+BLE+is%3A+%22%29%3B%0A++Serial.println%28DustVal%5B2%5D%29%3B%0A++%0A++if+%28oldDustVal+%21%3D+DustVal%5B2%5D%29+%7B%0A++++oldDustVal+%3D+DustVal%5B2%5D%3B%0A++++DustChar.setValue%28oldDustVal%29%3B%0A++%7D%0A++%0A%7D%0A%0A%0Auint16_t+updateDustVal%28%29+%7B%0A++uint16_t+DustVal+%3D+0%3B%0A++static+int+frame%5B6%5D%3B%0A++uint8_t+cntr+%3D+0%3B%0A++bool+FrameEnd+%3D+false%3B%0A++bool+SensorRead+%3D+false%3B%0A%0A++while+%28%21SensorRead%29+%7B%0A++++while+%28%21GP2Y.available%28%29%29+%7B%0A++++++delay%285%29%3B%0A++++%7D%0A++++if+%28GP2Y.available%28%29%29+%7B%0A++++++int+b+%3D+GP2Y.read%28%29%3B%0A++++++if+%28b+%3D%3D+0xff%29+%7B%0A++++++++if+%28FrameEnd%29+%7B%0A++++++++++cntr+%3D+0%3B%0A++++++++++%2F%2F+Check+data+integrity+by+verifying+that+first+value+is+170%0A++++++++++if+%28frame%5B0%5D+%3D%3D+0xAA%29+%7B%0A++++++++++++%2F%2F+Verify+the+checksum.%0A++++++++++++int+testSum+%3D+frame%5B1%5D+%2B+frame%5B2%5D+%2B+frame%5B3%5D+%2B+frame%5B4%5D%3B%0A++++++++++++if+%28+frame%5B5%5D+%21%3D+%28testSum+%26+0xff%29+%29+%7B%0A++++++++++++++%2F%2FSerial.println%28F%28%22Dust+Monitor+Checksum+Failed%22%29%29%3B%0A++++++++++++%7D%0A++++++++++++else+%7B%0A++++++++++++++%2F%2F+Calculate+Vout+%3D+%28VoutH+*+256+%2B+VoutL%29+%2F+1024.0+*+5.0%3B%0A++++++++++++++float+Vout+%3D+%28frame%5B1%5D+*+256+%2B+frame%5B2%5D%29+%2F+1024.0+*+5.0%3B%0A++++++++++++++Serial.print%28%22Vout+%3D+%22%29%3B%0A++++++++++++++Serial.print%28Vout+*+1000.0%29%3B%0A++++++++++++++Serial.print%28%22mV%2C+%22%29%3B%0A++++++++++++++%2F%2F+Determine+%22a%22+coefficient+beforehand+by+plotting+output+voltage%0A++++++++++++++%2F%2F+on+Y+axis+versus+dust+density+on+X+axis+which+you+measure+using%0A++++++++++++++%2F%2F+a+reference+dust+monitor.+The+coefficient+will+be+different%0A++++++++++++++%2F%2F+depending+on+the+reference+dust+monitor+used+and+the+type+of%0A++++++++++++++%2F%2F+particulate+matter+you+are+testing+with.+By+default%2C+%22a%22+is+based%0A++++++++++++++%2F%2F+on+sensitivity+of+0.35V+per+change+in+dust+density+of+100ug%2Fm3.%0A++++++++++++++float+a+%3D+100.0+%2F+0.35%3B%0A++++++++++++++%0A++++++++++++++%2F%2F+Calculate+dust+density.%0A++++++++++++++float+dustDensity+%3D+a+*+Vout%3B%0A++++++++++++++Serial.print%28F%28%22dustDensity+%3D+%22%29%29%3B%0A++++++++++++++Serial.print%28dustDensity%29%3B%0A++++++++++++++Serial.print%28%22ug%2Fm3%22%29%3B%0A++++++++++++++Serial.println%28%22%22%29%3B%0A++++++++++++++DustVal+%3D+uint16_t%28100.0+*+%28dustDensity+%2B+0.005%29%29%3B%0A++++++++++++++SensorRead+%3D+true%3B%0A++++++++++++%7D%0A++++++++++%7D%0A++++++++++%2F%2Felse+Serial.println%28F%28%22Dust+Monitor+1st+Frame+Error%22%29%29%3B%0A++++++++%7D%0A++++++++else+FrameEnd+%3D+true%3B%0A++++++%7D%0A++++++else+%7B%0A++++++++if+%28cntr+%3C+6%29+%7B%0A++++++++++frame%5Bcntr%5D+%3D+b%3B%0A++++++++++cntr%2B%2B%3B%0A++++++++%7D%0A++++++++FrameEnd+%3D+false%3B%0A++++++%7D%0A++++%7D%0A++%7D%0A++return+DustVal%3B%0A%7D%0A%0A%0A%0A%0A%2F*%0A+++Copyright+%28c%29+2016+Intel+Corporation.++All+rights+reserved.%0A%0A%0A+++This+library+is+free+software%3B+you+can+redistribute+it+and%2For%0A+++modify+it+under+the+terms+of+the+GNU+Lesser+General+Public%0A+++License+as+published+by+the+Free+Software+Foundation%3B+either%0A+++version+2.1+of+the+License%2C+or+%28at+your+option%29+any+later+version.%0A%0A%0A+++This+library+is+distributed+in+the+hope+that+it+will+be+useful%2C%0A+++but+WITHOUT+ANY+WARRANTY%3B+without+even+the+implied+warranty+of%0A+++MERCHANTABILITY+or+FITNESS+FOR+A+PARTICULAR+PURPOSE.++See+the+GNU%0A+++Lesser+General+Public+License+for+more+details.%0A%0A%0A+++You+should+have+received+a+copy+of+the+GNU+Lesser+General+Public%0A+++License+along+with+this+library%3B+if+not%2C+write+to+the+Free+Software%0A+++Foundation%2C+Inc.%2C+51+Franklin+Street%2C+Fifth+Floor%2C+Boston%2C+MA++02110-1301++USA%0A*%2F]&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7607&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Micro Monster - Succulent Plants Monitoring System (part-6) Final Testing and Demo</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/micro-monster---succulent-plants-monitoring-system-part-6-final-testing-and-demo</link><pubDate>Sat, 17 Aug 2019 07:29:18 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:88ba9fc7-b9d0-4af3-b0d4-c95c731c6002</guid><dc:creator>balearicdynamics</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;A very good starting point, an inspiring source of ideas with solid bases. Really nice project.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Enrico&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7614&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Micro Monster - Succulent Plants Monitoring System (part-6) Final Testing and Demo</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/micro-monster---succulent-plants-monitoring-system-part-6-final-testing-and-demo</link><pubDate>Thu, 15 Aug 2019 09:01:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:88ba9fc7-b9d0-4af3-b0d4-c95c731c6002</guid><dc:creator>dubbie</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;This has been a very interesting project and I have enjoyed reading your blogs. I have a small cactus plant, which is many years old now, probably 10 or more, it is now maybe10 cm high, double it&amp;#39;s original size, it was a gift to my daughter - who strangely - did not take it with her when she left home. Still, I like it because it doesn&amp;#39;t seem to die. It just sits in the window getting hot and cold. Sometimes I water it, mostly I forget. I changed its plant pot to one slightly smaller a few years ago, which it seemed to like. I think a data logger like yours wold just show my neglect. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;One day I hope it will flower - assuming it does actually flower.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Dubbie&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7614&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Plant a seed and watch it grow...  (Part 2: grafting in a new branch called mDash)</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/plant-a-seed-and-watch-it-grow-part-2-grafting-in-a-new-branch-called-mdash</link><pubDate>Wed, 14 Aug 2019 16:20:39 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:07bce613-46ee-4af4-86e4-277d9b48a439</guid><dc:creator>genebren</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;BigG,&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;mDash looks pretty cool.&amp;nbsp; I really like the OTA as well as the RPC features that this software provides. This is something that I am going to have to keep in mind for future projects.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I worked on a large ZigBee project for an automated lighting systems, where we would have 100&amp;#39;s of nodes active in the building.&amp;nbsp; The OTA function was extremely slow as ZigBee traffic has a lot of overhead as it &amp;#39;echoes&amp;#39; messages throughout the mesh.&amp;nbsp; I rewrote a layer of our OTA process, where we could send incremental update files (diffs) so we could stitch together the new FLASH image, based on the existing files and the &amp;#39;OTA&amp;#39; changes.&amp;nbsp; This allowed us to be able to update the mesh with new firmware in a couple minutes, versus the several hours that it use to take.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Thanks for the great info!&lt;/p&gt;&lt;p&gt;Gene&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7604&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Plant a seed and watch it grow...  (Part 2: grafting in a new branch called mDash)</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/plant-a-seed-and-watch-it-grow-part-2-grafting-in-a-new-branch-called-mdash</link><pubDate>Wed, 14 Aug 2019 12:46:52 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:07bce613-46ee-4af4-86e4-277d9b48a439</guid><dc:creator>clem57</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Very good details and pictures.&lt;span&gt;[View:/resized-image/__size/16x16/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-07bce613-46ee-4af4-86e4-277d9b48a439/contentimage_5F00_4751.png:16:16]&lt;/span&gt; What camera did you use and some stats it you know them (focal point and MP)?&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7604&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: LoRa Experimental Environmental Sensors (LoRaXes) - Conclusion</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/lora-experimental-environmental-sensors-loraxes---conclusion</link><pubDate>Wed, 14 Aug 2019 09:49:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9060b5e8-7214-4dc9-8cc2-cfea9f9b5e2d</guid><dc:creator>mahmood.hassan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;TPL5110 based power control application will be great.&lt;/p&gt;&lt;p&gt;BME280 will also be a great choice. 3in1 digital sensor with pretty low power consumption.&lt;/p&gt;&lt;p&gt;Transmission range will be pretty short (p2p not sure about connection with a gateway) if it is placed inside a building. it can be increased by reducing the rate rate but not that much.&lt;/p&gt;&lt;p&gt;I will love to see the results if you manage to get a pretty decent range with this board.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The best GPS accuracy I have every seen is of SONY SPRESENSE board (~2m).&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7600&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: LoRa Experimental Environmental Sensors (LoRaXes) - Conclusion</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/lora-experimental-environmental-sensors-loraxes---conclusion</link><pubDate>Wed, 14 Aug 2019 03:01:23 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:9060b5e8-7214-4dc9-8cc2-cfea9f9b5e2d</guid><dc:creator>fmilburn</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;HI Ralph,&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This has been a great series with nice write-up and descriptions.&amp;nbsp; I will be very interested in how you get on with the TPL5100.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Frank&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7600&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: CatDogFoxBot # 7 : GridEye and Artificial Neural Network Combined</title><link>https://community.element14.com/challenges-projects/project14/remote-monitoring-control-devices/b/blog/posts/catdogfoxbot-7-grideye-and-artificial-neural-network-combined</link><pubDate>Tue, 13 Aug 2019 14:56:17 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a8a7b2e7-08dc-4805-9b03-a343aa68276c</guid><dc:creator>genebren</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Dubbie,&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Moving in the right direction.&amp;nbsp; It seems that you could sample the background (no pixels registering a higher that normal value) and calibrate the device so that it would give a more accurate score when an object is present.&amp;nbsp; Also, seeing movement (the blob changes position) could be used to also improve the detection score.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Good luck wrapping this up!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Gene&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=7597&amp;AppID=237&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>