This project was designed to overcome the problem of collecting adverse temperature data from a remote location (e.g., temperatures outside of a house or in a refrigerated room). The team used an 802.15 Xbee-based network to transmit the data, with the external sensor unit powered by a solar panel and backed by a battery for off-the-grid abilities. The internal display of the sensor data was provided by a Neo-pixel LED ring—emulating a thermostat.
For our project, we wanted to do something with color-changing LEDs, and there were a few options utilizing the hue lighting system. After much discussion, we came up with the Remote-Halo-Temperature-System, which sounds like a simple concept, but provided a few different challenges along the way.
The basic concept of our project was to create a system that would sense temperature and transmit the data to our Arduino, and use that information to turn on a set of LEDs that would change color depending on the temperature received. We researched the following: how to transmit the temperature data; how the temperature collection device operates outside; and how the LEDs needed to be set up.
To transmit the temperature data, we decided to use Xbee radios as they have the capability to, with the help of a breakout board and temperature sensor, collect the data we need and then transmit it to another Xbee radio set up inside. The relevant information can then be read off the indoor Xbee. They also have a communication range large enough to have one operating outside while another radio remains inside to stay connected to the Arduino and power. We learned the Xbee with temperature sensor can be connected to a rechargeable battery to give it power and with the help of a capacitor, that battery can be connected to a solar panel. The Xbee can also be programmed to sleep in specific intervals so it could enter sleep mode and only report once every five minutes which would improve battery life. In theory, these combined items would be able to power it until the battery itself goes out or a component breaks. To prolong its life, it can be placed in a weatherproof case to help protect it against rain, cold and animals that might tamper with it.
For the interior LEDs we had a couple different options. We could hook up an array of different colored LEDs that would light up depending on the data received, but it would be cluttered and look simple. We could use a LED bar but we would have had to order one and figure out how to set it up. There was also the potential for Hue lights to be used, but with another group using them it would have been difficult to test and we wanted to stand out compared to them. In the end, we settled on the Adafruit NeoPixel ring LED which is a circular array of LEDs that can be programmed with the use of Adafruit’s library to whatever specifications the user wishes and it is easy to connect with just a power connection, ground connection and a data in connection.
With the design issues out of the way, our next task was to build and configure the project. We started with the Xbee configuration. We changed the settings on them so they would communicate properly, but this caused many problems ranging from wrong values to bad radio to bad shields. Eventually, we managed to get the two radios to communicate. From there, we connected the Xbee radios to their individual systems. The outside radio with the breakout board and temperature sensor needed some solder work as well as the battery and solar panel components. The other Xbee radio needed to be connected to a shield and hooked up to the Arduino. Compared to the radios, this part of the project was fairly simple.
Next, we had to figure out the coding. The main coding issues were how to properly gather the right data from the information the Xbee radio was sending, how to read that data, how to convert that data into temperature and then finally implement it with the rest of the code. With a little bit of research, we were able to read the data from the correct parts of the data packets the main Xbee was receiving, and then we were able to run a couple simple conversions to get the proper temperature out of the data received. After that, we downloaded the libraries and did research on how the NeoPixel ring operated and what classes they have included in their libraries. Once we had these individual parts figured out, we combined them into one and tested to be sure we were getting the right temperatures and the lights were turning on accordingly. While there was a sufficient amount of research into the other parts of the project, of all the components, the Xbee radios gave us the hardest time.
Our project works by connecting one Xbee radio to a temperature sensor by soldering them both to a breakout board allowing the radio to read the data from the sensor. The radio then transmits this data in analog form to the other connected radio stationed inside. The inside radio is connected to an Arduino Uno that gathers power through the Arduino board and facilitates the Arduino to read the analog information the radio has received. The Arduino then takes this information and processes it to find what part of the data it needs to read to find the temperature, given in voltage. It then converts the voltage amount into Celsius and Fahrenheit using a conversion provided from the temperature sensor manufacturer. Using “if” statements, it turns the NeoPixel ring a specific color depending on the Fahrenheit temperature. For example, if the Fahrenheit temperature reading shows as 37 degrees, the NeoPixel will light up purple, or if it shows as 93 degrees, the NeoPixel will be red.
Besides completing a working project, our main goals were to demonstrate the working concepts of electronics, data collection, data transmission and data presentation, which we have done through the components of our project. We demonstrated the working concepts of electronics in two ways—the primary system with the Arduino can be connected inside to a normal power unit or to a computer to both run the code and supply power to the Arduino which in turn also supplies power to the Xbee radio connected to it. We demonstrated data collection through the use of the temperature sensor as it outputs voltage proportional to the temperature which can be recorded and is reliable. The Xbee radios demonstrate the data transmission concept since they send the data from one to the other at a range of about 300 to 400 feet, though higher end radios can transmit up to 40 miles. Finally, we demonstrated the data presentation in two ways. First, the serial output from the computer connected to the Arduino board presents the voltage, Fahrenheit and Celsius data, as well as the packet data, for the user to see. Second, although it has a small learning curve regarding what color relates to what temperature, the NeoPixel ring presents the temperature in the form of a color-coded LED so the user can generally know what temperature to expect outside just by looking at the color.
We decided in order to power the device we needed to find a source that was small and self-sustaining because the temperature sensor was going to be outside. So the idea of connecting it to a direct power source was out of the question because it is sometimes difficult to access a power outlet outside a house. We also wanted something to hold charge for a decent amount of time. Our first thought was a battery connected to the sensor to supply power, but unfortunately we felt a battery would die very quickly. Since it is an outdoor device, we thought it could be powered using solar panels, but if there was no sun, then there would be no power to the temperature sensor. Fortunately, this was just a temporary road block as we decided to use both ideas. We decided to use a rechargeable battery to power the device and a solar panel to charge the rechargeable battery. We chose a 3.3V rechargeable battery and a 5.0V solar panel. However, we discovered a problem as the solar panel would transmit at 5 volts and the battery would only hold 3.3 volts, and if directly connected, the solar panel would overload the battery. To alleviate the issue, we used a solar lithium polymer charger with a capacitor on it that would convert the 5 volts to 3.3 volts. Next, it was time to solder the components that were needed.
While our project does work as advertised, it can be improved upon. There are many different ways to modify or upgrade the existing project in the future. For example, a mesh of Xbee radios would allow a user to place a couple different radios with temperature sensors around various locations on a property with a light corresponding to each one and then an aggregate light. By placing one in a sunny area on the property and another in a shady area, the user would get a broader idea of the temperature outside knowing the temperature in both environments. Another idea would be to implement more of the code available for the NeoPixel ring. Since it is fully programmable, it could be made to tick up to the proper color—like a traditional thermostat—showing all the different colors before the current temperature and ending on the current temperature color. It could also be combined with the doorbell project, for example, and have the doorbell lights be the color corresponding to the temperature received. Since the NeoPixel uses RGB values to set the colors, it could be combined with the color reading project by adding extra code to set the colors to the user’s own specifications by holding up a color to use.
From the research we conducted, our project offers something new. We found a similar item only displays the numbers using an LCD screen or small monitor that is cluttered with unnecessary items. Our project offers the best of both worlds with a user-friendly interface with a more modern take on the temperature display. The ring lighting system engages the user to our product by keeping them informed about the temperature but also entertained by the visual light show they are delivered.
Unfortunately, at first our product would be somewhat expensive to make—approximately $100—but over time the price would be brought down to the competitors’ range from $20-$100 by making in bulk. Ideally, we want to hit the middle-mark so we can give the consumer a reliable product at an economical price.
Overall, this project was a good way for us to practice and implement the major concepts presented to us throughout the course of the semester. It was also a fun way to learn and apply these concepts and practices to real-world ideas and solutions to problems.