Skip navigation
1 2 3 Previous Next

In the Air Design Challenge

201 posts




We spend so much time taking care what food we consume and how it affects our health but rarely do we stop to think about the very air that we breath. Depending on our location anything from a simple walk to just sitting at our desk could be exposing us to many more unhealthy substances than we could have imagined. Some cities now report on smog as part of their daily weather reports and this trend is only becoming more prevalent as pollution becomes a bigger and better understood problem. Air quality both indoors and out is starting to become a more conscious issue that is becoming as important as knowing the day's weather.


While the number of air quality advisories may be on a downward trend in some areas, that does not mean the actual number of smog days has decreased. Looking at official data from Ontario shows almost consistently the number of advisories is less than actual smog days.


images.pngimages (1).png

PM2.5 Trend for different locations


Another report from the Toronto Star shows that looking at large areas may not and often does not show the full picture. This is all from a province that has prided itself on its climate change and pollutants stance. Data from the US shows similar trends.



Air quality variations across Toronto


The AirVisual air quality monitor is a product from an international team that is looking to help the public be more aware of the air quality in both their immediate and general environment. By producing a product that measures particles that fit in with the respiratory ingestible size and below, they are hoping to promote change through public awareness.


Air Quality Effect on Daily Life

Air quality affects us more than we realize and often more frequently than we would like to admit. From larger particles in perfumes to smaller particles in smog they all have their effects.



Common particles found in the Air


Indoor Air Quality

Populations that live further from the equator may spend a much as 90% of their time indoors. Staying indoors this much of the time, whether working in an office with a HVAC system or in our homes, we may believe we are immune from the pollutants and negative effects of bad air quality but this is not so.


The number and diversity of air pollutants is vast, even in indoor environments. According to the Canadian Centre for Occupational Health and Safety the list includes anything from gasses (CO2, VOCs, etc.) to various size particles (tobacco smoke, dust, fiberglass, etc). The specific effects of exposure to these gasses and particles can range from the common dry and irritated eyes and throat through to shortness of breath, dizziness and even nausea. These symptoms may not always point to one specific source or even to one form of sickness, the overall issue has been given various names such as Sick Building Syndrome (SBS) or Tight Building Syndrome (TBS), Building-Related Illness (BRI) and Multiple Chemical Sensitivities (MCS). Whatever it may be called the effects are very real and can have negative effects not just on health but on productivity as well a company's bottom line.


Outdoor Air Quality

While most people may think they understand and know what populations are in the air outside the reality is most of us don’t. For those of us that think we do, we may not fully understand implications of such air quality is.


We all understand that cars emit fumes and produce smog that is unhealthy, but what is smog and why is it so, we often do not know. Smog contains gases and fine particles. The gasses include such compounds as ozone (O3), Nitrogen Oxides (NOx), VOCs among others. The particles may be made up from anything including smoke, dust, even fine vapour particles.


The effects of this soup of chemicals and particles is varied but always negative. The most common effects of smog is eye and throat irritation but may include shortness of breath, asthma and even Chronic Obstructive Pulmonary Disease (COPD).



Correlation between particle size and respiratory penetration


AirVisual Node

For these reasons air quality is becoming more important and more relevant in our daily lives. And to help us better understand what air quality is the AirVisual Node provides real time data as well as forecasts to help plan when activities should be done and how air quality can be improved. The AirVisual Node uses AI to forecast future air quality based on past air quality samples. If the AirVisual Node is used outdoors then the software uses both weather data as well as data from more than 8000 environmental sampling stations around the world to give a three day forecast of air quality in your area.



AirVisual three day forecast


Besides the AI built into the the AirVisual software, to help forecast air quality, the real breakthrough with the AirVisual Node is the quality of the PM2.5 sensor compared to its price point. This is just one of four sensors built into the AirVisual Node and the team is hoping at some point to be able to add more to help predict other components of smog.



With the sensitivity and accuracy of the AirVisual Node there is a constant need for the unit to take into account the various factors that may throw of its readings. To ensure the unit stays as accurate as possible there are two calibrating sensors to help remove these known offsets.


2.5µm Laser Sensor

The AirVisual Node uses a laser sensor to count particles in the 2.5 μm range. The sensor has undergone a decent amount of testing and more than a year worth of R&D. The constant testing has proven that the the AirVisual Node has a very close correlation with expensive Beta Attenuation Monitors and well within the acceptable region.



Correlation between AirVisual Node and a Beta Attenuation Monitor


CO2 Sensor

As CO2 plays a part in describing the amount of ventilation or usable air is around us, the AirVisual Node has a CO2 sensor that measures between 400 ppm and 10,000 ppm. While the exact type and accuracy of the sensor has not been disclosed, it has been stated that the sensor is self calibrating and should remain accurate for at least 7 years.



The temperature sensor is rated to work between -10°C ~ 40°C which would allow the unit to easily work indoors and outdoors in most places around the world with little trouble. For those in the more northern regions (Canada, Greenland, Sweden, Finland, Norway, Russia, etc) they may be times of the year that the unit may not work acceptably as an outdoor sensor.



The humidity sensor has a range between 0 ~ 100% RH. This is standard for most sensors today and would allow for the AirVisual Node to be used in most if not all habitable environments. These last two sensors while giving relevant and real time data are important mainly due to their ability to help the laser sensor self calibrate in various environmental conditions.

Setup and Usage

The AirVisual Node is simple and easy to setup, once plugged in a setup wizard walks the user through connecting to the local WiFi network. Once this has been completed the AirVisual Node does the rest. Since the unit can be identified as an outdoor node the location is needed. If this mode is selected then the AirVisual Node uses the IP address to obtain its location removing any further setup from the user. If selected as in indoor node then no further setup is required.


The daily usage of the AirVisual Node is just as simple. With a 5 inch LED screen that is easy to read and understand the need for an app or PC to read the data is removed. That being said should you want to check your stats from a remote location this can be done from a free app on either you Android or iOS device.



AirVisual Node display


The AirVisual Node can also be used to test different areas around your environment as well as to determine if the measures you have taken to rectify your air quality are working. With a built in battery that should last approximately 5 hours, taking measurements around a home or office would be an easy task. In addition to this, the CO2 sensor has an update rate of 1 - 2 minutes and the PM2.5 becomes stable within 30 seconds. All these factors together allow the AirVisual Node to be used to evaluate your indoor space as well how corrective measures you have taken are working.


If the unit is connected to the outdoor network, then the unit pulls data from the AirVisual cloud data to give a three day forecast on air quality. This prediction uses over 80,000 data points from around the world. The air quality (AQI) readings are provided using the EPA standards making the readings easy to understand and consistent. While AirVisual has a map of world air pollution and has a lot of sites there does appear to be some simplification or missing sites from the map while others are added. In order to fill the missing air quality information in the world, AirVisual has already deployed some Nodes in countries that do not report air pollution information. Phnom Penh, Cambodia, got its first air pollution monitoring data from an AirVisual Node placed in the vicinity of the Olympic stadium.


Viability of project

While this may seem to be a very optimistic project, the expertise gathered by the team is both vast and impressive. With a number of working units in the field already the big question often is getting a product to market. After two years of R&D including how best to make the unit is such away that it is easy to manufacture the team is close to the finish line. One of their biggest assets at this point in the project is the experience and expertise in manufacturing the team has. With at least one member having 8 years experience in manufacturing the ability of the team to cross the finish line is greatly increased.




Follow @Kazzzzzzzzzzz

Follow Kas' blog


The full press release can be read by clicking here.
A big thank you to all who participated in the In the Air IoT Design Challenge, the partners, element14 and the wider public have been deeply impressed by the projects we've seen to help create a greener, cleaner world.
It was not an altogether straightforward matter to pick a winner: however, in the end, we've awarded the prizes to the following individuals and their projects.
The Grand Prize
The Grand Prize has gone to Christever del Rosario of New Zealand for his Carbon Footprint Monitoring System.  His project's final summary can be read by clicking here.
Christever will receive:
  1. 15 inch MacBook Pro with Retina Display
  2. U1273A OLED Multimeter from Keysight
  3. SimpleLink™ Bluetooth Smart®/Multi-Standard SensorTag (Manufacturer Number: CC2650STK)
