
#第九届立创电赛#[兔宝宝手机]基于泰山派手机原型机
简介
基于泰山派手机原型机 可以接打电话,发短信的,监测温湿度,真PD快充的小手机原型机
简介:基于泰山派手机原型机 可以接打电话,发短信的,监测温湿度,真PD快充的小手机原型机开源协议
:Public Domain
(未经作者授权,禁止转载)描述
1、项目功能介绍
基于泰山派的手机原型机项目

- 支持4G上网
- 打电话
- 发短信
- 前置摄像头及闪光灯(带自动对焦)
- 陀螺仪,重力计
- PD快充(非诱骗,可软件更改充电电压电流,目前默认配置12V)
- 电子罗盘
- 环境光传感器及距离传感器
- 温湿度计(盛思睿SHT4X,适配安卓驱动,并编写专用安卓APP显示温湿度)
- GPS
- 振动电机。
- typec的OTG功能(支持接U盘,键盘鼠标等)
- typec支持typec接口的数字耳机及模拟耳机。
几乎涵盖了手机应有的传感器。
当时做这个项目的想法,只是看到了小大柱子的BQ40Z50的开源项目,想复刻一个。后来复刻好了,就总是想找个东西来把这个电池用起来。
看到立创有出了泰山派,于是手工焊接了几个杜邦线,编写了bq40z50的安卓驱动,在安卓设备上能看到电池电量的百分比了。
再后面,想想,电池也有了。何不再画个板,把MIPI屏,电池充放电电路也加上。同时把能加的传感器都加上,反正就是画一个板,能一次性加上的东西都给加上。
这时,我就慢慢统计了一下,比如电池充放电,直接上个PD快充。加摄像头,加个自动对焦,加个闪光灯。加个重力计陀螺仪磁力计,正好盛思睿和立创合作了电赛,也选择加了一个SHT4X,...
慢慢加到后面,又加上了Android的打电话,发短信,4G上网功能。就感觉变成了一个类似手机的东西了。
正好之前淘宝也了解过,好像也没有卖那种价格比较低的手机(平板)开发板。一般高通的或者MTK的手机开发板也比较贵,高通和MTK的芯片及相关开发资料对于普通人和小公司估计也不好拿到。
如果项目做成了,对于感兴趣的学生或者有想开发定制安卓设备的小厂商或许有一定的吸引力。毕竟价格可以接受和资料也会提供。

打电话

可收发短信

摄像头,自动对焦

闪光灯的手电筒功能(建议最好不要拍照开闪光灯,会闪瞎眼睛。别问为什么前置摄像头加一个闪光灯,问就是我愿意)

重力计

快充效果

电子罗盘

环境光传感器(安卓自动调节屏幕亮度用的就是这个功能)

距离传感器(一般用在接打电话的时候,检测距离,防止屏幕误触)
本项目传感器放置在玻璃后面,发现也能检测到玻璃。导致无法正常检测距离。
故把传感器表壳拆开测试。效果如图。

APP读取温湿度计传感器数据

GPS效果(户外测试搜星,使用的是普通无源天线)

振动电机
板卡带有振动电机,触摸导航键及充电会有振动效果。(或者有些带振动的游戏,也能触发此功能)

typec口的OTG功能(可接U盘鼠标键盘,typec数字耳机等)

typec口支持typec数字耳机及typec模拟耳机
typec数字耳机(实际上是USB接口的声卡)
typec模拟耳机(类似普通3.5耳机,改成typec接口)
本项目通过识别耳机类型,及切换芯片来兼容这2种类型耳机。

2、项目属性
首次公开,原创。
3、开源协议
【1】液晶屏引用了猫屏项目。(猫屏比较便宜,屏幕也比较大,分辨率720x1280也还行,最主要还是性价比高) (可替代) (Public Domain)
https://oshwhub.com/sakuraneko/tai-shan-pai-6-cun-ping-mu-zhuan-jie-ban
【2】电池电量计参考了BQ40z50项目(同时调整并简化了一部分),用于在android系统中使用并正确显示电池电量。(硬件上参考了原理图,参照原作者的电量校准工具的校准方法重新校准了电池。软件上,驱动手工编写了android上的bq40z50的驱动,可以在安卓上显示电量百分比)(可替代,电量计电路板重新绘制,删去了LED灯电量指示,更换了充电接头) (GPL 3.0)
https://oshwhub.com/xdzz/BQ40Z50-Battery-fuel-gauges
【3】锁屏充电效果。直接引用了CSDN大佬的(安卓兼职framework应用工程师),征得原作者同意开源此部分代码。(效果较好,也可替代或关闭此效果)
本项目整体设置开源协议为
Public Domain
4、硬件部分
1.电池电量计
SMT在立创贴的。实物图

电池挑选的
力神LR21700LA,店家帮忙点焊成2节串联。

电池和电量计保护板焊接一起成品图(此时电量还未校准,相关保护参数也未设置)

需要预先设置一些电池信息,校准电压电流以及温度传感器温度。
进行2~5次的充放电循环校准电池(校准成功后,可以将校准配置及参数导出。方便同一型号电池的生产烧录)
所以购买了电压电流表,电子负载。2节8.4V typec充电模块,以及bq40z50的通讯工具EV2400。




