Arduino -uno 核心板 之中级系列5 QT011H实验

本文详细介绍了如何在Arduino UNO上使用QT011H遥感模块进行SQD协议通讯。通过硬件连接、库的安装和配置,以及代码讲解,展示了如何实现遥控小玩具的制作。文中提供了必要的资源链接,包括用户手册、SQD协议库和使用教程,帮助读者理解并实际操作。
摘要由CSDN通过智能技术生成

适用平台:Arduino uno

模块介绍:

今天我们需要用到的模块是遥感模块,也称QT011H模块。

在这里插入图片描述

这个模块大家一定不陌生,在遥控类的玩具里的遥控器基本上都是采用的这个遥感,学会使用这个遥感模块,我们也能做一些遥控小玩具了。这个模块的用户数据手册如下
链接: User’sGuide-遥感模块QT011H-用户指导手册.

数据手册里详细介绍了它的一些功能特点,例如它的低功耗模式、检测设置等。这个模块最大的特点是采用了SQD协议通讯,这个通讯协议为单线双向协议,一条数据线即可完成数据的发送和接收。具体关于SQD协议的介绍可参考SQD数据手册
链接: SQD协议用户数据手册.

这里为了方便使用,已经提供了SQD协议库。直接调用SQD协议库即可实现通讯,非常方便。这个SQD协议库的下载链接会放到文章末尾。

所需元件

1 x QT011H模块

1 x Arduino uno 开发板

3 x 1.27转2.54排线

硬件连接及说明

QT011H模块与Arduino uno 开发板的连接如下

QT011H Arduino uno

VDD------->5V

GND------>GND

SQD------>3

我们将通讯引脚设置为3脚。这里将用到3脚的外部中断

程序讲解

首先教大家把SQD协议库加入到我们的Arduino IDE当中,其实方法非常简单。

1、 先通过文章末尾的下载链接把文件下载下来。

2、下载后有三个文件,把SQD_Library文件复制到Arduino IDE文件夹的libraries子文件夹中。

在这里插入图片描述

什么?你说你找不到这个文件夹,那我们换一种方法找。

首先找到arduino.exe这个快捷方式
在这里插入图片描述
单击右键—>选择打开文件所在位置,于是就找到了这个文件夹

在这里插入图片描述
将SQD_Library文件放到libraries文件夹下。

完成以上操作后,我们重启Arduino IDE,可以看到多了一个库,这就我们的SQD协议库
在这里插入图片描述

这是打开Arduino_QT011H项目接下来我们还要对SQD协议做一些配置。配置如下

unsigned char getLLSQD(void){

 if(digitalRead(3))

 {

   return 1; 

 }else

 {

   return 0;  

 }

 }

 

 void setLLSQD(unsigned char Export){

   if(Export)

   {

     digitalWrite(3, HIGH);

   }else

   {

     digitalWrite(3, LOW);

   } 

 }

 

 void qiSQD_PinOutputHigh(void){

   detachInterrupt(1);

   pinMode(3, OUTPUT); 

   digitalWrite(3, HIGH);

 }

 

 void qiSQD_PinInputWithFallingInt(void){

   //pinMode(3,INPUT); 

   pinMode(3,INPUT_PULLUP); //将2号管脚设置为输入并且内部上拉模式

   attachInterrupt(1,Gpio3_INT, FALLING);  

 }

//========================主要驱动====================================

 

cli();//关闭全局中断

 

 //设置定时器2为80us

 TCCR2A = 0;// set entire TCCR2A register to 0

 TCCR2B = 0;// same for TCCR2B

 TCNT2 = 0;//initialize counter value to 0

 // set compare match register for 8khz increments

 OCR2A = 160;// = (16*10^6) / (8000*8) - 1 (must be <256)

 // turn on CTC mode

 TCCR2A |= (1 << WGM21);//打开CTC模式

 // Set CS21 bit for 8 prescaler

 TCCR2B |= (1 << CS21);  

 // enable timer compare interrupt

 TIMSK2 |= (1 << OCIE2A);

 

 sei();//打开全局中断

 

ISR(TIMER2_COMPA_vect)

{

 qiSQD_80usCalledForTxProcess();

}

 

void Gpio3_INT(void)

{

  qiSQD_FallingEdgeIntCalledRX(); 

}

这里有Arduino 的3脚的配置和操作,以及配置一个定时器2

最后是一些初始化

qiSQD_init();

 Serial.begin(9600);       //设置波特率为9600 bps

下面就是QT011H的数据接收,接收到后通过串口打印出来

u8 i=0;

   if( (Timer==37) &&(SQD_re_payload[0]>0) )

  {

    for(i=0;i<SQD_re_payload[0]+1;i++)

    {

       Serial.print(SQD_re_payload[i]); 

       Serial.print("\t");

    }

    Serial.print("\r\n");  

     

    SQD_re_payload[0]=0;

  }

大家不清楚SQD的配置过程的可以参考这篇文章,里面讲的非常详细。

链接: SQD协议Library文件使用教程——全网最权威版.

总结

本章重点讲解QT011H模块的SQD通讯协议,以及它的一些配置方法,方便大家去了解并使用。本篇文章内容就到这里了,希望对大家有所帮助,最后,晒上程序效果图、程序和SQD协议库下载链接
在这里插入图片描述

链接: Arduino -uno 核心板 之中级系列5 QT011H实验程序.

更多内容请参考原文
链接: Arduino -uno 核心板 之中级系列5 QT011H实验.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值