最近看到老外在github上找了个rf-car的程序,想往portapack上搬我感觉挺有趣。

想起来以前hackrf.net上有类似教程,对应github上叫做gr-remotecar。

我找出了我自己的遥控车,打算分析一下信号。

流图上半部分是用来收遥控器信号并分析的,下半部分是发射用的,暂时要disable。

我依次按下左前,左后,右前,右后,变形,发射几个按键,得到了几个信号图。

左前: 1011110000100000101111000010000010

左后:000001000010111100000100001011110000010

右前:101111000000000110111100000000011011110

右后:000010001011110000001000101111000000100

变形:111100000001001011110000000100101111000

发射:000111100110000000011110011000000001111

然后,我整理总结了一下:

左前:1011110000100000
左后:1011110000010000
右前:1011110000000001
右后:1011110000001000
变形:1011110000000100
开炮:1111001100000000

多数都是101111开头,相当于是一个preamble,然后后面是好多0加上不同位置有个1,类似one hot。

我可以参考hackrf.net教程用python代码生成iq文件,然后再用gnuradio发射出去。

import structSAMP_RATE=10e6
TIME_TOTAL = int(1 * SAMP_RATE) #sTIME0 = int(0.5e-3 * SAMP_RATE)
TIME1 = int(1.50e-3 * SAMP_RATE)MIN=struct.pack('B',0)
MAX=struct.pack('B',64)'''
10111100001000001:WriteFrame(MAX,TIME1,f)i += TIME1WriteFrame(MIN,TIME0,f)i += TIME0
0:WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1
'''def WriteFrame(value,quantity,f):j = 0while j < quantity:f.write(value) #if.write(value) #qj += 1def main():f = open('w.iq','wb')i = 0WriteFrame(MAX,TIME1,f)i += TIME1WriteFrame(MIN,TIME0,f)i += TIME0WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME1,f)i += TIME1WriteFrame(MIN,TIME0,f)i += TIME0WriteFrame(MAX,TIME1,f)i += TIME1WriteFrame(MIN,TIME0,f)i += TIME0WriteFrame(MAX,TIME1,f)i += TIME1WriteFrame(MIN,TIME0,f)i += TIME0WriteFrame(MAX,TIME1,f)i += TIME1WriteFrame(MIN,TIME0,f)i += TIME0WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME1,f)i += TIME1WriteFrame(MIN,TIME0,f)i += TIME0WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1WriteFrame(MAX,TIME0,f)i += TIME0WriteFrame(MIN,TIME1,f)i += TIME1f.close()        if __name__ == "__main__":main()

一开始生成出的文件不太对,我先用audacity观察,并调整了MIN和MAX变量,使得波形在合适的大小上。然后把获得的iq文件,用gnuradio读取,一边发射一边接了示波器,但是我对比后发现波形宽度和我之前收的遥控器波形不一样,我通过更改python代码里的SAMP_RATE变量使得实际发射时的波形宽度与遥控器的一样,至于为啥是10e6,我还不知道,我是凑出来的。

然后,这样发射就能控制小车左边的轮子往前转了。

接着我用portapack的ook发射app,编辑了同样的流图。然后我调整了不同的clk频率,调到10kHz左右也能达到同样的效果。

但是不管是电脑发射还是portapack发射或者原来的遥控器发射,除了左轮前进外,还会带动炮台发射。我记得以前左轮右轮同时前进时不会干扰炮台,而且发射的1010序列也跟其他不一样。

我觉得可能用遥控器同时按下前进和后退,还会有新的波形出现。然后我试了试,发现果然如此。

同时前进:1111000010000100
同时后退:1111000001100000

开炮:1111001100000000

可以看到,前导码跟其他按钮不同,是11110000,并且数据位里有2个1.与开炮的码比较接近。

后来我还发现portapack按照右轮前进的信号波形生成,如果clk调到11kHz也能有用,但是10kHz就不行。

我就用gnuradio和另一个hackrf观察了一下portapack发射第一种波形(左轮前进)的到底是怎样的信号

发现波形十分奇怪,但是居然可以控制小车按照我的指令运行。

资料:

链接:https://pan.baidu.com/s/1nlaQSLh8GNlIWKru700xfQ 
提取码:wnan

演示视频:

https://www.bilibili.com/video/BV12T4y157GJ/

