There are currently excellent Open Source software tools for IoT.
Here is a list of tools and platforms.
surely you already know Arduino. It was born as a platform to teach microcontroller programming, but today it offers professional-level development products.
Arduino includes Open Source software and hardware. Its development environment (IDE), which uses a language based on C++, is well known and used.
Today there is a wide variety of microcontrollers and devices that can be programmed using the Arduino IDE. Currently it can be used locally or through the cloud platform offered by the manufacturer.
Arduino continues to offer hardware for education, but also prototyping boards and ready-to-use devices for commercial and industrial applications.
With Arduino you can even develop devices that run Machine Learning models, as is the case with the Arduino Nano 33 BLE Sense boards and the professional range of Arduino Portenta.
Platform IO is a cross-platform development environment (IDE), which allows you to program a wide variety of devices.
Some of the best known manufacturers are: Espressif, Microchip, Raspberry Pi, Arduino, Intel, Maxim, NXP, Nordic, ST, TI, among others.
Without a doubt, it is a very powerful development platform.
Atom is an advanced text editor, in which you can write code in many different languages.
This editor works with a package system (packages) that allows you to install themes to change the appearance, language highlighters, software to interact with the serial port (USB), run Python code (using an interpreter already installed), etc.
Visual Studio Code
Visual Studio Code is a very powerful multilanguage software development environment.
Through its extensions it is possible to program a wide variety of languages and devices. Some in the list of manufacturers are: Arduino, Espressif, Microchip, Intel, Nordic, ST, TI, etc.
As for languages, it is practically possible to program in any language used today.
Among its most outstanding features are:
- Autocomplete with Intellisense.
- debug console
- Integrated Git commands.
- Extensions to add languages, themes, debuggers and connection to services.
Network node is an IoT platform that uses Node.js to process messages from IoT devices and services.
It has a web interface that allows you to program events graphically, connecting blocks and forming information flows. In this way, any type of process can be carried out on the information and interact with devices and services.
In addition to the blocks that come by default with the application, it is possible to install blocks developed by the community or build your own.
There is a wide variety of blocks to connect all kinds of services and devices.
Grafana is an information management platform that allows you to build visualization dashboards, process analytics, and manage events and alerts.
Information can be obtained from various sources, such as relational databases, NoSQL databases, time series databases, logs, spreadsheets, csv files, among others.
It is undoubtedly a very powerful and robust platform, which offers all kinds of graphics, among which we can find:
- Time series graphs.
- Statistical graphics.
- Categorical and boolean panels.
- Text and logs.
- Topological views.
- Georeferenced information.
All these features are achieved through a plugin system, which allows you to add functionality.
Plugins are used to:
- Add new data sources.
- Generate new types of graphs.
- Integrations with external applications.
mosquito is an MQTT broker developed by the Eclipse Foundation.
MQTT is a protocol designed for sending short messages from IoT devices. It is based on a publish/subscribe client/server model.
It offers low power consumption, making it recommended for battery-powered IoT devices.
It offers user/password security and TLS encryption.
It also has a method to implement quality of service.
Mosquitto implements versions 5.0, 3.1.1 and 3.1 and of the MQTT protocol.
InfluxDB It is a time series database. It can be polled using SQL statements, where time ranges and parameters ( measurements ) of the sensors, to obtain the corresponding values.
Each record in the database is associated with a timestamp ( timestamp ) and contains JSON objects, which can contain different items ( key/values ) associated with different measurements, parameters or characteristics of the device.
It is one of the most used databases to record sensor values.
It can be installed locally or tested directly through the cloud service offered by the InfluxData company.
Balena Etcher is a software to copy images of operating systems on SD cards or pen drives.
It is very easy to use. In just three steps the image is selected, the destination drive and the copy is started.
Win32 Disk Imager
Win32 Disk Imager is an old Open Source project to manage images.
Although it has not had updates since 2018, in general it is not a risk to use it.
Something useful about this software is that it also allows you to create images from an SD card or pen drive that contains the files of the operating system and applications. This way you can then use this image to replicate it to other devices.
Raspberry Pi Imager
Raspberry Pi Imager is the official Raspberry Pi tool for copying operating system images to SD card.
From this application you can select some of the operating systems offered by the Raspberry Pi Foundation. The application will download the corresponding OS and install it on the card.
Images can also be selected manually.
Flow Lite Tensioner
The Tensor Flow Lite site explains what it's all about, so I'm transcribing it below.
TensorFlow Lite for Microcontrollers was designed to run machine learning models on microcontrollers and other devices using only a few kilobytes of memory. The main runtime environment fits in 16 KB on an ARM Cortex M3 processor and can run several base models. It requires no operating system support, no standard C or C++ library, and no dynamic memory allocation.tensorflow.org
OpenWINE is an Open Source SDK developed by Intel for building machine vision models.
In addition to training your own models, it allows you to optimize models trained with other ML libraries.
It is definitely something you have to evaluate if you are interested in ML and computer vision.
So far I have presented you with a few Open Source options for IoT development.
Do you know any other?
I read you in the comments.