Arduino -uno 核心板 之中级系列5 QT011H实验
Arduino -uno 核心板 之中级系列5 QT011H实验[*]
[*]适用平台:Arduino uno
[*]模块介绍:
[*]所需元件
[*]硬件连接及说明
[*]程序讲解
[*]总结
适用平台:Arduino uno模块介绍:今天我们需要用到的模块是遥感模块,也称QT011H模块。这个模块大家一定不陌生,在遥控类的玩具里的遥控器基本上都是采用的这个遥感,学会使用这个遥感模块,我们也能做一些遥控小玩具了。这个模块的用户数据手册如下
链接: http://www.enmaking.com/material/ma_BtHHpISy数据手册里详细介绍了它的一些功能特点,例如它的低功耗模式、检测设置等。这个模块最大的特点是采用了SQD协议通讯,这个通讯协议为单线双向协议,一条数据线即可完成数据的发送和接收。具体关于SQD协议的介绍可参考SQD数据手册
链接: http://www.enmaking.com/material/ma_artHGTXw这里为了方便使用,已经提供了SQD协议库。直接调用SQD协议库即可实现通讯,非常方便。这个SQD协议库的下载链接会放到文章末尾。所需元件1 x QT011H模块1 x Arduino uno 开发板3 x 1.27转2.54排线硬件连接及说明QT011H模块与Arduino uno 开发板的连接如下QT011H Arduino unoVDD------->5VGND------>GNDSQD------>3我们将通讯引脚设置为3脚。这里将用到3脚的外部中断程序讲解首先教大家把SQD协议库加入到我们的Arduino IDE当中,其实方法非常简单。1、 先通过文章末尾的下载链接把文件下载下来。2、下载后有三个文件,把SQD_Library文件复制到Arduino IDE文件夹的libraries子文件夹中。https://img-blog.csdnimg.cn/20201224142713875.png什么?你说你找不到这个文件夹,那我们换一种方法找。首先找到arduino.exe这个快捷方式
https://img-blog.csdnimg.cn/20201224142733172.png
单击右键—>选择打开文件所在位置,于是就找到了这个文件夹https://img-blog.csdnimg.cn/20201224142746892.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTQwNDM2,size_16,color_FFFFFF,t_70
将SQD_Library文件放到libraries文件夹下。完成以上操作后,我们重启Arduino IDE,可以看到多了一个库,这就我们的SQD协议库
https://img-blog.csdnimg.cn/20201224142812683.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTQwNDM2,size_16,color_FFFFFF,t_70这是打开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(); }
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
[*]56
[*]57
[*]58
[*]59
[*]60
[*]61
[*]62
[*]63
[*]64
[*]65
[*]66
[*]67
[*]68
[*]69
[*]70
[*]71
[*]72
[*]73
[*]74
[*]75
[*]76
[*]77
[*]78
[*]79
[*]80
[*]81
[*]82
[*]83
[*]84
[*]85
[*]86
[*]87
[*]88
[*]89
[*]90
[*]91
[*]92
[*]93
[*]94
[*]95
[*]96
[*]97
[*]98
[*]99
[*]100
[*]101
[*]102
[*]103
[*]104
[*]105
[*]106
[*]107
[*]108
[*]109
[*]110
[*]111
[*]112
[*]113
[*]114
[*]115
[*]116
[*]117
这里有Arduino 的3脚的配置和操作,以及配置一个定时器2最后是一些初始化qiSQD_init(); Serial.begin(9600); //设置波特率为9600 bps
[*]1
[*]2
[*]3
下面就是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;}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
大家不清楚SQD的配置过程的可以参考这篇文章,里面讲的非常详细。链接: http://www.enmaking.com/article/ar_sVMN102d总结本章重点讲解QT011H模块的SQD通讯协议,以及它的一些配置方法,方便大家去了解并使用。本篇文章内容就到这里了,希望对大家有所帮助,最后,晒上程序效果图、程序和SQD协议库下载链接
https://img-blog.csdnimg.cn/2020122414323439.gif#pic_center链接: http://www.enmaking.com/material/ma_ad3vsM5U更多内容请参考原文
链接: http://www.enmaking.com/article/ar_a0RxIp3u
页:
[1]