当前位置: 首页 > news >正文

【原创首发】开源基于AT32 SIP/VOIP电话

前言

本次为了反馈各位粉丝的关注,特此分享 AT32_VOIP 工程,此功能其实跟我之前发过的《STM32F429的VOIP功能》是一样的,只是用了AT32F437。

其实那个工程是一个比较Demo中的Demo,很多功能和硬件依赖性太大了。后面项目中发现AT32F437单芯片就能完成这个功能,就选择了AT32F437来实现这个功能。

有很多朋友会问,为什么不用ESP32呢?当然我们实际上也用的ESP32S3,因为更方便。但是我发现很多关注我的朋友,更喜欢用MCU来玩这个网络会议电话。所以算是宠粉吧。

这次分享会从0到编译,到运行都说清楚。

喂到嘴里的鸡汤。

让我们开始吧 😄.

本次开源地址:

https://gitee.com/seliverwang/at32_voip.git


硬件

我使用的一块AT32F437ZMT7的开发板,它有4MB的Flash,512KB的RAM.

参数描述
CPUAT32F437ZITx
主频288MHz
Flash4MB
RAM512KB
音频接口I2S2
音频配置I2C1
LOGUART1
CODECWM8978
以太网RMII
引脚分配
  • 音频接口使用的I2S2.
引脚描述
PB12I2S_WS / I2S_FS
PC6I2S_MCLK
PB13I2S_CK / I2S_SCLK / I2S_BCK
PC2I2S_EXT_SD / I2S_SIN
PC3I2S_SD / I2S_SOUT
  • WM8978配置使用 I2C1.
引脚描述
PB6I2C_SCL
PB7I2C_SDA
  • LOG输出使用UART1.
引脚描述
PA9UART_TX
PA10UART_RX
  • 以太网配置使用RMII.
引脚描述
PA1RMII_REF_CLK
PA2RMII_MDIO
PC1RMII_MDC
PD8RMII_CRS_DV
PD9RMII_RXD0
PD10RMII_RXD1
PG11RMII_TXEN
PG13RMII_TXD0
PG14RMII_TXD1
附加

由于我之前功能里面有用SPI NOR FLASH 并且和USB,所以我把它也加上了。

引脚描述
PF6QSPI1_D3
PF7QSPI1_D2
PF8QSPI1_D0
PF9QSPI1_D1
PF10QSPI1_CLK
PG6QSPI1_CS

备注: 硬件就是用的AT32_START_F437 这个板子,杜邦线跳了个WM8978而已。


编译工程

准备前提

下载 RT-Thread Studio 开发工具,并安装。

https://www.rt-thread.org/download.html#download-rt-thread-studio


导入工程

打开 RT-Thread Studio, 导入 Clone 好的工程.


安装工具链.

导入完成之后,需要选择编译工具链, 如果你是第一次打开会提示让你安装工具链, 我们选择 10.2.1 版本的工具链(别问为什么,我用的这个版本而已 😄 ):


编译前提

恭喜你,已经成功导入工程了,接下来就是编译了。正常来说我的这个仓库很多都本地化了,不需要在安装其他的库,只要点击编译应该都是:编译不过的,因为还差了一个步骤。可以看到,由于RT-Thread的 Pthread和 libc 库冲突了,所以编译不过。

我们在需要在 修改安装路径下的这个文件内容,这个路径是RT-Thread Studio安装路径下的RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages\ARM\GNU_Tools_for_ARM_Embedded_Processors\10.2.1\arm-none-eabi\include\sys\types.h 文件。

请将原来第 223行 添加一个跟我一模一样的修改。

编译完成

编译完成之后,我们可以看到编译成功了。

那么有同学会问了,你这不都改了SDK了吗,不合格啊!
我哭死,我也不想改SDK,但是目前只想到了这个办法。有什么好办法,欢迎在Gitee上提交,或者留言。


软件介绍

功能介绍

源代码目录结构如下图所示:

名称描述
main.c主要为一些测试 音频流回环的功能
pjsip.c最主要的SIP实现协议栈
filefs.c配合USB做了一些录音文件存储数据读取功能。
wav.h此文件为上位机生成了一个人声测试数组,测试Codec是否能够正常播放声音。
debug.h测试Codec时序是否是20ms。

测试软件
准备工作

如果你想很快的测试软件,你可以使用AT32F437按照最开始的硬件接线图 连接好音频接口、CODEC、LOG保留,然后把 filefs.c 的执行函数注释掉,避免使用文件系统。

下载SIP 服务器工具和客户端工具

服务器

下载 miniSIPServer 安装完成之后打开软件,点击分机,添加2个分机,一个用于板子,一个用于手机。

客户端

  • 如果你没有另一台电脑,可以在安卓手机上安装 MizuDroid 软件, 按照一下步骤添加,如果没有注册成功,需要检查是否在同一网段,或者 服务器电脑开启了防火墙。

那又有朋友会说,我有2台电脑,该怎么办啊?
那你就下 MicroSIP ,安装之后一样只需要配置上面的参数就好了。


配置板子的账号信息

板子配置的参数,主要有:

  1. SIP服务器的IP地址、端口号、用户名、密码。

  1. SIP服务器的 认证域、认证方案,不过这些我用的是通配的,如果你的服务器有单独的配置,需要跟服务器配合着修改。

修改完成以上信息之后,在硬件接好的情况下,下载固件

别问我为什么不是截图,忘了截图了。


演示视频

视频地址:

https://www.bilibili.com/video/BV1wbXsY1EsX/


后话

非常感谢大家的关注,让我觉得我的分享是有意义的,够得到这么多人的认可。以后还会分享一些更高级的一些东西,😄。

之前好像有粉丝要求添加 3A算法,不过由于没时间,就没有加

有兴趣的同学,可以看看软件,直接将一些3A的宏打开,然后看看能不能正常运行,如果能那么就能跑,因为288Mhz主频还是应该可以跑起来的。

相关文章:

  • 正交分析法 + Prompt Optimizer:五维复杂测试用例设计的终极指南**
  • 适配器模式 (Adapter Pattern)
  • SpringMVC的执行流程剖析和源码跟踪
  • Blazor+PWA技术打造全平台音乐播放器-从音频缓存到离线播放的实践之路
  • Jupyter Notebook 常用命令(自用)
  • Spring6:7 事务
  • [项目]基于FreeRTOS的STM32四轴飞行器: 十.检测遥控器
  • Day23: 数组中数字出现的次数
  • 免费Typora1.8.6安装教程
  • 操作系统WIN11无法出现WLAN图标(解决方案)
  • 链表题型-链表操作-JS
  • Android Compose 流式布局(FlowRow、WrapContent)源码深度剖析(十一)
  • 用 pytorch 从零开始创建大语言模型(六):预训练无标注数据
  • 使用AI一步一步实现若依(20)
  • C++基础系列【27】Raw String Literal
  • 单链表:数据结构的灵动之链
  • chokidar - chokidar 初识(初识案例演示、初识案例解读、初识案例测试)
  • 算法学习-线程池
  • 软考程序员-操作系统基本知识核心考点和知识重点总结
  • 代码随想录算法训练营第十四天|替换数字
  • 网警查处编造传播“登顶泰山最高可得3万奖金”网络谣言者
  • 剑指3000亿产业规模,机器人“武林大会”背后的无锡“野望”
  • 全国台联原会长杨国庆逝世,享年89岁
  • 揭秘神舟十九号返回舱“软着陆”关键:4台发动机10毫秒内同时点火
  • 国台办:相关优化离境退税政策适用于来大陆的台湾同胞
  • 铁路上海站今日预计发送旅客65.8万人次,同比增长超16%