机器人制作开源方案 | 晾衣收纳一体机器人

一、作品简介

作者:仓天赐 黄云超 吴正乐 高骏 代思旭
单位:泰州学院
指导老师:宋向前 李杨作者:仓天赐 黄云超 吴正乐 高骏 代思旭
单位:泰州学院
指导老师:宋向前 李杨

       与智能家居系统含义近似的有家庭自动化、电子家庭、数字家园、家庭网络、网络家居、智能家庭/建筑,在我国香港和台湾等地区,还有数码家庭、数码家居等称法。而我们所研发的晾衣收纳一体机器人正是智能家居的一种,家居生活中,衣服的晾晒存放是每天脱不开的话题。而我们基于Arduino的智能晾晒收纳控制系统设计的目在于设计一套全新的衣物晾晒收纳控制系统,帮助人们晾晒衣服的同时,免除人们收纳存放衣服的繁琐劳动,可以自行将衣物收纳叠放存储起来,从而在生活中解决人们不必要的劳动。该系统主要由机械支架,电机传 动及控制等部分组成。整个控制系统简单便利,便于人们日常的使用维护,同时满足人们的日常需求。
 

1.设计背景

随着人们生活水平的不断提高,对生活质量的要求也逐渐攀升。而与人们日息相关的生活住处 ,家庭居所更是人们日益关注的热点 。人们的日常生活中家用的电器逐步的实现自动化,再由自动化转向智能化,近些年来智能家居的概念也逐渐的成为人们口中普遍流传的热词!智能家居系统是利用先进的计算机技术、网络通讯技术、智能云端控制、综合布线技术、医疗电子技术依照人体工程学原理,融合个性需求,将与家居生活有关的各个子系统如安防、灯光控制、窗帘控制、煤气阀控制、信息家电、场景联动 、地板采暖、健康保健、卫生防疫、安防保安等有机地结合在一起,通过网络化综合智能控制和管理,实现“以人为本”的全新家居生活体验。
 

2.工作流程

第一步:调整晾衣角度 衣物夹具夹放好衣物后,通过手机 app 控制衣物传送装置的启停,带动传送 带的转动进而控制晾衣服的位置。如图为衣物传送装置工作过程。

衣物传送装置工作过程

衣物传送装置工作过程

       第二步:折叠衣物 通过手机 app 软件启动折叠衣物功能,此时,霍尔传感器在其连接的舵机带 动下,旋转到指定位置,如下图为衣物折叠装置工作过程。

       第三步:收纳衣物 折叠好后的衣服,经过传送带的作用下,被带到指定位置,再由活动支架翻 转到收纳箱中。如下图为衣服存放过程。

3.作品创新点

       ① 晾衣收纳一体机器人集晾晒衣服和收纳衣服于一体,可以即时的将晾晒 好的衣服收纳到衣柜中。随时取出,极大的方便了使用者给用户带来极 佳的使用体验。 
       ②晾衣收纳一体机器人几乎实现了全自动化的作业方式,减少了用户的日 常工作量! 
       ③ 晾衣收纳一体机器人配备了 APP 的远程操作的功能,使用者可以在一定 的距离内使用 APP 远程操控机器人收取和存放衣物。
 

4. 作品难点及改进方向

4.1难点及解决办法
       ①晾衣收纳一体机器人的机体构建材料引用探索者的零部件难以组装完成。 
       解决办法:采购了一些铝合金材料进行机体框架的搭建。 
       ②机器人运作时,没有达到预期的效果或者突然停止,我们检查完不是传 感器和软件调试的问题,也没有外界影响 。
       解决办法:多次调试查不出原因后,我们发现电源长时间工作后电池的 电压不足会导致机器人出现很多原本不存在的问题。 
       ③机器人在相同环境下开始时线路出现混乱
       解决办法:安装时,适当对杜邦线进行分类和标注减少舵机与接线板接 错的现象,从而避免机器人运作时舵机混乱所导致的线路偏移。
       ④ 裁剪的布料用来作为折叠的衣服的材质过于柔软,难以实现美观的折叠 效果。 
       解决办法:通过程序加快动作的完成,减少动作偏差的概率。 
       ⑤机器人模型的构建时零件数目复杂而又繁琐,且经常出现干涉的现象! 
       解决办法:在不改变整体形状的前提下,适当改变模型零件的局部结构 以正确顺利的完成模型的搭建。
