For some, electronics has been a hobby; some of these hobbyists work in the industry and develop gadgets outside their working hours while others simply do it as an activity they enjoy. However, recently the landscape has changed and there are an increasing number of people forming what is now known as the ‘global maker community’. While many of these people ‘tinker’ for fun, there is also a serious side where ideas spawned in bedrooms are being used as the basis for start-up companies – in fact, many of the silicon valley ‘giants’ started in just this way.
The rapid growth of the IoT and the opportunities to create new and innovative devices is fuelling (and has been fuelled by) this movement. With the greater availability of information and tools such as 3D printing, entrepreneurs are creating innovative solutions to problems and, in some cases, successfully bringing them to market.
One of the biggest influences and enablers has been the increased availability of relatively cheap, open-source, microcontroller development systems and associated software development environments. This is leading us into an era of truly democratized technology.
The way it was
In order to be successful, microprocessor companies have found it necessary to support designers with development systems. However, in the past these were expensive and rarely available to designers outside large companies. These bulky solutions were complex and could be used for training or software development, but were not something that could be incorporated directly into a design, even a prototype. In fact, it would usually require a substantial team of engineers to develop any microprocessor-based project, even to first prototype.
At this time, software development was far from simple and usually required specialised compilers and hardware tools for debugging. Often an in-circuit emulator was used to replace the microprocessor with a connector that allowed the system to be controlled step-by-step as software and hardware was debugged and developed. As can be expected, these hugely powerful tools were beyond the reach of home users – and even small start-up companies.
A bit of history
Technology started to become more accessible over quarter-of-a-century ago. At that time, open source software was in its infancy and low cost system-on-chip (SoC) devices were emerging. The open source movement spawned tools such as GNU and Linux, now a significant desktop and embedded system operating system. Although, in reality, the open source movement started in the 1980s, it took at least a decade for the name to enter common usage.
Open source is an early example of crowdsourcing – a large group of people are able to contribute to a project in parallel meaning that new requirements or changes to hardware configurations can be responded to rapidly.
While ASIC technology offered to produce semi-custom silicon it was somewhat cost-prohibitive for all but large companies. However, advances (especially miniaturisation) in semiconductors meant that SoC devices that required few, if any, external components became credible, and lower cost, alternatives.
At the same time, the semiconductor business was becoming less vertically integrated and semiconductor foundries were emerging, giving almost any company access to semiconductor technology. This business model offered key circuit blocks as silicon intellectual property (IP) meaning that even the smallest company had access to well-proven processor cores, memories and interfaces. This allowed design to be modularised and faster, with lower up-front costs – and all of these savings could be used to make the end product more competitive.
Modern development systems
By definition, SoC devices are highly integrated. Typically they will contain a processor core (or several), Flash memory, SRAM, interfaces and peripheral components that comprise a fully functional system. Many suppliers will have a range of devices that offer different performance, memory capacities, interface protocols or other features that allow customers to choose the solution that best meets the application needs – and their budget.
Nowadays, on-chip debugging support is provided on microcontrollers via a JTAG or SWD interface. Designers are able to access information about the internal status and can also perform many tasks traditionally requiring and expensive ICE such as setting breakpoints or capturing and recording traces. As the test and debugging is contained within the microcontroller, the same system that is used for development / debugging can be a prototype or even a production version.
The huge size of the semiconductor industry is driving significant economies of scale and this has led to a substantial fall in the cost of microcontrollers. This, in turn, has led to the availability of development boards that are now available at relatively low cost. In general, these boards simply contain the microcontroller and a standard communication interface, which could be wired or wireless, as well as sensors. Adding off-the-shelf middleware or software libraries turn these simple, low-cost, boards into complete reference systems with on-board development tools and debugging. Once development is complete, the low cost and small size of these boards makes them suitable for small volume production.
BeagleBone was an early example of a single board computer. Released in 2011 with a price below $100, this system provided simple interfacing and was small in size. Expansion options were furnished through ‘capes’ – add-on boards that were introduced at a later date to add more functionality. BeagleBone was one of the first single board computers to become popular in the hobby market.
The low-cost and simple Arduino is another open-source microcontroller board that has become highly popular. Included in the system is the ARM®-based Arduino Due and a range of ‘shields’ (add-on boards that increase functionality).
Alongside these open-source devices, there are other small and low-cost single board computers that do not follow the open-source philosophy including the Raspberry Pi and several solutions produced by the microcontroller manufacturers themselves.
Writing and debugging software
There are multiple sources for software development tools including from hardware suppliers that offer them to support their products, commercial vendors and the open source community. While software tools from commercial vendors are often expensive, in many cases the same functionality is available in open-source tools, or even free tools. If this is not the case, some vendors do offer reduced-cost licences for students or individual purchasers.
Generally programming is performed using the ‘C’ language on a PC and then loaded to the development board via USB or another commonly available interface, which will also allow access to on-board microcontroller features such as the debugger. Integrated development environments (IDEs) such as Eclipse simplify the task of coding and debugging software. Based on a modular structure, Eclipse is an open-source IDE that supports multiple languages including Java, C and C++ through a series of plug-ins.
Visual Studio Express is a cut-down version of Microsoft’s professional IDE that has been available as a free version since 2005 although, recently Visual Studio Community, which offers the feature set of the full version, replaced this. There are several other free editing packages available, many of which include features such as allowing for code compiling/debugging. Others, such as the Arduino, have a proprietary IDE, which allows for simple C-based programming. With the choice and breadth of tools available, even hobbyist programmers can have access to powerful resources without needing to spend a lot of money – or in some cases, any money at all.
Boards that run operating systems directly such as BeagleBone and Raspberry Pi that both run Linux, can be directly programmed and do not require code to be transferred from a host PC. One language that this works well with is Python, particularly as it is interpreted and interactive. As it is open source based and there is no usage charge, Python is very popular. It has simple syntax which allows it to be learnt quickly and comes with a wide range of software libraries and third-party add-on modules, all of which increases the functionality.
As Python is interpreted, it is slower than languages such as C or C++ but with powerful modern processors, this is rarely an issue in most applications. If the ultimate in speed is required, then Python can be deployed for proof-of-concept prototypes before doing the final coding for production in C.
The open source community works well, especially for new users of these tools that reach out to one of the many online resources for support. Many manufacturers understand the value of these resources and so they host forums and user groups where questions can be asked and answered, sometimes by expert users and sometimes by the company themselves. In return, the company has access to a group of users who can provide product feedback and ideas for next generations of products.
These days, many development tools reside in the cloud and do not require a powerful PC to use them. As such, there is no need to install the tools on any machine, making it easier to get started. There is also no need to keep versions of created software synced between multiple machines and, being cloud-based, this approach lends itself very well to online collaboration between teams that are spread out geographically.
Hobbyists and makers are benefitting from significantly reduced barriers to entry and a combination of lower costs, freely available tools and significant amounts of web-based support have created a spike in the amount of ‘DIY’ projects and start-ups. Technology is truly being democratised and is far more widely available than ever before.