当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

ESP32-S2设计网络/FM两用收音机

时间:2021-09-14 | 栏目:控制/MCU | 点击:

这是一位工程师基于硬禾学堂"暑期一起练"的ESP32-S2平台实现的网络收音机、FM收音机的功能,项目开源在电子森林的项目页面(点击左下角的“阅读原文”)。

以下是该项目的内容

实现的基本功能

项目环境

硬件

一. 如何使用

1. 使用编译好的二进制程序

2. 使用源码编译烧录

46010134-149a-11ec-8fb8-12bb97331649.png

二. 运行现象

1. 编译日志

项目使用了 722978 字节,占用了 (55%) 程序存储空间。最大为 1310720 字节。
全局变量使用了37348字节,(11%)的动态内存,余留290332字节局部变量。最大为327680字节。
esptool.py v3.1
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP32-S2FH32
Features: WiFi, Embedded 4MB Flash, 105C temp rating, ADC and temperature sensor calibration in BLK2 of efuse
Crystal is 40MHz
MAC: 7c:df:a1:97:44:da
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00001000 to 0x00004fff...
Flash will be erased from 0x00010000 to 0x000c0fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 755.2 kbit/s)...
Hash of data verified.
Compressed 13600 bytes to 9358...
Writing at 0x00001000... (100 %)
Wrote 13600 bytes (9358 compressed) at 0x00001000 in 0.4 seconds (effective 274.5 kbit/s)...
Hash of data verified.
Compressed 723360 bytes to 484945...
Writing at 0x00010000... (3 %)
Writing at 0x00019c43... (6 %)
...
Writing at 0x000bd11f... (100 %)
Wrote 723360 bytes (484945 compressed) at 0x00010000 in 11.4 seconds (effective 505.4 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 511.0 kbit/s)...
Hash of data verified.

Leaving...

2. 运行串口日志

192.168.43.143
Search FM8710:0
Search FM8720:0
Search FM8730:1
Search FM8740:1
Good Frequency: 8760
Search FM8770:0
Search FM8780:1
Search FM8790:1
Search FM8800:1
Good Frequency: 8810
Search FM8820:0
Search FM8830:0
Good Frequency: 8860
...
Good Frequency: 10370
info: FM Radio Page
info: Net Radio Page
info: Datetime Page

	

3. 开发板运行情况

46120736-149a-11ec-8fb8-12bb97331649.png


46321404-149a-11ec-8fb8-12bb97331649.png

464f90ce-149a-11ec-8fb8-12bb97331649.png

三. 已知BUG

四. 笔记

1. 项目前瞻

2. 开发环境的部署

46695c52-149a-11ec-8fb8-12bb97331649.png

467941b2-149a-11ec-8fb8-12bb97331649.png

4697bee4-149a-11ec-8fb8-12bb97331649.png

46ad1708-149a-11ec-8fb8-12bb97331649.png

46bae3e2-149a-11ec-8fb8-12bb97331649.png

46c7affa-149a-11ec-8fb8-12bb97331649.png

3. 开发思路

    WiFi.mode(WIFI_STA);
    WiFi.begin(SSID, PASSWD);
    while (WiFi.status() != WL_CONNECTED) {
        delay(400); 
   }
   uint16_t i = 0;
   uint8_t num = 0;
   rx.setFrequency(9600);
   while (i < 210) {
       delay(100);
       if (rx.isStereo() && rx.getRssi() > 20) {
           fmstation[num++] = findMaxSing(rx.getFrequency(), rx.getRssi());
           Serial.print("Good Frequency: ");
           Serial.println(rx.getFrequency());
           if (num >= MAX_STATIONS) return ;
      }
       rx.setFrequencyUp();
       i++;
       Serial.print("Search FM");
       Serial.print(rx.getFrequency());
       Serial.print(":");
       Serial.print

4. 遇到的问题Windows版本的Arduino编译速度慢的问题

1/ 因为活动接近尾声, 希望快点开发出项目出来, 所以选择了Arduino作为开发工具.

高效的编辑器, 缓慢的编译器

但是Arduino的编辑器实在是太差了, 于是使用了VScode作为编辑器. 但是用VScode编译的二次速度比Arduino的要慢一点. 后面再网上找到了解决方案, 在工程目录的".vscode"中设置了一个Build选项, 就可以大大提高二次编译的编译速度

拥抱Linux的怀抱

不过随着时间的推移, 发现编译的速度还是跟不上调试的速度, 因为我是做软件的出身, 主要语言还是使用Python这样的可以即使运行的语言, 于是想有没有办法再把编译的速度提升上去呢.

之前就有了解到Linux上面的Arduino比Windows上面要快不少, 之前一直觉得在Linux上面安装东西太麻烦了, 这次就这这个机会尝试着安装了一下, 其实也只是下载安装包, 解压, 执行安装脚本三步, 并且通过一些SSH软件可以直接在命令行打开编辑窗口, 十分方便.

结果编译速度提升了80%, 之后可以继续尝试把VScode安装在Linux上面, 使用纯Linux进行开发

2/ VS code对ESP32的库提示库不存在

艰难的安装

我的Arduino ESP32库安装了好多次都有问题. 主要是网络的问题, 在下载arduino-esp32的Git hub 仓库的时候就打不开了

后面我Clone仓库下载解压到安装目录, 造成了之后的问题

VS code的嚎叫

在Arduino中可以使用, 之后我转战VScode, 结果发现VScode又不能正常使用ESP32, 直接在开发板管理工具里面找不到了

最后只能删掉库, 在VScode的开发板管理工具里面重新安装才可以完成

解决网络的问题

如果网络有问题, 可以根据命令行的提示, 在github上面找到对应的zip包, 解压到C://user/username/Appdata/Arduino15/staging/package中, Arduino会直接使用下载好的包, 这样就可以大大减少重新安装的时间和避免网络比稳定到时下载失败的情况. 比如说可以使用一些下载工具先进行下载.

总是感觉Arduino作为编辑器还是有很多不足的地方, 比如代码提示, 库的安装之类的. 以后进行开发我会优先使用Linux下的VSCode


您可能感兴趣的文章:

相关文章