极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1908|回复: 0

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

[复制链接]
发表于 2023-11-6 16:32:45 | 显示全部楼层 |阅读模式
本帖最后由 机器谱 于 2023-11-10 08:46 编辑

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

       与智能家居系统含义近似的有家庭自动化、电子家庭、数字家园、家庭网络、网络家居、智能家庭/建筑,在我国香港和台湾等地区,还有数码家庭、数码家居等称法。而我们所研发的晾衣收纳一体机器人正是智能家居的一种,家居生活中,衣服的晾晒存放是每天脱不开的话题。而我们基于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
       ③ 速度: [email protected]/60°
       ④ [email protected]/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. 示例程序
主程序代码
  1. #include <Servo.h>

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

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

  4. Servo right_fold;

  5. Servo up_fold;

  6. Servo store_fold;

  7. Servo complete_fold;

  8. boolean flag1=0; void setup()

  9. {

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

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

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

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

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

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

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

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

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

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

  20. pinMode(5,OUTPUT);

  21. pinMode(6,OUTPUT);

  22. pinMode(9,OUTPUT);

  23. pinMode(10,OUTPUT);

  24. }

  25. void loop()

  26. {

  27. if(digitalRead(3)==1)

  28. {

  29. digitalWrite(9,HIGH);

  30. digitalWrite(10,LOW);

  31. }

  32. else{ digitalWrite(9,LOW);

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

  34. if(flag1==1)

  35. {

  36. delay( 1500 );

  37. flag1=0;

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

  39. {

  40. right_fold.write(165-b);

  41. delay( 3 );

  42. }

  43. delay(200 );

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

  45. {

  46. right_fold.write(17+b);

  47. delay( 3 );

  48. }

  49. delay(200 );

  50. delay( 1500);

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

  52. {

  53. left_fold.write(1+a);

  54. delay( 3 );

  55. }

  56. delay( 200 );

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

  58. {

  59. left_fold.write(151-a);

  60. delay( 3 );

  61. }

  62. delay( 200 );

  63. delay( 1500 );

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

  65. { up_fold.write(5 + c);

  66. delay( 3);

  67. }

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

  69. { up_fold.write(105 - c);

  70. delay( 3 );

  71. }

  72. delay( 200);

  73. delay( 1500 );

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

  75. {

  76. store_fold.write(25 + d)

  77. delay( 3 );

  78. }

  79. delay( 200 );

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

  81. {

  82. store_fold.write(127 - d);

  83. delay( 3 );

  84. }

  85. delay( 2000 );

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

  87. digitalWrite(10,LOW);

  88. delay( 700 );

  89. digitalWrite(9,LOW);

  90. digitalWrite(10,LOW);

  91. delay( 300 );

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

  93. {

  94. complete_fold.write(111 - f);

  95. delay( 5);

  96. }

  97. delay( 500 );

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

  99. {

  100. complete_fold.write(83 + f);

  101. delay( 3);

  102. }

  103. delay( 2000

  104. flag1=0;

  105. digitalWrite(5,HIGH);

  106. digitalWrite(6,LOW);

  107. delay(1000);

  108. }

  109. }
复制代码
蓝牙控制程序
  1. #include <Servo.h>

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

  3. char buttonState;

  4. boolean flag1=0; void setup()

  5. {

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

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

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

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

  10. pinMode(9,OUTPUT);

  11. pinMode(10,OUTPUT);

  12. }void loop()

  13. {if(digitalRead(3)==1)

  14. {

  15. digitalWrite(10,HIGH);

  16. digitalWrite(9,LOW);

  17. }

  18. else{ digitalWrite(9,LOW);

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

  20. if(flag1==1)

  21. {

  22. delay( 12700);

  23. flag1=0;

  24. digitalWrite(10,HIGH);

  25. digitalWrite(9,LOW);

  26. delay(1000);

  27. }

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

  29. {

  30. buttonState = Serial.read();

  31. }

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

  33. {servo2.write(90);

  34. delay(20);

  35. }

  36. if (buttonState == '2')

  37. {servo2.write(0);

  38. delay(20);

  39. } if (buttonState == '3')

  40. {digitalWrite(9,0);

  41. digitalWrite(10,1);

  42. delay(15);}

  43. if (buttonState == '4')

  44. {digitalWrite(9,0);

  45. digitalWrite(10,0);

  46. delay(15);}

  47. }

  48. {digitalWrite(9,0);

  49. digitalWrite(10,0);

  50. delay(15);}

  51. }


复制代码

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


更多详细内容请参考 https://www.robotway.com/h-col-281.html


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-1 03:45 , Processed in 0.039921 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表