wearable posture sensing with bluetooth module

Similar projects worth following
My DIY version of a posture sensing wearable. I think this project is a great entry for: 'Refresh Work-From-Home Life'. It addresses workspace ergonomics specifically as a way for users to receive real time feedback on the device they're actively working on. It's intended to improve a users posture by providing feedback via bluetooth when slouching is detected.

It's been designed to be worn in a pocket sewn onto the back of an undershirt.

This device contains

- A BN0055 9DOF IMU to measure users posture
- ATmega32U4 operating at 3.3V and 8MHz
- Adafruit BLE UART module for bluetooth communication
- 500mAh LiPo battery

I'm using the free Light Blue app to receive notifications from the device. Instructions to connect below.

I know products exist with similar functionality but I decided to build one myself for the fun of it.

I was happy with the final functionality and repeatability of the measurement output by the BN0055.

I had the board manufactured at

All the components were ordered from DigiKey.

I used a toaster/reflow oven to surface mount the components.

I 3d printed a case, I had to divide the case into multiple parts as I have a very small print bed.

I did not break out the ICSP pins to headers/connector on the attached PCB files, this means I had to solder jumper wires directly onto the ATmega32U4 to upload the bootloader. 


h - 3.15 kB - 12/04/2020 at 01:56



ino - 6.13 kB - 12/04/2020 at 01:56


Screen Shot 2020-12-03 at 5.54.22 PM.png

Kicad schematic file

Portable Network Graphics (PNG) - 51.02 kB - 12/04/2020 at 01:54


  • Video Update

    ImageryEel06/21/2021 at 03:19 0 comments

    I created a quick video showing the process I used to create Posture Pack:

  • Hackaday Prize Entry

    ImageryEel06/21/2021 at 02:49 0 comments

    I've submitted this project to

    2021 Hackaday Prize specifically for the 'Refresh Work-From-Home Life'

    Wish me luck! If there is still interest in this project I will generate an Rev2 board with some of the improvements I have found through testing Rev1.

    The top of my list for improvements are 1) a cheaper bluetooth module available from Digikey 2) option for haptic feedback when you're not in the mood for bluetooth (maybe reading or working without a screen). 

    Thanks for the support!

  • Gif fun

    ImageryEel12/10/2020 at 21:01 0 comments

    Action GIF

  • Future improvements

    ImageryEel12/04/2020 at 23:21 0 comments

    Regarding the Adafruit Bluetooth module: I would have loved to integrate a 'bare' bluetooth module and avoided using a breakout board for both cost saving and cosmetic reasons, however I didn't want to get into flashing the bluetooth firmware. If I release another revision I will try to integrate a discrete bluetooth module. For a proof of concept I think I made the right decision as the breakout board was really easy to use.

    The Posture Pack also badly needs some haptic feedback. Although I spend the majority of my time next to a computer I'm curious how effective this would be walking outside. It would be easier to use as you wouldn't need to change bluetooth from laptop-phone etc. 

  • Final configuration testing

    ImageryEel12/04/2020 at 04:17 0 comments

    After measuring my posture without feedback and after with bluetooth notification feedback I'm pretty happy with the result of this project. Here are the improvements I would include in another revision of the board:

    1) Vibration motor for non-bluetooth posture notifcations

    2) Add traces/connector for ICSP (CRITICAL!)

    3) Replace R1 to 2k to increase charge rate to 500 mA

    It would be neat to do a study of long term impacts of using this, could it actually improve sitting/standing posture without the notifications? I think that it likely would.

    Here are some measurements before and after enabling notifications


    Average Posture



    WFH-With Bluetooth Posture Feedback


    Random Weekend


    In the Lab


    Straight as Possible




View all 5 project logs

  • 1
    Uploading bootloader/ino file

    I used a teensy 3.2 to flash the bootloader via ICSP.  See attached image for connections.

    Install pro micro library as described:, select teensy port, Change board to ‘pro micro’, Programmer: ‘Arduino as ISP’, now you can flash the bootloader and you can upload a sketch by selecting  ‘upload using programmer’.

  • 2
    Making a pocket

    I'm not a experience tailor so I won't offer detailed instructions for the pocket, however I did use these shirts:

    They were long enough for me that I could cut off the bottom 15cm or so and use that to create a pocket as shown in the image.

  • 3
    Basic use of the Posture Pack

    There are three modes for the sensor, 

    1) Acceptable posture ( >70 based on my measurements and testing)

    2) Below threshold, user receives 'You're Hunching!' notification followed by measured posture

    3) Sensor is placed on flat surface, outputs current posture, average angle, number of samples and firmware version (sample output below shows current angle -12, average: 75, samples 1662 and version 7.

View all 4 instructions

Enjoy this project?



Ellis Hodges wrote 06/05/2024 at 05:54 point

It truly encompasses a wealth of information about the subject matter.. Like 


  Are you sure? yes | no

Danie Conradie wrote 12/11/2020 at 10:40 point

Very cool project. On your "Final configuration testing" log, what sensor value did you use for the measurements, and what does 'WFH" mean? Do you turn on the sensor when you sit down or does it automatically detect when you sit still?

  Are you sure? yes | no

ImageryEel wrote 12/11/2020 at 17:39 point

Hey Danie, thanks! WFH = Work From Home. I think lots of people who are WFH are using sub-par chairs and desks (like me) who could benefit from this device. I use the measurement 'orientation y' from the BNO055 sensor/adafruit library to estimate posture. The sensor is always on and samples are taken every ~3 seconds. According to the data sheet the sensor can draw up to 12.3 mA, and the bluetooth module can draw 2-15 mA, based on this the pack should have >15 hours of operating capacity. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates