In this instalment in our series of articles focusing on various Internet-of-things systems, we explore the new Nearbus Open IoT Project. Although not the most complex of systems, Nearbus offers a level of control and interaction with devices and sensors which is ideal for demonstrations, proof-of-concept designs or even simple products where rapid development and low-cost are the main requirements.
Unlike other systems, Nearbus takes a different approach to device control. After loading the Nearbus on the device's microcontroller, it is considered to be part of the “cloud” and as such transparent to the web services or API. In other words, you can read or write to the MCU's registers directly from the cloud – which makes control much simpler than other systems. By “virtualising” the hardware in the cloud, it makes it much easier for existing services to interact with the real hardware, and in a more secure manner. Let's examine the how this is possible with regards to the required hardware and software. embedded systems
Hardware – Due to market forces and age of the system at the time of writing, the Nearbus system only works with the Arduino-Ethernet platform. Thus the end microcontrollers used are Atmel ATmega328 programmed with the Arduino boot loader and interfaced with the Wiznet W5100 Ethernet controller. However this allows you plenty of GPIO, ADCs and CPU speed to complete a variety of tasks, and due to the open-source licensing of the Arduino platform the hardware cost for around A$20 per unit in volume. The main downside to this solution is the inability to use onboard WiFi chipsets, so the agent hardware needs to be connected to a separate WiFi router for true wireless control.
Software – Due to the current hardware requirement, the only code for each Nearbus node is their sketch (code) and the Arduino boot loader – both of which are totally open-source. The rest of the work is in interfacing your own cloud- or server-based applications with the Nearbus hub system. This transfer takes place via HTTP requests.
There are two methods for interfacing applications with the Nearbus system. The first method is the “transparent” mode which allows the agent to send and receive a packet of data over preconfigured periods of time, for example every five or ten seconds. This allows your cloud applications to call functions on the agent hardware as if it was controlling the MCU directly.
The second method is the “VMCU” mode (Virtual Microcontroller) which allows direct control of the basic MCU features such as GPIO, ADC, etc., via a web services API. This is the more complex method that maps the MCU remotely and thus allows direct control of the MCU's registers and returns data in the raw from for your own web app to work with. The ability to map the registers removes a layer of complexity from the user or designer – as they don't have to worry about network protocols, instead just be concerned with the microcontroller itself.
Furthermore you can configure, add and remove devices with a web-interface, and also create connections to send data to other IoT services such as cosm or twitter. If you don't have a server capable of running your own web apps to interface with Nearbus, you can use other free or paid services such as Google Spreadsheet web apps – and demonstrations have been provided to show how easy it is to display, capture and analyse data from the hardware agent.
The Nearbus system is a different paradigm to the usual IoT systems. It may seem awkward or different to more conventional or consumer-oriented ways of doing things, however if you have a strong PHP and networking background it can be implemented easily with your server and applications. Due to the low hardware cost it's ideal for monitoring or remote-control applications that don't require complete real-time interaction.
If you're interested in moving forward with your own system based on the Nearbus, we have a wealth of experience with the required hardware options, and the team to guide you through the entire process – from understanding your needs to creating the required hardware interfaces and supplying firmware and support for your particular needs.