What’s Internet of Things all about?

Let’s see what Google has to say about this.

The Internet of Things is the extension of Internet connectivity into physical devices and everyday objects.

Blah, blah …

In layman’s terms, the Internet of Things represents a bunch of devices with a connection to the internet, where the types of devices can be one of these: sensors, actuators, microcontrollers, single-board computers (or let’s just call them “minicomputers”).

Sensors and actuators have the job to interact with the world. Sensors deliver information to the microcontroller which in turn can forward it to a place where it can be analyzed. The data can be sent either directly to a web service somewhere on the internet or indirectly – through a gateway which is usually a minicomputer.

Fundamentally, the idea of IoT is to automate everyday life and to deliver simplicity, comfort, efficiency by making everyday objects digitally represented.

“If you think that the internet has changed your life, think again. The Internet of Things is about to change it all over again!” — Brendan O’Brien

Sounds boring? Well, just wait …

This image illustrates two microcontrollers @ Credits: Louis Reed

Why is IoT so beautiful?

A lot of very interesting and innovative projects live out there. Let’s name a bunch of IoT segments with some of their corresponding projects.

Connected Car

You can have your car’s status embedded in your mobile phone. How cool is that? What if you forget if you locked the car or not? Well, you can always check through your mobile phone if it’s locked or unlocked and perform a remote locking/unlocking action if needed. Additionally, you can check the car’s location, remaining petrol, status of headlights, status of signal lights, etc. Furthermore, you can have some security features based on location, for example – push notifications and alerts on the mobile phone whenever the car is unlocked and you’re not near it (basically, it means you’re being robbed) and many, many more useful use cases. If you love your car, you’ll find this pretty cool.

Smart Home

This is another interesting field of IoT. Smart home includes some of the following projects.

Smart Boiler – Boilers at home often happen to have little to no hot water. Imagine you’re somewhere out and you want to shower when you return home. In order to avoid waiting for hot water, you’ll have to call someone at home to turn the boiler on, but what happens if the person you’re calling is also somewhere out? You’ll have to turn on the boiler by yourself when you return to your house. Afterward, you’ll sit and wait for hot water while your cat is nearly dying from your stench, begging you with frequent meows to go and take a shower, because of that boilers can be designed to be accessed over the internet. This way, with the help of your mobile phone, you can check whether there is enough hot water or not and perform a remote action based on that. Some of the remote actions can be: turn boiler on; turn boiler off; schedule 1 hour of water boiling after 2 hours from now; etc.

Smart Door Locks – It’s very convenient to have your doors at home unlock automatically when they sense you’re around. This removes the need to search for keys which is very useful when you have a ton of groceries in both hands. And this makes the chicks go wild so it’s a 10/10 must-have. The door can sense you by your phone through Wi-Fi, Bluetooth or even NFC.

Wi-Fi Bulbs – Yes, it sounds stupid, but if you’re lazy enough this can be useful.

Connected Building

Elevators – Elevators can be easily monitored and maintained with the help of IoT devices and AI. This solution consists of continuous elevator sensor data delivery to the cloud and data analysis there. It ensures excellent elevator health status and removes the need of regular maintenance which can cost money. Maintenance will be done only at the moment when a problem in an elevator is predicted by AI.

Parking slots – Free parking spaces in a building can be tracked and shown to visitors to save them time from roaming around searching for a free slot. This is a perfect scenario for a shopping mall.

Smart city

Traffic lights – Imagine a city in which the traffic lights can regulate themselves based on which roads are more congested. Every one of us has experienced a meaningless wait at a traffic light, and yes ... it’s annoying. It would be wonderful if the traffic lights can sense which roads need to be on a red light and which don’t and regulate lights according to that. This can be accomplished with the help of cameras, computer vision and machine learning.

Street lights– Everyone knows that at night all city lights are powered on in order to ensure visibility everywhere. But sometimes most of the lights waste energy and money to light up areas that no one is interested in. Street lights can be made to have lower brightness when no one is around and to increase brightness to a maximum as soon as presence is detected. Every street light can have a sensor for motion and a wireless module, this way neighboring lights can communicate and notify each other if they sense presence. This allows every pedestrian, cyclist or car to have a wide enough circle of light while keeping areas that aren’t populated at dimmer light in order to save energy. At the end of the day, everyone has light in a much energy-efficient way.

What’s so special about the IoT field?

If you’re a consumer IoT can automate your life and make everyday tasks quicker and more elegant to execute, just with a tap of a button on your mobile phone or some other action which requires the same amount of energy to accomplish. The examples above are quite an explanation for this. The simplicity, comfort, and efficiency that IoT delivers are just outstanding. In addition to all that, most of the IoT solutions are more eco-friendly.

