An Intern Connecting to the Realm of IoT

I am a Computer Science Major at the University of Northern Iowa and I have been fortunate enough to come across this internship at DISTek Integration through my university’s job board. During my time as an intern, I have gotten to know many knowledgeable people here at DISTek and they have all been very helpful in addressing and answering any questions or concerns that I may have had. I was able to work on several hardware and software projects that have enabled me to grow my skillset as I continue down this field. One particular task that was assigned to me by my mentor, Kevin, was to do some research into Internet of Things and look into how it could potentially be used to innovate and expand future project possibilities.

“Internet of things” (IoT) is a term that has probably been brought up in conversation because it is a concept that has become increasingly ingrained in our day-to-day lives. In fact, there is a good chance that you might actually be wearing an example of one right now! If you are unfamiliar with such a notion, do not fret. Although there are many complexities surrounding IoT, simply put, it is a system of connected devices that you can remotely control and/or monitor through some form of user interface.

Before I get ahead of myself, I must admit that going into this topic, my knowledge was limited, so this is not meant to show that I am fully knowledgeable in the ways of IoT, far from it. However, after doing some research, as well as doing a bit of hands-on work, I do feel a little more confident in terms of what all the fuss is about with IoT’s capabilities and its inner workings, though I still believe I only scratched the surface in regards to realizing its full potential. I began my IoT journey by researching what is considered an “IoT” device. What it reveals is that they comprise of 4 main components:

  • The use of Sensors or Devices that are capable of gathering data.
  • Establishing the method of Connectivity between devices (Wi-Fi, Ethernet, CAN, etc.).
  • Data Processing, which gives one the ability to store data and process and put it through some data on the back end (server-side).
  • User Interface, present the data in a manner that the user desires or allows the user to control the sensors or activity of the device.

With these concepts in mind, the simple idea of being able to interact with an app or a website that would directly affect something from another part of the world seemed very intriguing. Naturally, the next step would be to look into the hardware that is necessary to “achieve the dream,” so to speak. I got my hands on a budget-friendly ESP8266 NodeMCU Wi-Fi Module, which is one of the many hobby IoT development boards tailored towards those with curious minds. I primarily used this board in my experimentation and, as the name suggests, it uses Wi-Fi as its method of connectivity, which is one of the more ideal methods of communication due to its range and accessibility. In addition, I had access to a few hobby-grade sensors that would aid in gathering the necessary data to make the entire process work. I used the Arduino IDE as the programming environment for developing these projects.

I looked into some projects on the web to try to follow along and take inspiration from in order to get a better idea of the physical elements of IoT. There are plenty of applications for systems that implement IoT, whether it be through preventative or predictive maintenance, asset tracking, or environmental monitoring, just to name a few. While all that sounds cool, as mentioned previously, my knowledge was based solely on the research that I have conducted and therefore was looking for simple “Hello World” level difficulty projects to get the ball rolling.

The first project that I pursued and completed was remotely changing the state of an LED (On/Off) through a button on a locally hosted site. As simple as this may sound, it involves many different elements to get it to work properly, including knowing HTML, required libraries, a firm grasp of API’s, and basic networking protocols. Luckily, the examples I followed went into detail and provided the essential information in regards to how the IoT board communicates with various servers, websites, or other devices. I was impressed with what I was able to accomplish and wanted to do another project that had a little more of a practical aspect to it. After pondering a bit, I set up a room security system where if the sensor in a room was tripped, it would alert the user through a message on their phone that someone or something has entered the room. I was able to get this set up and working using a service called PushBullet, and used its API to send a message whenever an event occurred on the ultrasonic sensor.

I’ve further challenged myself to work on an IoT Home Automation project that entails an IoT controlled thermostat. While this project is still in development, it will consist of a site that is accessible anywhere and will display the updated temperature and humidity values of a room. I intend to either configure the IoT device to autonomously turn a fan on or off when a certain temperature and/or humidity threshold value is met or allow the user to manually turn on/off the fan as they please. This project will deal with an aspect of IoT called Machine to Machine communication (M2M), where it entails communication between devices that does not require human intervention.

Some of the challenges that I experienced within my IoT journey boiled down to not being patient and dedicating the allotted time required to educate myself on what I did not know. I was eager to build and program something cool without the proper foundation and that ended up causing me to face reality and realize that I needed to take a step back. There was a lot of networking concepts that were necessary in understanding the nuts and bolts of Internet of things. Rummaging through a plethora of IoT information and determining what was the most important to know was a struggle, but I was able to hone in on the essentials for the goal that I was hoping to achieve. Specific challenges included understanding REpresentational State Transfer API (REST API) and attempting to understand how that lightweight software architectural style plays into the communication process between devices. Configuration and hardware setup was another hurdle because the software and hardware had to be configured in the right way and if it was not, I would receive a screen full of errors that could have easily been remedied had I just changed one setting or ensured a secure connection somewhere else on the IoT Device.

So what can be gained from all of this? Well, there is a lot more that goes into IoT than just connecting devices to one another through the internet. For me, what I learned from this research opportunity was overcoming some of the challenges that I faced. I learned to be more patient in the learning process and that it is okay if not everything falls into place right away. It is also a process that requires perseverance and an open mind. IoT is making its way to become the norm and it is predicted that by 2022 around 29 million connected devices will be implemented in the form of smart appliances, wearables, cars, you name it. As more and more devices are becoming more and more connected, it begs the question of the potential downsides to IoT, but that is another topic for another time. While it may be obvious to some, there are risks involved with having devices being dependent on the internet. However, as it currently stands, IoT is able to automate everyday tasks, improve efficiency and in the end save on costs. From a business perspective, providing IoT products like these would be of great benefit to have as they improve the quality of work and has plenty of room for innovation, which is always something to strive for to ensure a brighter future for not only the company, but for the world.