电池参数配置界面

充放电循环(校准电量计)

具体如何配置参数及校准充放电循环可以移步 小大柱子的开源项目
https://oshwhub.com/xdzz/BQ40Z50-Battery-fuel-gauges
如果想复刻电池电量计,可以购买同款力神电池(不同电池的电池充放电曲线,容量等不同)。
烧录兔哥校准好的电池配置文件即可。(应该烧录就好了)
电池下单备注出线方向请按店家的图片,反方向焊接。

bq40z50电池板上还需要额外补焊的物料

2.主板硬件
一共做了2版
V1.0 20240701: 基础版
V1.1 20240908:
1)将环境光传感器/距离传感器,SHT4x温湿度计,LED闪光灯从底板调整到顶部灯板上。(新增了一个顶部灯板,和主板通过排线相接)
2)引出域格4G模块的模拟麦克风及模拟喇叭。用来打电话时的呼叫和收听声音。(通话声音从4G模块直接走,由于泰山派自带声卡的限制,无法和系统声音做到一起)
3)去掉移远的L80RE-M37 GPS模块。(焊盘保留,不焊)。主要是由于购买的域格的4G模块自带GPS功能,软件上将此功能调通后,可以节省一颗物料,缩减成本。
4)40P的主排座更换为FH-00325,排座高度从之前的20mm降低到12mm.(V1.0版本的排座选型太高了,实际测试不用这么高)
5)调整了3个实体按钮(音量+,音量-,电源开关机按钮)的摆放位置。V1.0摆放位置不合理,会压到排线。
6)新增typec模拟耳机,数字耳机切换芯片。并调整了typec口的接线。用以兼容模拟/数字typec耳机。


使用的4层板,大部分阻容使用的是0603封装,板卡空间大,使用0603也方便手工焊接维修。
其中比较重要的走线是DSI及MIPI及USB相关走线。以及充电的线宽,电容耐压值的选择。
DSI屏幕走线及MIPI CSI走线主要是走差分对,涉及到差分对间及差分线的等长。差分阻抗。
USB走的是USB2.0。主要是注意90欧的差分阻抗。
DSI屏部分的走线

MIPI CSI摄像头走线

充放电部分的走线,尽量走粗。typec输入端电容的耐压值选择的是35V耐压。主要是PD快充可以支持到20V的耐压。后期驱动上可以配置20V的充电电压。

4G模块,选用域格的CLM920 NC5的全功能模块即CLM920 NC5 mdgv(只有全功能模块才支持打电话,发短信,GPS和4G上网)
同时也感谢域格的技术支持,提供了相关使用及移植指导。

摄像头购买

注意:需要购买带自动对焦的摄像头,本项目上驱动上已经适配了自动对焦功能。如果购买定焦摄像头,则无法使用自动对焦功能。
模数typec耳机切换芯片
选择的是DIO32020LP10
注意:这款芯片非常的不好买,当时器件选型的时候没注意。看淘宝上有好多家,结果一问都是没货。
最后挨个问了十多家才最终买到,价格也算可以。
此功能算是锦上添花的功能,没买到也没关系。无非就只用数字typec耳机即可。
如果没买到DIO32020LP10,原理图此处可以选焊 R114,R115。来绕过此切换芯片,typec直接接上USB2.0.

注意磁力计和陀螺仪的PCB摆放方向不能随意摆放(不然会导致坐标和实际有差距,得软件驱动重新调整。可能会比较麻烦)。

主板也是在立创SMT。
3.结构部分
使用的FreeCAD绘制外壳。
后续使用FreeCAD转换成,stl格式。
正好Freecad也有ubuntu版本的软件。可以在编译安卓系统的同时,不用来回切换windows。

之前没有设计过结构。在B站上找了一个freecad的教学资源现学现卖。
同时也感谢立创eda.可以将绘制好的板卡导出3D模型。方便我加载到freeCAD软件中。
可以进行模拟装配,方便我有些开孔位置绘制,对准。结构上的开孔可以很方便的看出来有没有对准,尺寸有没有开合适。
最终也是找的立创进行的3D打印。精度也还不错。重要孔位都是OK.

5、软件部分
涉及的软件较多,每一样基本上都是调整,编写驱动或修改android系统中间层。
准备介绍几个典型的。
1)SHT4X
4.19内核里默认没有这个驱动。准备自己手写的。
当时偶然在一个6.1的内核里找到了官方SHT4X驱动。就直接移植过来了。
涉及到驱动,内核编译。设备树的调整。

当时移植后,可以通过ADB使用命令读取到温度和湿度的值。
即通过cat /sys/class/hwmon/hwmon0/temp1_input
和cat /sys/class/hwmon/hwmon0/humidity1_input
读取温湿度数据,驱动里面默认配置的是2000ms刷新一次。
但是如果想在Android app上显示温度和湿度,还需要做一些额外的工作。
这个时候就需要使用JNI编写应用层的中间件及读写库。