If you’re a developer, this is one of the fields in which you can totally go wild after completing a personal project. It’s very satisfying. This is, without a doubt, because you can see your code actually doing something in the real world. You create! You create something you can see and feel. Your code basically escapes the 2D monitor and transfers itself into the real world.

What skills are required for developing?

Physics

The world of IoT can often require a background in physics. To be more precise, from basic to intermediate knowledge of electrical engineering. You’d have to know a bit or two in order to establish a working connectivity between two or more devices.

Basic things that everyone should bear in mind are Ohm’s Law, basic electrical components (LED, transistor, relay, diode, capacitor, etc), reading/writing wiring diagrams.

Software Engineering

And, needless to say, you’d also have to be familiar with some software engineering and computer science concepts: Programming, Operating Systems, Networking, Computer Architectures, etc.

Furthermore, the most frequently used technologies for IoT can be divided into three categories based on the three main development branches in the IoT world.

Device programming: Since we’re talking about hardware devices, you can guess that C and C++ languages are the main players here, especially when it comes to devices with low RAM and low CPU capabilities. This is due to the fact that with those languages you can write lightweight code with high performance.

Since we’re talking about hardware devices, you can guess that C and C++ languages are the main players here, especially when it comes to devices with low RAM and low CPU capabilities. This is due to the fact that with those languages you can write lightweight code with high performance. Gateway development: Devices that are used for gateways basically are minicomputers with relatively good computation power and storage. Just to make it clear, gateway devices are devices that serve as a connection between the sensors of a microcontroller and a service in the cloud. They have a Wi-Fi/cellular connection, they can have a database and many more utilities. For gateway software development most common technologies are Java because of its portability and rich ecosystem, Python because of its simplicity, easy maintenance, rich ecosystem, and C++ because of its performance. Let’s name some cool frameworks for a couple of languages: Java, Go, JavaScript, Python, etc.

Devices that are used for gateways basically are minicomputers with relatively good computation power and storage. Just to make it clear, gateway devices are devices that serve as a connection between the sensors of a microcontroller and a service in the cloud. They have a Wi-Fi/cellular connection, they can have a database and many more utilities. For gateway software development most common technologies are Java because of its portability and rich ecosystem, Python because of its simplicity, easy maintenance, rich ecosystem, and C++ because of its performance. Let’s name some cool frameworks for a couple of languages: Java, Go, JavaScript, Python, etc. Cloud services: To clarify things, in our case cloud is nothing but a remote machine that hosts a web service. On the cloud side, there can be a lot of things going on and depending on what needs to be done, an appropriate technology is being chosen. If there’s a requirement to make data analysis or some kind of artificial intelligence over collected data, Python would be the perfect choice here due to its outstanding arsenal of libraries dedicated to statistics, AI and machine learning. Furthermore, Java or JavaScript can be chosen if there’s a need for a highly scalable web service. On the other hand, Go can also be a very solid choice for the same task. In conclusion, there are lots of technologies that suit for the cloud, but in the end, what’s chosen mainly depends on what has to be done. Often in the cloud, two or more technologies are used conjointly.

IoT Developer Survey 2017 @ Credits: Eclipse Foundation

How can you enter the IoT field?

Today, Arduino and RaspberryPi are the two leading IoT devices that are basically the heart of almost every project. If you manage to learn how those two things work and how they interact with other components, you’ll be mostly ready to jump into your first IoT project. Combine that with some physics and programming skills that were mentioned above and you’ll have the power to make even Optimus Prime.

Now let’s make a simple comparison between the two devices. They have a lot of things in common, but nevertheless, they’re totally different kinds of devices.

Arduino

So the Arduino is said to be a microcontroller. This board’s main purpose is to manage lots of sensors and actuators efficiently. It can drive motors, switch relays, use sensors for humidity, temperature, Bluetooth, Wi-Fi and a ton more.

The Arduino is not quite the champion when it comes to computation power but still, that’s not what it’s designed for.

Instead, it’s designed for effective orchestration of a wide variety of both sensors and actuators.

RaspberryPi

The RaspberryPi is a single-board computer or as I call it – minicomputer. It also has, like the Arduino, the capability to connect sensors, actuators, and other controllers to itself but has very limited capabilities compared to a microcontroller. As we said, the RaspberryPi is a minicomputer, because of that, it is mostly used for hosting some kind of service which communicates with both the controller and the cloud, essentially being the gateway between them.

Since the RaspberryPi is a computer, you can guess that it’s powerful enough to run relatively heavyweight programs and services. That’s exactly what its purpose is.

Here’s further material regarding this topic.

Overall, for an IoT project’s more hardware part an Arduino is used, whereas for the more software part a RaspberryPi is used.

Conclusion

To summarize, IoT is a fast-growing industry, full of interesting ideas that will revolutionize the way we live our everyday lives, and being a part of all that, in one way or another, can be quite an enjoying experience.