【分享帖】两个Arduino之间的无线通讯实验,Arduino资料第二弹
两个Arduino之间的无线通讯实验

这个实验用到的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&

安装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控制器的无线通信了!
上次RM我们运用了这个通信模块,调好信道,没有受到干扰。

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

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


写在最后,这篇文章转自张老师博客http://www.eefocus.com/zhang700309/blog/12-03/239763_09d3e.html,我只是勤劳的搬运工,顺便帮我们老师攒点人气,想学习Arduino的小伙伴,好好加油咯。



请问这篇文章对你有用吗?
【分享帖】两个Arduino之间的无线通讯实验,Arduino资料第二弹
所有评论
暂无更多
暂无更多
关于作者
zhouyi19930811
zhouyi19930811
0 关注Ta
0 文章
0 经验值
0 获赞