4.2.改进方向
       ① 能让机器人在大部分环境下正常工作,减少外界环境的干扰。 
       ②将外形设计的更加现代化、更加富有创新思想。 
       ③ 继续研究传感器,将影响传感器的因素都考虑进去。 
       ④ 电源两极漏出来的地方需要用绝缘胶布粘起来,防止两极短路,从而保 证安全。
 

二、机械结构设计

1.机械机械结构材料选取

 晾衣收纳一体机器人的机体的构建主要采用铝合金材料和探索者的相关零 部件,如下图。

铝合金型材料

2. 衣物夹具机械结构设计

夹具安装在衣服传送装置的履带上,夹具内侧附吸铁石用来夹紧衣物。当到 达衣物折叠装置上方时,柱 2 与柱 1 接触,传送带继续向前运行,夹具打开。图1为衣物夹具结构,图 2为夹具上的吸铁石,图 3为夹具结构动作杆。

图1衣物夹具结构
图2吸铁石

图3夹具结构动作杆

3.衣服传送机械结构设计

        由两个直流电机与履带组成和四个履带轮组成,负责调整晾衣位置角度和传 送衣服的功能。如图下图为衣物传送装置。

衣物传送装置

4. 衣服折叠机械结构设计

衣物折叠装置,主要是由前后左右四块可活动板件,及其所对应的四个舵机组成。功能上实现对衣物折叠功能。动作流程为,左右前后四块板件在舵机的驱动下依次翻转运动,实现对衣物的左右前后方向的折叠动作。如图下图为衣物折叠装置。

衣物折叠装置

5.衣物存放机械结构设计

衣物存放装置主要是由传送带、活动支架、收纳箱及其对应的舵机电机部分组成功能上实现对折叠好后的衣物的传送存放功能。动作流程为电机驱动传送带把折叠后衣服传送到活动支架上,到达指定位置后,舵机驱动活动支架工作,把传送来的衣物翻转存放到收纳箱中,实现对衣物的最后的存储收纳功能。下图为为衣物存放装置。

衣物存放装置

三、硬件及蓝牙功能

1. 硬件设计

1.1Basra主控板简介
       Basra 是一款基于 Arduino 开源方案设计的一款开发板,通过各种各样的传感器来感 知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以在 Arduino、eclipse、Visual Studio 等 IDE 中通过 c/c++语言来编写程序,编译成二进制文 件,烧录进微控制器。下图为实物图片与接口。

实物图片与接口

1.2霍尔传感器模块
       霍尔传感器主要利用霍尔效应。磁场中有一个霍尔半导体片,恒定电流 I从 A 到 B 通过该片。在洛仑兹力的作用下,I 的电子流在通过霍尔半导体时向一侧偏移,使该片在 CD 方向上产生电位差,这就是所谓的霍尔电压。下图为霍尔传感器霍尔

