According to a report by Cisco, we will communicate with 50 billion devices connected via IoT by 2020, while the market is expected to grow from $655.8 billion to $1.7 trillion. Advanced, and furthermore, affordable technology is the driving force behind this fast-growing phenomenon. Developing IoT systems is now easier than ever before. Why? Due to the flexible usage of common programming languages and more accessible hardware.
http://www.simpleiothings.com/what-is-the-internet-of-things/
If you ever pondered creating IoT prototypes, you should keep in mind both software and hardware. Indeed, it is a small computer embedded in the object or device and the software that makes it run (nothing else, like connected home devices, GPS programming, 3D design or wearables). Don’t worry though, as many of these software development kits (SDKs) are now drawing upon programming languages already used in mobile and web development areas. In fact, this has opened the field up to a booming community of developers.
An annual IoT Developer Survey conducted by the Eclipse Foundation in 2016 proved that Java, JavaScript, C, and Python were the top choices for building IoT solutions. Let’s take a look:
JAVA: this result is not surprising at all, as Java is still known for running on anything when written once. The code can run on the smallest machines, not only in Java Virtual Machine common places. You can create and debug code on your desktop and move it to any chip with JVM.
JAVASCRIPT: it was mostly popular for coding popup alert boxes, but it is a great choice for IoT applications. Two microcontrollers have been used from the very beginning – Espruino and Tessel. It covers the needs of web developers, as there is no need to learn new languages. Node.js is a popular offshoot, and hubs and servers gather the data and store it, which is the main focus of the work.
C: probably the most popular language for embedded devices because of its ability to work with RAM directly. It doesn’t require that much processing power as well. It is still the first choice for programmers who write the lowest layer of software, closest to the hardware. Don’t bother fiddling with the code to squeeze out the best performance from the device. Still, you should take care of mistakes since there are some safety nets. “From what we see in the market, C remains the language of choice for constrained devices,” said Victor Berrios – the chief technical officer at the ZigBee Alliance, a group that supports the ZigBee standard.
C++: if an IoT device needs more complex tasks, this is a useful alternative. It is used as a pre-processor for C, to enable it to run higher level languages, and at the same time, it enables layers of objects in the most common Linux projects.
PYTHON: the aim of its existence was mainly to glue together real code, but nowadays, it is increasingly used as the main language by many programmers because of its greater flexibility than C or Java. It is easy to ingest, and moreover, it is supported by a large community. With a clean and simple syntax, you find it easy to build effective tools from the same elementary boards and libraries – like the ones used by social scientists and biologists, for instance.
In addition, the survey found at least 14 different languages that were mentioned by 5 percent or more of developers.
SWIFT: interacts with all Apple devices. In fact, they are intended to be the center of the home network of sensors, so you can concentrate on the details and leave much of integration overhead.
PHP: surprisingly popular in spite of being the first choice for website developers.
ASSEMBLER: great if you pay attention to compact applications, nonetheless, you should not expect too much, as it is characterized by minimal capabilities.
B#: adequate for simple IoT applications and used on multiple platforms with an Embedded Virtual Machine supporting it.
GO: developed by Google, and much stronger than C, it allows devices to work by sending and receiving data through many channels simultaneously. Unfortunately, there is still a high risk of losing data and errors.
RUST: analogous to its predecessor, but developed by Mozilla, it is considered to be a great imitator of Go. However, it needs a processor supporting concurrent processing to work properly.
So far, we have shown an assortment of the best-known programming languages you can use to start developing your own IoT projects. They are more or less the same when it comes to desktop apps, mobile apps, and servers. But the truth is that IoT is a kind of polyglot effort, and some combination of languages is needed to make it work. To be a successful IoT developer, you will need a diverse set of skills as well as a willingness to adapt to agile processes, platforms, and tools. Where to start??
- HARDWARE
In developing the hardware, a focus on electrical engineering and CAD skills is needed. Prototyping also calls for micro-controller programming or circuit design skills as well. You can use dedicated platforms like Arduino or single-board computers such as Raspberry Pi. They are readily available and don’t need much investment, which can easily be observed when fabricating custom printed circuit boards – PCBs – at every iteration of the design. Make sure you have an understanding of hardware communication protocols such as serial, I2C or SPI.
- NETWORK
Once the devices are chosen, you should then enable them to communicate with other devices and with different applications working in the cloud. IoT designers need to have management skills and be familiar with network standards, protocols and technologies like wifi, cellular, Low Energy Bluetooth, Low Power Wide-Area Network technologies (such as LoRa) and RFID technologies.
- DESIGN
The next step is keeping track of emerging frameworks and kits that affect rapid prototyping. They provide very important tools for automating building, management and operation of IoT applications. Voice-based and gesture-based interfaces are gaining attention within IoT, while augmented reality interfaces provide awesome possibilities for overlaying IoT data over the physical world. That is why UI and UX design skills are in such high demand nowadays.
- SECURITY
Like it or not, it does not matter how many abilities you have or how spectacular, effective and promising your device is if you do not provide it with adequate security. Physical and network access to your devices is not something you would like to be highly questionable. Security pertains to applications with which devices communicate or the networks themselves. You must include threat assessment, ethical hacking and encryption to ensure data integrity, activity logging, and threat intelligence
- DO NOT BE AFRAID
The IoT world can be truly fascinating. You need to work out ways of optimizing radio communications or power consumption nearly constantly. Want to learn more about embedded development? Take a look at Contiki – an open source operating system which connects tiny, low-cost, low-power microcontrollers to the Internet. It is a really powerful toolbox for building complex wireless systems. Ask questions, look for tutorials matching your learning methods, and just start experimenting with the various cloud services you can connect your embedded systems to. Turn your ideas into something useful, and don’t be afraid to show it to the whole world!