小组 > 嵌入式 > 《Arduino开发实战指南》书友会 > 两个Arduino之间的无线通讯实验
?
?
小组信息
名称:《Arduino开发实战指南》书友会

管理员:

人数:265
小组积分:1692
简介:Arduino因为其易用性使全球关注他的人越来越多,虽然在硬件工程师的眼中他仅仅是一个简单的8位机最小系统,但对于更多的没有硬件背景的人来说(特别是软件工程师),Arduino为他们打开了一扇通向硬件领域的窗口,这扇窗连接的是一个叫做开源硬件的世界。这里不用去系统的学习硬件知识,只要会C语言,就能够制作出很有意思的硬件交互作品。希望这本国内首本Arduino著作能够帮助你走进开源硬件的世界。

小组公告

欢迎大家积极发表Arduino以及开源硬件相关的内容,希望能以Arduino为切入点,让大家进入开源硬件的世界,本小组每月给发帖最多成员送出一本《Arduino开发实战指南》,要求是必须是开源硬件的相关内容(不限于Arduino),同时当月发帖数要在18篇以上。

返回本小组首页

楼主??[转载]?

两个Arduino之间的无线通讯实验


作者:mcp2002
积分:5284分
总积分:10377分
:2554
发送信息
加为好友
发表于2012-12-27 10:51
?
?

??这个实验用到的RF无线数传套件型号为APC220 ,它是国内一家公司出品的,能够无线通讯的距离达1000米,淘宝很容易买到。APC220套件是高度集成半双工微功率无线数据传输模块,它集成了高速单片机和高性能射频芯片和TTL串口接口,不仅可以实现双Arduino控制器之间的无线通讯,而且配合1个USB转换器可以实现电脑与Arduino单片机之间的无线通讯。

? ? ?APC220无线数传说明书请下载:APC220使用手册.pdf

?

? ? 用这个套件首先要安装CP210x_VCP_Win2K_XP_S2K3?USB转RS232的驱动,安装完驱动,就可以用RS232串口协议进行无线通信,我感觉就像用RS232有线通信一 样,搞无线通信。这个套件购买地址:http://item.taobao.com/item.htm?spm=1101*r1F.3-1mJ7Y.h-5h6gmz&id=227289063&

请看两个Arduino之间的无线通信实验视频:

?安装CP210x_VCP_Win2K_XP_S2K3 USB转RS232的驱动,该软件请下载:

?

http://115.com/file/bes5w3nl#

CP210x-VCP-Win2K-XP-S2K3.rar

?

该驱动软件安装到下图这一步,要把图中选项打勾,继续安装才行,别急着,按下“finish”按钮。

?

?

??驱动安装后,插上套件自带的USB适配器,你应该在Window的设备管理器观察“USB转RS232的驱动”所生成的串口号是什么?如下图:

?

?然后用厂家的RF-ANET软件给无线数传套件设置通信参数,注意要把这个套件的两个无线通信模块通过USB适配器都要设置,设置的参数可以一模一样,就按照下图即可。(我买的这家淘宝里的无线数传PF frequency在415-455M的频段,其它淘宝买的一模一样的无线数传也可能在其它频段。

? ? RF-ANET软件请下载:apc220.rar

一定记住用厂家套件自带USB适配器,设置上图参数啊!我在网站买的套件里的USB适配器如下图:

?

? ? 我这个无线通信实验较简单,就是:按下与主机连接的开灯按钮或者关灯按钮,通过无线通讯,控制从机上的LED灯亮灭。

? ? 注意:下载程序到Arduino控制器时,不要把RF无线数传插在Arduino控制器上的传感器扩展板V5的APC通讯插槽里,程序下载完再把无线数传插上去。

?

//主机程序
int button_open =4;//开灯按钮连在数字端口4
int button_close =5; //关灯按钮连在数字端口5
char flag;//向从机发送灯的亮灭标志
void setup()
{
? pinMode(button_open, INPUT);?
? pinMode(button_close, INPUT);
? Serial.begin(9600);//设置串行通信的波特率
}
?
void loop()
{
? //如果开灯按钮按下同时关灯按钮松开
? if( digitalRead(button_open)==LOW&&digitalRead(button_close)==HIGH)
? {
? ? flag='a';
? ? Serial.print(flag);//向从机发送灯亮标志
? }
?if(digitalRead(button_close)==LOW&&digitalRead(button_open)==HIGH)
? {?
? ? flag='b';
? ? Serial.print(flag);//向从机发送灯灭标志
? }
? delay(20);//延时,等待数据发送成功
}
?
?
?
//从机程序
int ledpin=9;//声明LED的数字接口编号
int val;//接受主机发来的LED灯状态标志
void setup()
{
? pinMode(ledpin,OUTPUT);//设置LED灯为输出
? digitalWrite(ledpin,HIGH);//初始化是LED灯熄灭
? Serial.begin(9600);//设置串行通信的波特率
}
void loop()
{
? if(Serial.available()>0) //查询串口有无数据
? {
? ? ? ? val=Serial.read();//读取主机发送的数据
? ? ? ? if(val=='a')//如果主机发送字符'a',则点亮LED
? ? ? ? {
? ? ? ? ? digitalWrite(ledpin,LOW);//LED点亮 ? ? ? ? ?
? ? ? ? }
? ? ? ? if(val=='b')//如果主机发送字符'b',则熄灭LED
? ? ? ? {
? ? ? ? ? digitalWrite(ledpin,HIGH);//LED熄灭 ? ? ? ? ??
? ? ? ? }
? } ??
? //用APC220无限数传向上位机传数据不能太快
? //如果delay(40)会出问题
? delay(80);
}

? ? 由于原厂提供的USB适配器和Arduino控制器的USB通信芯片型号不同,所以可以用原厂提供的USB适配器设置无限数传的通信参数,但是用原厂USB 适配器进行PC机与Arduino控制器的无线通信时,通信不成功,为了解决这个问题,换上个与Arduino控制器的USB通信芯片型号相同的适配器就没问题了!(注意两个Arduino控制器相互通讯时,当然不需要这个黑色USB适配器。

把无线数传模块的RXD、TXD、VCC和GND用杜邦线与这个黑色USB适配器的相应四个引脚相连,黑色USB适配器这四个引脚的名称已经在引脚旁标注了,而无线数传模块的四个引脚可以从下图了解到。

这个黑色的适配器需要名为CDM20602的FTDI驱动,请下载:CDM20602.zip

?

此黑色USB适配器,购买网址:http://item.taobao.com/item.htm?spm=1101*r1F.3-1mJ7Y.h-5h6gmz&id=4296597863&

把黑色的适配器与无线数传的5V 、GND、RXD和TXD连线,再插到电脑USB口,电脑会提示您安装驱动,您需找到解压后的文件名为CDM20602的文件在电脑硬盘中的位置,点击确定,就能安装成功FTDI驱动。

驱动安装后,你应该在Window的设备管理器观察“FTDI驱动”所生成的串口号是什么?

? ? 一个无线数传模块通过黑色适配器连在PC机的USB上,另一个无线数传插在,层叠在Arduino控制器上传感器扩展板的APC专门TTL插槽上,就可以通过Window设备管理器观察到的“FTDI驱动”串口号,进行PC机与Arduino控制器的无线通信了!

? ? ?PC机与Arduino控制器的无线通信的例子,请看我以前写的文章《Labview无线遥控Arduino智能小车》,网址:

http://www.eefocus.com/zhang700309/blog/11-11/233965_8b7d1.html


分享到:? 新浪微博?? qq空间??
投票数: ? 回复?? ? 引用??
1楼??[转载]?

Re:两个Arduino之间的无线通讯实验


作者:nille程晨
积分:447分
总积分:548分
:548
发送信息
加为好友
发表于2012-12-27 17:46
这个是宜昌城老张的博客呀,呵呵

点击登录,立即回复。
小组活跃用户