自制4G手機(jī)!電路代碼全開源!
2023-05-09 13:48:54閱讀量:7723
本文作者:立創(chuàng)開源硬件平臺 OSHWHub 用戶@flyn,禁止商用,未經(jīng)許可禁止轉(zhuǎn)載,點擊查看原文章
自制4G手機(jī),基于Air724UG模組,Lua開發(fā)語言設(shè)計。手機(jī)有7大功能,分別是——電話通信、短信發(fā)送、音樂播放、一鍵指定呼叫、開關(guān)機(jī)及定時休眠、游戲娛樂、U盤模擬。

2、功能描述
Ⅰ 電話通信
進(jìn)入電話app界面,輸入電話號碼,按“*”鍵撥出,按“#”鍵退出。
Ⅱ短信發(fā)送
進(jìn)入短信app界面,按右側(cè)“↑”“↓”按鍵切換到號碼框或短信框,在號碼框輸入電話號碼,在短信框按“0-9”數(shù)字按鍵切換短信內(nèi)容(消息列表存放在sd卡中的message.json文件里),按“*”號鍵發(fā)送,按“#”鍵退出
Ⅲ音樂播放
進(jìn)入音樂app界面,按右側(cè)“↑”“↓”按鍵切換mp3文件(文件保存在sd卡的music文件夾里),按“*”號鍵播放和停止,按“#”鍵停止并退出。
Ⅳ一鍵指定呼叫
在主界面,按“0-9”數(shù)字按鍵,直接進(jìn)入撥號界面并設(shè)置好對應(yīng)電話號碼,電話號碼列表存放在sd卡中的call list.json文件里,按“*”鍵撥出,按“#”鍵退出。
Ⅴ開關(guān)機(jī)及定時休眠
在關(guān)機(jī)狀態(tài),按住右側(cè)電源按鈕持續(xù)4秒手機(jī)開機(jī),并顯示開機(jī)動畫。
進(jìn)入主菜單后,按住右側(cè)電源按鈕持續(xù)2秒彈出關(guān)機(jī)確認(rèn)界面,按“*”號鍵關(guān)機(jī),按“#”鍵返回。
1分鐘無按鍵操作,手機(jī)屏幕和按鍵燈熄滅,進(jìn)入休眠狀態(tài)以降低功耗。
Ⅵ游戲娛樂
進(jìn)入游戲app界面,有一個小鳥游戲。用“*”號鍵控制小鳥上升,很簡單的一個游戲,按“#”鍵退出。
ⅦU盤模擬
手機(jī)接入電腦后會模擬出一個U盤,指向板上的sd卡,可以用來存放文件。
3、設(shè)計圖
原理圖(點擊進(jìn)入嘉立創(chuàng)EDA編輯器打開)
硬件上使用Air724UG模塊作為主控,所有外設(shè)都接在模塊上。
主板采用4層板,阻容基本上是0402封裝,整機(jī)外殼5X10cm,鋰電池容量為1500mAH。板上預(yù)留了攝像頭接口以及鋰電池電量計芯片(未驗證)。
手機(jī)正面是一塊280X240的tft液晶屏和12顆按鍵。按鍵采用的是6x6x7.2貼片帶燈,套了數(shù)字按鍵帽,按鍵上的燈統(tǒng)一由air724UG的一個pwm口控制。側(cè)面是3顆側(cè)貼的輕觸按鈕,實現(xiàn)“上”、“下”、“開關(guān)機(jī)”功能。
底部是一個Typec座和一個雙色LED:
typec口用于電池充電以及程序燒入,并且可以連接到PC用于模擬U盤,模擬的U盤目錄指向手機(jī)上的SD卡。雙色LED用于指示充電狀態(tài),紅色表示充電,藍(lán)色表示充滿。
背面揚聲器位置開孔以及4個M2.5的固定孔位置。
PCB和整機(jī)圖片
5、軟件說明
軟件部分基于LuatOS-Air編寫。LuatOS-Air = Lua + AT,是合宙嵌入式操作系統(tǒng)LuatOS在蜂窩物聯(lián)網(wǎng)模組上推出的開源的二次開發(fā)框架。
LuatOS-Air將傳統(tǒng)的AT命令用Lua語言封裝成API,開發(fā)者可以通過調(diào)用API輕松便捷的實現(xiàn)SOCKET、MQTT、OTA、GPIO、I2C、SPI等功能??蚣苋缦拢?/span>
其中有一個task,用來加載Lua虛擬機(jī),解析運行用戶編寫的Lua腳本,這個task,我們稱之為Lua virtual task。另外在Lua腳本中,利用Lua的協(xié)程特性封裝了一個sys.taskInit接口,借用了task的概念,實際上并不是真正的task。
腳本中的所有應(yīng)用,都運行在Lua virtual machine task中,屬于單task應(yīng)用。sdk框架如下:
本次工程代碼用到了VOLTE高清通話、LVGL、浮點運算以及模擬U盤等功能,官方發(fā)布的core不滿足需求,所以需要定制固件。
代碼主要編寫app應(yīng)用層腳本,我將代碼分為3個文件夾,分別為/main、/panel和/resources。
main文件夾部分是一些應(yīng)用初始化以及UI加載等代碼
panel文件夾部分是每個應(yīng)用app界面代碼resources文件夾存放一些app圖標(biāo)、控件圖片以及音頻文件,尺寸較大的圖片和文件存放在sd卡中。
IDE使用VSCode,下載luatIDE以及相應(yīng)的debug插件,可以通過usb口進(jìn)行下載調(diào)試。
UI基于LVGL庫,LVGL 是一個開源的圖形庫,它提供了創(chuàng)建嵌入式 GUI 所需的一切,具有易于使用的圖形元素、漂亮的視覺效果和低內(nèi)存占用的特點。
基本上,大部分控制器(需要能夠驅(qū)動顯示屏)都適合運行 LVGL。最低要求是:
目前是為所有界面編寫了按鍵響應(yīng)函數(shù),這導(dǎo)致控件配合的不是很好。
手機(jī)使用方法:開機(jī)動畫結(jié)束后進(jìn)入主界面,頂部顯示手機(jī)卡狀態(tài)、當(dāng)前時間以及電池電量。中間app圖標(biāo)排成一排,當(dāng)前選中的app在中間,按右側(cè)“↑”“↓”按鍵切換app,按“*”鍵進(jìn)入app界面(當(dāng)前切換動畫代碼未編寫,切換過程不太直觀)。
Ⅰ硬件調(diào)試
由于air724UG模塊背面有焊盤類似BGA,在焊接時需要借助加熱臺。
①先在焊盤上涂抹錫膏,放上模塊進(jìn)行加熱,所以PCB板背面的元件先不要焊接!
②焊好模塊周邊的元件以及usb口部分的元件,先燒入腳本進(jìn)行測試模塊背面焊盤是否焊接良好。
③背面焊盤主要是按鍵和攝像頭以及l(fā)cd背光,攝像頭預(yù)留暫時未寫對應(yīng)代碼暫時不管,想用的可以用官方的demo測試。
④按鍵可以用線短接來模擬測試。
⑥注意焊好后再去掉塑料部分是很困難的,在拔的過程中極有可能導(dǎo)致液晶屏損壞,所以最好先焊好排針最后焊液晶屏。
⑦PCB板連接PC時需接上電池,否則TP4057可能工作不正常導(dǎo)致模塊啟不來。
Ⅱ軟件調(diào)試
可以通過LuaTools工具進(jìn)入腳本燒入。
手機(jī)側(cè)面的第二個按鈕是boot鍵,按住該鍵再重啟即可進(jìn)入boot模式。
板上接出重啟按鍵,在裸板時可以協(xié)助調(diào)試。板上預(yù)留串口接口,可以接出使用(未使用過,使用usb調(diào)試很方便)。
LuaTools工具可以打印日志,想輸出哪些信息在腳本里調(diào)用log.info()即可。
用usb接上PC,會在PC端彈出一個U盤,該U盤指向的就是手機(jī)上的sd卡,將附件提供的music文件、message.json、call list.json、wallpaper.png、wallpaper2.png和startup animation.gif放入U盤,再重啟就可以了。
如果PC端有提示U盤但是打不開,可能是sd卡格式損壞,將U盤快速格式化一遍就行了。

