论坛风格切换切换到宽版
  • 9637阅读
  • 34回复

arduino  频谱仪 有人用过吗?效果如何? [复制链接]

上一主题 下一主题
离线BG9AGZ
 
发帖
285
只看楼主 正序阅读 0楼 发表于: 2020-10-03
        这么多年那么多大神,国内国外论坛都没有这样廉价和实用的频谱仪,突然就出现了,看来还是人的想象力的问题,虽然比不上1W元的专业设备,不过优点在于廉价,2个si4432和nano最小系统才30元多,调试电台功放之类有价值,但实用性有待验证。
         tinysa好像没有开源。淘宝已经有卖的了,理论上根据STM32的管脚定义好像也可以找出大概,但STM32 linux交叉编译不会,没研究过,
https://github.com/erikkaashoek/tinySA

         但tinysa arduino 是开源的,最近一次更新在4个月前,编译顺利通过生成HEX了,管脚还没研究懂。按照作者PDF验证说明,连接2个si4432模块和一个ADE-1混频器,可能不用434MHZ带通滤波器,应该就可以验证了,电路图中的PE4302 射频衰减器和350MHZ的低通滤波器验证时可以不加,程序使用XPT2046电阻触摸屏,ILI9488     ILI9341    SSD1306 128的OLED 3种液晶屏,也可以编译中关闭3种屏幕,只用串口输出到WIN7电脑屏幕使用上位机程序(不过我WIN7运行这个程序出错,附件3种tPC软件,inysa stm32都可以使用,但是arduino待验证,),如果小屏幕出图像,就可以修改程序,加点微动开关之类的。
       大家谁弄过?反应效果如何?对比专业机器又怎么样?
自己想编译了,把附件库添加到arduino ,然后按照我的截图,删掉不要的文件,只对截图中几个文件进行编译,为研究这耗费半天。
    注意淘宝有2种si4432,根据作者网站图片的管脚和淘宝其中的一种不一样。

https://github.com/erikkaashoek/tinySA_Arduino








