我家里有一张Conset501-49坐立式办公桌。它是一张体面、坚固的办公桌,但它附带的默认控制器很差,只允许你通过一组小按钮升降。这使得寻找合适的高度变得单调乏味,这意味着你通常不会费心站起来,这使得它成为一张相当昂贵的坐式办公桌。
在封锁期间,我决定改进这一点,用树莓PI供电的控制器取代原来的按钮,这样我就可以只需点击一个按钮就可以升降我的桌子。
这是一顶DisplayOtron帽子,我几年前从皮莫罗尼买的,从来没有用过。谢天谢地,这顶帽子非常适合这个项目。
前面是一个LCD显示屏,显示当前离地面的高度。它可以重新编程以显示任何内容:动画、站立或坐着的时间、桌子上次升降的时间等。
在显示屏的左侧,您将看到向上/向下电容式按钮。这些按钮被编程为允许我手动升降桌子,就像原来的按钮一样。
底部是预设按钮。点击向左箭头可将桌子降至我预先设定的地面位置(离地面约60厘米),而向右箭头按钮则将其升至我预设的站立位置(120厘米)。
沿着右边有一个灯吧。这真的只是一件装饰品,显示了桌子的当前位置。桌子一抬起来,它们就会单独点亮。就像一棵一维的圣诞树。
树莓PI上的继电器允许我们通过RPIO的GPIO引脚控制底层电路来升降桌子。
高度传感器检测桌子目前离地面有多高,并允许我们通过上述继电器启动/停止电机。
最后,显示屏允许我们控制一切以及显示桌子的当前高度。
承认:我不知道我在做什么--电是从墙上喷出来的魔力,所以很多东西都是我在戳东西,同时确保自己没有触电身亡。注意。
这是我所知道的:我的桌子下面放着一台黑色的大马达。它把桌子升降。有几根电线从它里面出来,连接到它的内置开关上。
为了了解更多,我做的第一件事就是打开(并有效地销毁)默认开关,看看它在内部是如何工作的。
小贴士:尽早毁掉东西,这样你才能完成项目。
在基本层面上,很容易理解这些开关的作用:它们控制电流如何流向电机。默认情况下,电路是断开的,没有电流流动。当你按下一个按钮时,它会闭合电路,允许电流流向马达,马达将上升或下降。电机运行的方向取决于您连接的是现场连接还是神经连接[需要引用]。
为了能够真正重新布线,并将所有东西都连接到继电器上,您需要更详细地了解它的工作原理。为了做到这一点,我剪下了开关(在拍摄了一些不充分的照片后),并创建了我自己的电池供电电路来观看它的运行。
老实说,我对这些东西的理解还不够深入,无法详细解释你到底应该怎么做,或者它是如何工作的。我确实自己把它都画出来了:
但这可能是错误的,因为我做了很多重新连接电线-直到它-工作,所以如果你正在做类似的事情,花一些时间研究继电器和自己玩一个测试电路,然后再使用任何连接到电源的东西。
对开关的工作原理有了更好的了解,我就可以在Raspberry PI上添加中继板,并在实际将其连接到马达之前测试电路。
最后,工作完成后,我继续将实际的马达连接到树莓PI上。再说一次,这是潜在的危险。如果你正在做这件事,一定要仔细阅读,并采取一些预防措施(比如在你用长棍子拨动开关时蜷缩在角落里)。
所有东西都连接好后,我现在可以通过代码控制一个上行继电器和一个下行继电器。
有了通过继电器(和代码)升降桌子的能力,我需要考虑如何实际控制桌子,并让它自动进入舒适的站立或坐着位置。
一种简单的方法是简单地将桌子抬起或放下一段时间。换句话说,要进入站立位置,只需启用向上中继5秒即可。若要返回静坐状态,请启用向下中继5秒。
不过,这并不能真正起作用。桌子下降的速度比上升的速度快得多(由于重力),所以很难得到正确的时间安排。此外,你可能很容易失去同步,这意味着你必须再次手动调整高度,使整个努力变得毫无意义(当然,我只有在组装好所有东西后才意识到这一点)。
更好的方法是使用高度传感器。这些都是小而小的设备,可以发出声波,并测量需要多长时间才能返回。通过一些简单的数学运算,你就可以算出地面的高度。
我在面包板上找到了一些关于如何通过一个小电路进行设置的教程。通过一些实验,可以很容易地通过Python开始读取桌子高度。
所有硬件都就位后,最后一件事就是用一些Python将所有东西连接在一起。
💻您可以在我的Github页面上仔细查看代码。
我没有太多的硬件或嵌入式设备编程经验,所以我不得不对此进行修补才能让它正常工作。
最后,我使用Redis创建了一个消息队列,控制器的每个部分都可以通过该消息队列进行通信,然后使用线程来处理控制器的大部分不同部分:
作为额外的好处,我还在树莓PI上安装了Homebridge,让我可以通过iPhone/Mac/iPad控制站立式办公桌。
为此,我需要为Home Bridge创建一个插件。您还可以在我的Github页面上看到这方面的代码。我实际上并不经常使用这个来控制桌子,但这是一个不错的额外奖励。