Community Choice Winner
The Community Choice Winner by a clear plurality of votes was Inderpreet Singh of India for his Firecracker Aftermath Analyzer.  His project's final summary can be read by Clicking here.
Inderpreet will receive:
  1. 13 inch MacBook Air
  2. SimpleLink™ Bluetooth Smart®/Multi-Standard SensorTag (Manufacturer Number: CC2650STK)
Additionally, we felt that two other projects deserved recognition as Honourable Mentions; both engineers will receive a SimpleLink™ Bluetooth Smart®/Multi-Standard SensorTag as a prize.
Honourable Mention 1
Our first Honourable Mention goes to Ambrogio Galbusera of Italy for his AirMobile project. The project summary can be found by clicking here.
Honourable Mention 2
Our second Honourable Mention goes to Janis Alnis of Latvia for his Air Quality Monitoring In School Classes project.  The project summary can be found by clicking here.
Thank you once again to all the participants for their time, energy and effort: we look forward to more innovative and exciting design challenges in 2015 coming to life.

ita.jpgThe In The Air Challenge is running from September 22nd to final submission date of February 27th (at midnight).

Previous Activity:

Blog Summary #000 : In The Air Challenge 2014

Blog Summary #001 : In The Air Challenge 2014

Blog Summary #002 : In The Air Challenge 2014

Blog Summary #003 : In The Air Challenge 2014

Blog Summary #004 : In The Air Challenge 2014

Blog Summary #005 : In The Air Challenge 2014

Blog Summary #006 : In The Air Challenge 2014

Blog Summary #007 : In The Air Challenge 2014


NameSuper Awesome Blog Time
janisalnisIn-the-Air-Challenge: AirSchool Project Summary
dimonicNo Updates

No Updates


Carbon Footprint Monitoring - Outdoor Sensor Enclosure

Carbon Footprint Monitoring - AirVantage REST Library

Carbon Footprint Monitoring - Calculating Car Emissions

Carbon Footprint Monitoring - Mobile Application

Carbon Footprint Monitoring - Interpreting Collected Data

Carbon Footprint Monitoring - Smart Switch/Plug

Carbon Footprint Monitoring - Summary


AirMobile - 26 - Driving servo on BBB

AirMobile - 27 - Driving a servo on BBB (2)

AirMobile - Data map demo

AirMobile - 28 - Finalizing OpenHAB setup on BBB

AirMobile - 29 - Mounting the sensor

AirMobile - First test video

AirMobile - 30 - Bluetooth issues

AirMobile - 31 - Final demo

AirMobile - 32 - Conclusions


In the Air Design Challenge - Pollen & Allergen Sensing - Post 8 (InTheAir application)

In the Air Design Challenge - Pollen & Allergen Sensing - Post 9 (Project Snapshot)


No Updates


No Updates


[Air ex Machina] #07 Device Managment - OTA update

[Air ex Machina] Interlude


[Firecracker Analyzer] Obligatory Guide - Using Sierra Air Vantage with your Device

[Firecracker Analyzer] Creating a Wireless Sensor Node using TI's stuff.

[Firecracker Analyzer] Hot air assembly of TI Solar Harvester

[Firecracker Analyzer] Successful QFN Assembly

[Firecracker Analyzer] Testing the Texas Instruments BQ25504 - Success?

[Firecracker Analyzer] The Energy Harvester

[Firecracker Analyzer] Wireless sensor Node part II & Setting up a solar Fuel Booster Pack

[Firecracker Analyzer] Challenge Summary and Future Work

engsweeDust, Temperature and Humidity Monitor Chapter 12
happy1No Updates

[AirCare] InTheAir - Week 17: Surface Mount Soldering

[AirCare] InTheAir - Week 18: Finalizing Things

[AirCare] InTheAir - Final Summary


IOT - In the Air Challenge - Portable Field Tester - Not so final report


In The Air: Episode 8

In The Air: Episode 9: Pump Control

In The Air: Summary Post

Programing code and Hardware:

Like what I guess. I really stuck at the programing coding. It take me more time then the given. The given example code from the Sensirion cannot just implemented directly in the Energia . Example code from Arduino also not working in Energia it just show so many unclear error massage.

Link to the sample code for the Sensirion sensor

Example for the given sample code:

I also cannot found any sample code from Energia for the I2C or digital bus on CC3200. The example communication for Energia Wire | Energia.

There have 2 pair of I2C can be use on CC3200. Pin 9 and pin 10 or pin 39 and pin 40.



Some modification:


I have done some modification by placing a capacitor at the 3.3V supply as a buffer for the power bank switch over when doing charging and power up again from charging mode.

Due to the power bank behavior that shut down a while when charging and discharging the micro controller will restart every time I charging the power bank and unplug the charging.


Lately bombardment with power rack design and assembly project. So take some time to catch up the programing code.

Sorry all. Just joint new working environment and don't have enough time for this project.

I will try my best to get this project running and update the progress.

well, obviously I overestimated my free time when I designed the project concept, hence did not manage to complete the system. It was really fun though, and a great opportunity to play with some really cool stuff, like the TI launchpads, BBB, BitScope and various sensors. Also it was good excuse to upgrade my workbench equipment, so I am now better prepared for IoT hardware adventures.  I would not want to waste all the sensors I got, plus I do want to view and log air quality information for my environment,  so I will continue with the project in my spare time, and keep blogging about it.

I guess it’s now a good time to thank all sponsors, element14, as well as all the other contesters for their generous support   :-)

One of, the most important aspects for an IoT solution, in my point of view, is device management, and more specifically the ability to receive over the air firmware updates (OTA). If OTA works, all other problems can be potentially solved.

My architecture in the [Air ex Machina] project, consists of the following layers:

  • backend, cloud based system. (e.g. airvantage)
    • gateway - integration platform (e.g. openhab on BBB)
      • sensor device (e.g. freeRTOS application on CC3200)

Cloud based systems are remote managed/updated by design, so the challenge is on the other layers. I have explored various approaches for solving this problem without having to reinvent the wheel, and I think it’s interesting to discuss the following ones:

  • Xen hypervisor / Mirage OS
  • Eclipse Kura, Leshan, Wakaama and lwM2M is a really cool startup, trying to solve both device managment problems and simplify code push / application update, on RPi/BBB/NUC hardware. They use docker containers to encapsulate the application on the end devices. I have been experimenting with their platform and it works great. So the idea here is that one could launch openhab on BBB as a docker container, through resin, and hence efficiently manage the gateway remotely.

I did not have time to test it, but I am guessing that a combination of these two should work:

By the way, resin and openhab are both partners of canonical on Snappy Ubuntu Core, so I expect to see great things coming from there..

A hypervisor could also be exploited to provide device management, running openhab within a VM. I think, this idea could work very nice with Intel NUC and VMware’s Hypervisor, but when going on a BBB (or lower) virtualization might not be so easy. However it seems with Xen this could be possible, since it does run on ARMv7

Xen has a very rich ecosystem so there must be many management tools/cloud fronts that could act as the manager-server which controls the BBB with the VM containing openhab. I am guessing that when a small change in a file takes place, a new VM image will have to get pushed, which is a disadvantage, but possibly Mirage (and Irmin?), might be able help in reducing the VM to only the necessary components of the OS along with the application. There is an interesting relevant project called which might provide such solution in the future among with solving connectivity issues between devices. If this approach is adopted for IoT, there will definitely be an interesting debate on docker containers vs hypervisors :-)

Finally, one can solve device management for both gateway and microcontrollers, by utilizing some (new) Eclipse IoT projects which are designed exactly for that.

Here is a nice overview of what's available: End-to-end IoT solutions with Java and Eclipse IoT

Kura is a Java/OSGi-based framework for IoT gateways you should definitely check out. It basicly has (almost) all the features that I could ask, for remote managment. Has APIs for hardware communication (serial ports, GPS, watchdog, GPIOs, I2C, etc.), management of network configurations, communication with M2M/IoT Integration Platforms, and overall gateway management.

and there is support for beaglebone

Kura provides a web interface, were you can control your BBB and you can upload you application as an equinox OSGi bundle. So theoretically, if you load all the OSGi bundles of openhab in to it, you will be able to have openhab running within Kura. Not very practical though, so I hope Eclipse Smarthome takes Kura into account, (or vise versa) so we can have best of both worlds :-)

Going a layer lower at CC3200, two very promising eclipse projects which I am sure IoT developers will use in the future (when OTA becomes even more nessesary) are Eclipse Leshan & Wakaama. They are OMA Lightweight M2M (LWM2M) server/client implementations in Java and C.

This is how the Leshan web interface looks like:


So one can have Leshan running on BBB, and wakaama running on CC3200 compiled together with the end application. This provides usefull data of CC3200 to BBB, but more importantly a mechanism for over the air updates, to the CC3200.
Unfortunately, there is no CC3200 port of Wakaama yet, but it should not be that difficult to port, so I guess it’s only a matter of time.

I definitely recommend looking in to Benjamin Cabé's blog, for more details:

Hello everyone from Chrystal and Dale,


We want to thank everyone for this exciting and very big learning experience. Although we didn't complete 100% of what was planned, we will continue to work on this project until finished. For both of us it ended up being a lot more than we figured. From changing our overall plans by adding the whole biology part to the project made it harder to figure out how to do this. We did complete the centrifuge, microscope, some sensors, wireless wifi, recharging station by solar power and partial testing. We are disappointed we let down Element14, the members and all the companies backing this project. We will continue to blog about our updates until completion.


Here is the "Not so final update":


Chrystal was wanting to make a PCB cape for the BBB, so we decided on making one for developing. She searched for information and spent hours on CadSoft to create this board. She used an iron-on transfer that was printed out on a laser printer. After printing out about 7 sheets she finally got the layout correct (I turned out great). I am so proud of her accomplishments on this project, I feel her future will be great.






We got a better solar panel which gave us 11-12 Volts for recharging the batteries and running the centrifuge. I don`t have pictures of the recharge station and centrifuge as they are on a different camera and I couldn't`t download them today. I will upload missing photos shortly.




We attached a wireless keyboard to the BBB and Wifi as well as the 4.3" LCD screen. The Wifi picks up the CC3200 for transferring the sensor information. I still have to reprogram the LCD screen as I had to re-flash the BBB when a programming error I made wiped everything. I thought I bricked the BBB but luckly it wasn't that bad. I didn't like the demo LCD cape OS, it was basically just a demo and after working on it for a week I re-flashed it with Debian and had it like a regular monitor. Programming it to work like a monitor was quite a job and when I re-program it I will give details on how to do this (With lots of pictures for others interested)









The microscope works very well, unfortunately the one Chrystal made wasn't powerful enough to view bacteria. She got only 100X power and had issues on focusing it. I am real proud of how well she thought out the whole project with the biology idea involved. The new microscope that we bought made a huge difference, Chrystal uses it often to check out how dirty the water is. The centrifuge works good, a professional one would be perfect but the one we made is good for now. We have to have it running for 40 minutes for separation of particles. Each tube has to be weighed so each one is equal to keep it balanced.








This is the first half of the report as I need to retrieve the rest of the photos for the sensor demo and centrifuge information.


Again we apologize for not completing what we set out to do, we won't stop until we complete this as it is so important to us. Thank you all again for your support and backing of this project, it has changed our lives and the way we see the planet.


Dale and Chrystal Winhold

Previous posts:

In the Air Design Challenge - Pollen & Allergen Sensing

In the Air Design Challenge - Pollen & Allergen Sensing – Post 1 (Pollen Sensor)

In the Air Design Challenge - Pollen & Allergen Sensing – Post 2

In the Air Design Challenge - Pollen & Allergen Sensing – Post 3 (AirVantage Intro)

In the Air Design Challenge - Pollen & Allergen Sensing – Post 4 (Preparing the InTheAir Power Board)

In the Air Design Challenge - Pollen & Allergen Sensing – Post 5 (InTheAir Power Board)

In the Air Design Challenge - Pollen & Allergen Sensing – Post 6 (HDC1000 Sensor)

In the Air Design Challenge - Pollen & Allergen Sensing - Post 7 (WE Direkt PCB)

In the Air Design Challenge - Pollen & Allergen Sensing - Post 8 (InTheAir application)



Thanks to all the sponsors of this contest! Special thank you to doctorcdf who has been very helpful throughout this entire challenge.

I'm very happy that I got the chance to take part in this. I made contact to some great people who were always willing to help even though they compete too.

Now, as the title suggests, my intention with this post is to just take the current project snapshot, not to end it.

This project is not complete due to very bad estimation of the required time and some missing hardware components. Anyway, I plan to finish the project - I'll continue posting about the progress until I'm done. Next up will be the detailed post about InTheAir Qt application running on a BeagleBone Black without X server.


Components status


1. BeagleBone Black with BB_View43

BBB is used as a Control Panel with current sensor readings displayed in a full-screen C++ application. I spent way too much time on trying to make touchscreen work properly but I failed - pointer kept jumping to the right side of the screen by itself. It's probably some hardware fault so I decided that I will use the screen as a regular non-touch screen and make the kiosk mode application - this could still be nice.

I setup my BBB to run Debian Linux without window manager (or X server). Qt application writes directly into the framebuffer so X server is not required (The Virtual Framebuffer | Documentation | Qt Project). This is very convenient (no unnecessary resources are being used). The application itself is fully functional but I built Qt without OpenSSL so REST requests are failing so I need to rebuild Qt before I make the detailed post on this subject. Here's a short demo of my Qt application running on the BBB:

Video 1. BBB running my InTheAir application


2. CC3200 Launchpad with custom power supply board

This component of my project was looking very nice until I got to the part where I want to use solar panel for battery charging.

The board was designed using Eagle and made by Wurth Elektronik and I'm more than happy with how it turned out. Great job and thank you sleuz for your help!


Figure 1. Connected board with TI's HDC1000 and Sharp dust sensor


My board is using two TI boost converters with fixed output voltage for 3.3V (TPS61201 | Step-Up (Boost) Converter | Converter (Integrated Switch) | Description & parametrics) and 5V (TPS61202 | Step-Up (Boost) Converter | Converter (Integrated Switch) | Description & parametrics) rails on TI Launchpad. 5V supply is used for the Sharp dust sensor. This part of circuit works fine - if I drive this part of board with 3.8V input from a LiPo battery, I get proper voltages on TPS61201 and TPS61202 outputs.

This board also includes two headers one for TI HDC1000 and one for Sharp dust sensor. I followed shabaz's advice and included a OpAmp to put the dust sensor output in the MSP430 ADC input range. Since I wasn't thinking about this problem (input incompatibility) I designed the board without taking the OpAmp into account so I had to build a small board for that and place it in the middle of the dust sensor "cable". This isn't pretty but it works (especially that epoxy connector)!


Figure 2. Small board with OpAmp for level adjustment


One more thing that wasn't well considered was the choice of pin for the dust sensor output - I selected a pin that's being used for UART Rx and since I plan to use UART later I did a small PCB modification (using X-acto knife and a piece of wire) and changed the dust sensor reading pin.


Figure 3. PCB modification


BQ25504 is where the problem is. Everything looks nice, no shorted pads, everything soldered but this part doesn't give output when I connect a charged battery (charged to ~3.8V).

I decided to leave this for a while and work on other components until I get another sample from TI.


3. FRAM Launchpad

FRAM Launchpad will be used to operate the pollen sensor. My plan is to connect FRAM with CC3200 Launchpads via UART and feed the sensor readings to CC3200. Since I'm still waiting for some essential component for the pollen sensor I didn't spend much time on the Launchpad itself apart from testing it with Energia.

As for the pollen sensor, since I don't have means for pollen sensor calibration, I plan to provide readings of "low/medium/high" type.

I did some tests with detecting dust particles using a photodiode with built-in operational amplifier (OPT101P) but I think that the sensitivity is too low for my application so I ordered separate photodiodes and operational amplifiers and read some literature on photo-sensing. This will be in my focus until I complete the project.

I would like to express my gratitude to shabaz and michaelwylie for providing very useful information and resources.

Also, janisalnis's work on dust detection encouraged me to keep working on the pollen sensor.


4. Software

