Megadesk: Alternativer Controller für IKEA Bekant-Tische

Ich habe seit einer Weile einen Bekant-Stehtisch von IKEA. Die Steuerung lässt nur Heben und Senken der Tischplatte zu, man kann jedoch Positionen nicht speichern.

Dies wird durch das megadesk-Projekt behoben. Dabei können mit einer alternativen Platine viele Positionen gespeichert und abgerufen werden.

Demo:

PCB

Basierend auf der v5 des PCBs habe ich ein paar kleinere Anpassungen vorgenommen. Dabei habe ich zB den JLCJLCJLCJLC-Text entfernt, einen Text mit der Projekt-URL hinzugefügt und „coredump.ch edition“ dazugepackt.

KiCAD-Source: GitHub - dbrgn/megadesk at coredump

Aisler-Bestell-Link: https://aisler.net/p/WJCLZCSS

Assembly

Das BOM von gcormier findet sich hier.

Ich habe die Bauteile von Mouser bestellt. Mein BOM, mit Bestellnummern für Mouser und Digikey: bom.ods (16.2 KB)

Hinweise für das Zusammenlöten:

  • Generell beim SMD-Löten von Hand: Ein Pad verzinnen, dann mit der Pinzette das Bauteil positionieren und festhalten. Den entsprechenden Pin am Pad festlöten. Dann die gegenüberliegende Ecke und dann den Rest löten.
  • ICs wie der ATtiny können mit viel Flussmittel problemlos mit dem Lötkolben gelötet werden. Dafür zuerst eine Ecke anlöten, dann Flussmittel quer über die Pads, und mit etwas Lötzinn mit dem Lötkolben quer darüberstreichen. Siehe https://www.youtube.com/watch?v=-l5D2em4PBI.
  • Der Pin 1 ist mit einer durchgehenden Linie oder einer verlängerten Linie gekennzeichnet, nicht mit einem Punkt. IPC Style!
  • Bei den Dioden aufpassen: D1 und D2 sind nicht gleich herum orientiert! (Diesen Fehler habe ich zuerst gemacht :grinning_face_with_smiling_eyes:)
  • Der Connector unten in der Mitte (J1) sollte nur gelötet werden, wenn du dir für die Stromversorgung des Tischs ein entsprechendes Adapterkabel basteln willst. Ansonsten solltest du dieses Bauteil nicht bestücken, sondern das Kabel vom Tisch direkt daran anlöten.

Resultat:

Flashen

Firmware: megadesk/Code at master · gcormier/megadesk · GitHub

Leider habe ich’s nicht geschafft, den ATtiny841 mit avrdude zu flashen. Ob das an meiner Version von avrdude liegt? Keine Ahnung.

Mit der Arduino IDE + ATtinyCore (github.com/SpenceKonde/ATTinyCore) hat’s dann geklappt. Als Programmierer habe ich den USBtinyISP verwendet. Ich musste dafür allerdings den „SLOW“-Modus verwenden um die Fuses zu setzen, danach ging’s auch im „FAST“ Modus.

Damit die Arduino IDE den Sourcecode öffnen kann, muss er zuerst wie folgt umstrukturiert werden:

megadesk/
├── lin.cpp
├── lin.h
├── megadesk.h
└── megadesk.ino

Anschliessend kann megadesk.ino geöffnet werden.

Arduino-IDE-Konfiguration: Zuerst unter „File > Preferences“ bei „Additional Board Manager URLs“ folgendes eintragen:

http://drazzy.com/package_drazzy.com_index.json

Dann im Boards Manager „ATTinyCore“ installieren. Ich habe Version 1.5.2 genutzt.

Schlussendlich im „Tools“-Menu folgendes einstellen:

image

Bevor ein IC zum ersten mal geflasht wird, sollten noch die Fuses korrekt gesetzt werden. Dafür im Menu „Burn Bootloader“ wählen. Es wird zwar kein Bootloader geflashed, aber die Fuses werden korrekt gesetzt. Danach kann übrigens als Programmierer der USBtinyISP auch im „FAST“-Modus genutzt werden.

Nun den Upload-Button drücken und etwa eine halbe Minute warten, bos unten rechts „Upload complete“ (oder etwas in der Art) steht.

Wenn das Programmieren korrekt funktioniert hat, ertönen nach Verbinden der Stromversorgung einige Pieps-Töne.

Meine „Leidensgeschichte“ ist übrigens hier dokumentiert: Flashing troubles · Discussion #49 · gcormier/megadesk · GitHub

Der USBtinyISP befindet sich im Coredump und kann dort benutzt werden. Falls ihr damit nicht klar kommt, kann ich den ATtiny auch gerne für euch flashen.

Zusammenbau

Umbedingt diese zwei Videos schauen:

Das Öffnen des Gehäuses ist ziemlich mühsam. Der Deckel nimmt dabei möglicherweise Schaden. Das macht aber nichts, weil man den eh nicht sieht wenn die Steuerung am Tisch montiert ist.

Ich habe das Gehäuse nach einigen Minuten Murksen dann mit zwei kleinen Schraubenziehern, einem Japanmesser und ein paar Gitarren-Plektren aufgekriegt. Richtiges Werkzeug (zB so ein China-Smartphone-Reparatur-Kit) wäre sicher sehr hilfreich dafür. Passt auf, dass ihr die Elektronik nicht nicht beschädigt beim Öffnen. Ich hätte fast versehentlich das Flachbandkabel der Knöpfe vorne kaputtgemacht…

Bevor ihr die Steuerung verbindet, würde ich sicherstellen, dass ihr die Stromversorgung jederzeit kappen könnt, wenn etwas schief geht (zB indem der Tisch an einer schaltbaren Steckleiste eingesteckt wird).

Konfiguration

Nach Verbinden der Stromversorgung muss der korrekte Modus gewählt werden. Zuerst sicherstellen, dass der Sicherungs-Stift eingesetzt ist. Bei mir hat sich der Tisch am Anfang trotzdem nicht bewegt. Durch 16x schnelles Drücken der „Up“-Taste kann der Modus gewechselt werden. Nachdem ich das 2 mal gemacht habe, hat sich der Tisch beim Drücken der Knöpfe bewegt, wie mit der alten Steuerung.

Um eine Memory-Position zu speichern, die „Up“-Taste eine entsprechende Anzahl (mindestens 2x) drücken und beim letzten mal Drücken gedrückt halten. Zum Beispiel: Um die aktuelle Tisch-Position im Slot „3“ zu speichern, den „Up“-Button drücken, loslassen, drücken, loslassen, drücken und halten. Durch Piepsen wird das Speichern bestätigt.

Um die Position nun wieder abzurufen, einfach entsprechend oft den Knopf drücken. Zum Beispiel 3x kurz „Up“ drücken um die Position 3 abzurufen.

Bezugsquellen

Ich habe genügend PCBs und Bauteile für 9 Kits bestellt und habe daher noch 8 Stück übrig. Diese können für 12 Franken bei mir bezogen werden. (Email: danilo@coredump.ch) Löten muss man natürlich selber.

Alternativ können fertig zusammengelötete PCBs beim Haupt-Entwickler des Projekts auf Tindie bestellt werden: https://www.tindie.com/products/gcormier/megadesk/

Viel Spass!