霍尔传感器

       电压随磁场强度的变化而变化,磁场越强,电压越高,磁场越弱,电压越低,霍尔电压值很小,通常只有几个毫伏,但经集成电路中的放大器放大,就能使该电压放大到足以输出较强的信号。若使霍尔集成电路起传感作用,需要用机械的方法来改变磁感应强度。其方法是用一个转动的叶轮作为控制磁通量的开关,当叶轮叶片处于磁铁和霍尔集成电路之间的气隙中时,磁场偏离集成片,霍尔电压消失。这样,霍尔集成电路的输出电压的变化,就能表示出叶轮驱动轴的某一位置,利用这一工作原理,可将霍尔集成电路片用于点火正时传感器。霍尔效应传感器属于被动型传感器,它要有外加电源才能工作,这一特点 使它能检测转速低的运转情况。霍尔效应传感器的组成有 1-霍尔半导体元件 2- 永久磁铁 3-挡隔磁力线的叶片,晾衣收纳一体机器人中主要利用霍尔传感器来检测衣物是否到达指定位置。
       ① 使用 PH2.54 插座,配 PH2.54 转杜邦头连接线
       ② 响应频率:10HZ       
       ③ 供电电压:3.3V 或 5V
       ④ 工作电流:15mA

1.3舵机模块
       伺服电机通常被称为舵机,下图为舵机。它是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时,输出轴就可以转到特定的位置。只要控制信号持续不变,伺服机构就会保持轴的角度位置不改变。如果控制信号发生变化,输出轴的位置也会相应发生变化。
       ① 大扭力金属标准齿舵机 MG996R 标准伺服器
       ② 重量: 55g
       ③ 速度: 4.8V@0.2Osec/60°
       ④ 6.0V@0.19sec/60°
       ⑤ 扭力: 4.8V@13kg-cm
       ⑥ 6.0V@15kg-cm
       ⑦ 电压: 4.8V-7.2V
       ⑧ 空载工作电流: 120mA
       ⑨ 堵转工作电流: 1450mA
       ⑩ 响应脉宽时间: s 5usec
       ⑪ 角度偏差:回中误差 0 度,左右各 45°误差 s 3°齿轮: 5 金属齿轮组
       ⑫ 连接线长度; 300mm

舵机

1.4蓝牙串口模块
       HC-05 蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行下述所有 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制参数或发布控制命令。通过控制模块外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换。如图 (a)为蓝牙串口模块,图 (b)为蓝牙串口模块原理图。

参数
       ① 蓝牙 2.0 带 EDR, 2Mbps-3Mbps 调制度
       ② 内置 2.4GHz 天线, 用户无需调试天线
       ③ 灵敏度(误码率)达到 -80dBm
       ④  -4 -> 6dBm 功率可调输出
       ⑤ 外置 8Mbit FLASH
       ⑥ 低电压 3.3V 工作
       ⑦ 可选 PIO 控制
       ⑧ 标准 HCI 端口(UART or USB)
       ⑨ USB 协议: Full Speed USB1.1, Compliant With 2.0
       ⑩ 数字 2.4GHz 无线收发射
       ⑪ CSR BC04 蓝牙芯片技术
       ⑫ 自适应跳频技术
       ⑬ 蓝牙 Class 2 功率级别

图(a) 蓝牙串口模块

图b蓝牙串口模块原理图

2. 蓝牙功能设计

APP INVENTOR 的界面制作
       蓝牙功能的设定大致可以分为共两项,启动和关闭晾衣功能,开启和关闭叠衣功能,如图  为蓝牙选择界面菜单。

蓝牙选择界面菜单

逻辑设计
       进入逻辑设计状态后,按如下思路编程,下图为逻辑设计界面
       (1)利用“列表选择框”让用户选择已与手机配对的外部蓝牙设备;
       (2)当“列表选择框”完成后,让用户知道外部蓝牙设备与手机蓝牙可以通信;
       (3)根据“按钮”的功能(如“开”“关”等)让手机蓝牙向外部蓝牙设备发送指令。

逻辑设计界面

四、程序源码

1. 示例程序

主程序代码

#include <Servo.h>

int a,b,c,d,e,f;

Servo left_fold;//定义舵机名 left_fold、right_fold、up_fold、store_fold、complete_fold

Servo right_fold;

Servo up_fold;

Servo store_fold;

Servo complete_fold;

boolean flag1=0; void setup()

