一、所选任务介绍
根据此次活动指定的四个创意方向,联想到之前一直想拥有一台对讲机,所以决定做一台对讲机。
二、项目介绍
本项目是一套低成本、无需依赖外部网络基础设施(如 Wi-Fi 路由器或蜂窝基站)的无线语音对讲系统。系统核心采用 乐鑫 ESP32-WROOM-32-N4 模组,利用其独有的 ESP-NOW 通信协议,实现设备间的点对点(P2P)或多点广播式实时语音传输。该方案特别适用于无网络覆盖的野外作业、工业现场通讯、应急救灾及儿童玩具等场景。
1.免路由直连通信:
设备之间无需连接 Wi-Fi 热点或路由器,直接建立通信链路。
支持一对一私密通话模式。
支持一对多群组广播模式(一个主机发送,多个从机同时接收)。
2.低延迟实时传输:
利用 ESP-NOW 的高吞吐特性,实现语音数据的快速分包传输。
端到端延迟控制在 100ms - 300ms 级别(取决于采样率和编码策略),满足自然对话需求。
3.应急装备:
配备“大功率”LED照明灯,和激光指示器方便紧急情况下使用。
三、所有使用到的硬件介绍
1.主控芯片:ESP32-WROOM-32-N4
双核 240MHz CPU,内置 Wi-Fi & 蓝牙,板载 4MB Flash,支持低功耗模式,具备丰富的 GPIO 接口用于连接音频外设。

2.输入:I2S 数字麦克风INMP441。

3.输出:I2S 功放模块MAX98357A。

4.电源:充电部分使用成品充电模块,方便焊接。放电部分则直接使用了低压差LDO由电池直接供电。

5.另外还配备了2个用户按键、1个用户LED、1个电源指示灯及4个切换开关进行交互。板子上使用了项目品牌Bel Fuse的500MA 1206自恢复保险丝和Littlefuse的轻触按键。

四、案框图和项目设计思路介绍
1. 数字麦克风INMP441及MAX98357A使用I2S的两个接口分别驱动,来实现收音机播放声音。
2. 按键及LED使用GPIO直接驱动和检测,来实现PPT按钮及指示作用。
3. 无线通讯部分使用ESPNOW协议,且工作在广播模式下,实现无线通讯。
硬件框图如下:

五、 调试软件及使用的编程语言说明、软件流程图及关键代码介绍
开发环境使用Arduino IDE,借助ESP32开发板核心库里面的I2S驱动和ESPNOW实现按键及获取声音并广播数据,收到广播数据则播放声音的简单无线声音通讯功能。
软件流程图如下:

代码主要注意点,当ESPNOW数据获取完毕后记得清空I2S中的数据,否则喇叭会一直响,我没找到对应的函数实现,这里使用的是填充空数据的方式。
if(send_flag || receive_flag){
digitalWrite(LED_PIN,HIGH);
}else{
digitalWrite(LED_PIN,LOW);
int16_t silence_buffer[320] = {0}; // 全0数组
size_t bytes_written;
i2s_channel_write(tx_handle, silence_buffer, sizeof(silence_buffer), &bytes_written, 0);
}
六、功能展示图及说明
1.应急功能
这个应急功能直接与锂电池直接连接,未使用软件控制。
应急照明灯

应急激光指示器

2.对讲机功能
对讲机使用起来很简单,直接按住上面的按键不放即可以进行语音通讯,当然需要对方设备开机,且在一个信道上。
开机状态

对讲状态

七、项目中遇到的难题及解决方法
1. INMP441数据格式问题
一是这个麦克风数据是左对齐的,刚开始按照驱动里的标准模式宏定义驱动的,发现总是出现爆音,最后找资料才发现需要将模式更改为左对齐。另一个是这个麦克风默认是24位一般需要以32位来接收数据,直接使用16位设置也能驱动,但是需要进行音量放大。
2. 电源稳定性
初期测试中,扬声器发声时偶尔会导致主控重启。排查后发现是音频功放瞬间电流过大拉低了电压。通过增加大容量电容和优化电源走线,问题得以解决。
3. ESPNOW通讯距离及单包数据量
板载天线在开阔地表现优异,但在金属遮挡环境下尤其是居住区信号衰减严重。通过调整信道(Channel)通信距离有提升但是不明显。在做这个之前听说ESPNOW单包数据量只有250字节,为了减少数据流研究了好久OPUS压缩解码,结果后来在测试ESPNOW示例时发现V2版本已经支持1470字节了,40ms数据不压缩也可以单包发送,之后改用直接发送原始数据,简化程序。
八、心得体会
通过这次活动不仅熟悉了 ESP-NOW 协议的核心用法和音频处理技术,还自己亲手制作了梦寐以求的对讲机,虽然产品实测通讯距离有限,但是让人很有成就感。在测试中遇到了电源崩溃、通讯干扰等问题这让我明白,软件算法再优秀,也离不开稳定的硬件基石。感谢电子森林和得捷组织的这次FastBond第4季 2025得捷智创营活动。