关于2.4G(NRF24L01+)频谱仪的探讨,和移植stm32版本。
本帖最后由 Switch_ 于 2018-1-30 16:09 编辑首先我也不是什么大神,也只是一个刚毕业不久的菜鸟而已,有那里说的不对,大神们可以指出。
一次无意的发现了这个有趣的东西,应为之前我也使用过nrf24l01开发过一款遥控主要产品,所以我对这个东西特别感兴趣,特别想了解其中的原理,因为在我使用的过程中没有发现nrf24l01这款无线模块有RSSI(信号强度)这个功能,这就让我更加好奇了。它是怎么检测频道的占用和信号的强度。我疯狂的寻找nrf24l01频谱仪的源程序,找了好久发现有挺多这样的帖子,都是arduino的程序,而且我一直没有找到源程序,有一些找到打不开。
后来通过(http://www.moz8.com/forum.php?mo ... 2871&highlight=2.4G)
这个帖子找到了(http://singlechannellersreunited.co.uk/phpbb3/viewtopic.php?f=9&t=721)
歪国朋友的帖子,下载到源程序,可惜是LCD 1602显示的,不是网上大部分的OLED屏幕,后面再经过一番折腾,终于找到了OLED版本的NRF24L01的频谱仪了。首先先上传我找到的两份源程序,稍微修改了一下,可以正常编译通过。
分析源程序之前我觉得很有必要先,再次看一下nrf24l01+的文档,可是找了好久都没找到中文版的nrf24l01+的文档,一般中文版都是nrf24l01的文档。哎,只能怪自己英文没学好。最终还是让我找到一个大神的博客是分析nrf24l01+的,写的挺不错的
这里分享给大家:http://gashero.iteye.com/blog/2333336 我认认真真的看来一遍。
发现只有一个寄存器是有关的 Received Power Detector=RPD,地址是0x09,其bit0指出接收功率是否低于-64dBm。如果接收功率低于-64dBm,RDP=0。再去分析程序,发现程序也就是通过这个寄存器来判断的。而通过使用发现,OLED屏幕显示条状的高度,其实只是该频道的占用量而已,而不是信号强度。当打开这个频谱仪,在通过大量使用路由器wifi的数据,会发现一部分频道的占用量会爆满。所以这个只能粗略的检测改频道的占用量。而不是检测信号强度。
程序的分析:通过配置nrf24l01模块为接收模式,然后按顺序切换频道,延时一段时间后读取RDP这个寄存器的值为1还是0,当为1的时候增加数组对应频道的占用量的值,当为0时减小数组对应频道的占用量的值,然后扫描一段时间后,再通过这个数组的值,来显示OLED对应频道的条状高度。通过直至循环。实现初略观察到该频道的占用情况。
后来通过我以前使用的nrf24l01的程序稍微修改,在stm32 平台上实现了和arduino平台一样的频谱仪功能,只是我没有把OLED显示也移植过来,只是通过串口检测了。
暂时不打算移植OLED显示,不打算折腾下去了。因为自己还有其他小东西需要制作。所以留着以后有空再折腾吧。
在这里把我折腾心德记录一下,因为刚发现这个东西的时候,那个心情是无比的激动,通过深入的了解,也学习到了一些东西。还是不枉折腾的,生命在于折腾嘛!
这个不是很实用
wcq12 发表于 2018-1-30 15:35
这个不是很实用
是的,没有我刚发现时以为 的高大上。 thx................................ 放点装好的照片来 看起来不错 感谢 楼主分享 感谢楼主的分享,对楼主的钻研精神表示佩服。
清枫城主 发表于 2018-4-16 17:15 static/image/common/back.gif
感谢楼主的分享,对楼主的钻研精神表示佩服。
谢谢,
都是大佬哇,顶一下 好东西,学习学习 支持一下,谢谢楼主分享 我大致看了一下源码 ,这东西就是设置不同频点然后读取RSSI值
感谢楼主的分享,对楼主的钻研精神表示佩服.最低接受电平是多少 有意思 学习了 感谢楼主的分享 技术贴不错 现在正在搞和这个相关的,谢谢楼主分享{:1_1:} 我去居然买了下载不下来啊。 有用 顶
页:
[1]