[ 此帖被BG9AGZ在2020-10-03 12:22重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线bg6ib
发帖
72
只看该作者 34楼 发表于: 2022-08-25
回 BG9AGZ 的帖子
BG9AGZ:频谱仪 就是用现成的库函数读取模块输入端的每个频点的功率然后存储arduino OLED显示,和上面收集模块温度然后存储显示是一样的道理,只不过显示交给网页可以在移动和PC端实现,但是我兴趣多,这个 .. (2021-10-25 16:22) 

eagler8原来是你啊,久仰 现在RP2040也可以用了,不知道你频谱搞咋样了
离线BG9AGZ
发帖
285
只看该作者 33楼 发表于: 2021-10-25
频谱仪 就是用现成的库函数读取模块输入端的每个频点的功率然后存储arduino OLED显示,和上面收集模块温度然后存储显示是一样的道理,只不过显示交给网页可以在移动和PC端实现,但是我兴趣多,这个小玩意就没继续,  
  ESP32 前端 和后端 使用ARDUINO的代码有一定效果, ,ESP32的micropython   去年弄了一阵前后端 ,AJAX似乎有bug,不知道现在资料怎么样,
ESP8266好像也可以arduino那个代码,,
STM32F103C8T6 配合SPI有线网口,,上了arduino IDE,也可以.但是内存小,调用js代码需要在树莓派上.,
上面是去年的代码好久没弄
而移动或者PC网页显示,前后端调用传感器数据库,还是玩树莓派好,资料多,思路广,
html和js都是20年前开始的老技术了,网上例子大把.最新的HTML5已经可以获得手机传感器.给树莓派用.

.
离线bg6ib
发帖
72
只看该作者 32楼 发表于: 2021-07-17
回 BG9AGZ 的帖子
BG9AGZ:[图片]
https://www.arduino.cn/thread-96925-2-1.html
无意间在arduino 论坛看到代码,结果ESP32 python 输出温度显示曲线也只是几行代码, 血氧测量显示也是这样的效果,没想到如此简单, .. (2020-11-03 15:54) 

我也玩 micropython  ESP32 和 es8266 ,完了一段时间就停了,你现在搞的如何了
离线小小孩
发帖
138
只看该作者 31楼 发表于: 2020-11-25
好贴,一定要做个记号。
==========================
BG5HXE
浙江省杭州市
QQ:839525032
离线BG9AGZ
发帖
285
只看该作者 30楼 发表于: 2020-11-20
看到卫星过境网站http://amsat.org.ar/pass.htm的界面非常漂亮表达也很清晰,如果处于断网,可以爬虫整个网站在本地电脑或者手机上使用,我也根据网上资源抄写写了一个监控室内温度的网页,
如果有可能,把扫频仪的频域结果也用网页表达出来,手机也可以看,电脑也可以看,
[ 此帖被BG9AGZ在2020-11-20 20:35重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG9AGZ
发帖
285
只看该作者 29楼 发表于: 2020-11-03

https://www.arduino.cn/thread-96925-2-1.html
无意间在arduino 论坛看到代码,结果ESP32 python 输出温度显示曲线也只是几行代码, 血氧测量显示也是这样的效果,没想到如此简单,这个屏幕是1.3寸1106,略微粗糙,但是尺寸稍微大点。
     如果换STM32F405 python,也会是几行代码。
    
[ 此帖被BG9AGZ在2020-11-03 15:58重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG9AGZ
发帖
285
只看该作者 28楼 发表于: 2020-10-13
慢慢搞,只要作者si4432源码没有大错误,
    其实你们也可以搞,就是个屏幕显示函数的运用,网上大把源码,我最近一直在折腾micropython  stm32 和 es8266,反而对这个频谱仪都没看了。
离线BG2WAH
发帖
424
只看该作者 27楼 发表于: 2020-10-12
楼主动作挺快,期待
离线BH3NEK
发帖
1498
只看该作者 26楼 发表于: 2020-10-12
关注进度情况
呼号:BH3NEK
直频:145.100MHz  
中继: 439.125MHz-8 亚音103.5  
          147.925MHz-3.8 无亚音
          APRS:144.640MHz
承德ham微信号:CDHAM01


QTH:河北承德开发区
离线BG9AGZ
发帖
285
只看该作者 25楼 发表于: 2020-10-12
我也想早搞出来,不过淘宝买到了oled坏货等新货了(这年头OLED模块都能坏货,也是服了),最近也迷上了micropython,可以利用stm32的速度和python的傻瓜逻辑来实现,如果这样能实现,那么和tinysa stm32的效果应该差不多了。

   频谱仪原理就是si4432频率一边设置一边再在采集功率到数组,最后数组统一显示在oled,这个过程延迟明显,但复杂在于作者写的大量设置上,没用过频谱仪,有些设置有些名字想象不出来,加上屏幕显示代码似乎是给ili屏幕,好像没有直接到oled屏幕,让人无法理解,但oled屏幕显示并不困难。
    但最差情况,找到存储的数据然后显示出来就行了,因为存储的实际功率数组只能是一个,而且有个lo频率扫频结束的判断,判断lo扫描频率大于设定后就开始显示,
     但看闲鱼卖家tinysa stm32视频,应该是边采集边显示,可能步进是KHZ,所以很慢。
网上开源的micropython stm32f405RG 0604贴片,5元打20个小板,也可以修改为0805贴片。





[ 此帖被BG9AGZ在2020-10-12 13:20重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG2WAH
发帖
424
只看该作者 24楼 发表于: 2020-10-11
Re:arduino  频谱仪 有人用过吗?效果如何?
啊杜依闹版的少文件

[ 此帖被BG2WAH在2020-10-11 23:00重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG9AGZ
发帖
285
只看该作者 23楼 发表于: 2020-10-09
回 bg6qbt 的帖子
bg6qbt:关注,跟随老师们学习。 (2020-10-09 08:28) 

     老师不敢当,这个老外才是老师,我编程水平也就小学生水平,
     我手上的二手NWT7还是你组织的焊接套件。
[ 此帖被BG9AGZ在2020-10-09 13:57重新编辑 ]
离线BG2WAH
发帖
424
只看该作者 22楼 发表于: 2020-10-09
期待, 成功了记得分享喜悦
[ 此帖被BG2WAH在2020-10-09 18:38重新编辑 ]
离线BG9AGZ
发帖
285
只看该作者 21楼 发表于: 2020-10-09
    滤波器很重要,但程序没调通,后一步的事,而且滤波器参数给出来直接焊接都可以用。
    调试要么串口调,要么树莓派用一样的库调试显示算法,其实树莓派可以直接控制这个si4332来显示频谱的,速度不会慢于stm32,而且网上我已经看到了树莓派控制si4432的gihub项目,树莓派发送扫频给lo,扫频一次,树莓派同时接收一次频谱功率存储数组,完成lo扫频,树莓派开始显示所有数组的频谱功率,就这样原理,没有傅立叶转换。
    作者已经给出了stm32的源码了,也就是淘宝的tinysa,昨天编译一个micropython给stm32f407学了下DFU,感觉很容易,
    我没接触过DSP怎么用,但我知道孔雀石的stm32h7带dsp的,移植过去是可能的,但是显示算法中和傅里叶变换没一点关系,只是个屏幕函数调用,小学生都会。
   但作者显示算法复杂在,预定义太多了,3种屏幕变量有交叉用,好在整体不复杂,函数清晰,以前曾想过编些OLED温度曲线的app的算法,结果csdn都没人玩,想抄也没找到资料,最后还得自己想,后来python 几行也实现了,linux ncuser也实现,就是费时间,但OLED没搞完,这次频谱仪和python上位机突然见到了,可以好好学习一番,,其实原子应该有,不过一直没关注STM32。
    其实比如sark100的安卓,我理解其实根据linux 上位机c app修改移植的,不过最近这才看到,频谱仪和这个应该一样的,包括nwt7 ad8307采集显示,都有显示延时。
     当然夸张点,用si4332采集频谱,安卓手机来显示频谱也可以,因为显示代码说实在话并不复杂。
     另外,扫频可以借鉴tinysa stm32,使用SI5351,或者其他DDS,这样效果更好。这样的话,在换掉ADE混频器,频率上限会突破1GHZ,到十几个GHZ,但是需要验证才知道效果,胡思乱想。呵呵。



[ 此帖被BG9AGZ在2020-10-09 14:17重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线bg6qbt
发帖
7248
只看该作者 20楼 发表于: 2020-10-09
关注,跟随老师们学习。
QQ:58822205
离线BG2WAH
发帖
424
只看该作者 19楼 发表于: 2020-10-08
回 BG9AGZ 的帖子
BG9AGZ:arduino 本来就是小学生都可以学会的C语言,和python一样属于少儿编程。
    其实作者很多代码已经非常清晰了,比如那个显示频谱线的代码,但给的几个变量没理解,可以通过多次 .. (2020-10-08 16:47) 

流程纯属根据中文版Si4432手册推测,如果想做这款小工具,滤波器是个大问题,手头至少要有个600MHz的扫频仪。如果用DSP芯片写代码,相信效果会更好。
[ 此帖被BG2WAH在2020-10-08 18:22重新编辑 ]
离线BG9AGZ
发帖
285
只看该作者 18楼 发表于: 2020-10-08
回 BG2WAH 的帖子
BG2WAH:没试过,猜一下
大概看了芯片手册,Si4432芯片分低高两段,分别为:240~480MHz和480~930MHz
输出VFO时,低段版固定输为480MHz,高段版输出480~930MHz,差频480-480=0,合频480+480=960MHz,930-480=450MHz,理论 .. (2020-10-08 13:07) 

arduino 本来就是小学生都可以学会的C语言,和python一样属于少儿编程。
    其实作者很多代码已经非常清晰了,比如那个显示频谱线的代码,但给的几个变量没理解,可以通过多次试验应该可以摸索明白,但我理解作者给的似乎不是arduino 128*64 oled的,但修改难度也不大,因为网上OLED库例子非常多
      其实不光我,或者别人迟早会放出整个源码和电路。刚好这个适合短波频谱的谐波观察,又不是搞军用雷达和5G,那个频谱需要到几十或几百GHZ,短波MHZ段足够用了,
      但是频谱延迟显示,我认为一定存在,因为atelm328p单片机采集功率数据到数组和显示的算法需要时间。

[ 此帖被BG9AGZ在2020-10-08 16:55重新编辑 ]
离线BG2WAH
发帖
424
只看该作者 17楼 发表于: 2020-10-08
没试过,猜一下
大概看了芯片手册,Si4432芯片分低高两段,分别为:240~480MHz和480~930MHz
输出VFO时,低段版固定输为480MHz,高段版输出480~930MHz,差频480-480=0,合频480+480=960MHz,930-480=450MHz,理论上可实现0~450MHz输出,考虑到后续滤波、耦合电容及扫频步长问题,只做到50KHz~350MHz。但是,Si4432好像只有在发送寄存器有待发送数据时才能启动发送,之后才有被调制的载波输出,基本流程好像是:数据写入芯片->启动发送->发送结束(中断或查询)->数据写入芯片……,这样,就算是被调制的载波也并非连续,如果想看波形要选1.75GHz(350*5)的示波器,所以,用我们手头常用的示波器看就是正弦波。
接收(或频谱测试):把中频设为480MHz,理论上可以实现0~450MHz(930-480),但考虑到低端合频、耦合电容及扫频步长问题,只做到50KHz~350MHz,其实质就是一个场强计。但是,把读取的场强值显示在终端上应该有个技巧,如果依据读取的场强值实时在Y轴上显示,就会造成显示不稳定,延迟长了显示虚高,延迟短了显示虚低。Si4432芯片0.5dB的场强精度还是挺诱人的,制作要点或者说技术含量:硬件带通滤波器、固件可变带通滤波器。
纯属个人推测,未经验证,高手继续。



[ 此帖被BG2WAH在2020-10-08 15:36重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG9AGZ
发帖
285
只看该作者 16楼 发表于: 2020-10-07
回 BG2WAH 的帖子
BG2WAH:
能公开的代码只是一个框架,真正核心的算法属商业机密,只能自己去搞

https://blog.csdn.net/wordwarwordwar/article/details/56667990


      不知道你使用STM32 tinysa有没有延时的感觉。

      我理解电路图,这个频谱仪用 SI4432模块,和傅里叶算法没一点关系,启动LO的SI4432的扫描(频率会覆盖到3次或者更多次的谐波频率,但是短波模式最大不超过350MHZ,UV模式不超过1GHZ),ADE混频后接收模块SI4432采集434MHZ频率(中频)强度,存储到数组,OLED库显示数组频率范围和强度(DBM),就这样4个部分,但代码有点多,ARDUINO IDE 编译没通过,不知道作者代码哪里错了,或者使用的IDE不一样。
       而且编译时,发现串口初始化后,屏幕就不显示了,不知道哪里问题,

[ 此帖被BG9AGZ在2020-10-07 15:17重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员