HereO: Using Zephyr OS to Control Multiple Modem Devices (By Ilan Ganor)
Today most location data is being provided by mobile phones, but as IoT becomes more and more accessible and applicable to everything, we can see consumer products emerging that provides indoor and outdoor location information, either as a main service or as a part of the whole product offering.
Our team goal was to develop a software stack which will enable to run multiple communication devices all on the same UART port.
Before the technical part, we will explain what we initially needed.
The product we had in mind was a kids watch, the watch needed to support 3 UART devices :
- GPS, for generating outdoor location readings
- Modem for transmitting the data and supporting cellular triangulation
- WiFi, for supporting indoor location readings
The project processor is the Intel Curie, a Quark X86 processor, side by side to an ARC processor.
The Curie module has two UART ports, one internally connected to BLE nRF51822 and the other is a debug port.
We connected the curie debug port, cellular modem, WiFi modem and GPS to each of the UART expender ports, the expender is being controlled by Curie GPIO.
The system also utilizes internal BLE, Gyrometer and Accelerometer (used for calorie burn measurements), external temperature and barometric sensor (used for more precise location algorithm and well being measurements), and an I2C based display (for supporting most irrelevant function of the watch, actually showing the time).
Our Experience Using the Zephyr OS
- Using the Zephyr OS presented quite a challenge: The entry level was high and requires one to explore the OS in order to understand it well.
- It is a relatively young project with very little examples on the web, there is no “clear” way of doing many things.
- A good knowledge of Linux build system (Kconfig, Makefile, defconfig etc..) is required.
- Once the concept is clear, the project enables to set an extremely powerful application using low performance processor (i.e. can run on low end ARM devices, ARC, etc..).
- Low footprint, the application runs on a 384kB flash, 80kB SRAM that the Curie provides and it still have some space to support more features.
- Portability, this is maybe the most important advantage. The solution is “hardware agnostic” we have already started testing it on NXP platform, the porting is quite easy and requires very little effort.
Why the Zephyr Project was chosen?
hereO as a company have chosen Zephyr OS as the main OS for most of it’s projects because it enables to create IoT devices with connectivity, sensing, data transfer protocols and extreme modularity based on low cost processors. Until now it was achievable mainly by using Linux and more powerful (and expensive) processors. The Zephyr project really opens up a lot of new and exiting opportunities.
CommSolid – connecting.amazing.things (Lars Melzer)
CommSolid is the cellular IP (Intellectual Property) company providing leading edge ultra-low power solutions for the Internet of Things (IoT).
CommSolid’s CSN130 baseband IP solution is designed for the 3GPP NarrowBand-IoT standard (Cat-NB1, NB-IoT) and consists of hardware (RTL) and software stack. Embedded into customer System-on-Chips (SoCs), it allows sensors and actuators to be directly connected to the Internet enabling smart applications for logistics, health, smart city and monitoring. The ultra-low power consumption makes the CSN130 IP suitable for long lasting battery-operated devices. CSN130 is based on a flexible architecture combined with a proven technology and is available for licensing and System-on-Chip integration now.
Why the Zephyr OS was chosen?
CommSolid’s CSN130 NB-IoT baseband IP solution uses the proven Tensilica® Fusion F1 core technology by Cadence® enabling to fit the complete modem including cellular protocol stack and physical layer into a single core. This required a high performance yet low power Real Time Operating System (RTOS).
CommSolid evaluated various Real Time Operating Systems. Main criteria were performance and stability to enable reliable NB-IoT communication. Additionally, simple mechanisms for the execution of middleware tasks and customer applications were needed. All these aspects are addressed by Zephyr Project.
The Zephyr kernel scheduler enables high precision synchronization to a cellular network. For IoT devices, power efficiency is crucial and the Zephyr OS comes prepared to support this demand, resulting in ultra-low power consumption and long battery life. Driver API and subsystems add scalability to the solution. It enables implementations from slim modem functionality at very small footprint up to cloud connected devices with applications running on top.
CommSolid’s CSN130 NB-IoT baseband IP solution using the Zephyr RTOS has already been demonstrated on CommSolid’s NB-IoT reference platform with real time voice recognition for voice activated data transfer running on top of NB-IoT on a single CPU core.
GRUSH* (By Zephyr Project)
Grush* are the creators of an advanced Bluetooth motion sensing toothbrush, coupled with interactive and instructive mobile games. Grush guides kids’ brushing and lets parents track the results.
Grush uses a technologically advanced motion sensing toothbrush that doubles as a gaming wand controller. The toothbrush wirelessly transmits data using bluetooth to Grush Games – an interactive mobile game that guides children through the brushing process. Grush also employs a cloud service, which stores brushing information available for parents to monitor their children’s brushing activity through the parental dashboard app, allowing them to reward them accordingly on their performance.
Why the Zephyr OS was chosen?
The Zephyr project made it easy for Grush to build its advanced Grush Games algorithms for the connected-toothbrush gaming experience. Grush needs an OS that can deterministically gather sensor data, process complex algorithms, communicate with dual processors, and communicate with a smartphone while ensuring the application can use as much memory as possible.
Zephyr OS was the perfect solution. The Zephyr OS was “small enough out of the box” and didn’t require additional engineering. Being an open source, small and scalable RTOS, Zephyr’s tiny footprint allowed Grush developers to maximize the effectiveness of the Grush Games algorithms. The Zephyr OS’s multi-threading capabilities enable Grush to collect sensor data, run algorithms and communicate with a smartphone reliably at the same time for a seamless toothbrushing experience.