概 述
这个模块是为了做ROBOT而选择的东东。当然,如果你有更好的想法,比如用于无线防盗报警器、远程遥控、数据交换、手持终端PDA、无线耳机、数字视频、无线鼠标、无线键盘以及其他短距离高速无线应用等,他也能够完全胜任。我们做ROBOT的想法是:把大部分功能集成化,从而解放主CPU。
APC220模块是高度集成半双工微功率无线数据传输模块,其嵌入高速单片机和高性能射频芯片。创新的采用高效的循环交织纠检错编码,抗干扰和灵敏度都大大提高,最大可以纠24bits连续突发错误,达到业内的领先水平。 APC220模块提供了多个频道的选择,能够透明传输任何大小的数据,而用户无须编写复杂的设置与传输程序,并提供UART/TTL接口。同时小体积,宽电压运行,较远传输距离,丰富便捷的软件编程设置功能,使APC220模块能够应用与非常广泛的领域。了解更多 APC220 介绍。
性能描述
基本参数
- 电源 3.3 – 5.5V (±50mV 纹波)
- 发射电流 ≦35mA@10mW
- 接收电流 ≦30mA
- 休眠电流 ≦5uA
- 传输距离 1000米传输距离 (开阔地可视距离)
- 工作湿度 10%~90%(无冷凝)
- 工作温度 -20℃ - 70℃
- 尺寸 37mm x 17mm x 6.5mm
性能参数
- 工作频率 420MHz to 450MHz (1KHz步进)
- 调制方式 GFSK
- 频率间隔 200KHz
- 发射功率 20mw (10级可调)
- 接收灵敏度 -117dBm@1200bps
- 空中传输速率 1200 - 19200bps
- 接口速率 1200 - 57600bps
- 接口效验方式 8E1/8N1/8O1
- 接口缓冲空间 512bytes
引脚定义
标号 | 定义 | 说明 |
---|---|---|
1 | GND | GND |
2 | VCC | 3.3V-5V |
3 | EN | 电源使能端,≥1.6V或悬空使能,≤0.5V休眠 |
4 | RXD | URAT输入口,TTL电平 |
5 | TXD | URAT输出口,TTL电平 |
6 | AUX | URAT信号,接收为低,发送为高 |
7 | SET | 设置参数,低有效 |
设备互联方式
UART/TTL 电平
RS485/RS232 电平
USB/TTL 电平
USB/USB
教程
本教程将引导您学习 如何实现电脑和 Arduino 的无线通讯。在实验结束时,您可以在电脑上收到从 Arduino发送的“Hello!”。
准备
-
硬件
- APC220 模块 x2
- USB 转串口 x1
- Arduino 控制板 x1
- USB 线A-B for Arduino x1
-
软件
- RF-magic 点击下载 RF-Magic.
- Arduino IDE 1.0.6 点击下载 Arduino IDE
- 串口助手: 点击下载 Serial debugging assistant
⚠注意:
- 本实验中我们的 Arduino 控制板用的是 Romeo(Leonardo)。在代码中它使用 Serial1 而不是 Serial。如果您使用其他类型的控制板,例如: Uno, Mega, Bluno 等等。请将 Serial1.println() 修改为 Serial.println(),否则您将无法下载代码。
- Arduino IDE 1.6.* 由于软件问题,不能正常显示/收发数据。
模块配置
- 将天线旋紧在 APC220上,将其插在 USB转串口 上,最后再查到你的电脑上。
- 下载并安装 USB转串口 的驱动。前往 Silicon Labs 下载相应驱动
- 打开设备管理器,找到您的 USB转串口 的串口号,这里是 COM8。
4. 用管理员身份双击打开应用 APC22X_V12A.exe (即:RF-magic ) Windows XP可以直接打开。 [阅读:【英文】如何避免每次都需要管理员身份打开?]
⚠注意:打开软件后,软件将自动打开串口,并有提示。如果提示打开串口失败,请用 管理员身份打开 或者 从设备管理器中将默认的串口号改为较小的串口号,如:“COM1”。
5. 按照下图中红色标注里的参数配置(默认值),点击 写入 Write W。
设置 | 选项 | 默认参数 |
---|---|---|
收发频率(RF frequency) | 420MHz-450MHz(分辨率1KHz,精度±100Hz) | 434MHz |
空中速率(RF TRx Rate) | 1200,2400,4800,9600,19200bps | 9600bps |
输出功率(RF Power) | 0-9 | 9 |
串口速率(Series Rate) | 1200,2400,4800,9600,19200,38400,57600bps | 9600bps |
网络地址码(NET ID) | 0-65535(16位) | 12345 |
节点地址码(NODE ID) | 123456789012 | |
串口效验(Series Patity) | Disable,Odd Patity,Even Patity | Disable |
6.对另外一块 APC220进行相同的配置。
通信测试
- 将一块插在电脑上,另一块插到 Arduino上(如果没有 相应的接口,可以单独按照管脚说明接线)。
- 上传程序。
⚠注意:请将 Serial1修改为 Serial如果您的 Arduino控制板是 Uno, Bluno, Mega 或其他使用串口0的设备。
//The sketch is tested on: Romeo v2 (Leonardo)
void setup()
{
Serial1.begin(9600); //Set serial baud rate to 9600
}
void loop()
{
Serial1.println("Hello!"); //print out hello string
delay(1000); //1 second delay
}
3.用串口助手或 Arduino串口监视窗打开COM8,您将看到“Hello!” 每隔一秒打印在电脑的窗口上。 (注意:Arduino IDE 1.6.5 不能正常显示)
疑难解答
Q 1. 设备之间不能正常通讯,是什么原因?
A:
- 两端的通讯协议不一致,如:波特率,校验不一致。
- 两端的频点,空中波特率不一致。
- 不是同一系列产品。
- 电源连接不正常。
- 模块已损坏。
- 模块EN脚设置错误
- 通讯距离超过范围,或天线接触不良。
Q 2. 传输距离很近,根本没有所谓的1km?
A:
- 电压超过范围。
- 电源纹波过大。
- 天线接触不良或天线类型不对。
- 天线过与靠近金属表面或模块接地面积太小。
- 接收环境恶劣,如建筑物密集,有强干扰源。
- 有同频干扰。
Q 3. 使用注意事项:
A:
考虑到空中传输的复杂性,无线数据传输方式固有的一些特点,应考虑以下几个问题。
-
无线通信中数据的延迟
由于无线通信发射端是从终端设备接收到一定数量的数据后,或等待一定的时间没有新的数据才开始发射,无线通信发射端到无线通信接收端存在着几十到几百毫秒延迟(具体延迟是由串口速率,空中速率以及数据包的大小决定),另外从无线通信接收端到终端设备也需要一定的时间,但同样的条件下延迟时间是固定的。 -
数据流量的控制
APC220模块虽然有512bytes大容量缓冲区,但若串口速率大于等于空中速率,则存在数据流量的问题,可能会出现数据溢出而导致的数据丢失的现象。在这种情况下,终端设备要保证串口平均速率不大于60%空中速率,如串口速率为9600bps,空中速率为4800bps, 终端设备每次向串口发送100字节,那么终端设备每次向串口发送的时间约104ms,(104ms/0.6)*(9600/4800)=347ms,所以终端设备每次向串口发送100字节每次间隔不小于347ms,以上问题则不会出现。 -
差错控制
APC220模块具有较强的抗干扰能力,在编码已经包含了强大的纠检错能力。但在极端恶劣的条件下或接收地的场强已处于APC220模块接收的临界状态,难免出现接收不到或丢包的状况。此时客户可增加对系统的链路层协议的开发,如增加类似TCP/IP中滑动窗口及丢包重发等功能,可大大提高无线网络的使用可靠性和灵活性。 -
天线的选择
天线是通信系统的重要组成部分,其性能的好坏直接影响通信系统的指标,用户在选择天线时必须首先注重其性能。一般有两个方面,第一选择天线类型;第二选择天线的电气性能。选择天线类型的意义是:所选天线的方向图是否符合系统设计中电波覆盖的要求;选择天线电气性能的要求是:选择天线的频率带宽、增益、额定功率等电气指标是否符合系统设计要求。因此,用户在选择天线时最好向厂家联系咨询,APC220 要求的天线阻抗为50欧姆。 -
电源方面
此模块电源以外的其它管脚的工作电平应保证:同模块的电源电压一致,否则会损坏模块。
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!