Blog
Mixing up software development and electronics engineering
There are a number of technology companies that combine and successfully leverage several engineering disciplines to create their final products, including software development and electronics design. Such companies can relate to Aerospace, Defence, Automotive, Healthcare and other technologically saturated industries. Fair to say, even the companies producing appliances are involved somehow in software development nowadays.
The combination of hardware and software engineering has become very ubiquitous for date, and for good reason.
- Over time, electronics circuits have largely moved from analogue to digital designs and topologies. Digital circuits, in turn, have naturally found themself implemented in software.
- As for digital designs, it became possible to supersede sophisticated circuits on discrete elements and logic gate chips with programmable microcontrollers (MCU), field programmable gate arrays (FPGA) and digital signal processors (DSP), that allowed to implement all the logic in software.
- Over the last years, integrated chip manufacturers have done a great job to make the software development process for their devices easier and more convenient, by supplying comprehensive highly integrated development tools.
Since integrated circuit manufacturers have been lately incurring outstanding progress on technological processes and design approaches, the component they produce have become more reliable, compact and energy effective. As one of consequences, this entailed a widespread of embedded devices in variety of different industries.
Later, with the rise of wireless communication technologies, some embedded devices adopted and implemented the idea of communicating with remote servers over the Internet, and this served as one of crucial preconditions the Internet of Things (IoT) industry formation.
Remote Environmental Monitoring and Control systems is a perfect example of IoT industry thrive. Depending on an application scenario, they consist of a certain set of sensors to collect environmental data, which is subsequently being send to remote servers for a further processing. The processed data can be conveniently available via web or mobile applications in representation of numbers, figures and reports. Based on the processed data, control commands can be issued and sent back to remote actuators to perform certain physical actions that have the desired effect on the conditions and state of the environment.
Pondering about electronics engineering and software development combination, a wireless sensor is a perfect suit of a good example. From a hardware side of things, it comprises the following building blocks:
- Power supply system, that may include DC/DC converters of various type (linear, switched buck, boost, buck/boost), solar charger controllers, etc.
- Analog circuitry to filter and amplify signal incoming from the sensor probe. This is usually built on precision or instrumentation operation amplifiers and other discrete elements.
- Measurement data processing and control module, which is usually implemented on a microcontroller (MCU) as a central controlling unit. Analog to digital converters (ADC’s), digital signal processors (DSP’s) and filed programmed gate arrays (FPGA’s) may also be leveraged to assist the MCU to process in digital form the measurements data with advanced algorithms.
- Data transmitting part. For a wireless sensor, the data is transmitted over radio frequency (RF) channel, that usually employ Sub-GHz licensed-free frequency range from 315 to 928 MHz.
Now, it’s easy to imagine, that all the mentioned components can be controlled and coordinated programmatically. This means that embedded software resident into the MCU flash memory would perform the following functions:
- It would switch on all the needed power supply DC/DC converters, that may have been staying disabled during the sensor sleep mode.
- Besides, it would also activate the analogue measurement circuitry in certain moments of time to let the probe or sensitive element interact with the environment, thus capturing the target parameters.
- By controlling the ADC, it will turn it on and duly configure by issue a certain command sequence over a bus protocol (I2C, SPI, UART), in order to allow it to take a series of analogue measurement data samples from the probe and then convert them into digital form.
- The MCU, possibly along with DSP and FPGA, can apply to the data programmatically defined advanced algorithms before the data is sent: digital filtering, whitening, error-correction encoding.
- Finally, by issuing a specific sequence of commands, it calls the RF transmitter module to send data over the wireless channel.
Even thought the above listed functions may not look impressive, in practice when it comes to production-ready device, they would require quite a lot of effort to be properly implemented in embedded software. But, at the same time, the approach of using embedded software extensively in the design of the sensor is full of advantages.
- Better functionality and flexibility. In some cases, a software allows an extension of functionality without intrusion into the hardware part at all. For instance, a calibration mode for the sensor is a feature that is entirely embodied in software.
- Energy effectiveness. This aspect is utterly substantial, when a sensor is anticipated to be fully autonomous. Operation of such a sensor would rely on an energy source, comprising a rechargeable battery and some energy harvesting mechanism, e.g solar cell. To achieve a good power sustainability of the device, a software should adaptively control various parts of the power supply, as well as timely controlling the periphery modules, aspiring to the optimal point of energy balance and avoiding excessive power consumption.
- Reliability. This is mainly due to advanced error correction at the software level. For example, the I2C bus is prone to failure, especially when it comes to harsh environmental conditions. By proper error codes handling and repeat transfers initiation, reliable bus communication is a reality.
- Reduced expenses. Needless to say, nowadays developing and debugging a sensor functionality is done much easier in a software, rather than in a hardware. That way, defect fixing is a matter of code modification only, and usually does not entail electronic circuitry changes, which may have been more time consuming and expensive. Also, debugging sessions of the device in a software are handy with a presence of modern tools, supplied by chip manufacturers.
At the very beginning we mentioned that besides hardware, an IoT system may include a platform, hosted on the servers and accessible via the Internet. This is another powerful aspect of a software and hardware symbiosis, that allows data from a hardware to be processed in a deferred way by highly advanced approaches and algorithms, utilizing the big computation capabilities of the server cluster. This is really a vast space for the reign of statistical analysis and machine learning approaches, which for Remote Environmental Monitoring systems give such benefits as rich target parameters representation, long-term analytics and insights.
Conclusion
Upon the whole, the proper mix of software and hardware ingredients in one product is, without a doubt, a modern and reasonable tactic of building good things. In Sensory Ninja, we have relied on this recipe from the very beginning, as one of the core principles of our business, and strive to develop it further to create better products.