{

left_fold.attach(3);//舵机 left_fold 在 3 引脚

right_fold.attach(4);//舵机 right_fold 在 4 引脚

up_fold.attach(7);//舵机 up_fold 在 7 引脚

store_fold.attach(8);//舵机 store_fold 在 8 引脚

complete_fold.attach(12);//舵机 complete_fold 在 12 引脚

left_fold.write( 1 );//舵机 left_fold 初始角为 1

right_fold.write( 165 );//舵机 right_fold 初始角为 165

up_fold.write( 5 );//舵机 up_fold 初始角为 5

store_fold.write( 25 );//舵机 store_fold 初始角为 25

complete_fold.write( 111 );//舵机 complete_fold 初始角为 111

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

}

void loop()

{

if(digitalRead(3)==1)

{

digitalWrite(9,HIGH);

digitalWrite(10,LOW);

}

else{ digitalWrite(9,LOW);

digitalWrite(10,LOW);flag1=1;}

if(flag1==1)

{

delay( 1500 );

flag1=0;

for (b= 1;b<=148; b++ )//舵机控制右侧板件翻转

{

right_fold.write(165-b);

delay( 3 );

}

delay(200 );

for (b= 1;b<=152; b++ )

{

right_fold.write(17+b);

delay( 3 );

}

delay(200 );

delay( 1500);

for (a= 1; a<=150; a++ )//舵机控制左侧板件翻转

{

left_fold.write(1+a);

delay( 3 );

}

delay( 200 );

for (a= 1; a<=150; a++ )

{

left_fold.write(151-a);

delay( 3 );

}

delay( 200 );

delay( 1500 );

for (c= 1; c<=100; c++ )//舵机控制前侧板件翻转

{ up_fold.write(5 + c);

delay( 3);

}

for (c= 1; c<=100; c++ )

{ up_fold.write(105 - c);

delay( 3 );

}

delay( 200);

delay( 1500 );

for (d= 1; d<=102; d++ )//舵机控制后侧板件翻转

{

store_fold.write(25 + d)

delay( 3 );

}

delay( 200 );

for (d= 1; d<=102; d++ )

{

store_fold.write(127 - d);

delay( 3 );

}

delay( 2000 );

digitalWrite(9,HIGH);//直流电机控制传送带运动

digitalWrite(10,LOW);

delay( 700 );

digitalWrite(9,LOW);

digitalWrite(10,LOW);

delay( 300 );

for (f= 1; f<=28; f++ )//舵机控制活动支架翻转

{

complete_fold.write(111 - f);

delay( 5);

}

delay( 500 );

for (f= 1; f<=38; f++ )

{

complete_fold.write(83 + f);

delay( 3);

}

delay( 2000

flag1=0;

digitalWrite(5,HIGH);

digitalWrite(6,LOW);

delay(1000);

}

}

蓝牙控制程序

#include <Servo.h>

Servo servo1,servo2; //定义舵机名 1 和 2

char buttonState;

boolean flag1=0; void setup()

{

servo1.attach(4); // 舵机 1 信号在 4 引脚

servo2.attach(7);//舵机 2 信号在 7 引脚

Serial.begin(9600);//波特率 9600

servo1.write(0); servo2.write(0);//舵机 1、2 初始角度 0 度

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

}void loop()

{if(digitalRead(3)==1)

{

digitalWrite(10,HIGH);

digitalWrite(9,LOW);

}

else{ digitalWrite(9,LOW);

digitalWrite(10,LOW);flag1=1;}

if(flag1==1)

{

delay( 12700);

flag1=0;

digitalWrite(10,HIGH);

digitalWrite(9,LOW);

delay(1000);

}

if(Serial.available()>0)//串口接受到的数据个数

{

buttonState = Serial.read();

}

if (buttonState == '1')//控制 1 舵机

{servo2.write(90);

delay(20);

}

if (buttonState == '2')

{servo2.write(0);

delay(20);

} if (buttonState == '3')

{digitalWrite(9,0);

digitalWrite(10,1);

delay(15);}

if (buttonState == '4')

{digitalWrite(9,0);

digitalWrite(10,0);

delay(15);}

}

{digitalWrite(9,0);

digitalWrite(10,0);

delay(15);}

}


