SrX4EjbO

MiniPhone

 
Overview

# 项目说明
这是一台简易4G手机,主控基于合宙`Air724UG`模组,`Lua`脚本二次开发。实现了通话、短信发送、播放音乐等功能。Air724UG 是合宙通信推出的超小封装 LTE Cat.1模块,是4G全网通模块,采用紫光展锐的UIS8910平台,支持标准AT和Lua脚本二次开发,本次项目使用lua二次开发将其直接作为主控,相对于常规的MCU+4G模块方案减少了成本和元器件,同时能更好的发挥其内部MCU性能。
# 开源协议
本工程依据“CC-BY-NC-SA 4.0”知识共享许可协议,请勿用于商用,转载时请标明出处。
# 项目相关功能
* `电话通信`
进入电话app界面,输入电话号码,按“*”键拨出,按“#”键退出。
* `短信发送`
进入短信app界面,按右侧“↑”“↓”按键切换到号码框或短信框,在号码框输入电话号码,在短信框按“0-9”数字按键切换短信内容(消息列表存放在sd卡中的message.json文件里),按“*”号键发送,按“#”键退出。
* `音乐播放`
进入音乐app界面,按右侧“↑”“↓”按键切换mp3文件(文件保存在sd卡的music文件夹里),按“*”号键播放和停止,按“#”键停止并退出。
* `一键指定呼叫`
在主界面,按“0-9”数字按键,直接进入拨号界面并设置好对应电话号码(电话号码列表存放在sd卡中的call list.json文件里),按“*”键拨出,按“#”键退出。
* `开关机及定时休眠`
在关机状态,按住右侧电源按钮持续4秒手机开机,并显示开机动画。进入主菜单后,按住右侧电源按钮持续2秒弹出关机确认界面,按“*”号键关机,按“#”键返回。1分钟无按键操作,手机屏幕和按键灯熄灭,进入休眠状态以降低功耗。
* `游戏娱乐`
进入游戏app界面,有一个小鸟游戏。用“*”号键控制小鸟上升,很简单的一个游戏,按“#”键退出。
* `U盘模拟`
手机接入电脑后会模拟出一个U盘,指向板上的sd卡,可以用来存放文件。

# 项目属性
本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。
# 项目进度
3月26日,原理设计结束,PCB打样。目前PCB分为两块,一块主板、一块lcd板。
3月30日,3D外壳设计完毕,在三维猴下单打样。在立创商城和淘宝购买元器件。
4月3日,3d外壳和元件陆续到货,编写测试代码,验证硬件部分。
4月7日,硬件部分验证完毕,开始设计软件部分。
4月19日,已实现所有要求的功能,整机测试。(使用8Ω1W的喇叭,发现声音不清晰,调高音量感觉有破音)
4月21日,修复一些bug,重新修改了开机动画。测试了另外购买的喇叭,发现声音依旧不太清晰,暂时先不改了,准备结项。
4月22日,完善资料和文档,结项。
# 项目介绍
## 1.硬件
硬件上使用Air724UG模块作为主控,所有外设都接在模块上,主板采用4层板,阻容基本上是0402封装,整机外壳5X10cm,锂电池容量为1500mAH。**板上预留了摄像头接口以及锂电池电量计芯片**(未验证),硬件简易框图如下:
![硬件简易框图.png]手机**正面**是一块280X240的tft液晶屏和12颗按键,按键采用的是6x6x7.2贴片带灯,套了数字按键帽,按键上的灯统一由air724UG的一个pwm口控制。**侧面**是3颗侧贴的轻触按钮,实现“上”、“下”、“开关机”功能。**底部**是一个Typec座和一个双色LED,typec口用于电池充电以及程序烧入,并且可以连接到PC用于模拟U盘,模拟的U盘目录指向手机上的SD卡。双色LED用于指示充电状态,红色表示充电,蓝色表示充满。**背面**扬声器位置开孔以及4个M2.5的固定孔位置。
![结构介绍.png]![结构介绍2.png]PCB和整机图片
![裸板.png]![整机.png]![3d分解图.png]## 2.软件
软件部分基于LuatOS-Air编写,LuatOS-Air = Lua + AT,是合宙嵌入式操作系统LuatOS在蜂窝物联网模组上推出的开源的二次开发框架。LuatOS-Air将传统的AT命令用Lua语言封装成API,开发者可以通过调用API轻松便捷的实现SOCKET、MQTT、OTA、GPIO、I2C、SPI等功能。框架如下:
![luatos air框架.png]紫光展锐8910平台的Cat.1模块底层core中跑的操作系统是FreeRTOS, core在启动过程中,会创建一系列的task,例如音频、协议栈、串口等。
其中有一个task,用来加载Lua虚拟机,解析运行用户编写的Lua脚本,这个task,我们称之为Lua virtual task(另外在Lua脚本中,利用Lua的协程特性封装了一个sys.taskInit接口,借用了task的概念,实际上并不是真正的task)。脚本中的所有应用,都运行在Lua virtual machine task中,属于单task应用。sdk框架如下:
![sdk架构.png]本次工程代码用到了VOLTE高清通话、LVGL、浮点运算以及模拟U盘等功能,官方发布的core不满足需求,所以需要定制固件。合宙官方提供了`固件定制系统`,针对用户不同功能使用场景,进行在线定制固件。满足用户功能定制化需求,同时也能最大化保留Lua运行和存储空间。固件定制链接如下:[http://erp.openluat.com/firm_customized](http://erp.openluat.com/firm_customized)

代码主要编写app应用层脚本,我将代码分为3个文件夹,分别为`/main`、`/panel`和`/resources`。main文件夹部分是一些应用初始化以及UI加载等代码,panel文件夹部分是每个应用app界面代码,resources文件夹存放一些app图标、控件图片以及音频文件,尺寸较大的图片和文件存放在sd卡中。
IDE使用VSCode,下载luatIDE以及相应的debug插件,可以通过usb口进行下载调试,具体教程可看`稀饭放姜`这位大佬的b站视频**Luat开发视频教程合集**和合宙官网([``https://doc.openluat.com/``](https://doc.openluat.com/))提供的资料,本次项目也是参考了官网的昆仑镜和iCool项目,代码在[https://gitee.com/openLuat/Luat_Lua_Air724U/tree/master](https://gitee.com/openLuat/Luat_Lua_Air724U/tree/master)

**UI**基于LVGL库,LVGL 是一个开源的图形库,它提供了创建嵌入式 GUI 所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用的特点。基本上,大部分控制器(需要能够驱动显示屏)都适合运行 LVGL。最低要求是:
![lvgl硬件要求.jpg]C语言版本的LVGL支持触摸屏、鼠标、键盘、编码器、按钮等多种输入设备,合闸官方提供的demo是基于触摸屏的设计,移植到本工程改为按键输入时找不到group相对应的api,不知道是不是lua 版本的 LVGL还未支持。目前是为所有界面编写了按键响应函数,这导致控件配合的不是很好。

开机动画结束后进入主界面,顶部显示手机卡状态、当前时间以及电池电量。中间app图标排成一排,当前选中的app在中间,按右侧“↑”“↓”按键切换app,按“*”键进入app界面(**当前切换动画代码未编写,切换过程不太直观**),各app界面功能看工程视频。
## 3.调试
### 3.1硬件调试
由于air724UG模块背面有焊盘类似BGA,在焊接时需要借助加热台。先在焊盘上涂抹锡膏,放上模块进行加热,**所以PCB板背面的元件先不要焊接**!焊好模块周边的元件以及usb口部分的元件,先烧入脚本进行测试模块背面焊盘是否焊接良好。背面焊盘主要是按键和摄像头以及lcd背光,`摄像头预留暂时未写对应代码暂时不管,想用的可以用官方的demo测试。`按键可以用线短接来模拟测试。
![模块背面焊盘.jpg]
主板与LCD板通过1.27间距的双排插座插针连接,这是为了检修以及安装方便。但是排针排座连接也增加了高度,为了参照按键的高度,我把LCD板上插针的黑色塑料部分拆了,剪短针长至4.5mm。**注意焊好后再去掉塑料部分是很困难的,在拔的过程中极有可能导致液晶屏损坏,所以最好先焊好排针最后焊液晶屏。**

PCB板连接PC时需接上电池,否则TP4057可能工作不正常导致模块启不来。
### 3.2软件调试
可以通过LuaTools工具进入脚本烧入,具体烧入步骤可以参考`稀饭放姜`大佬的b站视频,手机侧面的第二个按钮是boot键,按住该键再重启即可进入boot模式。同时板上接出了一个重启按键,在裸板时可以协助调试。另外板上预留了串口接口,可以接出使用(**未使用过,使用usb调试很方便**)。LuaTools工具可以打印日志,想输出哪些信息在脚本里调用`log.info()`即可。
![luatools主界面.jpg]![luatoos项目管理界面.jpg]
烧入脚本程序重启后会发现没有开机动画,进入主界面也没有背景等问题。这是因为**sd卡里没有对应文件**。用usb接上PC,会在PC端弹出一个U盘,该U盘指向的就是手机上的sd卡,将附件提供的music文件、message.json、call list.json、wallpaper.png、wallpaper2.png和startup animation.gif放入U盘,再重启就可以了。如果PC端有提示U盘但是打不开,可能是sd卡格式损坏,将U盘快速格式化一遍就行了。
![模拟u盘.jpg]### 3.3附件说明
附件视频依次测试了上述介绍的功能,附件里的`sd压缩包`文件用来拷贝到sd卡根目录,`code压缩包`文件包含了脚本和定制的core。`3d外壳压缩包`文件包含了3d打印文件。luaTools下载地址:[https://doc.openluat.com/wiki/21?wiki_page_id=2070](https://doc.openluat.com/wiki/21?wiki_page_id=2070)

## 4.总结和待实现功能
之前做的一些关于4G模块的项目都是MCU+4G方案,初次了解到合宙的这种方案,感觉这是种趋势,在性能和成本上都要好于常规方案。配套的LuatOS框架也很大的提升了开发效率。`Lua作为一种脚本语言`,可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。

本工程实现了所要求的功能,但还有些**小瑕疵**:喇叭在播放一段时间后会出现杂音不清晰、主界面切换app图标时有时会出现某一项图标消失不显示、长时间播放音乐手机会有发烫现象。后续等空闲时间的时候再改进吧,还有一些功能后续也会添加,比如**录音**、**wifi定位**、**摄像头识别二维码**、**扫码支付**、**文件夹浏览**等。(但是时间多久不定,勿cue)

# **以上是本工程全部内容,感谢查阅!**
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2025-05-22 00:30:55
  • CCSv5 License Issues
  • Virtual machine black screen problem
  • The Bluetooth SIG solicitation is almost over, don’t tell me you haven’t participated yet!
  • Troubleshooting methods for power supply in computer room
  • [Code analysis tool] cppcheck
  • Differences between OFDM and OFDMA

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号