315Mhz模块传输替代315Mhz遥控器
瘦网虫 于 2013-9-18 11:03 编辑
想必你看过上一篇帖子
315Mhz模块传输测试
http://www.geek-workshop.com/thread-5249-1-1.html
经过测试后,你已经确定好你10块钱没有浪费,花得比较值(好吧,我承认我7块多钱买的)。
那么下一步做什么呢?
当然是用这一对模块来替换掉手中的315Mhz遥控器,像这样的:
2013-7-10 21:13 上传
(54.29 KB)
(我的这个遥控是用来升降投影幕的)
怎么确定是315Mhz的呢?我们拆开来看看
2013-7-10 21:18 上传
(59.55 KB)
右下角几个大字LR1 315.00
怎么得到按键原始码?
第一步,祭出法宝-逻辑分析仪
参考这里解决问题系列(4)——红外编码分析利器使用
(我试过用arduino的RCSwitch例程中的读代码,无法读出来,你也可以先重走这条路试试)
掏出分析仪的gnd引脚线,夹到接收模块的gnd。分析仪的通道0,夹到接收模块的data引脚。夹紧。
2013-7-10 21:31 上传
(33.09 KB)
硬件接好了,来处理软件部分。
假设你的uno(或其它板子)已经刷入了读取代码,或者你的接收模块已经通了5v电,并且接好线了。
我们在电脑上启动逻辑分析仪的软件。设置好采样率
2013-7-10 21:40 上传
(138.23 KB)
这里采样率我设置成24Mhz,总共采集50M的数据,在通道0低电平触发。
点Start,经过几次尝试,捏出比较好看的按键的图形来,如下图,这个图是缩小到最小:
2013-7-10 21:47 上传
(61.46 KB)
设置好信号开始的点T1和信号结束的点T2
2013-7-10 21:49 上传
(101.54 KB)
好奇的话,可以左键放大放大放大,看看里面到底是什么。
2013-7-10 21:52 上传
(55.95 KB)
其实短的就是0,长的就是1。
好了,不管什么数据,那个不是给人看的,得到的数据到底是什么,我们来把它导出来,导成csv文件吧(用逗号分隔的文本文件)
2013-7-10 21:54 上传
(69.9 KB)
这里我们选择下面的模式,经验告诉我,这样的"TimeStamps"导出格式后期处理最简单。
2013-7-10 21:56 上传
(55.21 KB)
这种导出的数值,就是每个点的具体时间。
2013-7-10 21:59 上传
(66.47 KB)
抄出群众喜闻乐见的Excel,填上函数=INT((a3-a2)10001000),这个函数的意思是:帮我算下两个之间的差值,再转换成毫秒,再转换成微秒,再取整。
这样就不需要做前一个读取红外那个帖子里面的乘以一个常数了(解决问题系列(4)——红外编码分析利器使用)。
往下脱。。。
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 - 极客工坊