极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 40250|回复: 12

使用APC220实现Arduino无线数据传输

[复制链接]
发表于 2012-3-22 08:34:38 | 显示全部楼层 |阅读模式

     APC220-43模块是高度集成半双工微功率无线数据传输模块,其嵌入高速单片机和高性能射频芯片,TTL串口接口,配合1个USB转换器可以实现电脑与单片机之间通讯。



技术规格:
1. 工作频率 431MHz to 438MHz (1KHz步进)
2. 调制方式 GFSK
3. 频率间隔 200KHz
4. 发射功率 20mw (10级可调)
5. 接收灵敏度-117dBm@1200bps
6. 空中传输速率 1200 - 19200bps
7. 接口速率 1200-57600bps
8. 接口效验方式 8E1/8N1/8O1
9. 接口缓冲空间 512bytes
10. 工作湿度 10%~90%(无冷凝)
11. 工作温度 -20℃ - 70℃
12. 电源 3.3 – 5.5V (±50mV 纹波)
13. 发射电流 ≦35mA@10mW
14. 接收电流 ≦30mA
15. 休眠电流 ≦5uA
16. 传输距离 1000米传输距离 (开阔地可视距离)
17. 尺寸 39mm x 19mm x 2.8mm

套件清单:
APC220模块一对
天线一对
USB-TTL转换器一只。

默认频点:434MHz
默认波特率:9600bps
默认空中波特率:9600bps



使用USB转接器设定APC220参数更容易



USB转接器与APC220无线模块无缝插接



Roboboard v1.2 51单片机控制器可与APC220数传模块无缝插接





发现的问题是厂家给的USB适配器似乎于APC220不是很匹配:引脚的数目不一样。这个嘛,似乎不难理解,可能为了兼容不同的产品,或者至少可以说这一适配器不是为APC220专门设计的。USB适配器上用的芯片是CP2102,于是先到Silicon Laboratories网站下载相应的驱动程序,我下载的文件为cp210x_vcp_win2k_xp_s2k3.zip,解压缩后是一个exe文件,直接执行然后按照提示一步一步完成驱动的安装。

驱动安装完成之后,将USB适配器插入到PC机的USB接口中,Windows会提示找到相应的硬件,并对其进行相应的安装和配置:


当Windows提示你硬件已经可以使用之后,在设备管理器的“端口(COM 和 LPT)”下面可以找到CP2102虚拟出来的串口:


现在可以将一个APC220模块连接到USB适配器上了,由于USB适配器与APC220的引脚数目并不一致,连接时要注意插入的位置:


打开APC220厂家提供的设置程序RF-ANET,之前CP2102默认找到的串口为COM87,但RF-ANET程序似乎不能正常地打开这一端口。


在设备管理器中将串口设置成COM4后,重新插入USB适配器并打开RF-ANET,单击“Read R”按钮,一切正常,状态栏上显示“read succeed!”,表明已经能够正常地跟APC220通讯上了!


这样PC端APC220的测试环境就建议好了,现在来看Arduino这一端端。APC220模块与Arduino之间的连线有4条:5V, GND, TX和RX,需要注意的是,APC220和Arduino都是单独的串口设备,因此Arduino上的发送端TX应该与APC220上的接收端RX连接起来,同理Arduino上的RX应该与APC220上的TX连接起来:



APC220模块的默认波特率设置为9600,因此先用下面的代码来进行测试,注意在向Aduino下载程序时,先断开同APC220模块TX和RX上的连线,否则会出现下载无法正常的情况。

int val = 0;int ledPin = 13;void setup(){  Serial.begin(9600);}void loop(){  val = Serial.read();  if (-1 != val) {   if ('A' == val || 'a' == val) {     Serial.println("Hello from Arduino!");   }else if ('B' == val || 'b' == val) {      digitalWrite(ledPin, HIGH);      delay(500);      digitalWrite(ledPin, LOW);    }  }}
总结一下,现在我们已经分别在PC和Arduino上连接了一个APC220模块,并且已经向Arduino里面写入了相应的测试代码。一切都准备好之后,现在我们来进行相应的测试。首先要注意的是我们必须用外接电源的方式对Arduino进行供电,这是因为如果连接上USB线的话,相应的FT232模块会被激活,这样FT232实现的串口和ACP220上的串口就会因为冲突导致通信不正常:



在将加电后的Arduino放到房间里的一个角落之后,现在来配置PC端。APC220模块通过其USB适配器之后,其原理上也相当于一个串口,因此我们可以用Arduino自带的开发环境来进行测试,只是这一情况下你的PC上连接的不再是Arduino,而是APC220 USB适配器。连接好APC220 USB适配器后,打开Arduino,在“Tools” -> “Serial Ports”菜单下选择USB适配器虚拟出来的“COM4”(与之前的设置一致)。接着打开Arduino里的“Serial Monitor”,发送A字符,会收到Arduino传回来的“Hello from Arduino!”,发送B字符可以点亮Arduino上的13号LED(持续0.5秒):


