开源协议
:Public Domain
(未经作者授权,禁止转载)描述
设计目的:通过泰山派开发板学习linux嵌入式开发
项目:基于泰山派开发板linux嵌入式平台的智能小助手
PS:本工程主要参考学习于泰山派训练营的小手机项目
文档:【胖妞手机】实战项目资料 - 飞书云文档 (feishu.cn)
成品展示:
电路硬件部分
原理图设计:
①核心板 : 立创开发板的泰山派
②顶层应用扩展板 :
通过泰山派引出的40pin GPIO , SPI等外设通道,设计的顶层应用扩展板。
可用于学习在linux系统下的嵌入式应用层面开发
扩展板使用40pin排母与泰山派直接连接,排针连接并不牢固,需要一定的支撑
顶层应用扩展板配置:
一、1.69寸spi接口tft lcd屏幕,可用于学习嵌入式屏幕开发,移植lvgl等等
二、DS18温度传感器, 经典的温度传感器器件,用于测量外界温度
三、ADS1115 16位ADC转换器, 使用i2c通信,可用于采集电压,
这里只引出了两个通道
四、WS2812 RGB彩灯, 使用gpio口便可轻松控制,可用于炫彩灯光
五、四个按键
六、CH343 USB转串口, 引出泰山派的RX与TX接口,
通过板载的ch343实现串口转USB的通讯
七、QMI8658C 6D姿态传感器 ,设计参考了立创开发板esp32c3实战派
的设计,加入姿态传感器,可以增加设备的物理可玩性
七、QMC5883L 地磁传感器 ,设计参考了立创开发板esp32c3实战派
的设计,用于学习地磁传感器,实现电子罗盘
②中层媒体扩展板 :
中层媒体扩展板参考了训练营的3.1寸屏幕扩展板设计,板载了麦克风与小喇叭
使用六角螺柱等支撑与核心板连接
顶层应用扩展板配置:
一、3.1寸MIPI屏以及触摸接口,可连接大显家的3.1寸MIPI触摸屏
二、3w小喇叭与咪头,通过pogo pin从泰山派核心板底部的触点引出喇叭
和麦克风接口,连接至板载的喇叭与咪头
三、屏幕背光电路, 屏幕较小,背光不宜太大,所以不直接使用核心板的
背光接口,设计背光电路使用i2c控制PWM从而实现无极调光
③底层高速扩展板 :
目前没有设计,一开始打算使用立创开发板官方设计的底层39pin扩展板的。
PCB设计:
顶层应用扩展板 :
该扩展板中并没有高速信号,射频等需要考虑的部分,layout时便简单连线了,
布局时注意一下装配
中层媒体扩展板 :
将MIPI信号走线使用地线包裹,同时考虑了差分线的等长
硬件样品:
焊接后没有使用洗板水所以卖相很糟糕
焊接难点:
fpc座的焊接是一个难点,引脚间距十分小,0.3mm,上锡时
使用烙铁或者风枪都可以,但是后续处理连锡时要使用烙铁,建议使
用吸锡带,效果十分显著,上锡后烙铁加热一吸基本就能解决连锡
pogo pin的焊接建议用上夹具,我用的是直插式的,先在底部
加热焊盘,再上一点锡,从上方将探针插入后扶正,便可拿开烙铁
冷却固定
外壳装配部分
外壳设计:
本项目的整体是有顶层扩展板的,故不能直接使用训练营吴工设计的外壳
外壳设计使用中望3D,尺寸等参考了胖妞手机外壳设计,因为本项目是想做
一个智能助手龟宝,外壳设计采用了乌龟的元素,设计了顶盖,底盖,底座
顶盖和底盖采用磁吸式连接,参考了该视频
磁力吸附——盒子和盖子的合体姿势之二_哔哩哔哩_bilibili
底盖顶盖开了接口的孔,添加了一些装饰以及散热,扩音的孔
屏幕与板子和外壳的连接直接固定,都是摩擦力阻尼固定
底座简单设计了一个乌龟造型,与主体部分是没有固定连接的,主体外壳可
直接放上去作为乌龟壳:)
外壳装配:
装配使用M3螺柱以及螺丝固定,POGO pin以及螺柱螺丝参数如图:
装配过程:
注意:屏幕直接放进去并不稳,后续固定可以用胶水或者双面胶等等
放磁铁时一定要分辨好磁极,非常非常容易翻车
软件部分
屏幕驱动设计:
屏幕,触摸,背光驱动均参考学习训练营的项目
在配置dsi设备树时发现一个bug,板载debian系统下,若dsi使用vp1输出,
屏幕无法正常显示桌面,只有一个鼠标指针,触摸正常,
使用vp0输出后屏幕正常显示,目前未找出原因
QT移植:
本项目的智能小助手应用打算采用qt编写,程序的设计采用windows上的
qt creator编程,在虚拟机ubuntu系统上交叉编译生成泰山派上linux
系统可用的qt应用
QT的移植按照文档共建里大佬共享的移植教程搭建【共建】移植Qt5 - 飞书云文档 (feishu.cn)
编译QT遇到的问题:
一.在ubuntu中编译QT前需要下载依赖库,否则后续容易报错
sudo apt-get install bison build-essential gperf flex ruby python libasound2-dev libbz2-dev libcap-dev \
libcups2-dev libdrm-dev libegl1-mesa-dev libgcrypt11-dev libnss3-dev libpci-dev libpulse-dev libudev-dev \
libxtst-dev gyp ninja-build libglu1-mesa-dev libfontconfig1-dev libx11-xcb-dev libicu-dev
二.make编译时容易报错
aarch64-linux-gnu-gcc: Command not found
经过验证后发现时教程里添加aarch64-linux-gnu-gcc文件夹环境变量对
sudo操作并没有起作用,详情参考
故需要在etc/sudoers文件中手动添加路径进去,后面便可交叉编译QT成功
三.移植编译生成的QT库到泰山派后,设置好环境变量,再运行编写的QT程序
很容易遇到问题,要么运行程序没反应,要么报linuxfb出错, 我的系统是sdk
编译的debian,经过实验后发现QT程序运行前需要chmod改权限,运行时用
sudo才能正常启动linuxfb
四.移植编译生成的QT库到泰山派后,设置好环境变量,再运行编写的QT程序,
运行正常,但是图片不显示,只有控件,后面去网上查资料找了一整天,试过
各种方法。检查图片格式,改环境变量,改qt程序等等,几乎能尝试都尝试过
了,最后还是失败,希望有大佬有一天能给出解决方法
更换方案:
经过考虑,搞不定debian系统下泰山派正常跑qt程序,共建文档教程里还介绍了
buildroot移植qt,前面我已经编译好buildroot,索性尝试一下,在buildroot
menuconfig界面中设置好qt库,选上自己需要的依赖
第一次使用这个界面设置,突然感觉到buildroot的强大,设置好后重新全编译
用不了多久就生成镜像,烧录板子后,用挂载u盘来转移交叉编译生成的qt可执
行文件进板子里,然后程序成功运行了:-) ,自此qt开发linux正式上路
QT设计:
TODO
顶层应用扩展板驱动:
TODO
评论