Boost 8 Tech Skills by building an IoT Project

Evaluating the complexity of your Internet of Things (IoT) project idea very hard. The reason is, that IoT isn't a clearly defined technology, but a combination of many technologies, spanning a wide variety of engineering disciplines.

If you want to evaluate the complexity of your idea and surface the skills you will boost while making it, this post is for you!

This post supplies you with a complete overview of the eight core engineering disciplines, to first identify all required skills, and moreover surface those which you will significantly boost during the project.

Depending on the complexity of your idea, it will boost some, if not all, of the eight core engineering disciplines, regularly touched by IoT projects:

  • Hardware design
  • Embedded firmware development
  • Network Communications
  • Backend development
  • Frontend development
  • App development
  • Automation and systems integration
  • Data scientists

Hardware Design

Most IoT projects include some form of custom hardware design. The complexity of the hardware varies considerably, depending on your goal.

On the beginner's level, your hardware design is probably limited to select a microcontroller and a set of sensors (Temperature, Proximity, Accelerometer, Infrared, etc. ) or actuators (electronic motors, Relay, stepper motors, etc.). Choosing a communication protocol might also already become relevant.

However, more complex projects will boost your experience and expertise much more, as you will inevitably move towards designing your own Printed Circuit Boards (PCBs). The task isn't especially complex, but you want to already have a solid understanding of the basics before diving into that topic.

Typical skills:

  • Drawing Circuit diagrams
  • Component selection: resistors, Integrated Circuits (ICs),
  • Chip selection: microcontrollers, sensors, and interface chips
  • Interfacing: SPI, I2C, USB and GPIO
  • Printed Circuit Board (PCB) design
  • RF and antenna design
  • Clocks and signal routing experience

Embedded Firmware Development

This is the discipline concerned with breathing life into hardware components.

To clarify, the firmware is the piece of software that is running on an extremely low level, directly interacting with the bare metal hardware. It's called firm as it sits between soft– and hardware. Firmware development combines electrical engineering, computer architecture, and software development.

Initially, your projects are probably based on the Arduino platform, as it's designed for beginners. That's a great choice to gently boost your C programming skills, as Arduino comes with many libraries to help you succeed without a lot of experience. If you have specific technical requirements other platforms might have some advantages.

Typical skills:

  • Programming languages: C, assembly language, and C++
  • Platforms: Arduino, Raspberry Pi, Texas Instruments, ARM Cortex, and AVR
  • Embedded Linux
  • Real-Time Operating System (RTOS): FreeRTOS, Contiki, and Zephyr
  • Physical and information security

Network Communications

Most Makers want their IoT projects to include wireless or cellular communication to get the full IoT experience. However those technologies are hard because they combine all the difficulties of the physical world with the complexities of software. Many beginner-friendly development platforms like Arduino abstract away most of the networking complexity. Nevertheless, in more complex projects it becomes vital to develop a solid understanding of network protocols, wireless communication, and software development.

Especially for user-facing IoT projects, it's crucial to learn how to implement Bluetooth properly, so devices connect to users’ smartphones smoothly.

Typical skills:

  • Network packets & topology
  • Wireless mesh networking
  • Protocols: TCP/IP, IPv4, IPv6, RPL, TLS, WiFi, Bluetooth, ZigBee, MQTT, and CoAP
  • Network simulation
  • Good understanding of power consumption & wireless propagation

Backend Development

Many IoT projects include a backend application. This is where databases and complex business logic resides. Typically, these databases and other services are deployed on a cloud platform. These platforms also provide out-of-the-box solutions to connect IoT devices to their services. Hence, storing data authenticating users and providing APIs for the frontend is fairly easy, depending on the specific platform.

For total beginners, Firebase and Heroku are the best platform options, as they have a very strong user-focus, are affordable and their feature set is limited to the essentials.

Azure and AWS are more suitable for ambitious projects with demanding technical requirements.

Typical skills:

  • Programming languages: Javascript, Go, Python and Ruby
  • Database: MySQL, MongoDB, and Redis
  • DevOps: automation, monitoring of software builds, deployment, and infrastructure management
  • Cloud platforms: Heroku, Firebase, Microsoft Azure, and Amazon AWS.

Frontend Development

When your project is user-facing, you will most likely have some kind of web interface so users can interact with your device. While the technology required to build a modern user interface (UI) isn't as complex compared to other engineering disciplines, the required design knowledge is. To design and code-up a UI that helps users to easily understand complex technical context is getting most tech-savvy people to the limits of their formal education.

Frontends are developed in HTML and almost always use some existing frontend framework, written in Javascript. Using the React framework and the Bootstrap UI-component library will be a great starting point to boost your frontend skills.

Typical skills:

  • UI/UX design
  • HTML, CSS and Javascript
  • Web development frameworks: Vue.js, React, and Bootstrap

App Development

When an IoT project is user-facing, the questions comes up latest during the Proof-of-Concept phase, should the UI be a mobile app or a web app?

The answer is simple if the project is consumer-facing and not mainly used in a professional context, the mobile app is the better solution. As it runs natively on consumer hardware products. However, this usually means that two versions of the app need to be developed and maintained: iOS and Android. It's worth investing some time before making a decision, as the development and maintenance of an app for two platforms requires quite some resources and experience!

Sometimes a hybrid native app, which typically would be developed in HTML, can be a good alternative.

Typical skills:

  • Android and iOS development
  • Native / hybrid frameworks: Phonegap / Cordova, Ionic, Angular, React, and Vue
  • Programming languages: Java, Swift, Objective C, and Javascript

Systems Integration and Automation

The fewer resources (especially time) are available to your hobby IoT project, the more important are integrations with existing third party services. For example, if you want to leverage Machine Learning in your project, you will have a hard time to implement such a powerful feature all from scratch.

It's much more efficient to integrate a production-ready API. Many of these also have a free-tier for small projects with relatively small amounts of requests. The effort and required skills to successfully integrate APIs and services is often underrated. Once the integration is up and running, you will want to ensure that the integration keeps working. Latest at that point in time, automated testing becomes relevant. Even without external services, automated testing is a valuable skill to pick-up while your project growth, as it gets more and more difficult to ship more features without accidentally breaking something somewhere else.

Typical skills:

  • Programming languages: Javascript, Java, Python, and Bash
  • Automated testing frameworks: Jenkins, Mocha, and Travis

Data Science

Big Data has been a buzzword for years. Most IoT projects produce a huge amount of data, as sensors measure environmental data points in endless intervals and also actuators can stream operational data to the cloud.

Already in the early stages of the project, it makes sense to measure key performance indicators to compare them over time. Depending on your goal, you may need in-depth analysis of the data as the project progresses.

Data Science is a discipline to make sense of complex data to find patterns and actionable information, which ultimately drives the value of the data.

While the discipline itself has an almost endless breadth and depth, there are many services out there, which are targeted towards data science beginners. These services already allow you to make a lot of sense of your data without being a fully-grown Data Scientist yourself.

Typical skills:

  • Statistics, AI, machine learning, and data mining
  • Programming languages: Matlab, R, and Python
  • Tools: Excel, Google BigQuery, Hadoop, TensorFlow, and Spark

Further Reading

  • Dos and Don'ts in DIY Hardware Projects
  • Get into Hardware with our Challenge Guide