The prototype

A project log for Standing desk remote control

Control multiple desks over wifi

lion mclionheadlion mclionhead 09/14/2022 at 05:070 Comments

Using a hall effect sensor to encode the selector gives a lot of fluctuation as the case flexes.  The hall effect sensor needs to be farstened to the top panel instead of the bottom panel so it moves with the dial.  The other advantage is the case would still work when opened.  The disadvantage is 2 more wires spanning the clamshell.  The encoding works well enough.  It also needs alignment fiducials for the magnets.

The IR protocol is good old pulse width.  The notch filtering done on the receiver isn't accurate enough to put any more than 1000 baud through RS232.    Pulse width can send 2000 baud in the worst case.  Each desk has a 6 byte key.  The 1st 4 bytes are XORed with the button state, making a 10 byte code.  It repeats the entire code instead of sending a repeat token.  This allows the code to change without releasing any buttons.  You should theoretically be able to send the same button to all the desks by sweeping the dial.

Receiver implementation immediately revealed some shortcomings of the desk itself.  The presets aren't very precise.  They get it within 1/2" of the programmed height.  Maximum height gets it 1/2" from maximum.  A tap of the up arrow is required to get it all the way up.  Tapping the preset once all the way up doesn't make it go back to the 1/2" below maximum but just stay where it is.

 Descending tends to overshoot.

There is a rare case where it stops receiving IR codes for a while & automatically recovers later.  It seems to be a typical code parsing bug.

Other than that, the remote is very responsive like all lion IR implementations.  The MHPS2283V buttons feel like you're at a physical panel.  It's much more responsive than the 20 year old Mitsubishi remote which controls Heroineclock & F-35 air vent.  Using repeating 10 byte codes is a big improvement.  The 9 byte code + repeat code used in the Mitsubishi is slow & clunky.

Ended up making a 2hz LED blink mean waiting for a preset to set & a 1hz LED blink means locked.  Getting into locked mode entails waiting for the 2hz LED blink to turn solid & then into a 1hz LED blink.  It only blinks until the status codes stop coming from the UART.  It's kind of janky but the limit of a single LED interface.  

Unsupported features are constant touch mode, setting display units, setting min max height, desk reset.  These features originally used a full LCD panel & would take porting a lot more status codes to support an LED.  It would put a lot of wear on the brushed motors.  Lions have doubts about the brushed motors & gears lasting until the day lions can afford more room.  If houses were cheap enough to be anything but investment properties, the government wouldn't have any collateral to back its debt.