机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

一些看起来不太聪明的机器到底是用来干什么的?
用来解决一些不太聪明的基础设施。
想必大家都见过一些奇葩+反人类的——设计,举例如下:

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

当我们一边对着这些图片狂笑时……

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

有没有想过“报应”有一天会落在自己身上呢?

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

       这天我们遇到了一位朋友,这位朋友是位大学生,住宿舍,本来条件不错,独立卫浴,非常赞。但是……她宿舍的卫浴貌似过于独立了点,因为淋浴控制器和淋浴本身分别位于两个空间。

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

所以当我们看到这位同学的求助贴时,我们出道德的本能——没有笑。

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

怎么可能?!

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

但是既然看到了求助,那就不能坐视不管,轮到我们用机器想办法了。

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

项目名称:大学宿舍蓝牙遥控水卡机
如下图所示,同学所提供的信息中提到,浴室内配有淋浴设施,但控制水流的插卡水表在浴室外。

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

而且除了玛卡巴卡(大误:插卡拔卡)之外,没有其他控制方式。

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

      于是在洗澡过程中,这位同学只能选择:要么一直插着水卡,要么喊同寝室的同学帮忙插卡拔卡。
       这本来也不是什么非常严重的问题,毕竟大家都要洗澡,大不了互相帮忙。但是在生活中,类似于此微小但长久的不便会给幸福感带来很大的折扣,而且,当你只有一个人在宿舍而你想痛痛快快洗个不受打扰、放飞自我的澡澡时,只能看着水带着银子花花流淌……

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

       所以,我们决定为这个宿舍的同学谋个福利——做一个能够遥控插拔水卡的机器来拯救我们的水卡余额,以及浴室外伺候着的室友。
       首先,我们要用一个机构来实现水卡的上下运动,我们打算用一个直线运动机构。幸运的是,能完成直线运动的机构在我们的方案库里有很多。

比如这种: 

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

再比如这种:

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

以及这些:

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

经过筛选,我们决定采用曲柄滑块机构来实现直线运动:  

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

它的运动效果如下图所示:     

机器人制作开源方案 | 大学宿舍蓝牙遥控水卡机

为了测试安装效果,我们还让这位同学帮我们测绘了水表,并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安装文件
资料下载地址:大学宿舍蓝牙遥控水卡机-作品说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/109386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android开发知识学习——HTTP基础

文章目录 学习资源来自&#xff1a;扔物线HTTPHTTP到底是什么HTTP的工作方式URL ->HTTP报文List itemHTTP的工作方式请求报文格式&#xff1a;Request响应报文格式&#xff1a;ResponseHTTP的请求方法状态码 HeaderHostContent-TypeContent-LengthTransfer: chunked (分块传…

IDEA 如何运行 SpringBoot 项目

步骤一&#xff1a;配置 Maven 第一步&#xff1a;用 IDEA 打开项目&#xff0c;准备配置 maven 环境 &#xff0c;当然如果本地没有提前配置好 maven&#xff0c;就用 IDEA 默认的配置即可 配置 maven 步骤 情况 1&#xff1a;如果本地没有配置过 maven&#xff0c;可以保持如…

Cesium加载GeoServer发布WMTS系列问题

这两天为了摆脱对ArcGIS的依赖&#xff0c;准备走开源这一套&#xff08;现在发布只能用这两个吗&#xff0c;知道的探讨一下&#xff09;&#xff0c;想走GeoServer的路线&#xff0c;在发布了shp之类的之后发现还挺好用的&#xff0c;但是到了发布影像的时候&#xff0c;就很…

【C++项目】高并发内存池第五讲内存回收释放过程介绍

内存回收 1.ThreadCache2.CentralCache3.PageCache 项目源代码&#xff1a;高并发内存池 1.ThreadCache void ThreadCache::Deallocate(void* ptr, size_t size) {assert(ptr);assert(size < MAX_BYTES);//计算在哪号桶中&#xff0c;然后插入进去size_t index SizeClass…

ZYNQ连载07-PIN设备

ZYNQ连载07-PIN设备 1. 简述 RT-Thread PIN设备 这里参看RT-Thread提供的PIN设备管理接口&#xff0c;简单封装了几个接口函数。 2. 实现 #include "include/drv_gpio.h" #define LOG_TAG "drv_gpio" static XGpioPs xgpiops;void rt_pin_mode(rt_…

SIT1028Q内置高压 LDO 本地互联网络(LIN)收发器