Portapack应用开发教程(十三)控制遥控小车OOK相关推荐

  1. Portapack应用开发教程(七)nrf24l01解调

    前段时间我在做低功耗蓝牙的时候看到了这个网页 https://wiki.bitcraze.io/misc:hacks:hackrf 但是我当时没有成功解调nrf24l01,反而成功搞定蓝牙了. 后来我 ...

  2. Portapack应用开发教程(十二) SSTV接收机 A

    接下来我要讲一个高难度应用,SSTV接收机. 很多ham都喜欢玩sstv,一般方式都是用一个对讲机来接收地面波或者卫星发出的信号,然后用手机录制对讲机发出来的声音,再把这个录音放到电脑旁边播放来解调( ...

  3. Portapack应用开发教程(十) 猎狐功能和RSSI数值显示

    视频参见:https://www.bilibili.com/video/BV1Y541147Sv 可以看到当我在analog audio的app里,在nfm模式下,我可以点击RSSI按钮,这时候发出的 ...

  4. Portapack应用开发教程 自定义开机图片

    本来想把这个当做开机logo 发现不行,要先转一下图片(整个逆时针旋转2个90度,然后左右翻转),然后尺寸也不对186x248才会比较好(否则会超过范围),另外要调整对比度和亮度,否则可能完全变成黑色 ...

  5. Portapack应用开发教程(十二) SSTV接收机 B

    上一篇帖子代码贴了太多太长了,所以重新开一篇帖子. 我终于把解调和解码程序合并到一起去了. #include <stdio.h> #include <stdint.h> #in ...

  6. Portapack应用开发教程(十五) APRS接收

    APRS功能可以用对讲机来传输数字信息,以便在没有运营商网络的环境下共享位置,实现类似微信的位置共享功能,也可以用它来发短消息. 有人买直接带aprs的对讲机,比较贵.也有人用普通对讲机和手机通过音频 ...

  7. Portapack应用开发教程(十一) 加入内置麦克风

    现在我的portapack已经带内置电池+开关和内置喇叭了,为了使它用起来更像一个对讲机,我打算装一个内置麦克风上去. 其实很久以前星天无线出的老款portapack是带有内置麦克风的,后来新款都把这 ...

  8. Portapack应用开发教程(十八)NavTex接收 B

    解调做完后,我开始研究解码. 我找到了这个资源不错.可以用来解码音频文件里的navtex文字信息. GitHub - pd0wm/navtex: Simple Navtex decoder 它用的ip ...

  9. Portapack应用开发教程(十七)nrf24l01发射

    以前用portapack实现过nrf24l01的接收,接下去想试试发射功能. 我在ymfc-mini-drone week6_future_experiment_哔哩哔哩_bilibili里面讲过gr ...

  10. Portapack应用开发教程(六)低功耗蓝牙解调

    前段时间我本来想解调apc220,这样我可以用portapack接收数传数据,但是这个模块资料太少. 后来我想到其实四轴里也经常用nrf24l01或者低功耗蓝牙来做数传,这两种模块也都是fsk.而且更 ...

最新文章

  1. tts和字符集的关系--要求源和目的端的数据库字符集必须一样,国家字符集必须一样。...
  2. c语言邻接表的构建_c语言数据结构--图的邻接矩阵和邻接表操作的基本操作
  3. webpack 打包ts项目_使用webpack打包ts
  4. step1 . day1:工具准备
  5. kibana安装与Kibana server is not ready yet
  6. 记录平时编程或者阅读英文文档的时候不认识的英文单词
  7. BZOJ 2460: [BeiJing2011]元素 线性基
  8. 赛锐信息-AMS系列产品简介
  9. 【IT】IT专业术语
  10. Linux配置手册(五)Linux 配置域名服务器(DNS)
  11. jsp usebean_JSP动作标签– jsp useBean,包含,转发
  12. python安装requests库提示更新_解决已经安装requests,却依然提示No module named requests问题...
  13. Java发送邮件换行问题
  14. 0x00007FFC4480532C(opencv_world310.dll)处(位于opencv-024.exe中)引发的异常:OxC0000005:读取位置0xFFFFFFFFFF时发生访问冲突
  15. 一个40岁老程序员的2022年中总结 - 四十不惑,不忘初心
  16. 计算机桌面左侧在显示器里面,电脑屏幕显示偏左怎么解决
  17. 正则验证汽车车牌号,包括新能源
  18. C语言中的绝对值函数
  19. Java 删除文件/文件夹
  20. windows连接蓝牙失败

热门文章

  1. cousera视频无法加载
  2. 什么叫做股票实时行情接口api?
  3. schedule-调度器
  4. IntelliJ Idea 常用快捷键
  5. linux命令cd 什么意思,Linux命令 cd ./.是什么意思
  6. 支持iCloud的html文本编辑,人人都可用 iCloud网页版iWork完全开放
  7. 云栖大会day2总结 上午
  8. 区块链专家洪蜀宁:实现全民普惠的专业化产品设计 | 11月24日【区块链技术与实践】论坛...
  9. linux常用的引导管理器,Linux引导管理器GRUB、GRUB 2和LILO简介
  10. linkinfo.dll 病毒,烦!