一些看起来不太聪明的机器到底是用来干什么的?
用来解决一些不太聪明的基础设施。
想必大家都见过一些奇葩+反人类的——设计,举例如下:
有没有想过“报应”有一天会落在自己身上呢?
这天我们遇到了一位朋友,这位朋友是位大学生,住宿舍,本来条件不错,独立卫浴,非常赞。但是……她宿舍的卫浴貌似过于独立了点,因为淋浴控制器和淋浴本身分别位于两个空间。
所以当我们看到这位同学的求助贴时,我们出道德的本能——没有笑。
怎么可能?!
但是既然看到了求助,那就不能坐视不管,轮到我们用机器想办法了。
项目名称:大学宿舍蓝牙遥控水卡机
如下图所示,同学所提供的信息中提到,浴室内配有淋浴设施,但控制水流的插卡水表在浴室外。
而且除了玛卡巴卡(大误:插卡拔卡)之外,没有其他控制方式。
于是在洗澡过程中,这位同学只能选择:要么一直插着水卡,要么喊同寝室的同学帮忙插卡拔卡。
这本来也不是什么非常严重的问题,毕竟大家都要洗澡,大不了互相帮忙。但是在生活中,类似于此微小但长久的不便会给幸福感带来很大的折扣,而且,当你只有一个人在宿舍而你想痛痛快快洗个不受打扰、放飞自我的澡澡时,只能看着水带着银子花花流淌……
所以,我们决定为这个宿舍的同学谋个福利——做一个能够遥控插拔水卡的机器来拯救我们的水卡余额,以及浴室外伺候着的室友。
首先,我们要用一个机构来实现水卡的上下运动,我们打算用一个直线运动机构。幸运的是,能完成直线运动的机构在我们的方案库里有很多。
比如这种:
再比如这种:
以及这些:
经过筛选,我们决定采用曲柄滑块机构来实现直线运动:
它的运动效果如下图所示:
为了测试安装效果,我们还让这位同学帮我们测绘了水表,并3D打印了一个水表的模型。
经过一番折腾,这台水卡机的3D效果图如下所示:
机器整体为L“躺平”的造型,有一个舵机带动的曲柄滑块装置。
滑块上安装有一个弹簧夹具以及一组限位螺丝,可以用来固定水卡。利用单片机驱动舵机并带动曲柄滑块装置,就能比较顺滑地实现水卡的安装和提取等基础动作了。
机器有一个长方形框作为水表的固定架,我们在方框较长边的内侧分别安装了两个硅胶条,这样可以通过调整机器前侧的螺丝松紧来实现机器在真正水表上的适配。由于我们无法到现场测量出精确数据,所以我们在结构上留了一些余量,方便实际安装时调整。
在控制方面,我们选用了的Basra主控板(兼容Arduino Uno)和Bigfish扩展板,一个蓝牙串口模块,配套安卓手机app,这样就能在手机上控制水卡的运动了。
初步验证一下,效果还不错。
考虑到后期的零件替换、二次开发和开源复刻,我们用3D打印件做了替换。这样,有兴趣的同学也就可以自己尝试制作了。
然后,我们又在上述第一版的机器上进行了一些微小的改动。在机器上方增加两个折弯零件,由此让水卡机安装得更加稳定一些,同时将控制板移至水卡机器上方,由此避开水表旁的水管,使安装更便捷一些。
完工,装箱。包的厚厚的,确保万无一失。快递发出,祈祷千万别碎成渣啊啊啊啊~
经过一路的颠簸,包裹顺利到达了那位朋友的手中,居然完好,给打包的小伙伴加鸡腿。
经过一番现学现卖+远程指手画脚的……安装和测试,这台蓝牙水卡管理机最终顺利地在同学的寝室运行起来啦,小姐姐开心地为我们点赞。现在我们才知道,水卡控制的不仅仅是淋浴头……
希望这个看起来没有那么智能的机器,能够帮这位同学解决一个微小的烦恼,让她和室友们的大学生活增加一点微小的快乐,顺便也收获隔壁寝室一点微小的羡慕嫉妒恨吧。
*该项目的开源资料已经放出,本次开源版本为上文所述的第1版,所需零件BOM请见下表,3D文件及代码可以在文末下载。如果您也幸运地拥有同款浴室,欢迎您参考本文及资料制作本机。
BOM表
程序源代码 BlueTooth.ino
Python
/*------------------------------------------------------------------------------------
版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.
Distributed under MIT license.See file LICENSE for detail or copy at
https://opensource.org/licenses/MIT
by 机器谱 2023-09-15 https://www.robotway.com/
------------------------------*/
int _ABVAR_1_Data_of_bluetooth = 0 ;
#include<Servo.h> //调用舵机库
#define Servo_Pin 3 //定义舵机引脚号
#define Angle_One 60 //设置舵机转动的角度为60度
#define Angle_Two 145 //设置舵机转动的角度为145度
Servo myservo; //声明舵机对象
void setup()
{
Serial.begin(9600);
myservo.attach(Servo_Pin);
myservo.write(60); //3号引脚舵机直接转到145度,初始角度
}
void loop()
{
_ABVAR_1_Data_of_bluetooth = Serial.parseInt() ;
if (( ( _ABVAR_1_Data_of_bluetooth ) > ( 0 ) ))
{
if (( ( _ABVAR_1_Data_of_bluetooth ) == ( 1 ) ))//收到1时拔卡
{
myservo.attach(Servo_Pin);//设置舵机引脚
myservo.write(Angle_One); //3号引脚舵机直接转到30度
delay(1000); //等待1秒
}
if (( ( _ABVAR_1_Data_of_bluetooth ) == ( 2 ) ))//收到2时插卡
{
myservo.attach(Servo_Pin);//设置舵机引脚
myservo.write(Angle_Two); //3号引脚舵机直接转到145度
delay(1000); //等待1秒
}
}
else
{
delay( 10 );
}
}
资料清单
①水卡机及水表3D模型
②部分零件的3D打印文件
③水卡机程序源代码
④安卓蓝牙串口助手app安装文件
资料下载地址:大学宿舍蓝牙遥控水卡机-作品说明