五、参考文献

[1] 吴晨晨.一种智能移动机器人通用控制系统研究与实现[D].南京:南京航空航天大学,2012.
[2] 范印越.机器人技术[M].北京:电子工业出版社,1988.
[3] 杜样瑛.工业机器人及应用[M].北京:机械工业出版杜,1986.
[4] 马香峰.机器人机构学[M].北京:机械工业出版社,1991.
[5] 濮良贵,纪名刚.机械设计(第八版)[M].北京:高等教育出版杜,2006.

详细内容可参考 【S020】晾衣收纳一体机器人

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

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

相关文章

【Axure高保真原型】树切换动态面板案例

今天和大家分享树切换动态面板的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击最后一级人物节点&#xff0c;可以切换右侧面板的状态到对应的页面&#xff0c;左侧的树是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表…

【广州华锐互动】智能楼宇3D数字化展示,实现对建筑物的实时监控和管理

随着科技的不断发展&#xff0c;人们对于生活品质的要求也在不断提高。在这个信息爆炸的时代&#xff0c;如何将复杂的数据以直观、生动的方式呈现给用户&#xff0c;已经成为了一个重要的课题。智能楼宇3D数字化展示作为一种新型的建筑科技&#xff0c;正逐渐成为行业的新宠&a…

【QML】Qt和QML获取操作系统类型

1. Qt获取系统类型 //方法 QSysInfo::productType()//举例&#xff1a; if(QSysInfo::productType() "windows") {qDebug() << "windows system"; }官方说明&#xff1a; [static] QString QSysInfo::productType() Returns the product name of …

IntelliJ Idea 撤回git已经push的操作

最初的样子 现在的样子 解决方案 第一步&#xff0c;commit到本地撤回&#xff1a; 打开提交历史记录&#xff0c;选中回退的版本右键&#xff0c;点击“Reset Current Branch to Here…”,然后选中“Mixed”&#xff0c;点击Reset后&#xff0c;之前commit的代码会在本地显…

黑豹程序员-架构师学习路线图-百科:Knife4j API接口文档管理

文章目录 由来&#xff1a;接口文档第一代&#xff1a;Swagger第二代&#xff1a;Knife4j界面 由来&#xff1a;接口文档 古老编程是一个语言前后端通吃&#xff0c;ASP、JSP、PHP都是如此。 但随着项目规模变大&#xff0c;项目团队也开始壮大&#xff0c;岗位职责开始细分&a…

【STM32】定时器

systick定时器&#xff1a; 【STM32】Systick定时器-CSDN博客 0.通用定时器框图 1.时钟源 2.控制器 3.输入捕获 计数器实际上是与比较寄存器的影子寄存器进行比较的。 4.输出比较 1.STM32的定时器学习要点 参考手册 STM32F1xx中文参考手册.pdf 林何/STM32F103C8 - 码云 -…

Leetcode-394 字符串解码(不会,复习)

此题不会&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 题解思路&#xff1a;元组思想&#xff1a;数字[字符串]&#xff0c;每次遇到中括号意味着要重复数字次字符串…

Web APIs——综合案例

1、学生就业统计表 2、渲染业务 根据持久化数据渲染页面 步骤&#xff1a; ①&#xff1a;读取localstorage本地数据 如果有数据则转换为对象放到变量里面一会使用它渲染页面如果没有则用默认空数组[]为了测试效果&#xff0c;可以先把initData存入本地存储看效果 ②&…

Oracle11g for centos7

准备工作 x86 centos7 oracle11G 环境搭建 配置好虚拟机&#xff0c;网络通畅&#xff0c;建议最少3G内存。 安装依赖 yum install binutils compat-libstdc-33 glibc* ksh gcc gcc-c libgcc libstdc* libaio libaio-devel libXext libX11 libXau libxcb libXi make sy…