SIT1028Q 是一款内部集成高压 LDO 稳压源的本地互联网络&#xff08; LIN &#xff09;物理层收发器&#xff0c;可为外 部 ECU &#xff08; Electronic Control Unit &#xff09;微控制器或相关外设提供稳定的 5V/3.3V 电源&#xff0c;该 LIN 收发器 符合 LIN 2…

歌曲怎么转换为mp3格式播放

MP3 文件&#xff08;以 .mp3 文件扩展名结尾&#xff09;因其高品质、文件小和兼容性强成为最流行的音频文件类型之一&#xff0c;如果你正在寻找好用的音频转换工具&#xff0c;想将歌曲转换为 MP3 以便在任何设备上播放&#xff0c;本文将会为你推荐2款好用的音频转换工具&a…

关于数据中台的理解和思考

一、什么是数据中台 数据中台是指通过数据技术&#xff0c;对海量数据进行采集、计算、存储、加工&#xff0c;同时统一标准和口径。把数据统一后&#xff0c;会形成标准数据&#xff0c;再进行存储&#xff0c;形成大数据资产层&#xff0c;进而为客户提供高效的、可复用的服…

DCL 单例模式设计为什么需要 volatile 修饰实例对象

DCL 问题&#xff0c;是在基于双重检查锁设计下的单例模式中&#xff0c;存在不 完整对象的问题。而这个不完整对象的本质&#xff0c;是因为指令重排序导致的。 public class DCLExample {private static DCLExample instance;public static DCLExample getInstance(){if (ins…

nacos在linux中的安装、集群的配置、mysql生产配置

1.下载和安装 官方下载地址&#xff1a;https://github.com/alibaba/nacos/releases&#xff0c;根据自己需要的本版去下载就行 下载的是 .tar.gz 后缀的文件是linux版本的 使用tar命令解压&#xff0c;完成之后是一个nacos的文件夹 和windows下的文件夹目录是一样的 要启…

线程池里对异常的处理方式

**方式&#xff1a;**重写afterExecute方法, 统一处理线程池里抛出的异常。 但是要区分是execute方式提交的&#xff0c;还是submit方式提交的。 代码如下&#xff1a; public class Test001 {public static void main(String[] args) throws Exception {ExecutorService exec…

【3妹教我学历史-秦朝史】1 秦朝初期

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 2哥 :3妹&#xff0c;在干嘛呢 3妹&#xff1a;读书呢…

DSP 开发例程(5): tcp_server

目录 DSP 开发例程(5): tcp_server创建工程源码编辑tcp_echo.chelloWorld.c 调试说明 DSP 开发例程(5): tcp_server 此例程实现在 EVM6678L 开发板上创建 TCP Server进程, 完成计算机与开发板之间的 TCP/IP 通信. 例程源码可从我的 gitee 仓库上克隆或下载. 点击 DSP 开发教程…

Springboot 使用JavaMailSender发送邮件 + Excel附件

目录 1.生成Excel表格 1.依赖设置 2.代码&#xff1a; 2.邮件发送 1.邮件发送功能实现-带附件 2.踩过的坑 1.附件名中文乱码问题 3.参考文章&#xff1a; 需求描述&#xff1a;项目审批完毕后&#xff0c;需要发送邮件通知相关人员&#xff0c;并且要附带数据库表生成的…

AI:40-基于深度学习的森林火灾识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

电子学会C/C++编程等级考试2023年05月(六级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:字符串插入 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的’\0’。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。 时间限制:1000 …

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传

第一个input标签效果 第二个input标签的效果 el-table的改造效果 <template><div class"outerBox"><div class"analyze" v-if"status"><div class"unFile"><div class"mainBox"><img clas…

目标检测与图像识别分类的区别?

目标检测与图像识别分类的区别 目标检测和图像识别分类是计算机视觉领域中两个重要的任务&#xff0c;它们在处理图像数据时有一些区别。 目标检测是指在图像中定位和识别多个目标的过程。其主要目标是确定图像中每个目标的边界框位置以及对应的类别标签。目标检测任务通常涉…

web前端JS基础-----制作进度条

1&#xff0c;参考代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><progress id"pro" max"100" value"0"></progress><scrip…

【设计模式】第17节:行为型模式之“解释器模式”

一、简介 解释器模式为某个语言定义它的语法&#xff08;或者叫文法&#xff09;表示&#xff0c;并定义一个解释器用来处理这个语法。 二、适用场景 领域特定语言复杂输入解释可扩展的语言结构 三、UML类图 四、案例 对输入的特定格式的打印语句进行解析并执行。 packag…