请选择 进入手机版|继续访问电脑版
返回列表 发新帖回复

[教程] 两个Arduino之间的无线通讯实验

[复制链接] 【【【进入图片模式】】】

该用户从未签到

8

主题

11

帖子

37

积分

学徒

Rank: 1

积分
37
发表在  2017-12-2 16:16:02  | 显示全部楼层 | 阅读模式
  这个实验用到的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的驱动
该驱动软件安装到下图这一步,要把图中选项打勾,继续安装才行,别急着,按下“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

把黑色的适配器与无线数传的5V 、GND、RXD和TXD连线,再插到电脑USB口,电脑会提示您安装驱动,您需找到解压后的文件名为CDM20602的文件在电脑硬盘中的位置,点击确定,就能安装成功FTDI驱动。
驱动安装后,你应该在Window的设备管理器观察“FTDI驱动”所生成的串口号是什么?
    一个无线数传模块通过黑色适配器连在PC机的USB上,另一个无线数传插在,层叠在Arduino控制器上传感器扩展板的APC专门TTL插槽上,就可以通过Window设备管理器观察到的“FTDI驱动”串口号,进行PC机与Arduino控制器的无线通信了!

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

发表新帖 客服
微信

微信公众号

微信二维码
最优秀的创意分享平台

客户端

移动端

手机端二维码
扫码立即穿越至手机

回到顶部
快速回复 返回顶部 返回列表