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

2014-03-112万
AI 快速预览详细 收起
本教程介绍了家用型移动机器人的I2C通讯方法,使用GMR通用机器人扩展板和Arduino处理器。通过主从结构,Mega作为主机,Nano作为从机,利用Wire库实现数据传输。教程详细讲解了硬件构架、接口定义以及具体的代码示例,适合零基础新手学习。
作者:Pepin@DFRobot 转载请注明来源

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

家用型移动机器人硬件构架
家用型移动机器人制作教程 I2C通讯篇(wire库介绍)图1

GMR版接口定义
家用型移动机器人制作教程 I2C通讯篇(wire库介绍)图2

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, 下载次数: 5100

wire库

硬件构造图.zip

171.75 KB, 下载次数: 5045

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(8)
N-Z6h20E
N-Z6h20E
hyl
hyl
上面的代码按要求放进去编译出错
何处不江南
何处不江南
HCR现有什么比较有意思的用法吗?
破坏大王
破坏大王
作者
回复何处不江南
这需要大家发挥想象力了,加个机械臂什么,有什么想法大家可以一起讨论一下,比如装个摄像头在HCR是不是很有趣啊
Grey
Grey
楼主,如果要打算远程控制HCR,改选用什么样的模块比较好,我看它内部扩有2个Xbee接口。
破坏大王
破坏大王
作者
回复Grey
那2个借口不仅仅适用于Xbee对于 WiFi等无线通讯模块也是适用的,你只要有合适的通讯协议都可以使用
我爱小宇宙
我爱小宇宙
好东西,要大家分享啊~顶起来啊~~~
天中雨水
天中雨水
好东西
Holiday
Holiday
楼主图片大点啊。。。不过还是很好的
ambersea
ambersea
很简介清晰~呢~
- 没有更多了 -