Giter Site home page Giter Site logo

gcormier / megadesk Goto Github PK

View Code? Open in Web Editor NEW
712.0 21.0 53.0 23.5 MB

Open-source IKEA Bekant controller board

License: GNU General Public License v3.0

C++ 19.91% HTML 79.17% PowerShell 0.77% Batchfile 0.15%
arduino kicad megadesk bekant ikea ikeahack ikea-bekant

megadesk's Introduction

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).

  • Memory 11 will use the current desk height to set the minimum limit. If already set, it will clear it.
  • Memory 12 will use the current desk height to set the maximum limit. If already set, it will clear it.

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

megadesk's People

Contributors

ananalogguy avatar gcormier avatar lauritk avatar philwmcdonald avatar tagno25 avatar tbremer avatar thechuckster avatar zmottie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

megadesk's Issues

Slight overshoot on recall

First off, I have to say that having your desk learn new tricks after a couple of years is pretty damn neat.

It feel like my disk is slightly overshooting the destination by ~10-15 mm.
This is obvious if I go to position 1, the ask again for position (and again..) it will go back and forth ~20 mm instead of staying still.

Since I really have only two positions and the overshoot is always in the same direction I can account for it at the memory store phase.

I am fairly sure this can be fixed or improved.

Just a small nit picking as this is really awesome. Seriously, thanks!

Compiles but doesnt run

The latest master compiles and uploads in vscode, but the board doesnt beep or control the desk

Since I don't have a tindie-account I am going to hijack the GitHub project

Ok, sorry for talking about the product here, but I don't want to create an account there until I know if I buy.

I have zero knowledge about embedded programming, soldering and putting together cables aside from plugging in a power supply. 😓

On the product page (https://www.tindie.com/products/gcormier/megadesk/) you talk about ordering a premade cable, which I can't find in your shop. As far as I can tell "connecting the cables" is soldering the cables to the correct contacts? I am a bit lost here tbh.

Megadesk v4 no longer controls motors to adjust BEKANT height

👋🏻 I have a Megadesk v4 that I bought on July 2, 2020. I've been using it happily in my BEKANT with two pre-programmed positions. The module's stopped working, and I'm hoping someone has an idea about how I can troubleshoot 🙏🏻

If I recall correctly, I was adjusting the desk from a standing height, down into my usual sitting position. For me, that's two short presses on the up button. For some reason, while the motors were working and the desktop was moving, I pressed either the up or the down button while the desk was moving between positions. The motors stopped and the Megadesk v4 module hasn't been able to move them since 😨 The module beeps for various actions (like the initialization handshake and if you try to store new positions), but the motors just never move. I think you can hear the motors activating for just a split-second when you press the up or down button.

I appreciate the excellent README in this repository, and I've tried all six steps in the Troubleshooting section. Still nothing, though: the motors won't raise or lower the desktop. I've reinstalled the stock module and it works fine.

I'm happy to share a video or more detailed description of the module's behavior—but before I do that, I thought maybe someone might've seen something similar to this and have an idea offhand. (I didn't see anything similar in any existing issues, either.)

Thanks for any ideas 🙇🏻 (And thanks for Megadesk, @gcormier! It's such a nice little quality of life improvement. I'll buy another module in a heartbeat if I need to 🤘🏻)

Desk doesn't move on button press

I hear the four beeps during startup, and both testing modes also work as expected. But when I press the buttons the desk doesn't move. I don't have an oscilloscope unfortunately, so I can't tell you what's happening on the LIN bus.

Do you have any idea what could cause this and how we could further investigate?

potential to move beyond DANGER_MAX_HEIGHT/DANGER_MIN_HEIGHT?

with the recalibration procedure the safety margin was removed. I'm wondering if this is still safe:

if (targetHeight > currentHeight && abs(targetHeight - currentHeight) > HYSTERESIS && currentHeight < maxHeight)
    motorUp(true);
  else if (targetHeight < currentHeight && abs(targetHeight - currentHeight) > HYSTERESIS && currentHeight > minHeight)
    motorDown(true);

or if that should be changed to (use targetHeight instead of currentHeight):

if (targetHeight > currentHeight && abs(targetHeight - currentHeight) > HYSTERESIS && targetHeight < maxHeight)
    motorUp(true);
  else if (targetHeight < currentHeight && abs(targetHeight - currentHeight) > HYSTERESIS && targetHeight > minHeight)
    motorDown(true);

This wouldn't effect recalibration, as that this snippet isn't executed during recal.

Low-power mode

Sleep the AVR when not doing anything to reduce power consumption.

Ikea bekant

Hello

I see you have a deep understanding.

I purchased a table bekant on sale in Ikea, not working. Found the failed elements and replaced them.

Connected to the LIN bus.
If I connect slaves one by one they respond PID 8.
If I connect two slaves, PID 8 will still be recalled.

The markings on the boards 68002430 FW: 3.9 Rev.2 17 / 47L. Maybe they are the same?

If I connect one slave will he move?

Desk stopped raising / lowering, even with new power supply -- T POWER printer power supply works, but only in 1 cm increments

Need troubleshooting help -- this Megadesk has been working great for about a year, but now the desk no longer raises or lowers:

  • Tried using connector-compatible 32V 2A printer power supply from T Power -- desk moves 1 cm then relay clicks, then requires power cycle again to move again: https://www.amazon.com/gp/product/B019HVZ4EE/

  • Replaced with new ROL Ergo OEM power supply from IKEA, desk does not move in original mode, desk also doesn't move, but relay DOES making clicking sound in VARIANT mode

  • Buttons seem to work

  • Cleared EEPROM

  • Obviously I have tried power-cycling many times

  • I do not have the ORIGINAL BEKANT controller (I believe I discarded it) to recalibrate/reset the motors

Any ideas? I suspect my next step should be to try with the original controller (by purchasing a new frame again...) -- if that doesn't work, then I need to replace the motors / frame...

Emulate recalibrate/reset the motors function?

Would it be possible to emulate the recalibrate/reset motor process from the original BEKANT controller into Megadesk thereby avoiding the need to swap in the original controller to address this occasional issue? Swapping in the original controller isn't trivial in my case...

I suspect that I'm facing this issue since I'm often not getting a good sync when using the larger desk (variant mode). I would need to power down and then up and then toggle the variant mode twice to get it working again.

Thank you in advance,
Ron

What can be used as keypads?

What can be used as keypads?

Hello! First of all thanks for that project! I was buy old bekant table without controller recently and want to use our megadesk for it, but i don't know where and what keypads i can buy for it? Could you provide any tips for me?

Feature request: scheduling

Hi guys, I'm having a specific use case that I want to drop here. Is the controller able to do this?

As a lazy programmer with back pains, I would like to have the desk force me to stand up regularly, so I can stretch my body and live a healthier life.

I'm thinking every hour for 3 minutes, but It would need some trial and error. Ideally I want to have this happen to me only on working hours.

found another "idle" status

Hi,

I've just found out that my bekant (160x80) does neither send his idle as 96 nor as 0. Mine reports this state as 37. Just wanted to write it in here so that the 3rd state is known and can be found in this repo.

Can't go up

Hi,
after calibration (pressing down button 14 times) both motors went extremly hot after reaching lowest position and now relay clicks only for button down. No reaction for button up. Maybe some problem with wrong max height value?
Any ideas?

Martela Alku S&S support (Rol Ergo system)

I have two spare legs from four legged Martela Alku S&S table which has Rol Ergo System similar to Bekant. I have recorded LIN bus logic and it looks very similar to your findings with the Ikea desk. I am trying to make megadesk work with my legs due to fact my friend has the working controller and psu :). If you're interested I can dump recordings somewhere to make them available?

Btw, did you implement reset functionality? I didn't find recordings for the reset function. In my desk reset is done by pressing both, up and down, buttons 8 seconds and then lowering table to bottom. I have recordings for reset too.

Flashing troubles

I finished building a v5 PCB 🙂🎉

image

Unfortunately flashing the ATtiny doesn't seem to work:

$ avrdude -c usbasp -p t841 -U lfuse:w:0xe2:m

avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

I used an USBasp programmer (with 5V output) and the current SVN version of avrdude (because the latest release doesn't support the t841) to flash the megadesk PCB. The PCB was only connected to the programmer, not to the desk.

I measured the voltage across the 5V and GND pins on the programming header, and it shows 4V. Without the megadesk PCB connected, the voltage provided by USBasp is 5V. Could be some kind of short, but the components don't get warm...

Unfortunately the schematics in KiCad look all garbled to me, I probably have the wrong symbols? (Incredible, that in 2021 this still doesn't work properly.) Should the 5V power supply from the PCB suffice, or is the 24V power input from the table required as well, for in-circuit programming?

Had to cycle 2 times to alternate mode and back for it to work

As the title says, did not work out of the box. Had to press up 16 times to get to alternate mode - still did not work. Pressed up 16 times again to get back to regular mode - worked like a charm.

Desk: Bekant small production 2020.

This is meant more like feedback than an issue, so you can close it straight away.

Great job anyway!

BOM Notes

Hi, I plan to build a megadesk controller myself!

Is there anything special to consider when ordering the parts from the BOM? For example, is the capacitor ESR relevant somewhere, or can any regular ceramic caps be used?

What kind of flex connector is J2?

(If you have recommended MPNs, that would be helpful.)

Change ICSP header

I would recommend changing out the straight ICSP for a right angle header.

If the header is a right angle then it is possible to cut a hole in the back of the existing case, which allows a cable to easily connected and disconnected without disassembly. It didn't seem to interfere with the case if you don't cut a hole.

IDÅSEN support

Ikea has released a new motorized standing desk, the IDÅSEN.

Please thumbs-up this issue if support for that desk is of interest to you. It would require me investing in the purchase of a desk to reverse engineer, so there's significant costs to doing so.

Replace ATTINY841 with ESP-12F

Hey, first off I just want to say great work and that this looks pretty awesome.

I just recently purchased an Bekant and was thinking about modifying the controller to add an MQTT interface implemented on an ESP8266. I came across your project and I think I could almost just drop in a ESP-12F in place of the ATTINY841.

Do you see any glaring issues with this approach, and do you have any advice for me as I go down this path?

Thanks!

Bluetooth LE support

Is there room on the board for a Bluetooth LE module? I'd cheerfully write an app to control it if there were...

Up/Down buttons responding to input but desk isn't moving

👋 @gcormier

I've just installed the megadesk v4 and I hear the 4 tones on boot but the up/down buttons aren't moving the desk at all. They do respond to input though, I booted into the test mode and confirmed that the board is receiving a signal from both the up and down buttons.

I've tried the following to no avail:

- Try unplugging the desk from the wall and plugging it back in (With megadesk connected)
- Alternatively, try disconnecting megadesk, removing power from the desk, adding power, and then re-connecting megadesk

Here's the OEM board I'm replacing with the megadesk v4:
IMG_1090
IMG_5285

Any suggestions?

p.s. was this the inspiration for the name? 😄

Additional Startup Preamble

Finding a new startup-handshake that deviates from the existing one.

Presents itself on the larger version of the BEKANT. Wondering if the motors are different for bigger table size so it's a different protocol. Could use feedback if anyone has Megadesk working on a big BEKANT.

Test skewed motors + recalibration

Need to validate recalibration a bit more.

  1. Hack up firmware and have only 1 motor move up/down by an arbitrary number of units to de-sync the motor heights.
  2. Run re-calibration and confirm all is good.

BEKANT Power Supply Voltage

As you have noticed, the BEKANT power supply delivers 24V at idle (no load), which is under the name-plate voltage. The voltage increases to 35V as soon as a resistive load such as the motors is put across the power supply.

Would need to spec components to handle the increased voltage whilst the desk is moving. The gradual increase in voltage is apparently responsible for the soft-start.

Serial Control - Question

It looks like serial control has been added. I just have a couple of questions.

  • Is this just a software change? Or is a hardware revision pending for the device on Tindie?
  • There doesn't seem to be any documentation yet. Are the pins labeled on the board?
  • I think you said the default firmware will not enable this? Do I have to compile the firmware with option enabled?

16 UPs does not activate Variant Mode

Hi,

I have the larger Bekant and have followed these steps:

  1. w/ original controller, calibrated the legs,
  2. installed megadesk controller, powered on (4 beeps)
  3. 16 UPs and no sounds - tried 20 UPs (no beeps though).
  4. Unplugged controller, unplugged desk, plugged in desk, plugged in the controller (4 beeps).
  5. 16 UPs (no beeps)
  6. unplugged desk, held DOWN while plugging in, to reset EEPROM (no beeps)
  7. unplugged desk and plugged back in (4 beeps)

Notes:
Key is in, and functions with bekant controller.
Hearing the handshake tones, and have 10x restarts w/wo having controller plugged in

I'm not sure what step to try next - I've done the above cycle a few times and cannot activate variant mode to account for my larger Bekant.

Thank!

Spare boards/parts

I have enough parts for two units if anyone is interested - assembled or non.

Single click goes to memory #1

Single push goes to memory #1, but it's not possible to set memory 1 since a long click doesn't really exist.

Need to fix code to stop this behavior.

Add some helpful tips

Hey! I just wanted to say thanks for making this and I have built two of these for my desks and they have been working great! I hand soldered everything onto the board successfully without flux or a hot air rework station!

With my longer BEKANT (160cm), I was not required to use the 16x toggle. I suspect this is due to my age of my desk... (2015/34).

A note with soldering the diodes, I found that in both instances, the D2 top pad would lift off -- I successfully used the length of the leg to jump to R6 bottom pad -- perhaps a JLCPCB issue? -- happy to provide a photo if you want.

Some flashing tips for others, I used a STM32 blue pill and had this flashed on it. http://amitesh-singh.github.io/stm32/2017/05/21/FASTUSBasp-programmer-avr.html then followed with avrdude with usbasp-clone as the programmer and "-B 3" flag to slow down the internal clock. I was stuck with flashing and every time it would result in "invalid device signature" and I thought my soldering was bad!!

Also, inside the kicad schematic, I found that the programming pins were flipped on the v4 and don't reflect the actual Gerber .zip file nor the photo on the bottom of the README -- took me a while to notice!! but no harm was done to the ATTiny841 when I tried the pinout from the schematic.

Hope this info helps for others that are building this!

Default Firmware

Moving forward I'd like the standard build that I ship to include the min/max height setting as this would be great.

  1. From all the hard work @philwmcdonald did, could/should move BOTHBUTTONS to parameter territory? It would default to disabled, but not require reflashing if someone wanted to enable it.

  2. I think SERIAL would be left out, as anyone who's getting into hacking up serial functionality should probably have the skillset to compile and reflash? (@tagno25)

  3. Pushing both buttons and holding is still up for grabs for a function if we'd like to quickly access.

How do I use the serial commands?

Hello,

First off all, great product, works like a charm, but I would like to connect it to my domotic system (HA) and Google system.
I recompiled the code with the #define SERIALCOMMS.

I flashed the firmware with a pocket AVR programmer and this all works fine.

When I connect an FDTI232 to the pins MISO and SCK I see the following commands in my terminal when I press the up or down button.

14:51:02.422 -> <+���<+���<+���<+���<+���<+���<+���<+���<=�z�<+���<=�⸮�<+���<=�⸮�<+���<=�⸮�<+���<=�⸮�<+� �<=�⸮�<+� �<=�⸮�<-� �<-���<-���<-���<-���<-���<-���<-���<-���<-���<-���<-���<-���<=�⸮�<-���<=�⸮�<-���<=�⸮�<-���<=�{�<-���<=�f�<-� �<=�Z�<-� �<=�Q�<-���<=�N�<+���<+���<+���<+���<=�⸮�<+���<=�⸮�<+���<=�⸮�<+���<=�⸮�<+���<=�⸮�<+� �<=�⸮�<+� �<=�⸮�<-� �<-���<-���<-���<-���<=�⸮�<-���<=�⸮�<-���<=�o�<-���<=�W�<-���<=�B�<-� �<=�6�<-� �<=�-�<-���<=�*�<+���<+���<+���<+���<+���<+���<+���<+���<+���<+���<=�⸮�<+���<=���<+���<=�)�<+���<=�>�<+���<=�P�<+� �<=�\�<+� �<=�e�<-� �<-���<-���<-���<-���<-���<=�⸮�<-���<=�⸮�<-���<=�⸮�<-���<=�⸮�<-���<=�⸮�<-� �<=�⸮�<-� �<=�⸮�<-���<=�{�<+� �<+� �<+���<+���<=�⸮�<+���<=�⸮�<+���<=�⸮�<+���<=�

So that looks ok, but how can I sent a command via a serial terminal program? I tried to sent <- and <+ with or without returns, but nothing happens. What am I missing. Do i need to sent more bytes ? Can I use a serial terminal command line at all to sent commands?

Eventually I would like to use an ESP(8266 or 32) to control the megadesk. Maybe someone has some example code on what command/bytes exactly to sent over the serial line?

Thanks in advance
Remco

Megadesk sometimes not responsive

I have been using Megadesk for the better part of a year (bought November 2019, fully assembled plug and play) and it has mostly been great.

However sometimes I have the issue that the table is completely unresponsive to any button inputs. This didn't happen at all in the first months but now it begins to happen quite regularly. The fix is to unplug the power from the table and therefore force a restart of Megadesk, after that it is working fine again.

Unfortunately I could not find a pattern so far. Recently I came back to my desk after a 3 week holiday and Megadesk was still working fine. They day after however it was crashed again, after not having been used the 3 weeks before. This leads me to believe that is has something to do with input/ usage, not only time that passes.

I will try to identify a pattern as to when this happens. Do you maybe have an idea what the issue could be?

Provide built artefacts and build instructions

It would be nice to have ready to flash binaries in the GH release section as well as instructions on how to flash with avrdude.

In addition, it would helpful to have build instruction and/or a makefile for those of us who are unfamiliar with the toolchain.

Set custom max/min value

First of all, nice work I really missed the storing function on my desk :)
I've got an enhancement proposition. I got the case of a big container under my desk. Usually that is no problem because I know this, but if another person tries a lower position, it would be nice to store a minimum and maximum position which should not be run over. E.g. by pressing 20 and 30 times or something tedious like this (child safety lock like).

Memory function on both buttons

Hi,
this is really nice project. I'm just wondering why the device doesn't use it's down button for memory same way as up button. It would reduce the number of presses for particular memory 2 fold. Having several sitting positions on down button and several standing positions on up button would help the use case by a lot.

Thanks

Enhancement: range finder input

In between seeing the link to this project in HN to being able to see it, I thought about the possibility of using range finders to set the height.

Basic idea:

  • You press a button (so it doesn't change by accident)
  • Then place your hand above or below a range finder (2 most likely needed)
  • The microcontroller then calculates the delta and changes to that height. I guess that for lowering, it would need to be a little lower since you are measuring the top of the hand vs where you want it.

The main benefit of this is you can act naturally and place your arm as it feels comfortable, and be able to do that in one momentary action.

Thanks for making the project.

No motion at all

Sorry, I do your troubleshoots, but nothing helps.
On the upper button I get sometimes around 5 beeps. Is there any table for identifier beep code?

It is a quite new desk. I ordered 2 controllers, both not working: all plays some sound, debug buttons also sound correctly (desc/asc sounds). But there is no motion at all. Fortunately standard controller still working and is back in place.

Ghost movement if SERIALCOMMS enabled

Hello,

I build the firmware with the SERIALCOMMS enabled. I flashed it in my megadesk and it all seems working ok.
But once or twice every day the desk moves by itself to either the highest or the lowest position. This can be dangerous if eg the seat is under the desk.

I rebuild the firmware again, now without the serialcomms enabled and flashed it again and then everything is fine.

I have a 50 cm 3 Wireless cable connected to the RX/TX and GND and it is not yet connected to anything, might this be the problem?

Gr. Remco

Serial Control

It would be great if there would be a serial interface for controlling the desk lift from the computer!

I have started a similar project for an Actiforce desk lift: https://github.com/dbrgn/desklift/ It's not done yet, but the serial protocol used is the following:

- Baudrate 115'200
- Every command is a single signed byte
- Positive values move up, negative values move down
- The value must be multiplied by 0.1s to get the move duration

So for example when sending 0x13, the desk would move up for 1.9 seconds.

This should be quite simple to implement I in the firmware. The issue would probably be available pins.

It looks like the ATtiny841 has two USART. If I read your schematics correctly, USART0 is used by the LIN transceiver. USART1 is available at PA4/PA5, but those pins are shared with SCK/MISO from the programming header... But maybe this could be solved somehow, e.g. by automatically disconnecting the serial pins if there's power on the programming header?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.