RUI3: Simplified IoT Development for Low Power LoRaWAN devices
- What is RUI3?
- Learn once, code once, use many
- Coding at the API level, firmware customization
- What kind of hardware will be supported?
- Integration to other platforms
- How does it resolve the power consumption issue?
- Faster development, speed up time to market
RAK Unified Interface v3, aka RUI3, is a modular IoT platform that supports a variety of devices and applications to cater to different case scenarios and solutions. The basic concept behind RAK’s products is that we make IoT easy. It starts with the hardware: without good, reliable hardware, nothing will be achieved, not easily anyway.
But the hardware alone isn’t enough. You need software to drive it, and preferably without having to re-invent the wheel every time you start a new project, or port a project to a new platform. In the past years, we have been enriching our range of cores, both for WisBlock and other products, and have now four main MCUs in our portfolio: nRF52 (RAK4630, and RAK4600, EOL); STM32 (RAK3172, and quite a few EOL models); ESP32 (RAK11200); RP2040 (RAK11310).
So, we needed to provide our customers with a way to easily develop applications for these MCUs. We have Arduino BSP for most of these, except RAK3172, relying on, and extending work done by other companies and communities. For instance, our WisBlock Arduino BSP for RAK4630 and RAK4600 was based on Adafruit’s work for the nRF52840. We have a separate BSP for ESP32, and yet another one for RP2040. Hardly what you would call unified…
In between, we had started to develop a unified API for the cores that we were selling at the time, mostly STM32 products, which all came in different formats and packages. It was a good start, with emphasis on the U part: it provided a Unified way to program these various MCUs. But it lacked a few features, like a lack of common IDE support, and suffered from issues, like inconsistent API naming, and online compilation only.
So, we went back to the drawing board, and devised a new ecosystem that would match the new hardware ecosystem we were developing, Wisblock. In a way RUI3 is the software equivalent of Wisblock. It accepts various MCUs, and supports different configurations. All you have to do is learn once, code once, so that you can use many times.
So, what does learn once, code once, use many look like?
Here is a quick example. The master keyword here is api, not surprisingly. Everything in RUI3 is accessed from this. When you start an RUI3 application, a lot of the work has been done for you already. You don’t need to define pins for LoRa, I2C, SPI, and initialize anything: it’s our kitchen, we know where the utensils are… So, initializing LoRa boils down to setting the proper parameters. Same goes for BLE – if available in the corresponding MCU.
So far, we have released RUI3 for RAK4631 (nRF52840 + SX1262) and RAK3172 (STM32WLE5CC). More cores will be added to RUI3 as things move along. The ultimate goal for us is to supply our customers a unique API that enables them to code once, and use over various platforms, as the needs arise.
One of the particularities of RUI3 is that it’s a “bare metal” API: the goal is to provide you with the lowest power consumption possible: the nRF52840 and STM32WLE5CC are already very power efficient, and RUI3 helps things along by trimming down power consumption. This means, however, that while you may use the Arduino IDE to code for RUI3, it won’t be compatible with libraries that depend on RTOS, for example. But our own sensor modules will all be supported by our own libraries, ensuring you have a seamless experience porting code to RUI3. In upcoming upgrades, will have libraries that simulate threading or scheduler. While RUI3 might never be 100% Arduino-compatible, one of our goals is to come as close as possible.
Another important goal for RUI3, and in general for our products, is to speed up your time to market. This can only happen when if your iterations of the prototype can rely on standardized hardware and software. By providing our customers with a software suite specifically tailored for our hardware, we make sure you can develop your next product reliably and efficiently.