编写库函数的CMakeList.txt

新建build目录,并在build目录中编写编译脚本

这时候执行编译脚本会生成所有架构的库


打开Android stdio,编写应用程序。
将编译好的库都放进应用程序的工程里,编写JNI中间件来调用此库。
将库导入工程。

编写界面

编写JNI中间间,JNI是JAVA和C++之间的桥梁。
JAVA里开了一个2s的进程,每隔2s都去去读传感器的温湿度值并在app上刷新。

调试使用Android studio的debug模式辅助打断点调试。
最终效果

2.bq40z50驱动
由于内核中无bq40z50驱动,故需要从头编写此驱动。
bq40z50是通过I2C和泰山派进行通讯的。
所以驱动需要包含I2C的驱动框架以及电源power_supply的驱动框架。
即通过I2C读取电量百分比,电池电压,电池电流,电池温度,是否在充电等。
读取到的数据,再通过power_supply框架往系统上上报。
驱动还做了相关兼容(即如果没加电池,直接使用typec供电,系统不会应为读不到电池电量而认为电量是0%从而导致开机上电后进系统再因为电量低而自动关机)
需要拿到bq40z50 R2版本的寄存器手册(电池校准的时候,烧录的固件是R2.11版本的电池固件)


驱动配置的支持的相关功能
比如电池健康度(健康程度100%还是78%,和苹果手机能看到的电池健康度一样,可以读取bq40z50获取,本驱动暂未读取实际值)
电池类型(锂电池还是其他类型电池)等。

驱动编写好后,编译到内核即可。
使用泰山派的android编译指令。
3.域格4G模块
复刻的时候,需要通过adb进入系统。输入指令
echo "AT+USBCFG=9125\r\n" > /dev/ttyUSB1
来配置模块开启GPS端口。
此时才会新增ttyUSB2.(重新掉电也会记住,不需要每次上电都执行)
移植域格的4G上网及GPS功能可以移步域格资料库,下载最新的ril库和gps库。
根据域格厂家提供的文档移植即可。
https://docs.yuge-info.com/doku.php?id=nc5
同时兔哥提供的补丁patch里也会包含配置好的ril和gps库。打好补丁,重新编译一遍即可。
4G打电话发短信模块,需要依赖系统的拨号软件及短信软件。
4G打电话的听筒音量也需要额外配置。这些配置也在兔哥的补丁里,打上补丁就有。

补丁安装说明

6、BOM清单
剩余立创无法SMT/或缺料的物料采购链接如下:
1)电池连接线

2)猫屏

3)USB 2.0typec公头+软排线5cm(用来连接主板到泰山派的,使用USB typec相关功能用到)
价格有点小贵,懒着自己画了。使用的时候要把typec头上面的电阻去掉。以免影响主板的typec设备识别功能。
https://item.taobao.com/item.htm?_u=j9vteubf9e9&id=749280110543&spm=a1z09.2.0.0.71392e8dzCF09R
4)猫屏连接器(焊接到主板上的)
https://item.taobao.com/item.htm?_u=j9vteub6bec&id=681866176620&spm=a1z09.2.0.0.71392e8dzCF09R
5)地磁传感器(建议最好还是多买一点,芯片非常小,且是BGA封装,很容易飞不见了)
同时建议购买一个USB放大镜,不然肉眼无法看到芯片的1脚在哪(或者可以把芯片购买了寄给立创SMT)
这个图是兔哥将板卡带到公司焊接磁力计。用的电子放大镜。
后面自费淘宝买的65块钱的那个也一样看到见。肉眼就不要想看清了。

6)闪光灯驱动芯片及环境光传感器

7)fpc排线(30P的是摄像头的转接延长排线,39P的是usb2.0 接4G模块,模拟音频排线)
https://item.taobao.com/item.htm?_u=j9vteub4ce0&id=645057046865&spm=a1z09.2.0.0.71392e8dzCF09R
8)小喇叭

9)LED闪光灯(顶部灯板的LED闪光灯,效果较好)

https://item.taobao.com/item.htm?_u=j9vteub8656&id=672697571127&spm=a1z09.2.0.0.71392e8dzCF09R
10)4G模块通话咪头

11)顶部灯板和主板的FFC软排线

https://detail.tmall.com/item.htm?_u=j9vteubb3f5&id=619955112087&spm=a1z09.2.0.0.71392e8dzCF09R
12)音量增减及电源按钮帽
13)顶部灯板定制尺寸的2mm厚 10*40mm玻璃

https://item.taobao.com/item.htm?_u=j9vteubbf6e&id=688681869202&spm=a1z09.2.0.0.71392e8dzCF09R
14)螺丝
M1.4*4 :顶部灯板固定螺丝
M2*4 : 顶部灯板面板螺丝
M3*4 : 背面外壳固定螺丝
M3*16+4: 结构固定主板和泰山派之间的铜柱
M3*10+4: 结构固定泰山派和背面板的铜柱
7、大赛LOGO验证
板卡背面绘制了立创电赛logo。

8、组装效果





9、演示您的项目并录制成视频上传
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。








评论