qingfuchen 发表于 2023-6-1 17:21:03

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代码发送端
功能:定时发送字符A 和B代码区:------------------------------------------------------------------------------------------//发送端int ButtonState;//int ButtonLastState;

void setup(){//put your setup code hereSerial.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   {      /                }   }-----------------------------------------------------------------------------------------------接收端
功能,当接收到字符A时,返回 This is A 字符串;当接收到字符B时,返回This is B字符串。---------------------------------------------------------------------------------------------------------------//接收端void setup(){//put your setup code hereSerial.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的判定条件去掉。
接收端
接收端与发送端类似,接线也相同,就是程序稍有不同,大家看看程序就明白了。

页: [1]
查看完整版本: arduino uno R3 与 APC220串口通信