APC220
回复

使用道具 举报

发表于 2012-3-23 07:17:21 | 显示全部楼层
看看推荐,谢谢分享了。
回复 支持 反对

使用道具 举报

发表于 2012-3-23 08:53:26 | 显示全部楼层
看看我的博客:http://www.eefocus.com/zhang700309/blog/12-03/239763_09d3e.html
基于APC220无线数传的两个Arduino之间的无线通讯实验。
回复 支持 反对

使用道具 举报

发表于 2013-2-18 16:12:58 | 显示全部楼层
有图就更完美了
回复 支持 反对

使用道具 举报

发表于 2013-3-14 19:09:23 | 显示全部楼层
宜昌城老张 发表于 2012-3-23 08:53
看看我的博客:http://www.eefocus.com/zhang700309/blog/12-03/239763_09d3e.html
基于APC220无线数传的两 ...


2110APC220遥控小车,怎么知道哪个模块坏了啊
[未解决] 无线APC220 v3.0无法收到数据,请求解惑
Arduino Mega 2560针脚疑问??

老张,能否抽空看看这些帖子呢,新手们很容易被小小的挫败感打败,老鸟们或许一眼就能看出问题的症结所在,举手之劳而已。
回复 支持 反对

使用道具 举报

发表于 2013-3-14 20:40:21 | 显示全部楼层
你用的什么APC220的USB适配器?不能用设置参数的那个USB适配器,看我这篇文章,http://www.eefocus.com/zhang700309/blog/11-11/233965_8b7d1.html
回复 支持 反对

使用道具 举报

发表于 2013-3-14 20:49:43 | 显示全部楼层
由于原厂提供的USB适配器和Arduino控制器的USB通信芯片型号不同,所以可以用原厂提供的USB适配器设置无限数传的通信参数,但是用原厂USB 适配器进行无线通信时,通信不成功,为了解决这个问题,换上个与Arduino控制器的USB通信芯片型号相同的适配器就没问题了!
回复 支持 反对

使用道具 举报

发表于 2013-3-25 20:55:56 | 显示全部楼层
你好,我想問下串口問題,我在設置“USB适配器”時,用的是com9;
                                   把程序燒錄到arduino時,用的是com8,;
     然後我就想問:我外接電源到arduino,開始測試程序時用的是com幾呢?再打開“Serial Monitor”監控之前!   我試過com8它說我串口不對,試com9它沒有反饋信號!

謝謝!
回复 支持 反对

使用道具 举报

发表于 2013-4-26 21:06:26 | 显示全部楼层
宜昌城老张 发表于 2013-3-14 20:49
由于原厂提供的USB适配器和Arduino控制器的USB通信芯片型号不同,所以可以用原厂提供的USB适配器设置无限数 ...

非常感谢老张的回复!
有一个问题不明,如果一个APC220 A跟PC通过USB-TTL适配器相连,另一个APC220 B和arduino直连,实现的arduino和pc之间进行无线通信。那么为什么,USB-TTL适配器的型号和arduino USB适配器的型号不同会导致arduino和pc之间不能通信??也就是原厂提供的USB适配器和Arduino控制器的USB通信芯片型号不同时,会造成arduino和pc时间不能通信。
回复 支持 反对

使用道具 举报

发表于 2013-4-27 08:06:10 | 显示全部楼层
暮夕/mg 发表于 2013-4-26 21:06
非常感谢老张的回复!
有一个问题不明,如果一个APC220 A跟PC通过USB-TTL适配器相连,另一个APC220 B和a ...

是这样,我实验得到的结论,可以看我博客。
回复 支持 反对

使用道具 举报

发表于 2013-4-27 20:29:59 | 显示全部楼层
宜昌城老张 发表于 2013-4-27 08:06
是这样,我实验得到的结论,可以看我博客。

恩,我认真阅读了您的博文。此方法值得一试,但是我的arduino是mega2560,已经不再使用FTDI USB-to-serial 驱动芯片了,而是通过ATmega8U2编程实现的。这样的话,选择合适的适配器又成问题了,老张可否加以指点。感激不尽;-)
回复 支持 反对

使用道具 举报

发表于 2013-4-28 08:19:54 | 显示全部楼层
暮夕/mg 发表于 2013-4-27 20:29
恩,我认真阅读了您的博文。此方法值得一试,但是我的arduino是mega2560,已经不再使用FTDI USB-to-serial ...

mega2560,我有,但没使用过,不好意思。
回复 支持 反对

使用道具 举报

发表于 2014-8-13 21:26:24 | 显示全部楼层
http://www.geek-workshop.com/thread-10685-1-1.html
LZ求帮忙解决这个问题{:soso_e154:}{:soso_e154:}
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 05:38 , Processed in 0.046738 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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