7、總結(jié)和待實現(xiàn)功能
本工程實現(xiàn)了所要求的功能,但還有些小瑕疵:喇叭在播放一段時間后會出現(xiàn)雜音不清晰、主界面切換app圖標(biāo)時有時會出現(xiàn)某一項圖標(biāo)消失不顯示、長時間播放音樂手機(jī)會有發(fā)燙現(xiàn)象。
后續(xù)等空閑時間的時候再改進(jìn)吧,還有一些功能后續(xù)也會添加,比如錄音、wifi定位、攝像頭識別二維碼、掃碼支付、文件夾瀏覽等。(但是時間多久不定,勿cue)
更多詳情及附件,可從原工程查看。
本文作者:立創(chuàng)開源硬件平臺 OSHWHub 用戶@flyn,禁止商用,未經(jīng)許可禁止轉(zhuǎn)載

L7805CV-DG/線性穩(wěn)壓器(LDO) | 0.5401 | |
AMS1117-3.3/線性穩(wěn)壓器(LDO) | 0.1237 | |
BAT54C,215/肖特基二極管 | 0.0336 | |
LM358DR2G/運算放大器 | 0.345 | |
CJ431/電壓基準(zhǔn)芯片 | 0.1157 | |
LM393DR2G/比較器 | 0.3153 | |
ADUM4160BRWZ-RL/隔離式USB芯片 | 34.83 | |
REF3012AIDBZR/電壓基準(zhǔn)芯片 | 0.9316 | |
SS8050/三極管(BJT) | 0.035 | |
8S005/錫膏/錫漿 | 17.67 |
- SM Switch無錫斯茂:電子開關(guān)專業(yè)制造商
- 震東電子:一站式電感解決方案
- 用立創(chuàng)開發(fā)板,做了個AI小電視!能聊天,能翻譯……
- 中芯國際,利潤暴漲!
- XBLW/芯伯樂產(chǎn)品應(yīng)用在數(shù)字萬用表上的開發(fā)設(shè)計
- 鴻利智匯:成為LED車燈國產(chǎn)化堅定擁護(hù)者
- STM32F103C8T6和GD32F103C8T6有啥區(qū)別?
- 原來小米的屏幕,放大后長這樣!我做了個電子顯微鏡……
- 動態(tài)心電圖設(shè)備存儲解決方案:STM32L431RCT6主芯片與貼片式TF卡
- 航順:32位MCU HK32F005顛覆市場格局