查看: 6857|回复: 10

家用型移动机器人制作教程 I2C通讯篇(wire库介绍)

[复制链接]
作者:Pepin@DFRobot 转载请注明来源

各位小伙伴们这篇是家用型移动机器人制作教程的第二篇,这套教程的宗旨是通过对GMR通用机器人扩展版的学习,了解如何无线遥控一个家用型移动机器人如何精确定位移动,如何利用数个不同传感器(红外,碰撞,超声波)收集周围环境信息以及如何能够进行简单避障。

家用型移动机器人硬件构架
硬件构架.png

GMR版接口定义
接口定义.png

GMR板简介
GMR板全称 通用机器人扩展板, 是一块专为家用机器人平台(HCR) 设计的集成电路板。
在这块集成版上需要插入3 个微处理器(单片机):2块Arduino Nano和1块Arduino Mega ADK。 3块处理器之前均已通过I2C链接勿需另外连线。
其中一块Nano作为电机控制以及数据采集,另一块nano用来驱动超声波传感器。Arduino Mega ADK作为主控板,采集传输数据以及其他扩展模块,另外还有2个无线通讯槽可使用Xbee,蓝牙以及其他通讯模块。另外有8个I/O端口以及8个模拟口3个i2c通讯接口作为Mega ADK 的输入输出。 nano板留有电机驱动的专用端口以及可调旋钮电压输出。

通讯篇

GMR板我们采用了主从结构来进行Nano电机控制板与Mege主控器的通讯,Mega为主机,Nano为从机,使用库wire.h,可以使用wire库中example程序中进行学习。

  1. Wire.begin();  在Mega程序void setup()中声明作为主机
  2. Wire.begin(2);  在Nano程序voidsetup()中声明作为2号从机
  3. Wire.onRequest(requestEvent); // registerevent 使用在从机void setup()中
  4. Wire.requestFrom(2);在主机void loop()中  是主机向2号从机要求数据。
  5. Wire.write("hello ");从机在接受到主机的要求数据指令后使用此函数发送数据。
  6. Wire.read()是主机读取接受到的数据。
  7. 主机可以在void loop()中使用此程序向从机发送数据
  8. Wire.beginTransmission(2); // transmit todevice #2
  9. Wire.write("x is ");        // sends five bytes
  10. Wire.write(x);              // sends one byte  
  11. Wire.endTransmission();    // stop transmitting
  12. 对应从机的接受程序
  13.   while(1< Wire.available()) // loop through all but the last
  14.   {
  15.    char c = Wire.read(); // receive byte as a character
  16.    Serial.print(c);         // printthe character
  17.   }
  18.   intx = Wire.read();    // receive byte as aninteger
  19. Serial.println(x);         // print the integer
复制代码






在GMR扩展版上我们只要插入了mega 和Nano处理器2者之间已经完成了I2C通讯连线。


Wire.zip

14.34 KB, 下载次数: 600

wire库

硬件构造图.zip

171.75 KB, 下载次数: 608

ambersea  初级技师

发表于 2014-3-11 12:02:22

很简介清晰~呢~
回复

使用道具 举报

Holiday  初级技匠

发表于 2014-3-11 18:30:09

楼主图片大点啊。。。不过还是很好的
回复

使用道具 举报

天中雨水  学徒

发表于 2014-3-11 21:13:43

好东西
回复

使用道具 举报

Eric  初级技神

发表于 2014-3-11 21:15:38

好东西,要大家分享啊~顶起来啊~~~
回复

使用道具 举报

Grey  中级技匠

发表于 2014-3-12 10:11:14

楼主,如果要打算远程控制HCR,改选用什么样的模块比较好,我看它内部扩有2个Xbee接口。
回复

使用道具 举报

何处不江南  初级技匠

发表于 2014-3-12 10:37:11

HCR现有什么比较有意思的用法吗?
回复

使用道具 举报

合乎  初级技匠
 楼主|

发表于 2014-3-12 10:51:23

Grey 发表于 2014-3-12 10:11
楼主,如果要打算远程控制HCR,改选用什么样的模块比较好,我看它内部扩有2个Xbee接口。 ...

那2个借口不仅仅适用于Xbee对于 WiFi等无线通讯模块也是适用的,你只要有合适的通讯协议都可以使用
回复

使用道具 举报

合乎  初级技匠
 楼主|

发表于 2014-3-12 10:52:57

何处不江南 发表于 2014-3-12 10:37
HCR现有什么比较有意思的用法吗?

这需要大家发挥想象力了,加个机械臂什么,有什么想法大家可以一起讨论一下,比如装个摄像头在HCR是不是很有趣啊
回复

使用道具 举报

hyl  见习技师

发表于 2018-1-11 15:22:23

上面的代码按要求放进去编译出错
回复

使用道具 举报

N-Z6h20E  学徒

发表于 2018-5-27 22:29:20

回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail