2440| 0
|
[进阶] arduino uno R3 与 APC220串口通信 |
版权声明:本文为CSDN博主「老奶奶的新棉袄」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/bigblueman110/article/details/115447732 硬件介绍 Arduino UNO APC220 实现功能 ARDIONO 与APC220串口通信 ARDUNIO UNO引脚介绍 apc220介绍及引脚介绍 APC220模块是新一代的多通道嵌入式无线数传模块,其可设置众多的频道,发射功率高达20 mW,而仍然具有较低的功耗,体积37mm x 17mm x 6.5mm(不含天线座和引脚插头),为业内目前最小体积,非常方便客户嵌入系统之内。 APC220模块创新的采用了高效的循环交织纠检错编码,最大可以纠24bits 连续突发错误,其编码增益高达近3dBm,纠错能力和编码效率均达到业内的领先水平,远远高与一般的前向纠错编码,抗突发干扰和灵敏度都较大的改善。同时编码也包含可靠检错能力,能够自动滤除错误及虚假信息,真正实现了透明的连接。所以APC220模块特别适合与在工业领域等强干扰的恶劣环境中使用。 512bytes 超大容量缓冲区,意味着用户在任何状态下都可以1 次传输512bytes 的数据,当设置空中波特率大于串口波特率时,可1 次传输无限长度的数据,同时APC220模块提供标准的UART/TTL接口,1200/2400/4800/9600/19200/38400/57600bps 七种速率,和三种接口校验方式。 传统无线模块使用跳线设置如串口速率,校验方式,频点等参数,这会带来易接触不良,选项较少,不宜设置等诸多不便。APC220模块采用串口设置模块参数,具有丰富便捷的软件编程设置选项,包括频点,空中速率,调制频偏,地址码,以及串口速率,校验方式,串口类型等都可设置,而完成设置只需通过本公司提供的设置软件RF-ANET 利用PC 串口即可轻松实现,具体方法参见APC220模块的参数设置章节。 在数据传输方式上,APC220模块有二种数据传输方式,第一透明数据传输:透明数据传输能适应任何标准或非标准的用户协议,所收的数据就是所发的数据;第二分地址数据传输:此时所传内容的前二个字节为地址,后为数据,若接收端接收到地址匹配的数据包,即将地址、数据传给终端设备,否则将丢弃,分地址数据传输主要用于组网以及中继的需求,使用这种方式可以减轻上位机的软件开销。 ARDUINO代码 发送端 代码区: ------------------------------------------------------------------------------------------ //发送端 int ButtonState; //int ButtonLastState;
void setup(){ //put your setup code here Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); pinMode(12, OUTPUT); pinMode(11,INPUT_PULLUP); digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level) } void loop(){ //put your main code here // digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
ButtonState=digitalRead(11); //判断pin11是否有高电平输入
if(ButtonState) { Serial.print("A"); delay(1000); Serial.print("B"); //digitalWrite(LED_BUILTIN, LOW); // turn the LED off (HIGH is the voltage level) delay(1000); } else { /
} } ----------------------------------------------------------------------------------------------- 接收端 --------------------------------------------------------------------------------------------------------------- //接收端 void setup(){ //put your setup code here Serial.begin(9600); //pinMode(13,OUTPUT); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); } void loop(){ //put your main code here // digitalWrite(LED_BUILTIN, HIGH); int val = Serial.read(); if(val!=-1){ if(val=='A'){ // digitalWrite(13,HIGH); delay(1000); Serial.print("this is A"); } if(val=='B'){ // digitalWrite(13,LOW); delay(1000); Serial.print("this is B"); } } } --------------------------------------------------------------------
接线 发送端 Arduino 的TX RX 与APC220的TX RX 交叉连接。这里我用Arduino的pin12、13端子输出高电平为APC220供电。其中pin12接SET端子(注意:这个SET端子需要接高电平,不接的话没法通信。还有,注意APC220上的端子标签,是否与图示相反。我的APC220端子就与说明书上排列顺序正好相反,接线的时候看说明书接,怎么也通不上,还是需要看看实物上的引脚排列顺序再接线),pin13接VCC。pin11我接的一个物体识别模块,当检测到指定物体时输出高电平到pin11上,发送端才开始工作,发出A B 字符。你们可以简化下程序,把这个pin11的判定条件去掉。 接收端 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed