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[/vc_column_text]
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.
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.