315Mhz模块传输替代315Mhz遥控器

瘦网虫 于 2013-9-18 11:03 编辑



想必你看过上一篇帖子



315Mhz模块传输测试

http://www.geek-workshop.com/thread-5249-1-1.html

经过测试后,你已经确定好你10块钱没有浪费,花得比较值(好吧,我承认我7块多钱买的)。



那么下一步做什么呢?

当然是用这一对模块来替换掉手中的315Mhz遥控器,像这样的:

QQ图片20130710211236.jpg

2013-7-10 21:13 上传
(54.29 KB)



(我的这个遥控是用来升降投影幕的)

怎么确定是315Mhz的呢?我们拆开来看看

QQ图片20130710211717.jpg

2013-7-10 21:18 上传
(59.55 KB)



右下角几个大字LR1 315.00



怎么得到按键原始码?



第一步,祭出法宝-逻辑分析仪

参考这里解决问题系列(4)——红外编码分析利器使用

(我试过用arduino的RCSwitch例程中的读代码,无法读出来,你也可以先重走这条路试试)



掏出分析仪的gnd引脚线,夹到接收模块的gnd。分析仪的通道0,夹到接收模块的data引脚。夹紧。

QQ图片20130710213026.jpg

2013-7-10 21:31 上传
(33.09 KB)





硬件接好了,来处理软件部分。

假设你的uno(或其它板子)已经刷入了读取代码,或者你的接收模块已经通了5v电,并且接好线了。

我们在电脑上启动逻辑分析仪的软件。设置好采样率

QQ图片20130710213950.jpg

2013-7-10 21:40 上传
(138.23 KB)



这里采样率我设置成24Mhz,总共采集50M的数据,在通道0低电平触发。



点Start,经过几次尝试,捏出比较好看的按键的图形来,如下图,这个图是缩小到最小:

QQ图片20130710214714.jpg

2013-7-10 21:47 上传
(61.46 KB)





设置好信号开始的点T1和信号结束的点T2

QQ图片20130710214841.jpg

2013-7-10 21:49 上传
(101.54 KB)



好奇的话,可以左键放大放大放大,看看里面到底是什么。

QQ图片20130710215212.jpg

2013-7-10 21:52 上传
(55.95 KB)



其实短的就是0,长的就是1。



好了,不管什么数据,那个不是给人看的,得到的数据到底是什么,我们来把它导出来,导成csv文件吧(用逗号分隔的文本文件)

QQ图片20130710215424.jpg

2013-7-10 21:54 上传
(69.9 KB)





这里我们选择下面的模式,经验告诉我,这样的"TimeStamps"导出格式后期处理最简单。

QQ图片20130710215553.jpg

2013-7-10 21:56 上传
(55.21 KB)



这种导出的数值,就是每个点的具体时间。


QQ图片20130710215845.jpg

2013-7-10 21:59 上传
(66.47 KB)



抄出群众喜闻乐见的Excel,填上函数=INT((a3-a2)10001000),这个函数的意思是:帮我算下两个之间的差值,再转换成毫秒,再转换成微秒,再取整。

这样就不需要做前一个读取红外那个帖子里面的乘以一个常数了(解决问题系列(4)——红外编码分析利器使用)。



往下脱。。。

QQ图片20130710220446.jpg

2013-7-10 22:04 上传
(40.37 KB)



一拖到底



然后把里面的数值拷贝出来整理一下格式放到发送的代码里面。



ARDUINO 代码复制打印

int bStop[610]={237,988,209,2118,280,3276,322,270,326,56........for(int i = 0;i<size;i++){  if(bWriteLow)digitalWrite(pin, LOW);  else digitalWrite(pin, HIGH);  delayMicroseconds(bStop[i]);//这里延迟上面取到的微秒数,轮流一高一低一高一低  bWriteLow = !bWriteLow;}
int bStop[610]={237,988,209,2118,280,3276,322,270,326,56........

for(int i = 0;i<size;i++)

{

if(bWriteLow)digitalWrite(pin, LOW);

else digitalWrite(pin, HIGH);

delayMicroseconds(bStop[i]);//这里延迟上面取到的微秒数,轮流一高一低一高一低

bWriteLow = !bWriteLow;

}



这个代码只能看看,不能直接拷贝编译的,请参考后写你自己的代码。

然后,就听到“哔”的一声,就可以扔掉你的315Mhz的遥控器了,上一次扔掉的应该是红外遥控器,我们再来试着扔433Mhz遥控器。

更多玩法,自己琢磨。

Enjoy it ~
via - 极客工坊

标签: Arduino教程