做一个“挥手机器人”.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
做一个“挥手机器人”   “挥手机器人”的想法源自于大脑突然闪过的一个灵感,即当用户举手挥动手臂的时候,机器人也会跟着一起挥手,且挥手的方向保持一致,就像跟机器人一起参加演唱会一样。   工作原理   每一款手机都会自带一个加速度传感器,即陀螺仪。加速度传感器可以感知手机当前所处状态的X、Y、Z轴的3个分量的加速度,图1为手机平放时X、Y、Z轴加速度分量的方向。   当手机摇晃的时候,X、Y、Z轴上的3个加速度分量会发生相应的变化,如下页表1所示。当然,表中的这些数据是根据我们的手机测试出来的,不同的手机,测出来的数据未必一样。   其实我们只需要手机在垂直状态下左右摇晃的传感器数据,从中我们可以发现,手机向左或向右摇晃,与X轴加速度分量的变化是一一对应的,因此可以根据X轴加速度分量的变化判断手机摇晃的方向,如表2所示。   怎么知道手机的运动方向呢?很简单,只要隔一定的时间,获取传感器数值,然后相减,根据结果进行判断。具体如下:   定义:Xq为前一位置X轴加速度分量,Xh为当前位置X轴加速度分量。   若Xh-Xq0,则手机向左摇晃;反之Xh-Xq0,则手机向右摇晃。   材料选择   根据需求,“挥手机器人”若要根据手机的挥动控制机器人执行“挥手”动作,则手机与机器人间需要通讯模块;而机器人执行“挥手”动作,则需要一个控制器及舵机等执行模块。   手机与机器人之间的通讯方式有很多,我们选择了最常见的一种通讯方式――蓝牙。手机在挥动时,通过手机的蓝牙通讯模块将相应的指令(如“L”,即向左挥手)发送给“挥手机器人”的控制器;控制器根据接收到的指令对“挥手机器人”的执行模块舵机做出相应的动作。   制作本作品所需要的材料及其说明,如表3所示。   结构搭建   “挥手机器人”的结构一定要稳固,不然在执行“挥手”动作时,会影响“挥手机器人”的平衡。   搭建机器人“骨架”结构时,我们采用轻巧且又便宜的亚克力板,用激光切割机进行切割。利用这些板子和螺丝螺母,我们很快完成了“挥手机器人”的“骨架”,并将Arduino Uno控制板、蓝牙通讯模块、舵机安装在机器人“骨架”上,效果如图2所示。   代码编程   1.安卓手机App编程   手机若要与Arduino Uno控制板相互通信,则需要借助蓝牙通讯等方式进行。App Inventor支持传感器编程和蓝牙通讯,利用这一图形化编程平台,就能制作一个专用的App应用程序。下页图3所示为App的界面设计与组件使用情况。   根据表2所示,根据手机当前摇晃位置与前一位置的X轴加速度分量的值可以判断手机摇晃的方向,因此手机App应用程序只需向Arduino Uno控制板发送“L”或“R”字符,分别表示“向左”或“向右”的舵机控制指令,具体编程代码如下页图4所示。   调用App中的蓝牙客户端给Arduino Uno控制板发送“L”或“R”字符指令时,蓝牙通讯模块须处于连接状态,否则提示错误;具体编程代码如图5所示。   2.“挥手机器人”控制端编程   当Arduino Uno控制板通过蓝牙通讯模块接收到字符“L”时,则执行舵机转向45度,即机器人手臂向左摆动;若蓝牙通讯模块接收到的字符为“R”,则执行舵机转向135度,即机器人手臂向右摆动。具体代码如下:   #include   Servo serpin;   unsigned char resaveChar;   void setup() {   Serial.begin(9600);   serpin.attach(9);   serpin.write(90);   }   void loop() {   if(Serial.available()){   resaveChar=Serial.read();   if(resaveChar==R){   serpin.write(135);   delay(100);   }   if(resaveChar==L){   serpin.write(45);   delay(100);   }   }   }   造型制作   “挥手机器人”的外观有些单一,为了赋予“挥手机器人”以人的形象。我们利用卡纸为“挥手机器人”做了一件外衣,同时为它用超轻粘土捏了一个头像和两只手。   运行效果   手机App的运行与“挥手机器人”的工作效果如图6所示。需要说明的是,我们还在这个机器人上安装了3个红外测障传感器,在没有手机的情况下,也能感测到我们的手势,实现同步挥手。   借助“挥手机器人”的案例制作,我们初步实现了用手机App控制Arduino硬件设备中的舵机模块。除此之外,还可以尝试用手机

文档评论(0)

sis_lxf + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档