[color=rgba(0, 0, 0, 0.75)]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 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(); }- 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下面就是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协议库下载链接
链接: http://www.enmaking.com/material/ma_ad3vsM5U 更多内容请参考原文
链接: http://www.enmaking.com/article/ar_a0RxIp3u
|