# Flex pcb octopus

## Third prototype specs
- 2x flex pcb (as octopus head and legs) and 1x FR4 pcb (as base board)
- NRF52 {nRF52840-QIAA} (soldered to the flex pcb. also has a stiffener on the other side)
- IMU {ICM-20602} (shares interrupt with light sensor)
- 8x LEDs 2mA on legs (blue) {LED0603-RD}
- 2x RGB addressable LEDs {WS2812B-2020} (as eyes)
- buzzer (with transistor)
- place for vibration motor (with transistor) (not installed in final version)
- I2C ambient light sensor {XYC-ALS21C-K1} (shares interrupt with IMU)
- battery charger 50mA {TP4054}
- USB-C 
- LDO 3V3 {ME6211C22M5G-N}
- LDO 3V6 {XC6206P362MR} (for the addressable LEDs)
- 2x user buttons and 1x reset button (tactile)
- debugger pins (debugging works with ~3€ daplink debugger from aliexpress and pyocd/openocd)
- 5V rail to chain devices together
- bluetooth pcb antenna (no idea about RF, so it was minimal. just a straight track)
- on/off switch
- silkscreen sucktion cups and mouth

## prototyping
- initial idea with paper cutout (do you have any of the papers you used? would be nice to see a picture of it)
- first prototype designed while learning to make whisky sour
    - had yellow flex pcb
    - major problem: 5V rail connected to gnd
    - found the problem by pumping current through and seeing a black line on the flex pcb
    - concept worked
- second prototype had working MCU, but missing some features and mechanical problems
    - switched to black flex pcb and blue base board for contrast and company colors
    - debugger pins were on the flex pcb, didn't work out that well (lost contact and came loose) (moved the pins to the base board)
- Third prototype was fully working
    - debugger pins moved to the base board and all the legs got 2 tracks per leg
    - vibration motor not installed (too small vibrations)

## Software
- Zephyr
    - first personal use of zephyr in school with nrf52840 and hated it
        - all the documentation was deprecated and really hard to find info
        - no experience with devicetree made it difficult
    - wanted to give another chance for nrf and zephyr (hence the MCU choice, but also we wanted bluetooth)
    - now liking zephyr
        - one framework to rule them all (no need to learn framework for every MCU)
        - gained embedded linux and devicetree experience
    - custom board files uses nrf52840-dk as template
- Bootloaders
    - zephyr uses MCUboot as bootloader
    
## Story
- Idea came to me when sitting on sofa after watching flex pcb videos on youtube(insert channel here)
- modelled 3 versions for shape with paper cutout and magnets (wanted magnes to pcb, but discarded it quickly because of hard to use)
- messaged friend if he wanted to help me with it and he agreed
- took a bottle of cheap whiskey with me and bought ingredients for whiskey sour(never made before)
- started designing it with easyEDA for easy of use (and this was our first custom MCU pcb project)
    - why make things easy when you can challenge yourself, right?
- first prototype ordered and hand soldered by us
    - problems:
        - nrf52840 has 0.4mm pitch in footprint, so hard to solder (especially on flex pcb)
        - 5V rail connected straight to ground via accidental via (drc was full of warning and errors, so we ignored it)
        - wanted battery support, buzzer, vibration motor
        - ...
- this project was related to the current company we were working for part time
    - showed it to the company and they agreed to sponsor the materials and services (the PCBs and assembly was expensive)
- second prototype was complete redesign and cleaning DRC errors and warnings
    - ordered assembly from JLC rather than hand soldering it (the 3 pcb boards had to be soldered by hand and was fairly tricky because of the bending of the flex pcbs and keeping them straight on the pads)
    - also fixing some mistakes and adding more functionality (got feedback from the companys senior embedded developers)
    - after fiddling with it with debugger, we managed to get the LED working. (didn't add a 32k clock, so had troubles configuring it and it kept crashing)
- Third batch was 10pcs (as "ready product")
    - this batch worked and was ready for software integration and example codes (zephyr)
    - this became a desk toy for the company, for technical and non-technical co-workers, so had to be easy to use

## Fun things
- all the PCBs assembled take the shape of an octopus, so it wobbles when shaken
    - when the device wobbles and the LEDs run PWM, you can actually see with naked eye, the PWM working where the LED turns on and off (id like to see a video of it)
    - the IMU is in the top of the head, meaning you can tap the whole device and it can register that as a button press (do some demo of it, or an application that responds to the orientation its tilted towards)

## Flaws
- when stress testing the devices mechanical aspect by slamming the it to the base board, eventually some of the MCU pins got detached. (rip please dont torture electronics) (what else are testers supposed to do?)
- vibration motor was mostly unnoticable
- transporting it is tricky
    
## point of this project
- everyone wants to know the point, but there is none
    - it was made to be a project where art and engineering collide
    - and to learn more about pcb design, software, device development, etc.
    - so the point was mostly the journey
    - and of course it looks cool. who wouldn't want one

## open source resources
- HW
    - EasyEDA project
    - gerber
    - pick and place
    - BOM
    - schematics
- SW
    - MCUBoot
    - Zephyr board files and examples
- Pics
    - Paper prototype
    - first prototype (yellow)
    - Second prototype
    - "finished" product
    - Eye LED test
    - IMU I2C debugging with logic analyzer
    - Multiple devices (looks like army)
    
## Thanks
- massive thanks goes to:
    - to my friend, helping me empty the whiskey bottle
    - the company for sponsoring my dumb project and supporting us to learn and improve as engineers
    - hackaday europe 2026 for being excited about it and asking questions (if you saw me, say hi in the comments)
