You, Me & Internet of Things
This article will help you to start your journey in Internet of Things
What is IoT? — A Simple Explanation of the Internet of Things
“The Internet of Things (IoT) is a system of interrelated computing devices, mechanical and digital machines, objects, animals or people that are provided with unique identifiers and the ability to transfer data over a network without requiring human-to-human or human-to-computer interaction.”
– An unnecessarily technical explanation of IoT
There are four stages in developing an IoT device
- Assembly of the physical hardware: This requires engineering skills, and is usually not completed by a developer. Most IoT devices use primarily pre-assembled boards and sensors connected on them.
- Programming the device: This requires programming skills to read the data from the sensors connected on the IoT device, and send them to the server.
- Programming the server that will receive and store the data from the device: This requires the use of server side languages, like PHP, ASP.NET or Node.js, and database queries based on MySQL or some other SQL derivative.
Here are six tips from IoT experts on how to break into a career developing connected devices.
1. Gain a deep understanding of sensors
Unlike other developers, those who work in the IoT space must have a deep understanding of sensors and wireless communication, according to Karen Panetta, an IEEE fellow, and a professor of electrical and computer engineering and associate dean for graduate education at Tufts University.
It’s recommended that IoT developers have a background in computer science or electrical engineering, Panetta said. However, IEEE and other professional organizations offer online courses on sensors and development in which you can make a project to show employers. And a number of inexpensive sensors and maker kits are available to practice skills on your own.
“Beyond computing, IoT will take you into the world of mechanical and civil engineering as sensors gather physics data,” said Bryan Kester, head of IoT at Autodesk. “It’s very difficult to be a ‘deep’ IoT technologist — you have to be naturally curious about the world and a renaissance person at heart.”
SEE: Internet of Things (IoT): Cheat sheet (TechRepublic)
2. Focus on user interface
When developing a commercial IoT product, it’s important to hold yourself to high quality standards for user experiences, said Kit Klein, head of engineering at Wink. “Many customers depend on these products for critical tasks in their daily lives and are understandably intolerant of failures,” Klein said. “As an industry, we need to ensure products delight a rapidly growing base of users who aren’t necessarily tech savvy. Quality and reliability are paramount to this experience and need to be part of any developer’s mentality.”
Panetta recommends performing usability studies with customers to determine ease of use. “It all comes back to user interface,” Panetta said. “You can have the best control for your thermostat, but it needs to be simple to use.”
4. Play with a Raspberry Pi
For those without a computer science or electrical engineering degree, Elliot Schrock, founder and lead developer at Thryv, Inc., suggests demonstrating your aptitude to employers by completing projects on a Raspberry Pi.
“Raspberry Pis are very inexpensive, tiny computers, and are often employed in proof of concept IoT projects,” Schrock said. “They’re also a great way to learn how to solder together simple circuits, and link those circuits with software. Putting together some simple demo projects and then coming up with, and executing, some projects of your own is a great way to show that you have the initiative and know-how to work in IoT.”
Hinton agreed. “Using a device like the Tessel 2, or the Particle Photon, or even the humble Raspberry Pi can get developers fast on their way to learning how hardware ticks and the new skills required,” Hinton said. “Writing for IoT is really just learning how to write for smaller, slower computers.”
5. Find a community
Involvement in the surrounding communities of makers, inventors, and entrepreneurs with whom one can explore, develop, and refine their ideas into a reality is an important factor for becoming an IoT developer, said Emily Rose, lead developer evangelist at Salesforce. “The world of IoT is still so nascent and nebulous; there are few well-defined paths into the industry,” she added. “This may seem like a daunting prospect, but it can also be a tremendous advantage to those with an eye for exploration beyond the bounds of convention.”
6. Keep your skills cutting edge
Learning one platform or skillset isn’t enough, according to IBM research scientist and master inventor Eli Dow. “The platform you write for this week will often be obsolete within 6 months to a year,” Dow said. “Sensors will change, single board computers or other embedded platforms will continue to evolve, and you have to have the flexibility to adapt as platforms change at a blistering pace.”
Becoming an IoT developer means being “obsessed” with technology, said Erin Essex, creative director at Webonise. “Successful IoT developers must be tech news junkies — they should know everything that is going on in the industry, what’s hot, what’s old news, and what could be the next great thing,” Essex said. “This will provide the foundation needed to tinker with technology and make whatever is being built, the best it can possibly be.”
IoT world is a smart network of “intelligent” electronic systems, called things, inter-connected that are able to send and receive data
What all you need for starting your journey in “Internet of Things”?
IoT Development Boards —
Arduino Uno, for sure, is one the most used development board. It is an open-source development board based on ATmega328P.
The main features are:
- 5V (operating voltage)
It has, moreover, analog and digital pins. The interesting aspect of this board is it can be expanded using shields. A shield is another board that can be plugged into Arduino Uno that adds new features like GSM, Ethernet connection, WIFI and so on. It is very simple to use and has an official IDE to develop applications (or sketch). There are, also, free and paid IDE that offers more features respect to the official one. Recently, it is possible to add to this board Arduino Yun shield. This shield is made for IoT project and extends the Arduino Uno board features.
Arduino MKR1000 is one of the latest board. MKR1000 has been designed for IoT projects. It supports natively WIFI connection and it is very easy to use. It is based on the Atmel ATSAMW25.
Image from http://store.arduino.cc
The main features are:
- 3.3V (operating voltage)
- Built-in WIFI
I made an IoT project with MKR1000 and it is really simple to use. As Arduino UNO, this board supports analog and digital pins, moreover, it can be powered using an external Li-Po battery.
This board is a low-cost board supported by the community made for developers and hobbyists. It uses Linux as OS.
Image from https://beagleboard.org/black
The main features are:
- AM335x 1GHz ARM® Cortex-A8
- 512 Mb RAM
Raspberry PI 3Model B
Raspberry, like Arduino, is one the most used development board. Raspberry Pi has various versions with various power capabilities. Moreover, Raspberry can be considered a small computer because it has all the features we can find in a common PC: keyboard, HDMI and so on. It is very small (more or less it is like a credit card) and is powered by Linux.
Raspberry PI 2 is a 900MHz quad-core ARM Cortex-A7 CPU with 1Gb RAM. Moreover, it has 40 GPIO pins. It supports a full Linux Version. The Raspberry PI 3 compare to the previous version has:
- A 1.2GHz 64-bit quad-core ARMv8 CPU
- 802.11n Wireless LAN
- Bluetooth 4.1
- Bluetooth Low Energy (BLE)
Do you know you can use Raspberry to develop android app using Android Things?
UDOO Neo is an interesting board that differs from others. It is a Arduino-Android/Linux device. It has a set of built-in features like WIFI, g-axis motion sensor and Bluetooth support.
Image from www.udoo.org/udoo-neo/
It has three different versions:
They have different features and different specs.
Particle Photon is a very small development board with a built-in WIFI module. This makes it ready for IoT project. It has a set of expansion kits that make the development process faster.
Image from Particle store
This board uses shields to expand its capabilities.
There are other IoT prototyping boards like Intel (Edison and Galileo) or Samsung Artik, those mentioned above are, in my opinion, the most used and offer a large community support that is useful when you approach IoT world for the first time.
At the end of this post, I hope you gained an overview of what is IoT and how to use IoT rapid prototyping boards to getting started with IoT projects. What IoT rapid prototyping board do you use for your projects? … And what project are you developing? Let me know leaving a comment below this post.
This board is a low-cost board with a built-in WIFI system that enables rapid IoT project prototyping. It comes with several variants having specific features like memory capacity or pins number. We can use the Arduino IDE to develop IoT application or alternative IoT IDE. You can find more information at the manufacturer site.
Intel Edison is a new IoT development board very powerful. It comes in several variants, the one that I like is Intel Edison with Arduino breakout kit. The main specifications are:
- Intel Atom™
- 500MHz dual-core x86
- 1GB RAM
- Wi-Fi 802.11n
This board can be used to develop Android Things app.
Frequently referred to as a “reliable ally” of Arduino, Intel Galileo is a highly integrated board that’s just a little larger than a credit card. The microcomputer is equipped with Intel® Quark™ SoC X1000, operating at speeds of up to 400 MHz, a motherboard with up to 8 Mb of flash memory and 256 RAM. The device also has a VLAN port available with the 100Mb capacity, a microSD card and mini PCI express slots, RS 232, USB 2.0 ports with a possibility to connect up to 128 devices. This platform works with a very light distribution of Linux and a standard environment of Arduino. Intel Galileo has such features as its own USB controller and data exchange without SPI components. Another cool feature is that there is an expansion slot for PCI Express for Wi-Fi, Bluetooth and 3G installation. Intel Galileo supports the Arduino IDE.
It’s worth mentioning that such a microprocessor as Galileo can be used for a wide variety of functions; among them are robotic engineering and IoT technologies. Intel has released two versions of Galileo — Intel Galileo and Galileo Gen 2 — in order to expand its own solutions.
Sensors & Actuators
IoT platforms function and deliver various kind of intelligence and data using a variety of sensors. They serve to collect data, pushing it and sharing it with a whole network of connected devices. All this collected data makes it possible for devices to autonomously function, and the whole ecosystem is becoming “smarter” every day.
By combining a set of sensors and a communication network, devices share information with one another and are improving their effectiveness and functionality.
Take Tesla vehicles as an example. All of the sensors on a car record their perception of the surroundings, uploading the information into a massive database. The data is then processed and all the important new pieces of information are sent to all other vehicles. This is an ongoing process, through which a whole fleet of Tesla vehicles is becoming smarter every day.
Let’s take a look at some of the key sensors, extensively being used in the IoT world.
By definition, “ A device, used to measure amount of heat energy that allows to detect a physical change in temperature from a particular source and converts the data for a device or user, is known as a Temperature Sensor ”
These sensors have been deployed for a long time in a variety of devices. However, with the emergence of IoT, they have found more room to be present in an even greater number of devices.
Only a couple of years ago, their uses mostly included A/C control, refrigerators and similar devices used for environmental control. However, with the advent of the IoT world, they have found their role in manufacturing processes, agriculture and health industry. In the manufacturing process, many machines require specific environment temperature, as well as device temperature. With this kind of measurement, the manufacturing process can always remain optimal.
On the other hand, in agriculture, the temperature of soil is crucial for crop growth. This helps with the production of plants, maximizing the output.
Followed are some sub-categories of Temp Sensors:
Thermocouples: These are voltage devices that indicate temperature measuring with a change in voltage. As temperature goes up, the output voltage of the thermocouple rises.
Resistor temperature detectors (RTD): The resistance of the device is directly proportional to the temperature, increase in a positive direction when the temperature rises resistance going up.
Thermistors: It is a temperature sensitive resistor that changes its physical resistance with the change in temperature.
IC (Semiconductor): They are linear devices where the conductivity of the semiconductor increases linearly and it takes advantage of the variable resistance properties of semiconductor materials. It can provide a direct temperature reading in digital form, especially at low temperatures.
Infrared sensors: It detects temperature by intercepting a portion of emitted infrared energy of the object or substance, and sensing its intensity, can be used to measure temperature of solids and liquids only, Not possible to use it on gases because of their transparent nature.
A device that detects the presence or absence of a nearby object, or properties of that object, and converts it into signal which can be easily read by user or a simple electronic instrument without getting in contact with them
Proximity sensors are largely used in the retail industry, as they can detect motion and the correlation between the customer and product they might be interested in. A user is immediately notified of discounts and special offers of nearby products.
Another big and quite an old use-case is vehicles. You are reversing your car and are alrmed about an obstacle while taking reverse, that’s the work of proximity sensor.
They are also used for parking availability in places such as malls, stadiums or airports.
Following are some of the Proximity Sensors sub-categorised:
Inductive Sensors: Inductive proximity sensors are used for non-contact detection to find out the presence of metallic objects using electromagnetic field or a beam of electromagnetic radiation.
It can operate at higher speeds than mechanical switches and also seems more reliable because of its robustness.
Capacitive Sensors : Capacitive proximity sensors can detect both metallic as well as non-metallic targets. Nearly all other materials are dielectric different from air. It can be used to sense very small objects through a large portion of target. So, generally used in difficult and complicated applications.
Photoelectric Sensors : Photoelectric sensor is made up of light-sensitive parts and uses a beam of light to detect the presence or absence of an object. It is an ideal alternative of inductive sensors. And used for long distance sensing or to sense non-metal object.
Ultrasonic Sensors: Ultrasonic sensors are also used to detect the presence or to measure the distance of targets similar to radar or sonar. This makes a reliable solution for harsh and demanding conditions.
A pressure sensor is a device that senses pressure and converts it into an electric signal. Here, the amount depends upon the level of pressure applied.
There are plenty of devices that rely on liquid or other forms of pressure. These sensors make it possible to create IoT systems that monitor systems and devices that are pressure propelled. With any deviation from standard pressure range, the device notifies the system administrator about any problems that should be fixed.
Deployment of these sensors is not only very useful in manufacturing, but also in the maintenance of whole water systems and heating systems, as it is easy to detect any fluctuation or drops in pressure.
Water quality sensor
Water quality sensors are used to detect the water quality and Ion monitoring primarily in water distribution systems.
Water is practically used everywhere. These sensors play an important role as they monitor the quality of water for different purposes. They are used in a variety of industries.
Following is a list of the most common kind of water sensors in use.
Chlorine Residual Sensor: It measures chlorine residual (i.e. free chlorine, monochloramine & total chlorine) in water and most widely used as disinfectant because of its efficiency.
Total organic carbon Sensor: TOC sensor is used to measure organic element in water.
Turbidity Sensor: Turbidity sensors measure suspended solids in water, typically it is used in river and stream gaging, wastewater and effluent measurement.
Conductivity Sensor: Conductivity measurements are carried out in industrial processes primarily to obtain information on total ionic concentrations (i.e. dissolved compounds) in water solutions.
pH Sensor: It is used to measure the pH level in the dissolved water, which indicates how acidic or basic (alkaline) it is.
Oxygen-Reduction Potential Sensor : The ORP measurement provides insights into the level of oxidation/reduction reactions occurring in the solution.
Chemical sensors are applied in a number of different industries. Their goal is to indicate changes in liquid or to find out air chemical changes. They play an important role in bigger cities, where it is necessary to track changes and protect the population.
Main use cases of chemical sensors can be found in Industrial environmental monitoring and process control, intentionally or accidentally released harmful chemical detection, explosive and radioactive detection, recycling processes on Space Station, pharma industries and laboratory etc.
Following are most common kind of chemical sensors in use:
Chemical field-effect transistor
Electrochemical gas sensor
Fluorescent chloride sensors
Hydrogen sulfide sensor
Nondispersive infrared sensor
pH glass electrode
Zinc oxide nanorod sensor
Gas sensors are similar to the chemical ones, but are specifically used to monitor changes of the air quality and detect the presence of various gases. Like chemical sensors, they are used in numerous industries such as manufacturing, agriculture and health and used for air quality monitoring, Detection of toxic or combustible gas, Hazardous gas monitoring in coal mines, Oil & Gas industries, chemical Laboratory research, Manufacturing — paints, plastics, rubber, pharmaceutical & petrochemical etc.
Following are some common Gas sensors:
Carbon dioxide sensor
Carbon monoxide detector
Catalytic bead sensor
Air pollution sensor
Nitrogen oxide sensor
Electrochemical gas sensor
A smoke sensor is a device that senses smoke (airborne particulates & gases ) and it’s level.
They have been in use for a long period of time. However, with the development of IoT, they are now even more effective, as they are plugged into a system that immediately notifies the user about any problem that occurs in different industries.
Smoke sensors are extensively used by manufacturing industry, HVAC, buildings and accommodation infra to detect fire and gas incidences. This serves to protect people working in dangerous environments, as the whole system is much more effective in comparison to the older ones.
Common Type of Smoke Sensors
Smoke sensors detect the presence of Smoke, Gases and Flame surrounding their field. It can be detected either optically or by the physical process or by the use of both the methods.
Optical smoke Sensor (Photoelectric) : Optical smoke sensor used the light scatter principle trigger to occupants.
Ionization smoke Sensor: Ionization smoke sensor works on the principle of ionization, kind of chemistry to detect molecules causing a trigger alarm.
An infrared sensor is a sensor which is used to sense certain characteristics of its surroundings by either emitting or detecting infrared radiation. It is also capable of measuring the heat being emitted by the objects.
They are now used in a variety of IoT projects, especially in Healthcare as they make monitoring of blood flow and blood pressure simple. They are even used in a wide array of regular smart devices such as smartwatches and smartphones as well. Other common use includes Home appliances & remote control, Breath analysis, Infrared vision (i.e. visualize heat leaks in electronics, monitor blood flow, art historians to see under layers of paint), wearable electronics, optical communication, non-contact based temperature measurements, Automotive blind-angle detection.
Their usage does not end there, they are also a great tool for ensuring high-level security in your home. Also, their application includes environment checks, as they can detect a variety of chemicals and heat leaks. They are going to play an important role in the smart home industry, as they have a wide-range of applications.
A sensor which is used to determine the level or amount of fluids, liquids or other substances that flow in an open or closed system is called Level sensor.
Like IR sensors, level sensors are present in a wide array of industries. They are primarily known for measuring fuel levels, but they are also used in businesses that work with liquid materials. For example, the recycling industry, as well as the juice and alcohol industry rely on these sensors to measure the number of liquid assets in their possession.
Best use cases of level sensor is, Fuel gauging & liquid levels in open or closed containers, Sea level monitoring & Tsunami warning, water reservoirs, Medical equipment, compressors, hydraulic reservoirs, machine tools, Beverage and pharmaceutical processing, High or low-level detection etc.
This helps better streamline their businesses, as sensors collect all the important data at all times. With the use of these sensors, any product manager can precisely see how much liquid is ready to be distributed and whether the manufacturing should be stepped up.
There are two basic level measurement types:
Point level sensors: Point level sensors usually detect the particular specific level and respond to the user if the sensing object is above or below that level. It is integrated into single device to get an alarm or trigger
Continuous level Sensor: Continuous level sensors measure liquid or dry material levels within a specified range and provide outputs which continuously indicate the level. The best example of it is fuel level display in the vehicle.
Image sensors are instruments which are used to convert optical images into electronic signals for displaying or storing files electronically.
The major use of image sensor is found in digital camera & modules, medical imaging and night vision equipment,thermal imaging devices, radar, sonar, media house, Biometric & IRIS devices.
Two main types of sensors are used in: CCD (charge-coupled device) and CMOS (complementary metal-oxide semiconductor) imagers. Although each type of sensor uses different technology to capture images,
Both CCD and CMOS imagers use metal-oxide semiconductors, having the same degree of sensitivity to light, and no inherent quality difference
An average consumer would think that this is a regular camera, but even though this is not far from the truth, image sensors are connected with a wide range of different devices, making their functionality much better.
One of the best-known uses includes the car industry, in which imagery plays a very important role. With these sensors, the system can recognize signs, obstacles and many other things that a driver would generally notice on the road. They play a very important role in IoT industry, as they directly affect the progress of driverless cars.
They are also implemented in improved security systems, where images help capture details about the perpetrator.
In the retail industry, these sensors serve to collect data about customers, helping businesses get a better insight into who is actually visiting their store, race, gender, age are only some of the useful parameters that retail owners get by using these IoT sensors.
Motion detection sensors
A motion detector is an electronic device which is used to detect the physical movement(motion) in a given area and it transforms motion into an electric signal ; motion of any object or motion of human beings
Motion detection plays an important role in the security industry. Businesses utilize these sensors in areas where no movement should be detected at all times, and it is easy to notice anybody’s presence with these sensors installed. These are primarily used for intrusion detection systems, Automatics door control, Boom Barrier, Smart Camera (i.e motion based capture/video recording),Toll plaza, Automatic parking systems, Automated sinks/toilet flusher,Hand dryers,energy management systems(i.e. Automated lighting, AC, Fan, Appliances control) etc.
On the other hand, these sensors can also decipher different types of movements, making them useful in some industries where a customer can communicate with the system by waving a hand or by performing a similar action. For example, someone can wave to a sensor in the retail store to request assistance with making the right purchase decision.
Even though their primary use is correlated with the security industry, as the technology advances, the number of possible applications of these sensors is only going to grow.
Following are key motion sensor types widely used:
Passive Infrared (PIR) : It Detects body heat (infrared energy) and the most widely used motion sensor in home security systems.
Ultrasonic : Sends out pulses of ultrasonic waves and measures the reflection off a moving object By tracking the speed of sound waves.
Microwave : Sends out radio wave pulses and measures the reflection off a moving object. They cover a larger area than infrared & ultrasonic sensors, but they are vulnerable to electrical interference and more expensive.
Accelerometer is a transducer that is used to measure the physical or measurable acceleration experienced by an object due to inertial forces and converts the mechanical motion into an electrical output. It is defined as rate of change of velocity with respect to time
These sensors are now present in millions of devices, such as smartphones. Their uses involve detection of vibrations, tilting and acceleration in general. This is great for monitoring your driving fleet, or using a smart pedometer. In some instances, it is used as a form of anti-theft protection, as the sensor can send an alert through the system if an object that should remain stationary is moved.
They are widely used in cellular & media devices, vibration measurement, Automotive control and detection, free fall detection, aircraft and aviation industries, movement detection, sports academy/athletes behavior monitoring, consumer electronics, industrial & construction sites etc.
There are various kinds of accelerometers and following are few mainly used in IoT projects:
Hall-effect accelerometers : Hall-effect accelerometers are using Hall principle to measure the acceleration, it measures the voltage variations caused by changes in a magnetic field around them.
Capacitive accelerometers : Capacitive accelerometers sensing output voltage dependents on the distance between two planar surfaces. Capacitive accelerometers are also less prone to noise and variation with temperature.
Piezoelectric accelerometers: Piezoelectric sensing principle is working on the piezoelectric effect. Piezo-film based accelerometers are best used to measure vibration, shock, and pressure.
Each accelerometer sensing technology has its own advantages and compromises. Before selecting, it’s important to understand the basic differences of the various types and the test requirements.
Gyroscope sensors :
A sensor or device which is used to measure the angular rate or angular velocity is known as Gyro sensors, Angular velocity is simply defined as a measurement of speed of rotation around an axis. It is a device used primarily for navigation and measurement of angular and rotational velocity in 3-axis directions. The most important application is monitoring the orientation of an object.
Their main applications are in Car navigation systems, Game controllers,Cellular & camera devices, consumer electronics, Robotics control, Drone & RC control helicopter or UAV control, Vehicle control/ADAS and many more.
There are several different kinds of gyro sensors which are selected by their working mechanism, output type, power, sensing range and environmental conditions.
Rotary (classical) gyroscopes
Vibrating Structure Gyroscope
MEMS(micro-electro-mechanical systems) Gyroscopes
These sensors are always combined with accelerometers. The use of these two sensors simply provides more feedback to the system. WIth gyroscopic sensors installed, many devices can help athletes improve the efficiency of their movements, as they gain access to the athletes movement during sports activities.
This is only one example of its application, however, as the role of this sensor is to detect rotation or twist, its application is crucial for the automation of some manufacturing processes.
Humidity is defined as the amount of water vapour in an atmosphere of air or other gases. The most commonly used terms are “Relative Humidity (RH)
These sensors usually follow the use of temperature sensors, as many manufacturing processes require perfect working conditions. Through measuring humidity, you can ensure that the whole process runs smoothly, and when there is any sudden change, action can be taken immediately, as sensors detect the change almost instantaneously. Their applications and use can be found in Industrial & residential domain for heating, ventilating, and air conditioning systems control. They can also be found in Automotive, museums, industrial spaces and greenhouses , meteorology stations,Paint and coatings industries, hospitals & pharma industries to protect medicines
A sensor which measures the physical quantity of light rays and convert it into electrical signal which can be easily readable by user or an electronic instrument/device is called optical sensor. Optical sensors are loved by IoT experts, as they are practical for measuring different things simultaneously. The technology behind this sensor allows it to monitor electromagnetic energy, which includes, electricity, light and so on.
Due to this fact, these sensors have found use in healthcare, environment monitoring, energy, aerospace and many more industries. With their presence oil companies, pharmaceutical companies and mining companies are in a much better position to track environmental changes while keeping their employees safe.T
Their main use can be found in Ambient light detection, digital optical switches, optical fibres communications,due to Electrical isolation best suited for oil and gas applications, civil and transportation fields, High speed network systems, elevator door control, assembly line part counters and safety systems.
Following are key type of optical sensors:
Photodetector: It uses light sensitive semiconductor materials like photocells,photodiodes or phototransistors to work as photodetector
Fiber Optics : Fibers optics carry no current, So its immune to electrical & electromagnetics interference and even in damaged condition no sparking or shock hazard happens.
Pyrometer : It estimates the temperature of an object by sensing the color of the light and Objects radiate light according to their temperature and produce same colors at same temperature.
Proximity & Infrared : Proximity use light to sense objects nearby and Infrared are used where visible light would be inconvenient.
IoT Operating System
Here are 9operating systems for IoT devices that are open source and used to power a wide range of smart devices from wearables to driverless cars.
Note: All the operating systems that I’m writing about have two properties in common:
- Low memory footprint
- High power efficiency
Android Things is the new OS developed by Google for IoT development. If we look at the past, Google made another attempt to jump into IoT ecosystem with Brillo that didn’t have a big success. Nowadays, Android Things is in stable version named Android Things 1.0. It introduces some important features that make it different from Brillo
Windows 10 IoT Core
Windows 10 IoT Core is a version of Windows optimized for smaller devices. Designed for Internet of Things projects, It works very well on ARM devices, so the Raspberry Pi is a perfect fit — but why would you choose it over Linux?
As good as the Raspberry Pi is, it’s limited in what programs it can run. Linux packages and Python scripts work fine, as do some C/C++ programs once compiled for the Pi. However, software packages written for the Windows ecosystem will never run on the Pi.
Google offers this as an Android-based operating system for embedded devices. It can run on constrained/low-end devices with at least 128MB of ROM and 32MB of RAM.
Brillo supports intercommunication technologies such as
Brillo uses secure boot and signed over-the-air updates which make it more secure. Brillo supports various architectures such as
It was created in 2002 by Adam Dunkels and, currently, has developers all over the world. This open source software is released under a BSD license. Contiki has a built-in Internet Protocol suite (TCP/IP stack) and provides multitasking. It can comfortably work on constrained devices with 30KB of RAM and 30KB of ROM.
Contiki is supported on hardware platforms such as
- TI CC2538
- TI MSP430x
- Atmel AVR
- TI MSP430
- Atmel Atmega128rfa1
RIOT is an IoT operating system with real-time capabilities. It was first developed by a consortium of universities in Germany and France, which included Free University of Berlin, French Institute for Research in Computer Science and Automation, and Hamburg University of Applied Sciences. It is released under the GNU Lesser General Public License (LGPL).
It is based on microkernel architecture and runs on 8–32bit microcontrollers. RIOT supports multi-threading and the entire IoT network stack, which includes
- 802.15.4 Zigbee
RIOT can run on constrained devices with a minimum of 1.5KB of RAM and 5KB of ROM; it supports architectures such as
- Cortex-M0,M3 and M4
It is developed by Chinese telecom giant Huawei. It was released in 2015 under ISC license. LiteOS is a real-time operating system of just 10KB in size and it supports advanced features such as
- Auto discovery
- Zero configuration
- Auto networking
It supports interconnection technologies such as
Kernel of LiteOS supports multi-CPU architectures such as
LiteOS can be installed on devices already running on Android, and it can be connected with various other third-party devices.
Similar to RIOT and LiteOS, Apache Mynewt is also a real-time operating system for IoT devices.
The source code of Mynewt is distributed under Apache License 2.0. The OS is capable of running on constrained devices with a minimum of 8KB of RAM and 64 KB of ROM. The Kernel of the OS is just 6KB but supports the following:
- Preemptive multithreading
- Priority-based scheduling
- Memory heap and memory pool allocation
- Multi-stage software watchdog
The biggest drawback of Apache Mynewt is its interconnection technology; as of now, it only supports Bluetooth low energy, but Wi-Fi, Thread, and Bluetooth 5 are part of the roadmap.
Currently, Apache Mynewt supports boards such as
- Arduino Zero and Zero Pro
- Arduino M0 Pro with ATSAMR21G18a Cortex M0
- Arduino 101 (Bluetooth controller only)
- Arduino Primo (Bluetooth controller and host)
This is a collaborative project under Linux Foundation and is available through the Apache 2.0 license. It was launched in February 2016.
In Zephyr OS, there are no loadable kernel modules because the kernel is statically compiled into a single binary executable file. This makes Zephyr safe from compile time attacks.
Zephyr is a real-time operating system which can run on a device with memory as small as 8KB. The biggest strength of Zephyr is its interconnectivity technology, which includes
- Bluetooth LE
Zephyr supports the following architectures:
Canonical, the company behind Ubuntu, recently released Ubuntu Core 16, which is also known as Snappy. It is called Snappy because the operating system (including Kernel, libraries and major applications) is delivered as a Linux application package known as snaps. The base file of Ubuntu core 16 is 350MB and all the files after installation are stored as images.
The Ubuntu Core 16 is compatible with the following boards:
- Qualcomm Dragonboard
- Samsung Artik
- Intel Joule
- Raspberry Pi2 and Pi3
To know more about the Ubuntu Core 16, read this article “Ubuntu Core 16: Building secure and interoperable IoT ecosystems.”
Open source is not just a business model or software development model but is a big opportunity for both professional coders and hobby programmers to touch a billion people and change their lives forever by contributing to opensource projects and pushing good code.
IoT Programming Language
Although it’s not the most popular language on the list, Assembly is a great option if you want to keep your IoT applications compact.
It’s a low-level programming language, so don’t expect to do much with it as its capabilities are minimal.
B# was specifically developed for small applications, so you can use this language on multiple platforms using an Embedded Virtual Machine (EVM) that supports B#.
If you’re not looking to build anything big, B# is the best language for simple IoT applications.
As you might have guessed, a lot of “things” won’t really exist without one of the most important programming languages, C. It’s basically a starting point and is the most popular language for embedded devices.
C has been used with IoT boards like Arduino and it is used most often even though other languages may rank a lot higher.
C doesn’t have the processing power of an object oriented pre-processor like C++. As a result, it’s used as a pre-processor for C to enable it to run higher level languages. It’s easy to make loads of mistakes with this language, but it’s still a favorite among programmers.
In the most common Linux projects and embedded programming, it enables layers of objects, abstractions, and layers. It’s ideal for developers looking to extend their programming code for IoT and embedded code.
Further, C++ helps you use other languages including C#, D, Java, and Python. But that’s just the tip of the iceberg as it encourages the use of many more languages.
Sharing many similarities with C, Go is an embedded language that was developed by Google. What’s cool about Go is that it’s stronger than C and allows devices to work together to send and receive data in many channels simultaneously.
But there is still a significant disadvantage here as there’s a high possibility of data loss or errors if it’s not managed properly during the coding phase. But as the language continues to evolve, things may change in the near future.
When it comes to coding, Java is probably the most popular language out there. So it’s no surprise that it’s a popular choice among IoT developers.
Java is also a language that has borrowed coding techniques from Mesa, C, C++, and many others. Further, it’s well known to enable debugging code on a computer and then moving it to a chip via a Java Virtual Machine (JVM).
This means that the code can run in several different places where JVMs are common like smartphones and servers. But in this instance, it can also be run on the tiniest of machines.
Do you need assistance with your IoT project development and team staffing?
LET’S DISCUSS HOW WE CAN HELP!
This goes a long way in making devices interoperable and its extensive use in present programming only helps make things easier. The popular offshoot in IoT development has been Node.js as much of the work is focused on hubs and servers to gather the data and store it (if they are small hubs or sensors, they’re probably running on Node.js).
If your IoT application needs a language that supports parallel processing, Parasail is a good option. However, it’s important for developers to understand the difference between concurrent and parallel processors.
You can see a similar syntax in languages like C#, Java or Python, but if your IoT application requires parallel processing, Parasail is the best option.
When you think of PHP, you usually think of website prototypes and blogs, not IoT. But that’s the reality as a lot of developers are now including a PHP code in their stack.
It’s kind of an obvious selection as the code’s main purpose is to juggle microservices on the server. Raspberry Pi developers are also now using LAMP on top of Linux turning something considered to be lowliest on the internet into a full blown web server.
Putting a LAMP stack on a chip also makes it easier to develop as the Raspberry Pi has enough spare cycles. Further, all server-side code that was developed over the last couple of decades can also be housed on a tiny sensor. Pretty amazing isn’t it?
A few years ago, no one thought Python would be used for IoT as it mainly focused on web applications. But that’s changed now as it’s essentially an easy programming language to understand and utilize in IoT projects.
Although Python started out as a scripting language to glue code together, it has grown to be one of the primary languages used by a lot of developers. As small devices have limited computational power and memory, developers had to get creative to make life easy, so they ended up choosing Python.
As a result, it has grown in importance within embedded devices space while enabling developers to create apps that are able to deliver comprehensible data mining results.
If you want to develop something cool for Alexa, you better brush up on your Python programming skills.
Like Google’s Go, Mozilla also developed an (open source) language, Rust. Often considered to be a great imitator of Go, Rust is able to do some things that are not possible with the former.
Rust is enabled to share information among different channels automatically. However, one drawback is that for Rust to function properly, the processor must be enabled to support concurrent processing.
Swift is the common language for developing iOS apps, so if you want it to interact via iPhones and iPads with your central home hub, Swift is the way forward. At the same time, its predecessor Objective-C will also work just as well.
As Swift gets more popular as a programming language for IoT, Apple also wants to be a leader when it comes to IoT at home. The company has been building infrastructure and libraries to handle much of the work, so it will make it easier for developers to just focus on the task and let the HomeKit platform handle the integration.
IoT Cloud Platform
Here’s a list of 10 of the best platforms available today.
1. AMAZON WEB SERVICES IOT PLATFORM
Amazon dominates the consumer cloud market. They were the first to really turn cloud computing into a commodity way back in 2004. Since then they’ve put a lot effort into innovation and building features, and probably have the most comprehensive set of tools available.
DOWNLOAD OUR PROJECT SPECIFICATION TEMPLATE
It’s an extremely scalable platform, claiming to be able to support billions of devices, and trillions of interaction between them.
Pricing is based on messages sent and received by AWS IoT. Each IoT interaction can be thought of as a message between a device and a server. Amazon charges per million messages sent or received. There are no minimum fees, and you won’t get charged for messages to the following AWS services:
- Amazon S3
- Amazon DynamoDB
- AWS Lambda
- Amazon Kinesis
- Amazon SNS
- Amazon SQS
They also have a software development kit (SDK) to help developer build applications to run on AWS.
While Amazon probably has the most comprehensive service of all the cloud providers, it can also be quite expensive.
2. MICROSOFT AZURE IOT HUB
Microsoft is taking their Internet of Things cloud services very seriously. They have cloud storage, machine learning, and IoT services, and have even developed their own operating system for IoT devices. This means they intend to provide a complete IoT solution provider.
The pricing is done in 4 tiers based on how much data your devices will generate. Below 8,000 messages per unit per day is free. It does get complicated when you start to integrate with other Microsoft services, but they have a great pricing calculator to help you out.
Like Amazon, Google, Oracle and IBM, Microsoft also has some other cool services you can use on their could platform. These include things like machine learning a data analytics so you can build some really cool applications. check out our article here for more info.
3. IBM WATSON IOT PLATFORM
IBM is another IT giant trying to set itself up as an Internet of Things platform authority. They try to make their cloud services as accessible as possible to beginners with easy apps and interfaces. You can try out their sample apps to get a feel for how it all works. You can also store your data for a specified period, to get historical information from your connected devices.
Pricing works on three main metrics:
- Data Exchanged
- Data Analyzed
- Edge Data Analyzed
You’ll get 100 MB of each for free every month, so you can try it out.
IBM Watson also offers some cool security possibilities based on machine learning and data science. I wrote about some of them here.
4. GOOGLE CLOUD PLATFORM
Search giant Google is also taking the Internet of Things very seriously. They claim that “Cloud Platform is the best place to build IoT initiatives, taking advantage of Google’s heritage of web-scale processing, analytics, and machine intelligence”.
Their focus is on making things easy and fast for your business, where instant information is expected. And, offer “Google grade” security. Using this platform also lets you take advantage of Google’s private global fiber network.
Pricing on Google Cloud is done on a per-minute basis. It is usually cheaper than Amazon Web Services and even has a price comparison tool to show you how much you’ll save. But doesn’t have same extensive tools and documentation.
Like Microsoft, Google also has its own IoT operating system (based on Android).
Oracle is a platform as a service provider that seems to be focusing on manufacturing and logistics operations. They want to help you get your products to market faster.
Pricing for Oracle is calculated per device. There is a set number of messages per device, per month, with an additional cost if you go over this number.
Salesforce specializes in customer relations management. Their cloud platform is powered by Thunder, which is focused on high speed, real-time decision making in the cloud. The idea is to create more meaningful customer interactions. Their easy point-and-click UI is designed to connect you with your customers.
Pricing is at either a set price of about $4000 per month or on a quote basis.
Bosch is a German based company IT company, who have recently launched their own cloud IoT services to compete with the likes of Amazon. They focus on security and efficiency. Their IoT platform is flexible and based on open standards and open source.
The CEO Volkmar Denner says “As of today, we offer all the ace cards for the connected world from a single source. The Bosch IoT Cloud is the final piece of the puzzle that completes our software expertise. We are now a full-service provider for connectivity and the internet of things”.
Pricing is done progressively, so the more you use, the more you pay.
8. CISCO IOT CLOUD CONNECT
Cisco is a global leader in IT services, helping companies “seize the opportunities of tomorrow”. They strongly believe that the opportunities of tomorrow lie in the cloud, and have developed a new ‘mobility-cloud-based software suite’.
Their goal is to strengthen your relationship with your customers. What’s more, they actually say their focus is to help you “find new ways to make money”. With all the jargon surrounding cloud computing, it’s nice to hear a company speaking in plain English.
9. GENERAL ELECTRICS PREDIX
General Electric have decided to get into the platform-as-a-service game. They are focused on the industrial market by offering connectivity and analytics at scale for mainstream sectors like aviation.
Pricing is done on a pay-as-you-go basis. They don’t have simple pricing tables like the larger companies.
They also have a cool interactive demo you can try out.
The SAP homepage reads like a buzzword dictionary for the last couple of years. Here the title of a press release: “SAP Cloud Platform extends its capabilities for IoT, Big Data, Machine Learning, and Artificial Intelligence”.
If you can translate sentences like that, it basically means they are offering the latest tech to earn your business more money!
Pricing is easy to understand, with 3 tiers for
- Medium Business
Kaa IoT Platform
It is the feature-rich open and efficient Internet of Things cloud platform. Any IoT company, IoT system integrator, or individual has a free way to materialize their smart product concepts. Kaa enables data management for connected objects and your back-end infrastructure by providing the server and endpoint SDK components.
Kaa key IoT features:
- Manage an unlimited number of connected devices
- Set up cross-device interoperability
- Perform A/B service testing
- Perform real-time device monitoring
- Perform remote device provisioning and configuration
- Collect and analyze sensor data
- Analyze user behavior deliver targeted notifications
- Create cloud services for smart products
SiteWhere: Open Platform for the Internet of Things
It is another Open source IoT platform that provides the ingestion, storage, processing, and integration of device data. The SiteWhere runs on the core servers provided by the Apache Tomcat. It offers highly tuned MongoDB and HBase implementations. It can easily integrate with hackers boards.
Image Source: Opensourceforu
SiteWhere key IoT features:
- Run any number of IoT applications on a single SiteWhere instance
- Spring delivers the core configuration framework
- Connect devices with MQTT, AMQP, Stomp, and other protocols
- Add devices through self-registration, REST services, or in batches
- Integrates with third-party integration frameworks such as Mule AnyPoint
- Default database storage is MongoDB
- Eclipse Californium for CoAP messaging
- InfluxDB for event data storage
- Grafana to visualize SiteWhere data
- HBase for non-relational data store
- And more…
ThingSpeak: An open IoT platform with MATLAB analytics
ThingSpeak is an Internet of Things (IoT) platform that lets you analyze and visualize the data in MATLAB without buying a license from Mathworks. IT allows you to collect and store sensor data in the cloud and develop IoT applications. It works with Arduino, Particle Photon and Electron, ESP8266 Wifi Module, BeagleBone Black, Raspberry Pi, Mobile and web apps, Twitter, Twilio, and MATLAB to end the sensor data to ThingSpeak. The ThingSpeak is mostly focused on sensor logging, location tracking, triggers and alerts, and analysis
ThingSpeak Open source IoT Platform key IoT Features
- Collect data in private channels
- Share data with public channels
- RESTful and MQTT APIs
- MATLAB analytics and visualizations
- Event scheduling
- App integrations
- Worldwide community
DeviceHive: IoT Made Easy
DeviceHive is another feature rich Open source IoT platform which distributed under Apache 2.0 license. The DeviceHive is free to use and change. It provides Docker and Kubernetes deployment options. You can download and use it with both public and private cloud and also can scale form a single virtual machine to the enterprise-grade cluster. It has the ability to connect to any device or hacker board via REST API, WebSockets or MQTT. You can even connect such low-end wi-fi enabled devices as ESP8266.
DeviceHive Open source IoT platform key features:
- Directly integrate with Alexa
- Visualization dashboard of your choice
- It supports the Big data solutions such as ElasticSearch, Apache Spark, Cassandra and Kafka for real-time and batch processing.
- Connect any device via REST API, WebSockets or MQTT.
- It comes with Apache Spark and Spark Streaming support.
- Supports libraries written in various programming languages, including Android and iOS libraries
- It allows running batch analytics and machine learning on top of your device data.
- And More…
The Mainflux is the internet of things platform which is an Open source and patent free. The user can deploy it on its own premises or in the cloud. Mainflux IoT platform written in Go and deployed in Docker.
- Responsive and scalable architecture based on a set of microservices
- Set of clean APIs: HTTP RESTful, MQTT, WebSocket and CoAP
- Device management and provisioning and OTA FW updates
- Highly secured connections via TLS and DTLS
- Enhanced and fine-grained security via deployment-ready Mainflux Authentication and Authorization Server with Access Control scheme based on customizable API keys and scoped JWT
- Deployment and scalability via Docker images.
- Clear project roadmap, extensive development ecosystem, and highly skilled developer community
Zetta: API-First Internet of Things Platform
Zetta is a server-oriented open source IoT platform built on Node.js. Zetta combines REST APIs, WebSockets, and reactive programming. It can run on single board computer, PC or cloud and has the ability to link different platforms such as Linux, BeagleBones, Raspberry Pis, Arduino hacker boards, and PCs together with cloud platforms like Heroku to create geo-distributed networks. You can also stream data into machine analytics platforms like Splunk.
Zetta Open source IoT platform key features:
- Built around Node.js, REST, WebSockets, and a flow-based “reactive programming”.
- Supports wide range of hacker boards
- Zetta allows you to assemble smartphone apps, device apps, and cloud apps
One needs to choose a IoT development board, Sensors, A Operating System (If required by IoT board), A programming Language & IoT Cloud Platform