答案是:這是一款自制的4G手機!可以實現(xiàn)電話通信、短信發(fā)送、音樂播放、一鍵指定呼叫、開關機及定時休眠、游戲娛樂、U盤模擬等功能。
本期特別分享@flyn大佬在立創(chuàng)開源硬件平臺的MiniPhone原創(chuàng)作品:
使用Air724UG模組自制4G手機
感謝@flyn大佬開源分享此項目,為大家提供詳細講解及PCB/原理圖/項目源碼等相關資料。接下來,我們一起看看自制4G手機項目吧~
1
MiniPhone項目簡介
這是一臺簡易4G手機,主控基于合宙Air724UG模組,LuatOS二次開發(fā),實現(xiàn)了通話、短信發(fā)送、播放音樂等等功能。
Air724UG是合宙通信推出的多功能LTE Cat.1模塊,是4G全網(wǎng)通模塊,采用紫光展銳的UIS8910平臺,支持標準AT和LuatOS二次開發(fā)。
本次項目使用LuatOS二次開發(fā)將其直接作為主控,相對于常規(guī)的MCU+4G模塊方案減少了成本和元器件,同時能更好的發(fā)揮其內(nèi)部MCU性能。
MiniPhone已實現(xiàn)功能
01.電話通信
進入電話APP界面,輸入電話號碼,按“*”鍵撥出,按“#”鍵退出。
02.短信發(fā)送
進入短信APP界面,按右側(cè)“↑”“↓”按鍵切換到號碼框或短信框,在號碼框輸入電話號碼,在短信框按“0-9”數(shù)字按鍵切換短信內(nèi)容(消息列表存放在sd卡中的message.json文件里),按“*”號鍵發(fā)送,按“#”鍵退出。
03.音樂播放
進入音樂APP界面,按右側(cè)“↑”“↓”按鍵切換mp3文件(文件保存在sd卡的music文件夾里),按“*”號鍵播放和停止,按“#”鍵停止并退出。
04.一鍵指定呼叫
在主界面,按“0-9”數(shù)字按鍵,直接進入撥號界面并設置好對應電話號碼(電話號碼列表存放在sd卡中的call list.json文件里),按“*”鍵撥出,按“#”鍵退出。
05. 開關機及定時休眠
在關機狀態(tài),按住右側(cè)電源按鈕持續(xù)4秒手機開機,并顯示開機動畫。進入主菜單后,按住右側(cè)電源按鈕持續(xù)2秒彈出關機確認界面,按“*”號鍵關機,按“#”鍵返回。1分鐘無按鍵操作,手機屏幕和按鍵燈熄滅,進入休眠狀態(tài)以降低功耗。
06. 游戲娛樂
進入游戲APP界面,有一個小鳥游戲。用“*”號鍵控制小鳥上升,很簡單的一個游戲,按“#”鍵退出。
07. U盤模擬
手機接入電腦后會模擬出一個U盤,指向板上的sd卡,可以用來存放文件。
2
硬件說明
硬件上使用Air724UG模塊作為主控,所有外設都接在模塊上,主板采用4層板,阻容基本上是0402封裝,整機外殼5X10cm,鋰電池容量為1500mAH;板上預留了攝像頭接口以及鋰電池電量計芯片(未驗證)。
硬件設計簡易框圖
手機正面示意圖
手機正面是一塊280X240的TFT液晶屏和12顆按鍵,按鍵采用的是6x6x7.2貼片帶燈,套了數(shù)字按鍵帽,按鍵上的燈統(tǒng)一由Air724UG的一個PWM口控制。
側(cè)面是3顆側(cè)貼的輕觸按鈕,實現(xiàn)“上”、“下”、“開關機”功能。
底部是一個Type-C座和一個雙色LED。Type-C口用于電池充電以及程序燒入,并且可以連接到PC用于模擬U盤,模擬的U盤目錄指向手機上的SD卡。雙色LED用于指示充電狀態(tài),紅色表示充電,藍色表示充滿。
手機背面示意圖
手機背面為揚聲器位置開孔以及4個M2.5的固定孔位置。
整機結(jié)構(gòu)示意圖
PCB和整機實拍
3
軟件說明
軟件部分基于LuatOS-Air編寫,LuatOS-Air = Lua + AT,是合宙嵌入式操作系統(tǒng)LuatOS在蜂窩物聯(lián)網(wǎng)模組上推出的開源的二次開發(fā)框架。
LuatOS-Air開源倉庫:
https://gitee.com/openLuat/Luat_Lua_Air724U
LuatOS-Air將傳統(tǒng)的AT命令用Lua語言封裝成API,開發(fā)者可以通過調(diào)用API輕松便捷的實現(xiàn)SOCKET、MQTT、OTA、GPIO、I2C、SPI等功能。
軟件架構(gòu)框圖
紫光展銳8910平臺的Cat.1模塊底層core中跑的操作系統(tǒng)是FreeRTOS,core在啟動過程中,會創(chuàng)建一系列的task。例如:音頻、協(xié)議棧、串口等。
其中有一個task,用來加載Lua虛擬機,解析運行用戶編寫的Lua腳本,這個task我們稱之為Lua virtual task(另外在Lua腳本中,利用Lua的協(xié)程特性封裝了一個sys.taskInit接口,借用了task的概念,實際上并不是真正的task)。
腳本中的所有應用,都運行在Lua virtual machine task中,屬于單task應用。
SDK框圖
固件定制
本次工程代碼用到了VOLTE高清通話、LVGL、浮點運算以及模擬U盤等功能,官方發(fā)布的core不滿足需求,所以需要定制固件。
合宙官方提供了固件定制系統(tǒng),針對用戶不同功能使用場景,進行在線定制固件。滿足用戶功能定制化需求,同時也能最大化保留Lua運行和存儲空間。
固件定制鏈接:
http://erp.openluat.com/firm_customized
代碼編寫
代碼主要編寫app應用層腳本,我將代碼分為3個文件夾,分別為/main、/panel和/resources。
main文件夾部分是一些應用初始化以及UI加載等代碼;
panel文件夾部分是每個應用app界面代碼;
resources文件夾存放一些app圖標、控件圖片以及音頻文件,尺寸較大的圖片和文件存放在sd卡中。
IDE使用
IDE使用VSCode,下載LuatIDE以及相應的debug插件,可以通過USB口進行下載調(diào)試,具體教程可看@稀飯放姜這位大佬的B站視頻Luat開發(fā)視頻教程合集和合宙官網(wǎng)(https://doc.openluat.com/)提供的資料,本次項目也是參考了官網(wǎng)的昆侖鏡和iCool項目。
項目參考:
https://gitee.com/openLuat/Luat_Lua_Air724U/tree/master
UI設計
UI基于LVGL庫,LVGL是一個開源的圖形庫,它提供了創(chuàng)建嵌入式GUI所需的一切,具有易于使用的圖形元素、漂亮的視覺效果和低內(nèi)存占用的特點?;旧?,大部分控制器(需要能夠驅(qū)動顯示屏)都適合運行LVGL。
最低要求如下:
C語言版本的LVGL支持觸摸屏、鼠標、鍵盤、編碼器、按鈕等多種輸入設備,合宙官方提供的demo是基于觸摸屏的設計,移植到本工程改為按鍵輸入時找不到group相對應的api,不知道是不是Lua版本的LVGL還未支持。目前是為所有界面編寫了按鍵響應函數(shù),這導致控件配合的不是很好。
操作規(guī)則
開機動畫結(jié)束后進入主界面,頂部顯示手機卡狀態(tài)、當前時間以及電池電量。中間APP圖標排成一排,當前選中的APP在中間,按右側(cè)“↑”“↓”按鍵切換APP,按“*”鍵進入APP界面(當前切換動畫代碼未編寫,切換過程不太直觀),各APP界面功能看工程視頻。
原工程鏈接:
https://oshwhub.com/flyn/MiniPhone
4
軟硬件調(diào)試
硬件調(diào)試
由于Air724UG模塊背面有焊盤類似BGA,在焊接時需要借助加熱臺。先在焊盤上涂抹錫膏,放上模塊進行加熱,所以PCB板背面的元件先不要焊接!
焊好模塊周邊的元件以及USB口部分的元件,先燒入腳本進行測試模塊背面焊盤是否焊接良好。背面焊盤主要是按鍵和攝像頭以及LCD背光,攝像頭預留暫時未寫對應代碼暫時不管,想用的可以用官方的demo測試。
按鍵可以用線短接來模擬測試。
主板與LCD板通過1.27間距的雙排插座插針連接,這是為了檢修以及安裝方便。但是排針排座連接也增加了高度,為了參照按鍵的高度,我把LCD板上插針的黑色塑料部分拆了,剪短針長至4.5mm。
注意焊好后再去掉塑料部分是很困難的,在拔的過程中極有可能導致液晶屏損壞,所以最好先焊好排針最后焊液晶屏。
PCB板連接PC時需接上電池,否則TP4057可能工作不正常導致模塊啟不來。
軟件調(diào)試
可以通過LuaTools工具進入腳本燒入,具體燒入步驟可以參考@稀飯放姜大佬的B站視頻。
LuaTools下載地址:
https://wiki.luatos.com/pages/tools.html
手機側(cè)面的第二個按鈕是BOOT鍵,按住該鍵再重啟即可進入BOOT模式。同時板上接出了一個重啟按鍵,在裸板時可以協(xié)助調(diào)試。另外板上預留了串口接口,可以接出使用(未使用過,使用USB調(diào)試很方便)。
LuaTools工具可以打印日志,想輸出哪些信息在腳本里調(diào)用log.info()即可:
燒入腳本程序重啟后會發(fā)現(xiàn)沒有開機動畫,進入主界面也沒有背景等問題。這是因為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盤快速格式化一遍就行了。
5
總結(jié)和待實現(xiàn)功能
之前做的一些關于4G模塊的項目都是MCU+4G方案,初次了解到合宙的這種方案,感覺這是種趨勢,在性能和成本上都要好于常規(guī)方案,配套的LuatOS框架也很大的提升了開發(fā)效率。
Lua作為一種腳本語言,可以很容易的被C/C++代碼調(diào)用,也可以反過來調(diào)用C/C++的函數(shù),這使得Lua在應用程序中可以被廣泛應用。不僅僅作為擴展腳本,也可以作為普通的配置文件,代替XML、ini等文件格式,并且更容易理解和維護。
本工程實現(xiàn)了所要求的功能,但還有些小瑕疵:喇叭在播放一段時間后會出現(xiàn)雜音不清晰、主界面切換APP圖標有時會出現(xiàn)某一項圖標消失不顯示、長時間播放音樂手機會有發(fā)燙現(xiàn)象。后續(xù)等空閑時間的時候再改進吧。
還有一些功能后續(xù)也會添加:
比如錄音、Wi-Fi定位、攝像頭識別二維碼、掃碼支付、文件夾瀏覽等。(但是時間多久不定,勿cue)
原工程分享
本工程依據(jù)“CC-BY-NC-SA 4.0”知識共享許可協(xié)議,請勿用于商用,轉(zhuǎn)載時請標明出處。
-
手機
+關注
關注
35文章
6843瀏覽量
157313 -
4G
+關注
關注
15文章
5495瀏覽量
118718
發(fā)布評論請先 登錄
相關推薦
評論