目录
一、3B+系统安装
受限于硬件条件,为保证流畅完成任务,建议安装官方开发的Raspberry Pi OS系统(尝试过装Ubuntu mate,but很卡我的建议是别尝试了,Raspberry Pi OS甚至可以装lite无界面版)。 Raspberry Pi OS分为ARM32和ARM64版本,建议使用ARM64,讯飞官方对ARM32支持不是很好的样子,新版本的SDK里没有ARM32的动态库(尝试过新SDK配旧动态库,以失败告终,而后又尝试使用旧SDK,也没成功,深夜不确定是不是因为状态不好误操作),经过验证ARM64 配合新版SDK可以正常运行。
配置步骤: 1.系统安装 2.格式化SD卡:选择你的SD卡后直接点击format(格式化),无需修改配置。(SD卡请保持插入,SD卡建议别太小,大于不!等于8G) 3.写入镜像:选择镜像和设备盘后无需修改其余配置直接写入就好。(SD卡请保持插入) 4.安装到树莓派:插卡,连接鼠标键盘和显示器,上电及进入系统初始化。看到教程这步,教程后面的可以不用看了。
教程链接:https://www.cnblogs.com/devilmaycry812839668/p/12803693.html
二、M1运行环境搭建
请按照手册进行配置,注意系统架构,基本可以顺利完成。(注意:请使用Linux_SDK)
大概步骤:
1规则 2下载必要软件 3检测设备 4配置动态库(注意选择合适的系统位数) 5编译例程(注意选择合适的系统位数) 6运行例程(例程运行,表明运行环境正常)
本地功能实现流程:
1.复制例程demo文件夹到同级目录,修改.c文件夹代码实现本地化功能。
2.修改Makefile中
修改生成的可执行文件的文件名。 3.用Pi + 显示器可能有点卡,建议使用虚拟机配Linux或SSH在win上写代码编译然后上硬件验证。
二、串口通信环境搭建
串口通信环境配置用于打通Linux与MCU间的通信,重要!!!
环境搭建的步骤:
1.打开串口功能:3B+有两个串口,一个是硬件串口比较高级,还有一个是mini串口(不好就是了),但是高级串口默认配置给蓝牙使用了,排针上留下的串口接口连接的miniuart,需要先把蓝牙Ban掉,然后利用引脚映射把高级串口映射到排针留的接口,详情请看配置主教程和辅教程。
2.串口测试:可进入Python测试串口(看配置辅教程后半部分),打开串口的时候可能会报错(无法打开port),这是因为权限不够,请使用命令:sudo python打开python进行测试。
3.c语言调用串口: C代码建议参考配置辅教程的代码部分。
4.串口调用相关库!! 树莓派调用串口,使用专为树莓派开发的wiringPi库最方便,在使用配置教程中安装的库进行编译时会报错:库不兼容。 报错原因如教程《库不兼容》所示,为库所用ARM32环境与调用环境ARM64不兼容所致。 但这个库几年前就不更新了,旧版只适用ARM32。幸运的是有大神做了ARM64适配,详情请看《wiringPi_ARM64教程》。
注意:如上图为教程中的安装方式,但github很可能访问不到,且教程中的链接版本也比较旧,故已将最新版库的.deb文件放在文件夹中(2.61-g版,为大神自命名版本),可存入linux中,并使用上图命令:sudo dpkg -i 文件名进行安装。
三、教程链接:
配置主教程:https://blog.youkuaiyun.com/wanggao_1990/article/details/103702563
配置辅教程:https://blog.youkuaiyun.com/qq_43125185/article/details/112791641(前面管脚映射的步骤配图了,比较好懂,但是后面关闭(stop)系统控制的步骤有错误,请以主教程为准)
root用户组相关:https://blog.51cto.com/liangchaoxi/4047612(打开串口需要root权限)
库不兼容:https://blog.youkuaiyun.com/qq_29111047/article/details/126665236
wiringPi_ARM64教程:https://www.bilibili.com/read/cv8344099/
四、已做的测试:
M1声源定位功能测试&开发方式尝试:
2023/07/29 使用虚拟机配置环境后连接M1验证demo例程
2023/07/31修改原demo文件为仅保留和支持重复唤醒并输出唤醒角度的声源定位Demo。
使用C语言调用wiringPi库进行树莓派串口透传测试:
2023/07/31编译c程序实现树莓派与windows串口收发。 声源定位&串口透传综合测试: 2023/08/01 使用移植串口通信到麦克风SDK中,实现通过重复唤醒进行声源定位并发送唤醒角度。(在sdk编译环境下运行wiringpi等第三方库需要修改Makefile)
五、补充:
Makefile修改:
修改 1:
修改如图所示项目修改生成目标可执行文件名。
修改2:
修改此项目(在后面添加 -lxxx库链接),可以引入第三方库。