2023-6-1 17:21:03 [显示全部楼层]
1446浏览
查看: 1446|回复: 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引脚介绍
arduino uno R3 与 APC220串口通信图1


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 uno R3 与 APC220串口通信图2    arduino uno R3 与 APC220串口通信图3  arduino uno R3 与 APC220串口通信图4



ARDUINO代码

发送端
功能:定时发送字符A 和B

代码区:

------------------------------------------------------------------------------------------

//发送端

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

     {

      /   

      

      }

   }

-----------------------------------------------------------------------------------------------

接收端
功能,当接收到字符A时,返回 This is A 字符串;当接收到字符B时,返回This is B字符串。

---------------------------------------------------------------------------------------------------------------

//接收端

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的判定条件去掉。

arduino uno R3 与 APC220串口通信图5


接收端
接收端与发送端类似,接线也相同,就是程序稍有不同,大家看看程序就明白了。



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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail