基于Linux和Qt5的简易平板的设计与实现

描述

主要研究内容是与Linux和Qt5有关,通过对Linux系统的移植掌握Uboot编译,Linux内核裁剪,文件系统挂载等相关操作,还熟悉驱动的挂载和卸载,设备树的编写等。

通过编写Qt5应用程序,了解C++语言编程,明白槽和信号的运行机制,熟悉各个模块之间的调用关系。

通过对整个系统从硬件到软件的设计,了解产品开发的大致流程。

本系统分为硬件部分设计,系统部分设计,应用部分设计三大部分。硬件部分设计包括从器件选型开始,主控芯片,屏幕,扬声器,电池管理等,再到原理图绘制,PCB布局布线,嘉立创打板,焊接等一系列流程。

系统部分设计包括交叉编译器安装,Uboot移植,Linux内核裁剪编译,文件系统裁剪挂载,Tslib移植,Mplayer移植,Qt移植,驱动程序移植,驱动程序编写,脚本语言编写等。

应用部分包括视频播放,音乐播放,照片播放,查看日期时间,查看天气,查看温湿度,查看设置,阅读电子书,使用记事本,使用计算器,玩nes游戏等。

通过对这三大部分的设计,完成一个具备平板部分功能的设备。

设计分析

1.硬件电路设计分析

硬件电路设计主要分为好几个模块进行开发,这样开发的好处就是模块之间可以组合使用,在后续开发别的产品时能充分利用。

大致可以分为四个模块:

主控核心板

主控底板

充放电管理模块

串口调试模块

充放电管理模块主要就是负责电池管理,充电,放电,电池保护等。

串口调试模块主要在开发阶段使用,通过打印信息到PC终端可以对设备软件部分进行开发,调试,设计完成之后就不需要了。

主控核心板主要是主控和其外围电路,构成一个最小系统,单个主控板就可以使用,可以随意的扩展底板,做音乐播放器,做网络摄像头,做语音助手都可。

主控底板就是简易平板的核心外围器件,主要有耳机接口,功放芯片,时钟芯片,屏幕接口,触摸接口,WIFI模块,震动马达接口,麦克风,一键开关机电路,陀螺仪芯片,温湿度芯片,LED和少许按键等。

通过这些外围器件构成简易平板和外界进行信息交换的渠道。

2.系统移植设计分析

这一部分是核心部分,也是最为复杂的部分,但又是最容易使用的部分,因为这部分一般都是芯片原厂开发,然后提供给用户使用。

也就是说关于这部分是可以通过简单配置直接使用的。

首先就是Uboot编译,Uboot是一段启动代码,和芯片底层进行打交道,包括系统时钟配置,DDR初始化等一系列操作。

Uboot启动之后会进行设备树和Linux内核加载,需要我们移植Linux内核,Linux内核整个十分庞大,我们只需要移植需要的部分,也就是需要进行内核裁剪,裁剪编译之后我们就需要挂载文件系统,文件系统是后续文件存储的部分,也是直接接触的部分。

关于文件系统有好几种选择,可以选择最小文件系统,只有十几MB大小,也可以选择Debian系统,分为带桌面和不带桌面的。

文件系统的编译,也有好几种方式,本系统采用Buildroot进行编译最小文件系统。

3.驱动开发设计分析

在前面我们进行了硬件开发和系统移植,接下来就进行驱动开发,这部分主要就是对硬件设计部分进行开发,用设备树进行引脚功能定义,用Linux内核进行驱动开发,可以编译成Ko模块加载,也可以直接编译进内核,直接编译进内核之后,上电会自动加载。

需要进行驱动开发的有以下器件。

WIFI模块驱动开发去进行联网,时钟模块驱动开发进行时间显示,温湿度模块开发进行温湿度获取,震动马达驱动开发去控制马达震动,触摸驱动开发去使能屏幕触摸效果,一键开关机电路驱动开发实现开关机,按键开发进行音量设置,还有以太网驱动开发,RGB屏幕驱动开发,麦克风驱动开发等。

通过编写驱动程序,简易平板就可以和外界进行信息交换,为后面应用开发做准备。

驱动开发是最为复杂的,最容易出错的,最费时间的,最不容易找到问题的。

4.应用开发设计分析

驱动开发之后,说明本设计已经具备和外界进行信息交换的能力,但具体如何去做,需要去进行应用开发。

应用开发也就是在Linux系统上使用系统应用函数API去和硬件驱动打交道。

本系统设计的是简易平板,肯定要实现平板所能做的一些事情,视频播放,音乐播放,图片播放,温湿度获取,天气查询,阅读电子书,查看时间,查看日历,记事本,NES游戏,屏幕背光调节,手电筒等。

应用程序通过Qt5进行编写,Qt是一个可跨平台的,灵活性高的开发软件,简单好移植,可以很好的应用在嵌入式设备上。

5.3D外壳设计分析

在设计的最后阶段,要进行简易平板的包装,不能给用户一个裸板去使用。

用立创EDA专业版进行3D外壳的设计,操作简单,并且可以在绘制完电路板之后直接在画的PCB文件中进行设计,不用PCB设计软件和3D建模软件之间来回切换,大大节省了开发时间。

3D外壳设计的时候要注意几个点,首先要保证散热,不能全封死,对于按键,SD卡槽,USB接口,耳机口这些要进行开槽处理,屏幕部分可直接包住,屏幕外边框不显示。

设计框图

1.整体设计框图

Linux系统

该框图介绍了整体设计的思路,先从硬件电路出发,经过系统移植、驱动开发、应用开发和3D设计的操作,一步一步介绍构造简易平板的全过程。

2.硬件电路设计框图

Linux系统

该框图介绍了简易平板的硬件构成,包括一些器件的选型和对应功能电路,比如一键开关机、耳机功放切换电路等,可见设计一个产品需要包含很多的器件。

3.系统移植设计框图

Linux系统

该框图介绍了简易平板的系统移植,从三个方面出发,Uboot移植,Linux内核裁剪到最后的文件系统编译,介绍了Linux系统硬件平台的系统层面的基本操作。

4.应用开发设计框图

Linux系统

该框图介绍了简易平板的应用APP,可以直观的看到简易平板开发了丰富的应用程序,这些基本的应用程序可以满足日常的需求,介绍了一个产品需要众多软件的支持。

硬件设计

1.核心板介绍

核心板设计大小为3cm * 5cm,采用四层板进行设计。

核心板设计的目的是为了方便扩展,主要是构建基于主控的最小系统,单核心板就能够运行。

核心板设计硬件包括全志的V3S主控芯片,以及一些V3S的外围电路,晶振,复位等,还使用了一个DCDC芯片EA3036可提供3路电源,用来给V3S提供电源。

和底板连接接口使用MINI PCIE接口,MINI PCIE可以引出56个引脚,核心板上引出RGB屏幕的FPC排座,这样去掉RGB屏幕的引脚,剩下的引脚基本上可以全部引出。

核心板还板载了一颗W25N01GVZEIG存储芯片,可用来存储系统,然后不需要SD卡运行启动。

2.底板介绍

底板设计大小为7.6cm * 10cm,采用两层板进行设计。

底板设计的主要功能就是构造简易平板所需的功能,包括一键开关机电路,电池接口,RTL8723BS WIFI蓝牙模块,耳机,8002B功放芯片,DS3231时钟芯片,SHT30温湿度芯片,MPU6050陀螺仪芯片,震动马达接口,SD卡接口,音量加减键,关机键,复位键,还板载了RGB屏幕背光电路等。

通过底板上这些器件的运行可以保证实现本系统所需要的功能。

3.硬件电路原理图分析

1.全志V3S主控芯片原理图设计

本系统使用的主控芯片是全志的V3S,是ARM Cortex-A7架构,主频最高支持1.2GHz,空载运行电流 90~100mA,满载运行电流~180mA,集成 64MB DDR2,可从8~32MB SPI Nor Flash、128MB Nand Flash和SD卡等设备启动。

有一个RGB666屏幕接口,支持常见的 272x480, 480x800,1024x600 等分辨率。

拥有一路100M Ether接口(含 EPHY),一路OTG USB接口,两路Speaker接口和一路Mic接口等资源,非常适合开发多媒体设备,满足简易平板的应用需求。

Linux系统

2.EA3036电源芯片原理图设计

本系统使用的电源芯片是一款DCDC器件,型号为EA3036,EA3036采用20针QFN 3X3封装,EA3036支持2.7-5.5V范围输入,0.6V参考电压。

EA3036为三路输出,每路输出可实现2A持续输出能力,并提供独立的使能端进行电源管理和上电时序控制。本系统的三路电源输出分别为1.2V、1.8V和3.3V。

Linux系统

3.RGB屏幕接口原理图设计

这款芯片自带有RGB666的接口,所以可以驱动RGB的屏幕。

RGB666表示数据有16位,分别是R6位,G6位,B6位,这些都是数据线,另外还有行同步信号,列同步信号,时钟信号等。

RGB屏幕是一个通用接口,是市面上最为常见的屏幕之一,应用非常广泛。本系统原理图画的是正点原子的屏幕接口,并且带电容触摸。

Linux系统

4.MINI PCIE接口原理图设计

本系统是设计为核心板加底板的方式,那必然核心板上要留出接口。

关于接口,前期也了解很多,比如排针,BTB连接器,DDR,M.2,MINI PCIE等等。

最终选择了MINI PCIE,因为MINI PCIE的引脚个数正好合适,间距为0.8mm,而与之相似的M.2的间距为0.5mm,PCB绘制的时候不好连线。

经过层层考虑,最终选择了MINI PCIE接口进行核心板与底板的连接。

Linux系统

5.PT4103B23F升压芯片原理图设计

PT4103是一款升压型DC/DC转换器,设计用于从单电池锂离子电池以恒定电流驱动多达8个串联的白色LED。

由于PT4103直接调节输出电流,因此它非常适合驱动发光二极管(LED),而RGB的屏幕背光正好是多个LED进行连接,这款芯片用来驱动背光再好不过。

Linux系统

6.RT9193稳压芯片原理图设计

RT9193是一款LDO芯片,输出电压为3.3V,选择封装为SOT-23-5,非常小巧,并且外围电路也不多,容易嵌入到系统板上。

RT9193提供了稳定可靠的电源,只要输入电压在一定的范围内,输出电压永远保持在3.3V。

Linux系统

7.一键开关机原理图设计

生活中的便携式电子产品都具有开关机按键,比如手机电源键就是一种非常典型的一键开关机,长按开机,长按关机。

除了手机以外的其它电子产品,也可以使用这种方法,给用户良好的体验。

本系统就是基于用户体验的角度,在系统底板上加入了一键开关机电路,方便用户对简易平板进行操作。

Linux系统

8.DS3231时钟原理图设计

DS3231是一款精度很高的实时时钟芯片,内置自动补偿电路。

可以自动调整月份和日期,还有闰年补偿功能,时钟的工作格式可以有两种模式,24小时模式或者12小时模式。

DS3231内部集成了可编程的闹钟,并且支持两路,DS3231这个实时时钟不仅可以提供准确的走时而且还能保持断电走时,极大保障了系统时间的准确性。

Linux系统

9.麦克风原理图设计

全志V3S集成了音频ADC,可以外接一个麦克风,通过麦克风可以获取外界的声音,然后存储起来,可以实现录音的功能。

还可以开发软件部分,使其支持语音识别,可以实现语音助手的功能。

Linux系统


10.耳机和8002B功放原理图设计

全志V3S不仅支持音频ADC,还支持播放音频,可以接一路耳机,有左右双通道。

虽然插上耳机就可以播放音频,但毕竟还是需要有耳机才能播放。

在设计上加入一个功放芯片8002B,通过功放外接一个喇叭就可以支持声音外放。

而且设计过程中对耳机和功放部分做了处理,使插上耳机的时候耳机播放,不插耳机的时候就外放。

Linux系统

11.RTL8723BS WIFI蓝牙原理图设计

RTL8723BS是一款小尺寸,小巧的WiFi + BT组合模块,电路板尺寸为12mm * 12 mm,高度为1.6mm。

常适合平板电脑,超极本,移动设备和消费类产品。

它提供用于WiFi的GSPI/SDIO接口与主机处理器连接以及用于BT的高速UART接口,WiFi的吞吐量理论上可以达到150Mbps。

本系统设计模块的初衷就是为了方便联网,毕竟作为一个移动设备,不可能一直插网线这种方式,并且这款模块还支持蓝牙,相当于一个模块就继承了WiFi和蓝牙,非常适合本系统。

Linux系统

12.MPU6050陀螺仪原理图设计

MPU6050是一款陀螺仪芯片,内置陀螺仪和加速度计,可以通过检测当前的姿态来判断当前的平板的姿态位置。

本系统设计的目的是为了实现重力感应,自动翻转屏幕,充当计步器等功能。

Linux系统

13.SHT30温湿度原理图设计

SHT30是一款温度和湿度传感器。它的封装为DFN-8,封装外形为2.5mm * 2.5mm,同时保持0.8mm的高度,这意味着可以将它集成到多种应用中。

本系统设计的目的是为了能够实时获取外界环境的温度和湿度,给用户一个直观的体验。

Linux系统

14.震动马达原理图设计

震动马达是一个可以发生震动的器件,通过一个三极管就可以驱动。

诸如手机一样,当设置为震动模式的时候,不会发出声音,但是手机本身发出震动。

本系统就是基于这样的设计思想,当简易平板设置为震动模式的时候,一旦有外界消息震动马达就会发出震动,以提醒用户及时查看消息。

Linux系统

PCB分析

1.核心板PCB分析

核心板PCB为四层板,最小线宽为4mil,是嘉立创四层板所支持的最小工艺。

整体设计为两面都有器件,因为核心板只有设计的比较小,才能更方便的集成到应用中去。

正面放置EA3036 DCDC器件,主控芯片V3S,和RGB屏幕接口FPC,FPC放到正面是为了方便后续接屏幕。

背面大多是一些电容电阻和一个W25N01GVZEIG备用,W25N01GVZEIG默认是不焊接的。

在内层1对电源进行了分割,主要有VBUS,1V2,3V0,3V3等。

在内层进行电源分割,不仅方便布线,还增强系统的可靠性。

2.底板PCB分析

底板PCB为两层板,最小线宽为6mil,嘉立创双面板线宽最小支持5mil。

整体设计为只有背面有器件,因为正面是把整个屏幕贴上去,这个在设计的时候需要考虑屏幕的排线,在对应的位置进行开槽处理,方便排线连接。

还有就是电源开关和音量开关的位置要放在合适的位置,方便我们去操作。

还有type-c接口、麦克风、耳机口,SD卡槽的位置等都需要去考量;屏幕FPC的位置要和核心板上FPC接口是顺的,也就是FPC排线连接是顺的,不能交叉打结。

MPU6050的位置最好放到板子的正中间,这样测量结果是最正确的。RTL8723BS的天线部分不要覆铜。

测试效果

1.主界面测试

主界面是程序启动就进入的界面,里面罗列了十几款APP应用,可滑动翻页,点击对应的APP图标会进入到对应的APP应用界面。

2.音乐播放测试

音乐播放界面实现了歌词根据进度条滚动显示,有可暂停、可上一曲,可下一曲等功能,会显示当前播放进度和总进度时长,可滑动滚动条跳转音乐播放进度。

3.电子书测试

电子书分为两个界面,点击电子书图标会进入书架界面,会列举当前文件中的书籍信息,选择对应的书籍可以进入阅读界面,在阅读界面可以修改背景颜色和文字颜色等。

4.天气预报测试

点击天气图标会进入到天气查询界面,输入对应的城市名点击查询按钮,即可显示当前的温度和风向等信息,在最下面还会有温馨提示。

点击左上角的切换按钮可以查看未来几天的天气情况,提醒注意防护。

5.计算器测试

点击计算器图标会进入到计算器界面,里面有一张背景图片和按钮形成对比,方便使用按钮进行操作,支持连续加减乘除运算,计算结果大字显示,方便获取。

6.设置界面测试

点击设置图标会进入到设置界面,在设置界面可以设置WIFI,蓝牙,声音,显示,日期等操作,点击关于选项会进入关于界面显示一些系统的内存大小,版本等信息。

结论

本文主要介绍了简易平板的设计与实现,该系统从硬件设计开始,经过系统移植,驱动开发,应用开发,外壳设计等操作,已经涵盖了一个产品从设计到生产的基本过程。

硬件设计也是很有门道的,稍微有一点地方不对,就需要重新打板子。

本系统从设计开始到最后的成品,一共做过两块开发板、三块核心板和三块底板,相当于光板子就做了八块,其中多次涉及两层板和四层板,还包含电源分割和一些常规的注意事项。

通过设计本系统,可以加强对硬件设计部分的基本操作,可以熟练进行PCB设计。

系统部分主要涉及Linux系统的知识,通过对Uboot、Linux内核和Rootfs的编译,熟练配置交叉编译器,了解Makefile的执行机制和编程规范,能对.config文件进行修改和添加。

驱动开发主要操作是对硬件底层的操作,需要看懂器件的使用手册,能用通信协议驱动器件,知道如何用设备树去配置引脚,如何灵活的使用驱动框架等。

应用开发主要涉及Qt知识,能熟练使用C++编程语言,明白信号和槽的机制,会一点UI设计,能对图片进行基本处理等。

外壳设计主要是对一些3D图形进行处理,能熟练对PCB进行外壳设计,知道如何开孔,如何设置固定孔等。

通过对本系统进行设计,可以掌握很多知识,对于自身能力也是一种提高。

在本课题简易平板的设计与开发的过程中查阅了很多相关资料,提供了很多的思路,也借鉴了其中设计好的部分。

本系统基于Linux和Qt5进行开发设计,操作系统加UI的设计方向是移动设备的一种常规操作。

只有每一步都设计合理,最后的成品才会实现它应有的功能。

虽然本系统设计的时间周期很长,但由于所涉及的知识庞杂,需要开发的内容较多,设计过程中难免会有设计缺陷和功能不完善之处,希望多多指正。

在后续的时间里,还会继续开发一些功能和修改一些缺陷,使功能更加完善,系统更加健全。


审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分