gcormier / megadesk

Open-source IKEA Bekant controller board
GNU General Public License v3.0
726 stars 53 forks source link
arduino bekant ikea ikea-bekant ikeahack kicad megadesk

Firmware build

megadesk

Do you wish your IKEA Bekant had memory buttons? I sure did. So I made megadesk. Design goals were to have it fit in the original housing and use as many stock parts as possible, be completely independant of the existing controller, as well as store any number of memory positions.

You can now use the megadesk companion if you want to integrate it with your smarthome.

For sale on Tindie - Plug and Play!

I've setup a store on Tindie for those who wish to order a ready to go, plug and play version. It comes with a fully assembled PCB as well as the cable you will need to connect it. No soldering or assembly required! https://www.tindie.com/products/gcormier/megadesk/

Features

Recalibration

The factory recalibration routine has been implemented. The original BEKANT controller is no longer needed to recalibrate motors. This will cause the desk to move to the lowest possible extremity. Please exercise caution and be prepared to unplug the power if needed. Any interruption to this procedure requires a power-cycle.

Serial control

Enables serial input/output for what the megadesk is doing and to send commands. Some people wanted to have a smart/connected megadesk, but due to the size limitations of the space inside the case, an external module is the best solution. A lot of discussion in PR #12 and PR #58, as well as discussion thread #87.

You should also check out Megadesk Companion for a plug and play esphome solution.

More information in Serial.md. There's also specific details on esphome.

Custom MIN/MAX

Enabled by default, no limits.

This allows you to specify custom values for the minimum and maximum height of your desk. This is useful if you have things stored underneath, or maximum height limitations (shelf on the wall).

Audio Feedback

Disabled by default.

Adds extra audio feedback when pushing buttons or using functions.

Dual-button memory

Disabled by default.

This allows storing unique memory positions against each button. When enabled, you could save a double-click position for the up button as well a double-click position for the down button.

Disassembly of the existing control unit

I now have a video with a few tips on disassembling the IKEA Bekant controller and installing megadesk. Due to popular request, I now have a second video with live surgery of a brand new, unopened control unit.

NOTE: While the recalibration feature has been added to megadesk, it is recommended to keep your original board.

Video

Unfortunately the beeps aren't captured well in the video unless you turn up the volume.

Quick Commands

UP pushes Function Audio Feedback
2-10 Memory positions # of beeps + high tone (saving), # of beeps (recall), # of beeps + sad tone (recall, no memory saved at that location)
11 Set the lowest/minimum height to current position, or, reset back to default (toggles) 4 low beeps when setting a limit. Single low beep - disabled.
12 Set the highest/maximum height to current position, or, reset back to default (toggles) 4 high beeps when setting a limit. Single high beep - disabled.
14 Recalibration procedure, desk will lower down to the lowest limits (Will begin moving)
15 Reset Fanfare
16 Newer units, no operation. Units before Feb 2021 - toggle different variants.
17 Toggle audio-feedback mode double beep enabled. single beep disabled.
18 Toggle both-button mode double beep enabled. single beep disabled.

Setting and Recalling memory slots

Setting

To set assign a memory slot you press the up button two or more times. On the final button press you hold until you hear a tone that indicates what slot you have assigned (2 beeps, 3 beeps, etc).

Recalling

To recall a memory slot you push the up button the number of times for that memory slot (2 for first slot, 3 for second slot, etc). If you try to recall a memory slot that has not been saved you will hear an "error" chime indicating that no height information could be recalled.

Troubleshooting

  1. Have you tried turning it off again? :)
    • Seriously - from testing many of these units, about 1 out of 20 times the handshake seems to fail as it does contain some random elements. A simple power cycle will provide a new handshake and the unit will power up.
    • Try unplugging the desk from the wall and plugging it back in (With megadesk connected)
    • Alternatively, try powering on the desk with NO controller attached, and then plugging in the megadesk after the desk is powered on.
    • Note that the power supply that comes with the BEKANT can store a charge for quite some time. It might be necessary to leave it unplugged for 60-120 seconds for it to lose that charge.
  2. Is the safety key inserted? It is still required for the motors to engage. You will not hear any beeps when using buttons if it is removed.
  3. Try different variant modes described above by pushing UP 16 times. (Pre Feb-2021 units only)
  4. Test the buttons
    • Holding DOWN while powering on will wipe the EEPROM and enter a button test mode, where the up/down buttons can be held to test that they are working - a power cycle is required to exit this mode.
    • If they don't work
      • Ensure the safety key is fully inserted
      • Ensure the ribbon cable is seated far enough
      • If the FPC connector has a latch, ensure it is latched
      • You can clean the ribbon cable gently with a swab and rubbing alcohol which has been reported to help with intermittent issues
  5. Factory Reset
    • Holding DOWN while powering on will wipe the EEPROM and enter a button test mode (see above) - a power cycle is required to exit this mode.
  6. Recalibrate/reset the motors
    1. Factory controller
      • This step must be done with the ORIGINAL BEKANT controller.
      • Hold the UP and DOWN buttons for 8 seconds, after that let go of up while maintaining the pressure on the down button.
      • The desk will lower until it stops on its own.
      • Let go of all buttons, and test regular desk functionality with the original controller.
      • Once functionality is confirmed, replace with megadesk.
    2. Megadesk
      • Push the UP button 14 times.

In the news

If you've made a blog/video posting with Megadesk, please open a PR to add it here, or send me a message with the URL.

  1. https://calvin.me/ikea-bekant-megadesk/
  2. https://www.youtube.com/watch?v=QopaeB1k6LU

Hacking, contributing and DIY

This has been moved to DIY.md

esphome configuration

esphome example configuration avalible at esphome.md, and other sample configurations in esphome folder