|
【S111】基于arduino的遥控拖地机器人设计
作品说明 |
1. 研究背景
随着现代社会生活节奏的加快,人们或忙于工作,或享受生活,时间越来越宝贵,所以不会把时间浪费在整理家务和打扫卫生方面。收入水平的不断提高使得人们对生活质量的要求也越来越高,高品质的生活首先要保证居住环境的干净卫生,因此大家渴望找到一种机器人,能够智能的打扫房间卫生。随着科学技术的发展,机器人也越来越多的被应用。机器人的出现,提高了生产过程中的自动化程度,减轻了劳动力,改善了劳动条件。
2. 作品结构设计
2.1 功能描述
① 遥控四驱小车运动
② 桨叶通过旋转完成拖地
③ 机械手抓取洒水瓶洒水/清洁剂
④ 履带机构实现爬坡越障
2.2 工作原理
本作品由四个直流电机控制小车运动,通过红外线遥控控制直流电机,由电机的差速运动使小车实现转向;车头部分通过两个直流电机实现履带转动,再由舵机及其机构实现从动轮的升降,使小车具有爬坡越障功能;底部由一个直流电机控制桨叶旋转,实现扫地功能;车上部由三个舵机控制机械手六个自由度的转动,从而实现各个方位的清洁剂喷洒;爪子部分由一个舵机控制开闭,实现清洁剂的装卸。
作者:吴婷婷 孙昕禹 黄珏皓 郑皓 王鹏涛
单位:杭州师范大学钱江学院
指导老师:吴小涛
作品说明
基于arduino的遥控拖地机器人
2.3 机构组成
① 桨叶
l 仿电风扇叶片
l 直流电机控制停转
l 减少叶片重量
第一代桨叶
改进版桨叶
② 机械手
l 四个舵机控制
l 抓取洒水瓶
l 重启自动复位
③ 履带机构
l 辅助爬坡
l 直流电机控制履带转动
l 舵机控制旋转角度
3. 示例程序
3.1 四驱车及桨叶控制程序
#include <IRremote.h> int RECV_PIN = 8; //遥控引脚 int velocity; //定义速率 IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode( 5 , OUTPUT); pinMode( 6 , OUTPUT); pinMode( 9 , OUTPUT); pinMode( 10 , OUTPUT); velocity=150; } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); } switch(results.value) { case 0x4DB253AC: // 前进 Forwards(); break; case 0x4DB24BB4: // 后退 Black(); break; case 0x4DB29966: // 左转 Left(); break; case 0x4DB2837C: // 右转 Right(); break; case 0x4DB23BC4: //停止 Stop(); break; }}void Left() //小车左转子函数{analogWrite( 6 , 0);analogWrite( 5 , 0); //驱动右侧电机转动analogWrite( 10 , 0 );analogWrite( 9 , velocity ); //左侧电机停转}void Right() //小车右转子函数{analogWrite( 6 , 0 );analogWrite( 5 , velocity ); //右侧电机停转analogWrite( 10 , 0);analogWrite( 9 , 0 );//驱动左侧电机转动}void Forwards() //小车前进子函数{ analogWrite( 6 , 0);analogWrite( 5 , velocity );analogWrite( 10 , 0 );analogWrite( 9 , velocity ); }void Stop() //小车停止子函数{ analogWrite( 6 , 0 );analogWrite( 5 , 0 );analogWrite( 10 , 0 );analogWrite( 9 , 0 ); }void Black() //小车后退子函数{ analogWrite( 6 , velocity );analogWrite( 5 , 0 );analogWrite( 10 , velocity );analogWrite( 9 , 0 ); } |
#include<Servo.h> Servo myservo; Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; int pos=0; #include <IRremote.h> int RECV_PIN = 8; int velocity; //定义速率 IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode( 5 , OUTPUT); pinMode( 6 , OUTPUT); pinMode( 9 , OUTPUT); pinMode( 10 , OUTPUT); velocity=150; myservo.attach(11); myservo1.attach(3); myservo2.attach(4); myservo3.attach(7); myservo4.attach(12); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); } switch(results.value) { case 0x4DB201FE: // 启动 Forwards(); break; case 0x4DB2817E: // 停止 Stop(); break; case 0x4DB241BE: //机械手 Auto(); break; } } void Auto() { myservo1.write(pos=0); myservo2.write(pos=60); myservo3.write(pos=90); myservo4.write(pos=120); delay(3000); myservo2.write(pos=-60); myservo3.write(pos=-90); } void Forwards() { analogWrite( 6 , 0); analogWrite( 5 , velocity ); analogWrite( 10 , 0 ); analogWrite( 9 , velocity ); myservo.write(pos=-90); delay(3000); } void Stop() { analogWrite( 6 , 0 ); analogWrite( 5 , 0 ); analogWrite( 10 , 0 ); analogWrite( 9 , 0 ); myservo.write(pos=90); delay(3000); } |
3.2 机械手及履带机构控制程序
4. 注意事项
① 一块Arduino开发板只有两对控制直流电机的引脚,本作品用到了7个直流电机,4组不同程序的电机,因此需要两块开发板。
② 在实际操作中发现,在Arduino开发板中,当直流电机与舵机同时接在一个板上时,控制直流电机的D9和D10引脚会失效。
5. 应用前景
近几年扫地机器人正以惊人的速度普及,处于不断发展壮大的时期,市场发展十分迅猛,不但提升用户体验而且满足实际功能的需求。在前期发展阶段,扫地机器人主要以改进扫地效能为主。但现阶段,扫地机器人在保证提供优良的清洁效果的前提下,正在慢慢往多传感器融合、导航、路径规划等核心化技术发展方向上发展。
本作品为一款简版机器人,适用于大空间的地面清洁,且工作杂音较小,整个清洁过程不需要特别的人为干预,具有轻便、省时省力的特点。对地面上较薄的浮沉,如头发和较小的纸屑垃圾,清洁效果明显,可以轻易解决,且能够自动感应障碍物,不需人工操作便可实现自动爬坡翻越障碍物。运用了红外遥控功能,可利用红外遥控,控制整体机械结构的前进后退以及机械手的抓取,同时车身可以携带清洁用品,方便清洁时的擦洗和运转,使清洁效果更佳,实际应用效果更明显。
* 本项目未获得作者开源授权,无法提供资料下载。