2023第六届泰迪杯数据分析,第五届泰迪杯数据分析技能赛B题源码图片分享

需要B题源码以及第六届带队”指导“请私信本人&#xff0c;团队包含技能赛双一等&#xff0c;数学建模省一&#xff0c;泰迪杯挖掘国一&#xff0c;研究生队友。 去年一等作品可视化图如下&#xff0c;私信获取源码

static关键字的三种用法

在C语言中&#xff0c;关键字"static"可以用于不同的上下文&#xff0c;具有不同的作用。以下是"static"在C语言中的主要作用&#xff1a; 1. 静态变量&#xff08;Static Variables&#xff09;&#xff1a; 在C语言中&#xff0c;使用static关键字来声明…

Java算法(五):手写数组逆置API方法,实现数组逆置。 while实现 for循环实现

Java算法&#xff08;五&#xff09; while 循环实现 需求&#xff1a; 已知一个数组&#xff0c;arr {11, 22, 33, 44, 55};使用程序实现把数组中的元素交换位置。 交换后的数组为 arr {55, 44, 33, 22, 11}; 并在控制台输出交换后的数组元素。 代码示例 package com.…

JS 处理文档选择和范围创建【createRange | getSelection】

介绍 1、const selection window.getSelection(); 说明&#xff1a; 1、用于获取用户当前文档选择的对象&#xff1b; 2、它返回一个 Selection 对象&#xff0c;该对象代表了用户选择的文本范围&#xff08;可以包含一个或多个范围&#xff0c;因为用户可以同时选择多个不相…

YOLO目标检测——红绿灯检测数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;红绿灯检测数据集在自动驾驶、交通安全监控、智能交通系统、交通流量监测和驾驶员辅助系统等领域都有广泛应用的潜力数据集说明&#xff1a;红绿灯检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含有国内红绿灯…

Android:OkHttp同步请求和异步请求

一、前言 网络请求之前工作中用到的是post请求&#xff0c;然后了解之后发现请求的种类还有很多种。下面着重讲到是get和post的同步请求和异步请求。 二、具体内容 1.Okhttp的特点&#xff1a; 支持Http/2并允许对同一主机的所有请求共享一套接字&#xff1b;如果非HTTP/2&…

运维相关(一) - Vue项目配置WebSocket连接{ws、wss 连接方式}

Vue项目配置WebSocket连接 ws、wss 两种方式 1. 写作背景2. 晒出代码2.1 前端 vue.config.js 的代码2.2 Vue项目路由配置代码3.3 服务器Nginx配置 3. 使用方式3.1 前端代码3.2 后端代码 4. 测试使用 1. 写作背景 项目使用的是ruoyi的前后端分离框架项目需要使用到 websocket , …

数据结构与算法—双链表

前言 前面有很详细的讲过线性表(顺序表和链表)&#xff0c;当时讲的链表以单链表为主&#xff0c;但在实际应用中双链表有很多应用场景&#xff0c;例如大家熟知的LinkedList。 双链表与单链表区别 单链表和双链表都是线性表的链式实现&#xff0c;它们的主要区别在于节点结构…

lua 时间差功能概略

简介 在进行程序设计过程中&#xff0c;经常需要对某些函数、某些程序片断从开始运行到运行结束所耗费的时间进行一些量化。这种量化实际上就是计算时间差。 获取函数耗时情景如下&#xff1a; function time_used() --开始计时-- do something at here. --结束计时--时间差&…

交易所开发搭建

在当今的数字货币市场中&#xff0c;交易所开发搭建已经成为了一个重要的领域。交易所是数字货币交易的主要场所&#xff0c;为投资者提供了安全、可靠、高效的交易服本务文。将详细介绍交易所开发搭建的整个流程&#xff0c;包括需求分析、设计、技术选型、开发、测试和上线等…