【雕爷学编程】Arduino动手做(155)---2262/2272四键无线遥控套件模块
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百五十五:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块
知识点:PT2262/2272芯片
是台湾普城公司生产的一种CMOS工艺制造的低价位通用电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。 编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。
PT2262特点
1、CMOS工艺制造,低
2、外部元器件少
3、RC振荡电阻
4、工作电压范围宽:2.6-15v
5、数据最多可达6位
6、地址码最多可达531441种
应用范围
1、车辆防盗系统
2、家庭防盗系统
3、遥 控 玩 具
4、其他电器遥控
PT2262管脚说明
A0-A111-8、10-13地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空),
D0-D57-8、10-13数据输入端,有一个为“1”即有编码发出,内部下拉
Vcc18电源正端(+)
Vss9电源负端(-)
TE14编码启动端,用于多数据的编码发射,低电平有效;
OSC116振荡电阻输入端,与OSC2所接电阻决定振荡频率;
OSC215振荡电阻振荡器输出端;
Dout17编码输出端(正常时为低电平)
编码芯片PT2262发出的编码信号
由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。
当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。
PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。
PT2262应用电路
知识点:PT2272(SC2272)芯片
是一款用以解码的芯片,编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。
PT2272(SC2272)管脚说明
A0-A11 1-8、10-13 地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空),必须与2262 一致,否则不解码
D0-D5 7-8、10-13 地址或数据管脚,当做为数据管脚时,只有在地址码与2262 一致,数据管脚才能输出与2262 数据端对应的高电平,否则输出为低电平,锁存型只有在接收到下一数据才能转换
Vcc 18 电源正端(+)
Vss 9 电源负端(-)
DIN 14 数据信号输入端,来自接收模块输出端
OSC1 16 振荡电阻输入端,与OSC2 所接电阻决定振荡频率
OSC2 15 振荡电阻振荡器输出端
VT 17 解码有效确认输出端(常低)解码有效变成高电平(瞬态)
PT2272应用电路
2262/2272四键无线遥控套件模块
遥控器
工作电压:DC12V(27A/12V电池一粒)
工作电流:10mA@12V
辐射功率:10mw@12V
调制方式:ASK(调幅)
发射频率:315或433.92MHZ(声表稳频)
传输距离:50-100M(空阔地,接收装置灵敏度为负100dbm)
编码器类型:固定码
带解码接收板
工作电压为DC5V,接收灵敏度为-98db。有7个脚位,分别是VT、D3、D2、D1、D0、+5V、GND。VT是有效信号高电平输出脚,一旦接收到有效信号,该脚输出高电平,也可驱动继电器。
尺寸:6.6*22*41mm
基于PT2262的无线编码模块(遥控器)
编码发射模块外形小巧、美观,与很多车辆防盗系统中的遥控器一样。根据功能的多少按键数也不一样,我们本章所用的发射模块为A、B、C、D四个按键。编码发射模块主要由PT2262编码IC和高频调制、功率放大电路组成,常用的编码发射模块实物和内部框图如图3所示。
遥控发射器工作电压为DC 12V(电池供电)
尺寸(mm): 58*39*14
工作频率:315MHz
工作电流:13mA
编码类型: 固定码(板上焊盘跳接设置)
应用说明:与各类型带解码功能的接收模块联合使用,解码输出后进行相应控制,如采用单片机进行读取接收并解码数据然后控制相应的灯或电源开关。
基于PT2272的无线编码接收模块
超再生接收模块采用LC振荡电路,内含放大整形,输出的数据信号为解码后的高电平信号,使用极为方便,并且价格低廉,所以被广泛使用。带四路解码输出(同时也可改为六路点动或互锁输出),使用方便;频点调试容易,供货周期短;产品质量一致性好,性价比高。
接收模块有较宽的接收带宽,一般为±10MHz,出厂时一般调在315MHz或433.92MHZ(如有特殊要求可调整频率,频率的调整范围为266MHz~433MHz)。接收模块一般采用DC5V供电,如有特殊要求可调整电压范围。
接收模块一共有八个外部接口,上面有英文表示。“5V”表示接电源正极,“ D0、D1、D2、D" 3”表示输出,“GND”表示接电源负极,“ANT”表示接天线端。
PT2272 解码芯片有不同的后缀,表示不同的功能,有L4/M4/L6/M6 之分,其中L 是锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。M 表示非锁存输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制。后缀的6 和4 表示有几路并行的控制通道,当采用4 路并行数据时(PT2272-M4),对应的地址编码应该是8 位,如果采用6 路的并行数据时(PT2272-M6),对应的地址编码应该是6 位。还有一种T4的,T表示锁存输出,而L也是锁存,但是是互锁的,当按下第二个键是才能释放第一个键,而T却可以单键控制对应的引脚输出。所以L是互锁,T是自锁,M是非锁。
M4(点动:按住不松手就输出,一松手就停止输出)
L4 (互锁:四路同时只能有一路输出)
T4 (自锁:四路相互独立输出、互不影响,按一下输出再按一下停止输出)
2262/2272四键无线遥控套件模块应用环境
无线遥控开关、遥控插座、数据传输、遥控玩具、防盗报警主机、车库门、卷闸门、道闸门、伸缩门等门控业及其遥控音响领域等。
振荡电阻的设置
PT2262/2272组成的编解码电路是无线电中运用比较广泛的电路。其中尤为应该注意的是,振荡电阻的设置。如振荡电阻设置不当就会引起电路不起振。无法向外发送无线信号,因此振荡电阻对于整个电路的运行是非常重要的。
振荡电阻的选取
PT2262/PT2272的震荡电阻一般按下述值配对:
PT2262 PT2272
1.2M 200K
1.5M 270K
2.2M 390K
3.3M 680K
4.7M 820K
注意事项
对一些质量不太好的元件,有可能这样的配对仍然是无法产生响应。遇到无响应的情况,在判断元件是完好的情况下,可以改变电阻值。一般情况,我们是改动PT2262一端,把电阻的阻值变小。比如,4.7M的改变为3.9M的,甚至于改变为3.3M的即可。
PT2262/2272模块测试与应用:
硬件接好后,为了便于测试电路,在四个输出脚接发光管正极,发光管负极接2K-4.7K电阻到地,测试时按遥控键,相应的发光管会亮(2272分两种,L4和M4,前者会锁定输出,直道接收到其它按键信号该发光管才灭,另一个对应的发光管亮;后者当有对应遥控器键按下时亮,时间小于一秒,怎么应用就看你自己了)。
需要控制较大负载的话加8050,其基极接4.7K-10K电阻到2272.或使用2003驱动。后面可接继电器,用220V继电器控制380V交流接触器的话,可控制电机正反转(如电动栅栏门),别忘了另接一个用来给交流接触器控制线断电的继电器,不然电机会冒火的。
PT2262/2272模块使用注意事项
1.天线用软导线或其它硬质金属(如拉杆天线),长度大约24cm(315MHz)或18cm(434MHz),尽量拉直使用。不要靠近金属物体。
2.电源电压要求稳定且波纹系数低,需多级滤波(如增加磁珠、电感、电容等)。
3. 若配合单片机使用建议MCU时钟频率在4MHZ以下并且晶体尽量远离RF接收模块,否则晶体的高次谐波会影响通讯距离。
4. 注意编码IC和解码IC的速率一致和码的格式一致,否则将会影响距离乃至不能通讯。
PT2262/PT2272无线遥控模块使用介绍(5分钟视频)
https://v.youku.com/v_show/id_XMzAwMDM3ODczMg==.html?spm=a2hzp.8253869.0.0
Arduino实验开源代码
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百五十五:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块 */ /*以下四个管脚定义,对应遥控器上的四个按键(遥控器为推荐的无线遥控器315MHz(SKU:FIT0355))*/ int D0 = 8; //解码芯片数字输出管脚D0,串口值0001,按键A int D1 = 9; //解码芯片数字输出管脚D1,串口值0010,按键B int D2 = 10; //解码芯片数字输出管脚D2,串口值1000,按键C int D3 = 11; //解码芯片数字输出管脚D3,串口值0100,按键D int ledPin = 13; //接收指示灯 volatile int state = LOW; void setup() { Serial.begin(9600); /*以下管脚的顺序分别对应遥控器的4个按键*/ pinMode(D3, INPUT); //分别初始化为输入端口,读取解码芯片输出管脚的电平 pinMode(D1, INPUT); pinMode(D0, INPUT); pinMode(D2, INPUT); pinMode(ledPin, OUTPUT); attachInterrupt(1, blink, RISING); //数字口2,中断1,对应解码芯片的接收中断管脚 digitalWrite(ledPin, LOW); } void loop() { if (state != LOW) //如果接收到遥控器的命令,则进入该语句 { state = LOW; delay(1); //适当延时,等待管脚电平稳定 digitalWrite(ledPin, HIGH); Serial.print(digitalRead(D3)); //分别读取解码芯片输出管脚的电平,并打印出来 Serial.print(digitalRead(D1)); Serial.print(digitalRead(D0)); Serial.println(digitalRead(D2)); delay(300); digitalWrite(ledPin, LOW); } } void blink() { state = ! state; }
实验串口返回情况
Arduino实验场景图
Arduino实验开源代码之二
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百五十五:2262/2272四路无线遥控套件 M4非锁接收板 四键无线遥控器发射模块 程序之二:Arduino IC 2262/2272遥控器 */ #define PIN_D2_INT 0 #define R06A_VT 2 #define R06A_D0 3 #define R06A_D1 4 #define R06A_D2 5 #define R06A_D3 6 bool r06a_0, r06a_1, r06a_2, r06a_3 = false; int dirty = 0; void pinD2ISR() { digitalWrite(13, !digitalRead(13)); if (digitalRead(R06A_D0) == HIGH) { r06a_0 = !r06a_0; } if (digitalRead(R06A_D1) == HIGH) { r06a_1 = !r06a_1; } if (digitalRead(R06A_D2) == HIGH) { r06a_2 = !r06a_2; } if (digitalRead(R06A_D3) == HIGH) { r06a_3 = !r06a_3; } dirty = 1; } void setup() { attachInterrupt(PIN_D2_INT, pinD2ISR, RISING); pinMode(R06A_D0, INPUT); pinMode(R06A_D1, INPUT); pinMode(R06A_D2, INPUT); pinMode(R06A_D3, INPUT); Serial.begin(9600); } void loop() { if (dirty) { dirty = 0; Serial.print("A: "); Serial.println(r06a_2 ? "HIGH" : "LOW "); Serial.print("B: "); Serial.println(r06a_0 ? "HIGH" : "LOW "); Serial.print("C: "); Serial.println(r06a_3 ? "HIGH" : "LOW "); Serial.print("D: "); Serial.println(r06a_1 ? "HIGH" : "LOW "); Serial.println(""); } }
实验串口返回情况