One of the reasons for my hiatus from OpenADR is due to some uncertainty when it comes to the main processor for the robot. My current implementation uses a Raspberry Pi for general control and data logging with an Arduino Mega handling the real-time code. However, these two boards result in a combined price of $80 ($35 for the Raspberry Pi and $45 for the Arduino). Requiring these parts would make the total cost of the navigation chassis much higher than I’d like. These parts might also make it more difficult to manufacture OpenADR if I ever decide to turn it into a product. While I could always create a custom board based on the Arduino Mega, the Raspberry Pi isn’t exactly manufacturing-friendly.
These reasons are why I’m exploring alternative options for the main controller for OpenADR and through my research I’ve discovered two options that I’m pretty excited about. Both the C.H.I.P. Pro and ESP32 are powerful processors that could potentially be used for OpenADR, with the former being similar to the Raspberry Pi and the latter being closer to an Arduino. Below is a comparison of specs and a description of how they could be used.
The C.H.I.P. Pro is an embedded Linux module produced by Next Thing Co. and is advertised as a solution for products requiring embedded Linux. It has onboard WiFi and Bluetooth, and has an ARM Cortex-A8 processor with 256MB or 512MB of RAM running at 1GHz. An added benefit is the Gadget ecosystem that Next Thing Co. announced. They haven’t released too many details, but the impression I got is that it’s a Linux package that allows for easy and secure updating of products running on the C.H.I.P. Pro system. My expertise starts to fuzz when it comes to product software management, and I know very little about security, so having an ecosystem that would make this easier would help me a lot.
One possible downside is that embedded Linux isn’t always good enough for real time applications. While the board might have enough GPIO to connect to the robot’s peripherals, they might not be able to update outputs and read data fast enough for what I need the robot to do. For example, any timing delays in the reading of the ultrasonic sensors could lead to incorrect distance data that would inhibit the robot’s ability to understand and map its environment. This is something I can experiment with when I receive my development kit.
The ESP32 is the other side of the embedded systems coin. It doesn’t run Linux, but instead uses a Tensilica LX9 microprocessor with 520KB of RAM running at 240MHz. It also has WiFi and Bluetooth built-in. The plus side of a bare metal system is that there’s less concern about delays and real time control with the robot’s peripherals. The downside is that this makes it much harder to write software for the robot. A lower level language would need to be used and without Linux or the features of a more powerful processor, certain features, such as real time data logging, may be harder to manage and implement.
While different processor architectures aren’t always directly comparable, the ESP32 does run a 15x the speed of the Arduino Mega I’ve been using so far. So while it might not be able to compete with a Raspberry Pi or C.H.I.P. Pro in terms of data processing, it’s way more powerful the Arduino and it will probably still be possible to implement the more complex features. I currently have SparkFun’s ESP32 Thing development board on my desk and look forward to testing it out with OpenADR!