FastBond第4季 2025得捷智创营 – ESP对讲机
该项目使用了ESP32-WROOM-32-N4,实现了简易数字的设计,它的主要功能为:利用其独有的 ESP-NOW 通信协议,实现设备间的点对点(P2P)或多点广播式实时语音传输。配备“大功率”LED照明灯,和激光发射机方便紧急情况下使用。。
标签
Arduino
ESP32
无线通信
FastBond第四季
语音对讲
业余的猫
更新2026-04-09
18

一、所选任务介绍


根据此次活动指定的四个创意方向,联想到之前一直想拥有一台对讲机,所以决定做一台对讲机。


二、项目介绍


本项目是一套低成本、无需依赖外部网络基础设施(如 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 接口用于连接音频外设。

image.png

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

image.png

3.输出:I2S 功放模块MAX98357A

image.png

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

image.png

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

image.png

 

四、案框图和项目设计思路介绍


1.      数字麦克风INMP441MAX98357A使用I2S的两个接口分别驱动,来实现收音机播放声音。

2.      按键及LED使用GPIO直接驱动和检测,来实现PPT按钮及指示作用。

3.      无线通讯部分使用ESPNOW协议,且工作在广播模式下,实现无线通讯。

硬件框图如下:

 image.png

 

 

五、 调试软件及使用的编程语言说明、软件流程图及关键代码介绍


开发环境使用Arduino IDE,借助ESP32开发板核心库里面的I2S驱动和ESPNOW实现按键及获取声音并广播数据,收到广播数据则播放声音的简单无线声音通讯功能。

软件流程图如下:


 

 image.png

 

 

代码主要注意点,当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.应急功能

这个应急功能直接与锂电池直接连接,未使用软件控制。

应急照明灯

image.png

应急激光指示器

image.png

2.对讲机功能

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

开机状态

image.png

对讲状态

image.png

七、项目中遇到的难题及解决方法


1.      INMP441数据格式问题

一是这个麦克风数据是左对齐的,刚开始按照驱动里的标准模式宏定义驱动的,发现总是出现爆音,最后找资料才发现需要将模式更改为左对齐。另一个是这个麦克风默认是24位一般需要以32位来接收数据,直接使用16位设置也能驱动,但是需要进行音量放大。

2.      电源稳定性

初期测试中,扬声器发声时偶尔会导致主控重启。排查后发现是音频功放瞬间电流过大拉低了电压。通过增加大容量电容和优化电源走线,问题得以解决。

3.      ESPNOW通讯距离及单包数据量

板载天线在开阔地表现优异,但在金属遮挡环境下尤其是居住区信号衰减严重。通过调整信道(Channel)通信距离有提升但是不明显。在做这个之前听说ESPNOW单包数据量只有250字节,为了减少数据流研究了好久OPUS压缩解码,结果后来在测试ESPNOW示例时发现V2版本已经支持1470字节了,40ms数据不压缩也可以单包发送,之后改用直接发送原始数据,简化程序。


八、心得体会


通过这次活动不仅熟悉了 ESP-NOW 协议的核心用法和音频处理技术,还自己亲手制作了梦寐以求的对讲机,虽然产品实测通讯距离有限,但是让人很有成就感。在测试中遇到了电源崩溃、通讯干扰等问题这让我明白,软件算法再优秀,也离不开稳定的硬件基石。感谢电子森林和得捷组织的这次FastBond4 2025得捷智创营活动。

附件下载
ProPrj_wifi_mqtt_对讲机_2026-04-06.epro2
嘉立创专业版工程文件
raw_32bit_espnow_queue.zip
程序源码
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号