In Progress

WANTED: Embedded Firmware developer (nrf52 / ARM mbed OS)

I am searching for an experienced embedded firmware engineer / software developer with experience in ARM mbed OS who is helping me with writing the firmware for a project incl. the following components:

1) MCU Nordic nrf52 (Fanstel BT832 or BT840)

2) Gyro incl. DMP (Invensense mpu9250/ICM20689 )

3) Sound decoder (VLSI vs1053b)

4) Serial (SPI) NAND flash storage (Micron MT29F2G01)

5) Touch input (TI msp430fr I2C) and

6) Vibration (TI drv2605L).

7) Battery gauge (TI bq27441)

It would be great to use ARM mbed OS as IDE of the choice for easy access to the hardware components mentioned above. Other suggestions (KEIL, Arduino) can be discussed.


Input sources:

A) MPU-9250/ICM-20689 - motion/info from dmp and recognized movement (Algorithms already exist!)

B) MSP430FR - the capacitive input (TI captivate) is already preprocessed and can be consumed via I2C register. Address and information will be provided

C) Other devices (known Identifier; connected via BT5) that are sending signals within a BT 5 mesh network

D) Predefined Timeouts

E) BQ27441 - Battery Status & health; charge Level; system power consumption

Output hardware:

A) VS1011e/vs1053b + tpa2016d2 (connected in a slave setup – play/pause/stop/loop mp3 files)

B) DRV2605L (using the build in vibration effect library)

C) VS1011e/vs1053b + tpa2016d2; drv2605 of other/connected BT devices (known identifier; within BT5 mesh)


Scenarios to be achieved:

(1) recognize input and execute output (play sound from (Serial SPI NAND) flash storage and/or execute vibration) on same device

(2) recognize input (on device#1) and execute output (sound and/or vibration) on device#2,3,4,.... (all within mesh network or single device selected by UUID, name or proximity)

(3) recognize devices in range and add/subscribe/unsubscribe to/from bluetooth mesh network

(4) safe significant processes and events (to be defined) in local log file and safe on (Serial SPI NAND) flash storage

(5) upload new firmware via Bluetooth OTA (should be already supported by BT832/nrf52 SDK)

(6) send files/push from host/master (e.g PC) to device (e.g. mp3 file) and receive/pull from device to master (e.g. log files)

(7) put all components used on the device in low power/ sleep mode / deep sleep mode (make use of all available power saving techniques on all components)

(8) wake up device on interrupt (time, bluetooth, gyro interrupt, touch interrupt, battery level events)

(9) use proper filesystem on the attached (Serial SPI NAND) flash storage e.g. LittleFS or FatFS


Parts of this project already exist on an arduino basis without (!) bluetooth functionality and different components (e.g. DFPlayer Mini instead of vs1011e/vs1053b) so there is already code existing and available that - beside the adjustments that are specific for Arduino (low power library, battery readings,...) and the hardware components - can be reused if needed and wanted.

All basic libraries or examples (some from arduino) are available and will be shared upon start. All Pin definitions and connection examples will be provided for sure too. Also, I will make sure to be as supportive as possible with testing and providing feedback as quickly as possible.

Final deliverable would be the final working code incl. all necessary files to achieve the above mentioned scenarios on the mentioned hardware.

I am happy to answer and discuss all questions before and while working together on this project.

Skills: Arduino, C Programming, Electronics, Firmware, Microcontroller

See more: mbed kits, mbed ti, padi mbed, mbed m4, nrf52 mbed, mbed login, stm32 based mbed compatible board, mbed developer

About the Employer:
( 2 reviews ) Berlin, Germany

Project ID: #18464784