Software part currently consists of Energia sketch running on CC3200 and a viewer application. This sketch currently reads the temperature, humidity and dust levels but I plan to include the pollen level as well. My initial plan was to use the collected data to operate the air purifier and automatically close window(s) depending on the sensor readings. For this I included the C MQTT library ( into my Qt application and made some test with subscribing to AirVantage's SERIAL/tasks/messages topic - this worked as advertised but I didn't connect any actuator until today.



Even though this challenge came to its end, I plan to continue working on this project since the crucial component (pollen sensor) is not produced.


Thanks Element14, Wurth Elektronik, Texas Instruments, CadSoft, Eclipse and Sierra Wireless! It's been fun!

Previous post: In-the-Air-Challenge: Air filter checking with a home-built laser+photodiode dust counter

Roadtest winners:…

Community vote: Community Choice Poll - In the Air Challenge

Although invisible, air is the most important in our lives. We can survive days without food and water, but only minutes without breathing. So we should consider air quality seriously.

It was a great pleasure to participate In-the-Air-Challenge organized by Element 14 and supporting companies.

Compared to the previous roadtests this was a difficult contest as three kinds of microcontroller development boards were supplied.

Challenge was intended towards programming of internet connectivity of microcontrollers, and Farnell shop does not contain large variety of sensors that could be bought.

Blogging appears to be the most efficent way to summarize results online. Element 14 blog is very nice as people can post questions and visitor count is also displayed.

In-the-Air Challenge:  Texas Instruments MSP 430 FR5969 launchpad

In-the-Air-Challenge:  Air Quality Sensor Box

In-the-Air-Challenge: Dust counting with Beagle Bone Black and a webcam

In-the-Air-Challenge: A sheet of laser light for 2D visualization of dust flow

In-the-Air-Challenge: Spending the 500 USD parts budget

In-the-Air-Challenge: Measuring CO2 levels during lectures with EXTECH CO2 monitor

In-the-Air-Challenge: Exploring internally NDIR CO2 monitor

In-the-Air-Challenge: NDIR CO2 meter connected to IoT via TI CC3200 Wi-Fi connectivity board

In-the-Air-Challenge: Laser-based dust counter using a photodiode, IoT connected

In-the-Air-Challenge: Air filter checking with a home-built laser+photodiode dust counter

In-the-Air-Challenge: AirSchool Project Summary

Multisensor box

I have built a box that included many cheap sensors: temperature, humidity, light, sound, air pressure, dust sensor from Sharp and electrochemical CO2 sensor. It was assembled for test of air quality in school during classes and showed that it is important to open the window  during breaks. Probably graphing data is not so essential and it would be enough to just indicate with LEDs if air is good, normal or poor. Two school students wrote their scientific report in physics about air quality sensing and presented it at school. They got promoted to a regional contest.


IMG_3988.JPG        dustCleaning room.png



CO2, infrared

Large part of roadtest budget was spent to acquire infrared CO2 detector. That is more precise than electrochemical. I interfaced it to the IoT and measured air quality at office and during meetings. As IoT provider I used Xively, the one that I had learned to use previously. AirVantage seems to be more complicated to get started with.


co2.png    co2.png

Dust detector, laser based

In one blog post  I demonstrated how to set-up Wi-Fi and webcamera on a Beagle Bone Black and it could be used to take pictures of dust flying through a laser beam. Such pictures could be sent to a server for image processing using for example LabVIEW. It appears that we swim in an ocean of dust of up to 50 particles/cm3 beig equivalent to 50 Million in a m3. For humans most dangerous are particles in the 1...10 um size that get stucked in the capillaries of lungs. Only HEPA rated filters can stop small dust. HEPA filter gets visually dark after a month. It is also nice to be able to measure particulate matter content outside the window in the city and not to depend on data from govermental agencies reporting in the newspaper just the average situation.


Laser-based dust counter that I constructed using recently available high-power blue diode laser makes it more sensitive for detection of smaller dust. This dust counter helps also my university carier as we got presentation about laser particle counter accepted in EuroNanoForum conference that wiill take place in Riga in June 2015. I was contacted by a nanosensor-on-a-chip company Applied Nanodetectors with offer to collaborate in interfacing their sensors to the IoT.


dust in the lab.png


My former Swedish boss Prof. Sune Svanberg, a great expert in optical atmospheridc pollution measurements, was complaining that the sad thing is that one could only measure pollution, but not actually improve the air. So I am happy that this time could improve the air using HEPA filters. I have now an Electrolux anti-alergy-bag on the air inlet of the lab and sliced plastic film sheets covering the door isle and preventing dusty air to come in. Result is 10-fold decrease of dust content in the room.






In summary, here are all the devices built.

musu sensori.JPG

We have presented work done at COST EuNetAir workshop in Riga March 26-27, 2015. Presentation is attached.

Students have written their science project about air quality. Their work is attached (in Latvian).

Previous Content:

In The Air: Epidose 1: Introduction

In The Air: Episode 2 - Preparing for Surface Mount Work

In The Air: Episode 3 - Surface Mount Beginnings

In The Air: Episode 4 - Inductors

In The Air: Episode 5 - PCB Design

In The Air: Episode 6 - Getting Ready For PCBs

In The Air: Episode 7 - Still Getting Ready for PCBs

In The Air: Episode 8 - SMT Population

In The Air: Episode 9: Pump Control




The original concept for this project was to develop a wireless node capable of determining PM10 and PM2.5 levels. The PM10 and PM2.5 quantities are globally recognized as the standard for measuring air quality, and as such the demand for robust embeddable modules is increasing. A CC3200 launchpad would be coupled with a particle counting sensor and a pump to create the node, and it could be embedded into any unit a user desired for monitoring air quality. I'll take you through the project progression chronologically (First blog post introduced my idea and disclosed my credentials). Below is a picture of the Air Quality Node created from a custom Booster Pack PCB and a CC3200 Launchpad. Note, the sensor and pump are not pictured.


CC3200 Launchpad showing the Particle Counting Booster Pack (click to zoom).


The Beginning

I have experience working with surface mount components, but usually I have access to expensive equipment to use such as microscopes and manual pick-and-place machines. In this case, the budget was $500 and I only had a fine tip soldering iron to solder with. I did my initial pricing research for instruments and tools and came up with a list of items to purchase (second blog post):



I ordered these parts and I revealed to the community this same list. I did this because not everyone would have experience working with surface mount and I thought it would be useful. The items were delivered promptly to me. At this point you might be wondering why the surface mount equipment was even necessary. Texas Instruments was a sponsor and had a list of suggested components to use in the challenge. All of the components were only available in surface mount packages, so it was obvious that some surface mount work was likely to occur.



I started working on the Particle Counter Booster Pack schematic and PCB, and in the meantime I did a primer on using the surface mount equipment I ordered. I made it video based, showing how to remove components and how to reflow using solder paste. WURTH ELEKTRONIK was another sponsor in this competition, and provided some really great design kits for their product line of inductors. In fact, there were so many choices it required a decent amount of investigation to select the appropriate inductor. As such, I did a blog post on the selection of inductors and which I had chosen for my design. I was doing a mixed-signal design (analog and digital) so inductive isolation/coupling was necessary. I created the graphic below to aid in my selection, and I also talked about the different benefits of each inductor type.


WÜRTH ELEKTRONIK Inductor Selection (click to zoom)


As part of the inductor post I also talked about using inductors on PCBs for such things as filtering, ground bridging, supply coupling, and buck regulators. At this point I completed my PCB design. and of course, I blogged about it. This post included text, pictures, and videos. I explained some basic PCB design guidelines and how to practically separate analog and digital portions of the circuit board. I've reproduced a 3D rendering of the board below:


3D Render of the Particle Counter Booster Pack PCB (click to zoom)


Having finished the hardware design, I completed my bill of materials and placed my orders:

  • I placed an order from Newark (Element14) for my components with my remaining budget. This included a lot of the passive devices and one function generator. I'll discuss the generator later. This order was placed on Dec 4, 2014.
  • I placed a sample order all of the ICs from Texas Instruments, but I did it through Element14. Basically, Element14 requests the samples on my behalf. Since Texas Instruments was a sponsor of this competition I used only their ICs in the design. There were a total of 8 different ICs, and I asked for 5 of each. This order was sent out around Nov 29, 2014.
  • I placed an order from Wurth Elektronik for some headers, terminal blocks, and two capacitor design kits. I can't get an exact date for the Wurth request because I did it through the E14 website and the message just says "3 months ago".


I ordered my PCBs from Seeed studio because I had already depleted my budget, and the boards were only going to be $15 USD. Wurth's capacitor design kits showed up very quickly, and the PCBs arrived in a timely manner.



It was at this point that I started waiting for things to be delivered, and while I waited I worked on what code I could for the CC3200 Launchpad. I waited until the new year (2015) before I started inquiring about my orders because there is always a holiday rush to deal with. Then one day a box from E14 showed up! I opened the box, and didn't recognize any of the parts. I e-mailed E14 about it, and it turned out they were parts for Peter Oakes' power supply project. So, my order was resubmitted. In the mean time I contacted Wurth and according to FedEx the headers and terminal blocks were delivered, but I never received them. So, they sent a new batch out, and a few days later I received them. By this time it's late in Janurary 2015, and I'm getting worried that my parts from Newark and the samples from TI won't show up in time. Other competitors were having logistics difficulties as well, and it became apparent, through another competitors digging, that there was a bigger issue at play. This other competitor called Newark directly and found out his order had been cancelled because an item was no longer in stock, but he was never notified. I was curious, so I checked the availability of my items on Newark's website and, sure enough, after I ordered my components an item had gone out of stock. It was a function generator that I needed to simulate a particle sensor. I chose a different generator and sent in my order. A short while later the generator showed up, without any of the passives I ordered.


The TI samples never showed up, so Christian (from E14) ordered them directly from Newark and had them delivered to me. Only ones available from the US distributor could be delivered in a timely manner, which meant I had to sample the others personally. That usually means a lower limit on the sample quantity. It turned out OK except for the DAC7574, which is a higher cost item (about $10 USD). I could only get one of that particular chip. The ICs showed up, but I still was waiting for capacitors and resistors from Newark. I managed to get components from work so that I could populate the board, but a lot of the components are not the correct values or right size footprint.


Populating the Board

By this time it's about February 12, 2015. (almost two and a half months from when placed my orders). I populated the board and made a video about it, which was the topic of my 8th blog post. Populating went well, and while troubleshooting some initial problems I had a few inductors blow up (see below). The board was finally powered without any shorts occurring. And, before you ask, no, I do not own a current controlled power supply, but I guarantee it's the next thing on my list!


Inductor Graveyard and Modified Particle Counter Board (click to zoom)


Getting the Hardware Working

To measure particle counts one needs to flow particles through a sensor. For flow control I opted for a PWM approach, and I blogged about that in my 9th blog post. I took a video of the PWM signal that drives the pump and showed an interrupt based approach to modifying the PWM duty cycle. I needed to make a board modification as well, so I made a video showing how to make a modification without ruining the board as part of that blog post. See above for a picture of the board mods.


I was moving at a decent pace once I had my board populated, but once I started programming the I²C devices on my board I found out my DAC7574 is dead. Well, it's outputs are dead. I'm not sure what happened to it, but it's definitely dead. The device acknowledges every command sequence I send it, but the outputs will just not turn on. The code comes from a known working library, and I've decoded the data on an oscilloscope. The next step will be to replace the chip, but I have to wait for those original samples to show up.



Hopefully you've made it through my wall of text and pictures to this section. I figure it will take about 4 weeks to finish my prototype once I receive my parts. I've got the code in place that creates the wireless node, which is easy since TI practically provides it, and I have also developed all the code to process the particle counting and determine the PM10 and PM2.5 levels. Mainly, I have to replace the DAC and get the hardware working. If you are a sponsor reading this for judging purposes, I apologize for not completing the project in the the specified amount of time, and I wish you the best of luck while reading about everyone's projects.


Until next time ...

Previous posts for this project:





This is it, the end of element14's In the Air Design Challenge. After 18 weeks of working on my project, I'm glad it's over And even though I didn't create a spectacular solution, the journey has been an interesting one.



What I Learned


This has been a challenge full of new things for me:

  • Launchpads
  • Surface mount components and soldering
  • Solar energy
  • LiPo batteries




Launchpads. I haven't fallen in love with them just yet. Problems were encountered at the beginning of the project starting with the software (week 1), and during the challenge as well (week 11).


I might be biased, as I've mainly been using Arduinos until now. But for the projects I'm working on and the requirements I have, there hasn't been something I couldn't do more easily with them. With the time constraints and the stress of getting the project to work being over soon, I'll try to take the time and explore the Launchpads in a more relaxed way, hoping to discover their potential.


Surface Mount Components and Soldering


The only previous experience I had with surface mount components and soldering, was when I removed a tiny resistor on the Gizmo 2. That is also the reason why I didn't go straight for the more complex parts like the BQ25504 and other extremely small and complex components. Once I have mastered the basics, I'll move on to the more advanced components.


I enjoyed my first hot air soldering experience very much (week 17). Seeing the solder reflow and having the components move into place was fun to see.


Solar Energy


This is my first project using solar energy. And even though I used off the shelf components like the FuelTank Boosterpack (week 3), I ordered the components required to build my own charging circuit. This will however require more research on the subject and (a lot of) practice with surface mount soldering.


LiPo Batteries


Finally, with the FuelTank Boosterpack I also used LiPo batteries in a project for the first time. I immediately made the mistake of letting the battery discharge too much (week 6), a mistake I won't repeat any time soon. It is an interesting solution to make projects portable.




I came in contact with a lot of new technologies, and even if I do not (fully) master them yet, I consider it a personal achievement. Putting all frustrations aside, I'm glad I participated and got to learn all of this!



What I Made


Over the course of the challenge, I created two things:

  • a central unit consolidating all collected sensor data
  • a solar powered, wifi enabled, remote sensor


Central Unit


The central unit is based on the Beaglebone Black with a 7" BB View LCD touchscreen (week 2) running openHAB (week 5). The Beaglebone Black is connected to the MSP430FR5969 (week 16b) using their UART interfaces. The MSP430 is in charge of the timing critical task of sending signals over RF (433MHz) to power sockets in order to turn individual filtering systems on or off. The data received by the control unit is categorised, interpreted and trended over time.

A custom enclosure was built to house the LCD touchscreen, Beaglebone Black and MSP430FR5969 with RF transmitter (week 16).

{gallery:autoplay=false} Control Unit

photo 5.JPG

Enclosure: the control units enclosure assembled and painted

Screen Shot 2015-02-22 at 13.53.16.png

Home: the landing page of the application, providing an overview of the monitored rooms

Screen Shot 2015-02-22 at 13.52.57.png

Data Collection: collected data available per room, with a debug menu providing more detailed information

Screen Shot 2014-11-27 at 14.29.55.png

Graphs: graphs are available for every measured value in hourly, daily or weekly view

photo 3.JPG

Enclosure: enclosure in the making

photo 5.JPG

Enclosure: screen fits, but enclosure needs additional layers to contain all electronics

photo 3.JPG

Testing: testing the control of a fan using the MSP430FR5969 and a 433MHz transmitter

photo 2.JPG

Enclosure: making additional layers to create depth in the enclosure


Remote Sensor


The remote sensor is built around the CC3200 Launchpad. Combined with a Fuel Tank and a custom dust sensor Boosterpack (week 13), it offers dust level monitoring, temperature measurements, battery information and solar charging. The CC3200 uses MQTT (week 4) to pass all the monitoring data to the control unit.


{gallery:autoplay=false} Remote Sensor

photo 1.JPG

Remote sensor: Attached to window for solar charging

Soldering: my adventures soldering surface mount components for the first time

Screen Shot 2015-01-25 at 19.55.14.png

Boosterpack: board design

photo (4).JPG

Boosterpack: fully populated dust sensor boosterpack

photo 1.JPG

Remote sensor: my printer giving me trouble days before the end of the challenge

photo (3).JPG

Remote sensor: solar panel and window suckers in place

photo 2.JPG

Remote sensor: the "guts" of the sensor, with a separate chamber for the dust sensor


Thank You


Finally, I'd like to thank element14 and the sponsors (Texas Instruments, Würth Elektronik, Cisco, the Eclipse Foundation, Sierra Wireless and Keysight Technologies) for the opportunity to participate in this challenge, Christian for taking care of the orders and the logistical nightmares involved, Simon Leuz for his help with kits and questions and my fellow competitors and e14 members for their valuable feedback and help over the course of this challenge. Thank you!




Before anything else, I would like to personally thank the organisers and sponsors of this challenge, and kudos to doctorcdf for the great support and ironing out issues around some duties on the kits.  This challenge has been really an exciting and productive experience.


Previous Posts

Setting up the development environment

MSP430 Development in VisualStudio

CC3200 Development in Visual Studio

BeagleBone + node.js + Visual Studio


Carbon Footprint Monitoring - Architecture

Carbon Footprint Monitoring - Sensor Nodes

Carbon Footprint Monitoring - Data Flow


Carbon Footprint Monitoring - Hardware Design

Carbon Footprint Monitoring - Printed Circuit Boards

Carbon Footprint Monitoring - Power Supplies

Carbon Footprint Monitoring - Hardware Mods

System Components

Central Hub

Carbon Footprint Monitoring - BeagleBoneBlack Quick Recipe

Carbon Footprint Monitoring - CC3200 Remote Debug Console

Emission Sensor

Carbon Footprint Monitoring - Emission Sensor

Carbon Footprint Monitoring - Emission Sensor Firmware

Carbon Footprint Monitoring - Calculating Car Emissions

Outdoor Sensor

Carbon Footprint Monitoring - Power Meter CT

Carbon Footprint Monitoring - Outdoor Sensor Enclosure

Carbon Footprint Monitoring - Interpreting Collected Data

Smart Plug / Smart Switch

Carbon Footprint Monitoring - Smart Switch/Plug

Carbon Footprint Monitoring - Smart Switch/Plug Test

Carbon Footprint Monitoring - Remote Switch/Plug Mobile Test

Cloud Platform

Carbon Footprint Monitoring - [kNow] more AirVantage

Carbon Footprint Monitoring - AirVantage REST Library

Mobile Application

Carbon Footprint Monitoring - Mobile Application

Carbon Footprint Monitoring - Mobile Application Auto Launch


Around four months ago, this design competition was kicked off with the objective of creating a solution using Internet of Things technology to sense the environment we live in and how IoT can help us build a cleaner and less polluted world. 

Reflecting on the question:

"How would you use the amazing products below to help create a cleaner, more breathable world?" -from link


And so I thought one possible way to achieve this goal is for everyone's little contribution in reducing greenhouse gas emissions. 

Currently , there are already a number of initiatives and regulations promoting the reduction of carbon footprint that mostly adopted by commercial/industrial companies around the globe.  However, it should not stop there.  With all the advancement in technology, it is now more economical to build devices that can be installed for residential applications, such as the one being proposed here: a real-time carbon footprint monitoring system, to provide awareness about the households carbon footprint and is the first step towards the reduction of CO2 emissions.  Then we can all contribute to this goal of transforming our world into a healthier place to live in.


As with anything that is to be built, the blueprint for the system was first laid out, followed by foundation laying, then building the design closely to the initial plan but allowing for modifications and slight detours along the way.  This approach has always been the practice I've used in creating a working minimum viable product.  This approach will be discussed into a bit more detail in the next sections.


During the first few weeks of the challenge and while waiting for the development kits to arrive, I started off thinking about the high level architecture which is simple and straightforward.  The image below depicts the high level architecture of the system.  Also, during this period, and since knowing the key components of the system, the software development environment were installed and configured.



From the high-level architecture, the features for each component were drafted and again another thought process about how to build a solution given the constraints of the challenge, i.e. must use provided kits and tools, limited time and budget, and the like.  For this process, pen and paper works best for me.  


Hardware Design

Pen and paper design yields to some hardware blocks and from each block the key components are identified and checked if they would meet the requirements for the system.  Datasheets, application notes and reference schematic diagrams are used to draw the schematic and design the PCB.  While the waiting for the PCBs to be manufactured and delivered, the task was shifted into some software development.



Software/Firmware Development

The key components for the system (firmware) are from Texas Instruments: CC3200 Launchpad XL, MSP430FR5969 Launchpad, and the Beagle Bone Black.  This is the first time I've worked on the CC3200 and MSP430 devices.  The very good documentation and lots of sample programs made firmware development a breeze.  It was more like building a Lego house and merely selecting which block components are necessary.  For the firmware, this was mostly the GPIO control, ADC sampling, I2C and SPI sample programs.  However for the CC3200, the TCP Socket was the most useful as it was the key for the sensor node talk to the central hub (Beagle Bone Black).


For the central hub application, this is not the first time I've used the BBB, but feeling a bit adventurous, I decided to use node.js as the coding language.  This was outside my comfort zone but thought that this is one of the unique features of BBB and was a good opportunity to brush up some node.js skills.


For the cloud platform, Sierra Wireless' AirVantage was also new to me.  The documentation is comprehensive and very much helpful.  Although, I was stuck at one point and almost gave up on AirVantage, thanks to the guys, they helped me out resolved the blocking issue.  This was a really great experience with this whole challenge, and I commend both amgalbu and tomaja for reaching out.  To give back to the community, I wrote two helper libraries to easily connect, send and receive data to AirVantage.  These libraries and other source code put as attachments hopefully will become useful to someone at some stage.


Lastly, the mobile application was written to close the loop (of a minimum viable product).  During a series of test and use of the mobile app (CO2 emission tracking), an issue was identified such that manually launching the app may be forgotten and the trip will not be monitored or will be monitored late in the trip.  This was resolved by automating the process.  That is, using a pre-programmed NFC sticker placed in the phone holder, the mobile app is automatically launched and started when the phone is placed in the holder.  This was never planned out in the beginning but imo was a great feature creep. 


Challenges and Limitations

There are a lot challenges along the way that some of them ended up into frustration and uninspiring.  Challenges such as delayed components, hardware failures, missing information, buggy software and drop date deadline are typically experienced even in larger companies.  To me though, time management is the greatest challenge.  I have to balance the time between family, work, Christmas holiday, and this project.



I am quite happy with the outcome of this challenge.  With the limited time, I was able to build a basic yet functional prototype that would monitor my daily carbon footprint.  Knowing how much is the start for me to identify areas where I could reduce this footprint.  As an example on how to reduce the footprint, idling is a big waste of energy and is usually caused by heavy traffic.  Thus, it becomes more economical and more environmentally friendly to travel when traffic is light (already a known fact).  However, using historical data, we can create algorithms to "learn" and forecast when traffic is lighter in a given week.  i.e. Mondays always have heavy traffic from 7-9 but on Tuesdays through Thursdays, traffic is only heavy from 6:45 to 8:30.  We can then adjust our daily routines and be able avoid traffic on most days of the week.

Also, with the current data set recorded in the span of one week, I have few other ideas to make this even work better, i.e. base from the power usage data, it is possible to identify the activities inside the house at any given time.

Sierra Wireless' AirVantage is a big platform and I feel like I only scratched the surface and have not gone deep into its key features.


Not all features were implemented with the given time frame and even if they were, the system has a lot of areas which it can be improved on that are detailed below:

Emission Sensor Node

    • It would be nice to make use the MSP430, BLE and CO2 sensor as initially planned to measure actual emission.  Further research is needed to accurately relate the ppm value of the sensor to CO2 emission.
    • Install a digital fuel meter or connect through the CAN bus to accurately measure fuel consumption.
    • As an additional feature, using the recorded distance traveled and CO2 emission level (via sensor), the system can send notifications to the user that the vehicle must be serviced.

Smart Plug and Smart Switch

    • The power monitoring feature (via ACS712) needs to be implemented
    • Implement ambient light sensing for the smart switch implementation
    • Report humidity and temperature sensing to AirVantage
    • Re-spin a smaller hardware that will fit inside standard wall socket flush box

Outdoor Sensor Node

    • Re-spin hardware to support additional CT sensor (i.e. for monitoring hot water power usage)
    • Report rechargeable battery state/condition
    • Report BQ25504 charging status

Indoor Sensor

    • To be fully implemented
    • Add microphone and implement some sort of voice detection to identify presence

Central Hub

    • Create additional capes for the Beagle Bone Black to support additional communication mediums, i.e. ZigBee or RF, to support additional off-the-shelf sensors

Cloud Platform

    • This improvement is more for Sierra Wireless, some of them might be implemented but I haven't had the time to dig deeper, regardless these are nice to haves
    • It would be nice to support more data series on monitoring charts, atm, it can only do 3 series max
    • It would be nice to support other charts aside from the line chart, i.e support for bar graph and pie charts
    • It would be nice for charts to support presentation of DateTime or Timespan in charts
    • Possibly the most important one, it would be ideal if there are downloadable libraries that can be used for ease of interfacing with AirVantage.

Texas Instruments

    • My personal experience with TI has always been great and the plethora of documentation and samples is just the best, and can only think of a couple improvements
    • (1) have an alternative package for the HDC1000 sensor.  It being a BGA is a real challenge to for prototyping and reworking (if even possible without destroying the chip).  Another note about this sensor, I think at its price and performance ratio, it is one of the best out there.  Well done on this one TI!
    • (2) possibly a light-featured and cheaper version of the CC3200 that can compete strongly with other WiFI SoC just wishful thinking...


For the short period of time, a working Carbon Footprint Monitoring System has been designed and developed for this challenge and to end this post (but NOT the project, as development will continue outside the scope of this challenge)  I would like to answer the posed question:


"How would you use the amazing products below (TI, Wurth Electronics, Sierra Wireless etc) to help create a cleaner, more breathable world?"

By using the amazing and awesome products and parts in this challenge and build a carbon footprint monitoring system within the realms of IoT technology, can indeed help create a cleaner and more breathable world.  With this sort of system placed in every house across the globe, we will all be aware and become cautious on our carbon footprint.  Being aware is the first step towards changing our daily routines and habits.  The smallest reduction in CO2 emission will have a great contribution in this goal.


As an example, given the 7 billion world population, and if each individual would save roughly 1kg of CO2 per day (which is roughly about 6km of travel on a 12.5l/km car efficiency) results to 7 trillion grams (7 million metric tons) of CO2 reduction per day.  To put this into perspective, using the data presented in earlier post, if each ton roughly costs $336.01 then that would be roughly $2.352 quadrillion saved per day!!! That's a lot of zeros...



Air pollution has taken a toll on everything around us and we seldom realize how our action effect the environment. This project was aimed to create a system of wireless, self-sustained sensors that can monitor air quality out doors and in doors. The initial plan was to create a solar harvesting system that would power the node and it could connect to a gateway device that would intern send data from multiple nodes to the Sierra Air Vantage Cloud. More nodes could be added as per requirement. A secondary standalone unit was also proposed that could be used as an indoor sensor node and could provide indoor air quality information via the Air Vantage Cloud service. The sponsors Element14, Texas Instruments, Wurth Electronics, Eclipse IoT and Sierra Wireless provided support along the way. A diagram of the proposed system is given below.




Work Plan

The entire project was done in phases since it had some hardware and software components. On the hardware side, TI had proposed some components such as BQ25504, HDC1000, TPS62740 and TPS61200 to name a few for use in the design. The entire system was divided into submodules as explained in the proceeding sections. Additionally, I created some tutorial like posts which I will index in one of the proceeding sub-sections.


A list of submodules is as follows


  1. Energy Harvester Module based on the TI BQ25504 and a SuperCap
  2. Energy Efficient Wireless Sensor Node based on the TI CC110L and FR5969
  3. Gateway device Based on the BeagleBone Black
  4. Standalone Sensor Node based on the TI CC3200
  5. Connectivity with the Sierra Air Vantage cloud Service.

Not all modules are finished but there are lessons learned which will influence future work.


Additionally it took me a lot of time to research sensors as many sensors in the market are NOT suitable for outdoor usage as per manufacturer recommendations.


Energy Harvester Module based on the TI BQ25504 and a SuperCap


One of the requirements of the Design Challenge was that the sensor nodes should require least bit of human intervention. Additionally, we were instructed to use certain parts such as the BQ25504 which is a energy Harvesting IC and hence a module was designed around it and TPS62740 and TPS61200 which are voltage regulators. The deviation from conventional design was to use a SuperCap instead of a battery and use the energy efficient MSP430FR5969. Hence I designed a circuit using Eagle CAD, got the passives from Wurth Electronics, Element14 and chips from TI as samples. Some parts arrived around two weeks from the dealline leaving very limited room for testing. Additionally the BQ25504 was so small that soldering it was a challenge but completed successfully. The result is shown in the image below.




It works to some extent but I had some minor issues as shown in the video below.


I want to assemble some more boards and experiment before I move on and that will take some time mainly because I have run out of chips and will request TI to supply some more. I am sure I can get it to work and will update once I do.


This module is hence parly complete due to lack of time and timely delivery of some passives.


Energy Efficient Wireless Sensor Node based on the TI CC110L and FR5969


This part is quite simple and is mainly a software segment. I used the FR5969 Launchpad along with Air Booster Packs to fabricate a wireless sensor node. With my unsuccessful attempt at making the Energy Harvester, I moved to use the TI Fuel Booster Pack and connected a solar panel to it. The code was written entirely in Energia which makes prototyping quick. There was a requirement that the system should "Sleep" when not transmitting. For this LPM3 was used along with a timer and interrupts to make sleepy delays possible making the node more energy efficient.



A potentiometer is used in place of a sensor. As a bonus, I used the TI HDC1000 and soldered on by hand. The result is as follows.




I got it to work using a buspirate but since I have to use softI2C on the FR5969 there is still a bit of debugging to be done. Just a matter of time.


This module is complete with the absence of sensors which have yet to arrive. I hope the sensor module comes through as I would like to finish this project in the future.


Gateway device Based on the BeagleBone Black


A BeagleBone Black gateway is used to send data to the AirVantage Cloud for logging. I was able to put together a custom setup with a NodeJS script to connect to the AirVantage Cloud and I wrote a tutorial in the process so that it may be useful to people in the future. Additionally, I made an Additional launchpad a wireless receiver based on the CC110L and it captures all the information from wireless node and funnels it to the BBB via USART. This data is conditioned and sent via Javascript(NodeJS) to the cloud service. The image of the setup is given below.





This module is also complete to the original intention.


Standalone Sensor Node based on the TI CC3200


One of the targets was to have a standalone Wireless Node which did not require a gateway. This is useful where only a single node is required or nodes spaced far apart are required. I used the CC3200 LP to accomplish this along with a Fuel Booster Pack. Again since the sensors are not yet available, a demo system was constructed. The code was written in Code Composer Studio and the system can talk to the cloud via MQTT. Since this node is designed to be an indoor unit, the charging can be done manually. In this case, it happens via Wireless Charging using the Wurth Electronics Wireless Power Design Kit(which I got in a previous Design Challenge. The result is shown in the following images





The basic system is working but I am using the onboard temperature sensor and logging the Fuel Tank values of Time to Empty and Time to full via MQTT. The base is ready and working.


Connectivity with the Sierra Air Vantage cloud Service


I managed to connect to the Air Vantage Cloud via MQTT and wrote a little bit about it. There is not much to it, but I hope my writing helps other in the future.


Conclusion and Future Work

Lots needs to be done at this point since I blew up some parts and got the circuit working a bit too later. Time was a crunch factor and I have learned a few lessons on project management. I will be continuing this project at my pace post challenge deadline since I want to have a project like this added to my porfolio. I am waiting for sensors to arrive and will be requesting TI for more samples. The harvester will also get an upgrade from it's current 0.1Farad SuperCap to something bigger. Every component needs a better enclosure and I hope to have some more PCBs in the future which have sensor circuits on them.


Additionally, I am studying Eclipse KURA as a gateway platform but I am not using it until I understand it a bit better. I am an EEE engineer and so my Java skills are a bit limited.


At the time of posting this Summary, I am working on more tutorials as I work.


Tutorials and Other Posts


My posts for the duration of the challenge are as follows:


Work progress and Design Posts

[Firecracker Analyser] [week 0] Project Description

[FireCracker Analyzer]: Index

[Firecracker Analyser] [week 0] Sensor Research

[Firecracker Analyzer] [week 1] System Design and ReDesign

[Firecracker Analyzer]Brief update

[Firecracker Analyzer] Another small update


Tutorial on LCD

[Firecracker Analyzer] Messing with an I2C LCD and using the BUS PIRATE


Posts on the Energy Harvester

[Firecracker Analyzer] Making the Power PCB with Eagle, TI BQ25504, TPS62740 and TPS61200

Bus pirate meets the HDC1000 Texas Instruments

Assembly intro to the Solar Harvesting Board

[Firecracker Analyzer] Hot air assembly of TI Solar Harvester

[Firecracker Analyzer] Successful QFN Assembly

[Firecracker Analyzer] Testing the Texas Instruments BQ25504 - Success?

Energy Harvester prototype Demo based on the TI BQ25504


Posts on the HDC 1000

[Firecracker Analyzer] Testing the HDC1000 on my Own board

Bus pirate meets the HDC1000 Texas Instruments


Tutorial on the CC3200

[Firecracker Analyzer] (Another) Guide to getting started with the CC3200


Tutorial on using the Air Vantage Cloud and NodeJS

[Firecracker Analyzer] Obligatory Guide - Using Sierra Air Vantage with your Device


Posts on the Launchpads and CC110L Based Wireless sensor System

Demo of working CC110L Modules with different Launchpads

[Firecracker Analyzer] Creating a Wireless Sensor Node using TI's stuff.




I would like to thank Element14, Wurth Electronics, Texas Instruments, EclipseIoT, Sierra Wireless and all the sponsors for their support and this opportunity. Special Thanks to Dr. Christian DeFeo Sir, Shabaz Sir(Cisco), Benjanine Cabe(Eclipse IoT), Crystal Lam(Sierra Wireless), Simon Leuz(TI), Peter Oakes for their support and amazing content on the forums. Very Special Thanks to all the community members for their support because without it, I would have dropped this project in a dark day.


Hope to produce more useful content in the future.




Previous posts for this project:





I needed to work on a few things before tomorrow's final summary post and challenge deadline. Here's a quick overview.




The little boosterpack I soldered last week works! I am able to make more stable measurements using the CC3200's ADC. The Energia sketch was updated to make the conversion back to the actual voltage and then convert it to dust concentration (mg/m3) based on the graph provided in the dust sensor's datasheet.


Screen Shot 2015-02-26 at 20.54.55.pngScreen+Shot+2014-12-11+at+22.14.26.png




I've also been working on the OpenHAB config to get all monitored parameters nicely categorized and organized. A debug menu has also been foreseen, providing additional values for troubleshooting purposes.


Here are some code snippets to better understand how I've created my openHAB configs.


The items file contains the monitored parameters of a remote sensor using MQTT. In the item definition below, you'll see how every item takes the value from a specific MQTT topic. The item file can easily be expanded with new items for extra parameters or extra remote sensors.


Group All

String livingroom "Living Room" <sofa>
String office "Office" <office>
String bedroom1 "Bedroom #1" <bedroom>
String bedroom2 "Bedroom #2" <bedroom>

Number FT_Voltage_Period "Chart Period"
Number FT_TimeToEmpty_Period "Chart Period"
Number FT_StateOfCharge_Period "Chart Period"
Number FT_Temperature_Period "Chart Period"
Number DS_Density_Period "Chart Period"
Number DS_Voltage_Period "Chart Period"

Number FT_Voltage "Battery Voltage [%d mV]" (All) {mqtt="<[eclipseIot:cc3200-fvan/voltage:state:default]"}
Number FT_TimeToEmpty "Battery Time to empty [%d min]" (All) {mqtt="<[eclipseIot:cc3200-fvan/tte:state:default]"}
Number FT_StateOfCharge "Battery [%d %%]" <battery> (All) {mqtt="<[eclipseIot:cc3200-fvan/soc:state:default]"}
Number FT_Temperature "Temperature [%d <C2><B0>C] "<temperature> (All) {mqtt="<[eclipseIot:cc3200-fvan/temp:state:default]"}
Number DS_Density "Dust [%.2f mg/m<C2><B3>]" <dust> (All) {mqtt="<[eclipseIot:cc3200-fvan/ddens:state:default]"}
Number DS_Voltage "Dust Voltage [%.2f V]" (All) {mqtt="<[eclipseIot:cc3200-fvan/dvolt:state:default]"}

String Launchpad "Launchpad [%s]" (All) {serial="/dev/ttyO0"}
Switch Socket "Filter" <socket>



The sitemap structures all the data in the web interface. I opted for a view per room, with every room containing all the monitored parameters. Just like the items file, the sitemap can easily be expanded to contain more rooms.


Frame {
        Text item=livingroom {
                Frame {
                        Text item=FT_Temperature valuecolor=[>35="red",>25="orange",>15="green",<15="blue"] {
                                Switch item=FT_Temperature_Period label="Chart Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                Chart item=FT_Temperature period=h refresh=6000 visibility=[FT_Temperature_Period==0, FT_Temperature_Period=="Uninitialized"]
                                Chart item=FT_Temperature period=D refresh=30000 visibility=[FT_Temperature_Period==1]
                                Chart item=FT_Temperature period=W refresh=30000 visibility=[FT_Temperature_Period==2]
                        Text item=DS_Density {
                                Switch item=DS_Density_Period label="Chart Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                Chart item=DS_Density period=h refresh=6000 visibility=[DS_Density_Period==0, DS_Density_Period=="Uninitialized"]
                                Chart item=DS_Density period=D refresh=30000 visibility=[DS_Density_Period==1]
                                Chart item=DS_Density period=W refresh=30000 visibility=[DS_Density_Period==2]
                        Text item=FT_StateOfCharge valuecolor=[>79="green",>29="orange",<30="red"] {
                                Switch item=FT_StateOfCharge_Period label="Chart Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                Chart item=FT_StateOfCharge period=h refresh=6000 visibility=[FT_StateOfCharge_Period==0, FT_StateOfCharge_Period=="Uninitialized"]
                                Chart item=FT_StateOfCharge period=D refresh=30000 visibility=[FT_StateOfCharge_Period==1]
                                Chart item=FT_StateOfCharge period=W refresh=30000 visibility=[FT_StateOfCharge_Period==2]
                        Switch item=Socket
                Frame {
                        Text label="Debug" icon="debug" {



The rules files contains some logic to trigger actions depending certain values. For example, when the socket's state is set to ON or OFF a specific value is sent to the MSP430FR5969 Launchpad in order to control the fan with filter. Turning the socket ON or OFF is based on the measured dust concentration.


rule "Fan Control"
     Item Socket changed
      if(Socket.state == ON) {
                sendCommand (Launchpad , "#A")
        } else {
        sendCommand (Launchpad , "#U")

rule "Dust Filtering"
        Item DS_Density changed
        if(DS_Density.state > 0.1) {
                sendCommand (Socket, ON)
        else if(DS_Density.state < 0.05) {
                sendCommand (Socket, OFF)



The events log shows that the fan is triggered to filter when the dust density reached a value higher than 0.1mg/m3.


2015-02-26 21:38:30 - DS_Voltage state updated to 3.534719
2015-02-26 21:38:30 - DS_Density state updated to 0.489120
2015-02-26 21:38:32 - Socket received command ON
2015-02-26 21:38:33 - Launchpad received command #A


The other way around works as well. When the dust density has reached a normal level again, the filtering system is stopped.


2015-02-26 21:40:10 - DS_Voltage state updated to 0.780146
2015-02-26 21:40:10 - DS_Density state updated to 0.030024
2015-02-26 21:40:10 - Socket received command OFF
2015-02-26 21:40:10 - Launchpad received command #U


Screen Shot 2015-02-22 at 13.53.16.pngScreen Shot 2015-02-22 at 13.52.57.png




Finally, I've been making progress on the enclosures for both the control unit and the remote sensor. I milled additional "layers" for the control unit, which when combined, result in an enclosure capable of holding all the electronics involved.

photo 2.JPGphoto 4.JPG


For the remote sensor, I've been running into some issues with my printer. Because the enclosure is too big for my current print platform, I split the part in two. Printing the first part went well and the result was as expected. Things started to go wrong when printing the second part. For some reason, the printer's X-axis is skipping frequently. Why this didn't happen with the first print is a mystery. I've been troubleshooting the issue, but with time running out, alternatives might need to be found. On the bright side, I now know my printer is capable of handling huge bridges without support material, which is rather nice


photo 1.JPGphoto 2.JPG

The final enclosures will be revealed in tomorrow's final summary post (because I'm still working on them).




We're about to enter the last day of the challenge! The solution works, but there are still a few details I'd like to take care of before the final submission. See you tomorrow!

Today I took down the outdoor sensor to work on the smart plug and smart switch modules.  I've ordered a few more CC3200 modules but may not arrive in time, especially that this challenge ends tomorrow, but that does not mean further development stops with it as well.


Anyways, back to this post.  My goal is to be able to remotely turn on/off an appliance from my mobile, or be able to set some triggers, i.e. power usage goes above a specific threshold, that it will turn off non-critical appliances.  Another use case, would be to schedule when certain appliances are completely turned off (no more vampire appliances at night time).



Test videos embedded below.



(Above) testing using DHC tool to validate REST command.  (Below) testing using mobile application.


AirVantage Data



The stuff presented here is just the ground framework for the smart switch and smart plug modules.  Current monitoring and reporting using the ACS712 module needs to be implemented.  The module also needs to be enclosed, for safety as it controls AC supply.  Hopefully, the demo presentation is enough to illustrate the capabilities of the Smart Plug module.