IoT in the Dorm Rooms
by Exosite, on January 15, 2018
As an intern at Exosite, I’ve gotten the opportunity to work on many different projects, using many different devices. One of my favorite projects I worked on while at Exosite was my cloud-connected lamp. After completing Exosite’s Arduino library, I was asked to create a demo for the newly updated code. I decided to make a demo that was fairly simple, but interactive and fun. After a bit of brainstorming, I came to the conclusion that I could make a connected lamp out of an Arduino Yun and an Adafruit LED strip.
I found that connecting a device to Murano, and developing an application to control it could be broken down into five simple steps: connect your product, develop product software, develop an application, troubleshoot, and bask in the glory of IoT.
Connecting Your Product:
As with any device connecting to Murano, I started off by creating a product. A “product” can be loosely defined as what is being connected to the Internet (e.g., a device, sensor, or gateway). Connecting my device consisted of me finding my Arduino’s MAC address and running provisioning commands through the Arduino. Once connected, I ran some tests to make sure data was being received by sending data to the Arduino through Murano and printing it back out through the serial port.
Developing Product Software:
The next step was developing a system to control the LED’s from the Arduino. First, I downloaded a Neopixel library through the Arduino IDE that allowed me to write code for the LED’s. I found that in order to control the LED’s from the cloud, I needed variables for the RGB values, brightness, and a toggle for on/off. Keeping this in mind, I moved on and using Murano, created an application for my lamp.
Developing an Application:
An ‘application’ (In Exosite’s terms) are the way in which you can enable your end users to monitor, interact with, and receive value from your connected products. In other words, it’s the software that the user interacts with.
I linked the product I had already created to my application, allowing for a connection to my Arduino (my product), and in turn, to the LED’s. Next, I had to create an application. To do this, I decided it would be best to create a website.
To keep things simple, I created a basic website that included one toggle switch, a slider (for brightness), and three text boxes to fill in RGB values.
After finishing the front-end work of my website, I opened Murano and created routes for my website to connect to. Within these routes I wrote code (in Lua) that would send data directly to my product (in this case my Arduino).
Satisfied, with my work, I sent out a link to my website to some friends of mine, as well as other Exosite employees, and immediately found issues.
All of a sudden, the LED strip on my desk was going crazy. Flashing from yellow to purple to green, and every color in between. It was turning off and on, and flashing to different brightnesses. All things considered, it was a nightmare, and I’m sure more than a couple people around me felt the same. The excitement died down the next day, and I was able to devise a system to lock the lamp.
I created a module in my Murano application that stored a passkey, and if I ran that module using the passkey, it would lock the lamp, preventing any future changes to its status. With this, I also created an administrator function that if ran with the passkey, would change the status of the lamp when locked.
With some extra time on my hands, I started creating scripts to run on my Arduino. I created an extra variable, that if certain codes were entered in to, the lamp would start to run fun scripts such as pulsing different colors or having rainbows run across the strip.
To wrap everything up, I soldered together the power cords running to the LED strip and the Arduino and ran them to one main power supply. I then encased my contraption in a paper lantern I picked up at a local craft store and called it a day.
Basking in the Glory of IoT:
I presented my lamp during one of Exosite’s famous “demo days” and was incredibly satisfied with its outcome (mostly because it seemed to work during the demo). My IoT craft is now hanging in my dorm room at Iowa State University. It has proved its usefulness in providing both amazing mood-lighting and hours of entertainment to my roommate. This experience gave me an opportunity to scratch the surface of connected devices, and has opened my eyes to the possibilities of what IoT can be. I worked on a small scale to create something fun, but this technology has real-world applications. Being able to control objects remotely can translate to many different industries, enabling companies to take their business to the next level.
To learn more about connecting your device, take a look at our docs site for examples and additional documentation.