各位工程師朋友,大家好!我是電子風(fēng)清揚(yáng),本期“來(lái)實(shí)戰(zhàn)”項(xiàng)目《寵物自動(dòng)喂食器》的執(zhí)行官。先做一個(gè)簡(jiǎn)單的自我介紹,我是一名懷揣著夢(mèng)想的新一代嵌入式軟件工程師,目前從事物聯(lián)網(wǎng)設(shè)備的開(kāi)發(fā)。一路自學(xué)過(guò)來(lái),走過(guò)很多的彎路,也曾經(jīng)無(wú)數(shù)次迷茫過(guò),找不到學(xué)習(xí)的方向。我很了解一個(gè)電子初學(xué)者在剛剛開(kāi)始時(shí)的艱辛,不知道學(xué)什么,怎么去學(xué),不知道實(shí)際工作中需要具備什么能力。希望可以通過(guò)本次的項(xiàng)目來(lái)幫助更多的新人了解什么是真正的實(shí)戰(zhàn)項(xiàng)目,需要具備哪些能力,幫助更多的電子初學(xué)者找到學(xué)習(xí)的方向,更順利的進(jìn)入這個(gè)行業(yè),為電子行業(yè)做出一份自己的貢獻(xiàn)。
我會(huì)在這次的項(xiàng)目中,逐步為大家分享一些工程項(xiàng)目的經(jīng)驗(yàn)、調(diào)試技巧、如何打造一套屬于自己的嵌入式軟件開(kāi)發(fā)平臺(tái)。也希望大家可以通過(guò)本次的項(xiàng)目找到以下這些問(wèn)題在自己心目中的答案。
1、為什么很多電子初學(xué)者不會(huì)做項(xiàng)目?
初始階段掌握的技術(shù)還太少,沒(méi)有形成完整的知識(shí)體系,也并沒(méi)有見(jiàn)過(guò)真正的項(xiàng)目(涉及到保密問(wèn)題,很多項(xiàng)目并不會(huì)開(kāi)源)。僅有的技術(shù)完全限制了自己的想象力,一旦遇到自己不會(huì)的技術(shù)就會(huì)想盡辦法回避,不愿意去學(xué)習(xí)。久而久之造成了惡性循環(huán),思路越來(lái)越窄,越來(lái)越迷茫,最后走上了從入門(mén)到放棄的道路。
2、為什么說(shuō)單片機(jī)只是一個(gè)工具?
在一個(gè)項(xiàng)目中,它只是代替人來(lái)處理各種電信號(hào),處理數(shù)據(jù),完成對(duì)電路控制。它只是項(xiàng)目中的一部分,想完成一個(gè)完整的項(xiàng)目?jī)H有單片機(jī)是遠(yuǎn)遠(yuǎn)不夠的。
3、真正的工程代碼應(yīng)該是什么樣的?
模塊化、層次分明、面向?qū)ο蟆⒘己玫臄?shù)據(jù)結(jié)構(gòu)、清晰的業(yè)務(wù)邏輯、可維護(hù)性。
4、項(xiàng)目的開(kāi)發(fā)流程,以及人員分工?
· 實(shí)現(xiàn)哪些功能:確定需求
· 需要哪些器件:元器件選型
· 如何控制器件:電路設(shè)計(jì)
· 如何實(shí)現(xiàn)需求:編程(數(shù)據(jù)結(jié)構(gòu)、業(yè)務(wù)邏輯)
· 方案可行嗎?:軟硬件結(jié)合
· 產(chǎn)品可以投產(chǎn)么?:現(xiàn)場(chǎng)測(cè)試,老化
· 如何轉(zhuǎn)產(chǎn)?:整理整個(gè)項(xiàng)目的相關(guān)文件
· 賣出去了壞了怎么辦?:整理維修相關(guān)的技術(shù),形成標(biāo)準(zhǔn)文件
書(shū)歸正傳,開(kāi)始介紹本次的項(xiàng)目。本次的項(xiàng)目希望打造一款寵物自動(dòng)喂食器,解放鏟屎官。項(xiàng)目計(jì)劃按以下功能點(diǎn)來(lái)進(jìn)行:
1、具備定時(shí)定量喂食功能(每周喂食曲線,每天喂食的時(shí)段,每個(gè)時(shí)段的百分比可調(diào)節(jié)),實(shí)現(xiàn)不同階段的喂食需求。
2、自動(dòng)完成對(duì)喂食情況的統(tǒng)計(jì),方便鏟屎官查看一段時(shí)間喂食的情況,結(jié)合寵物的體態(tài)信息進(jìn)行健康判斷,以及調(diào)整喂食量減少浪費(fèi)。
3、自動(dòng)保持飲水盆中的飲水量,對(duì)每次的飲水量以及時(shí)間進(jìn)行記錄。
4、對(duì)料倉(cāng)中的喂料量進(jìn)行監(jiān)測(cè),在料倉(cāng)中飼料量不足時(shí)提醒鏟屎官及時(shí)補(bǔ)充。
5、對(duì)水倉(cāng)中的水量進(jìn)行監(jiān)測(cè),在水倉(cāng)中飼喂量不足時(shí)提示鏟屎官及時(shí)補(bǔ)充。
6、警戒線的閾值可調(diào)。
7、良好的人機(jī)交互界面設(shè)計(jì)。
8、可以連接WIFI,將數(shù)據(jù)上傳到服務(wù)器。(視時(shí)間而定,如果時(shí)間緊張,延后開(kāi)發(fā))
9、手機(jī)APP端完成信息查看,控制喂食。(視時(shí)間而定,如果時(shí)間緊張,延后開(kāi)發(fā))
視頻內(nèi)容截圖:
項(xiàng)目設(shè)計(jì)
步驟1:確定項(xiàng)目電路原理圖
視頻內(nèi)容截圖:
相信LM2596是廣大電子愛(ài)好者熟悉的一款降壓型電源管理芯片了。LM2596系列是德州儀器(TI)生產(chǎn)的3A電流輸出降壓開(kāi)關(guān)型集成穩(wěn)壓芯片,它內(nèi)含固定頻率振蕩器(150KHZ)和基準(zhǔn)穩(wěn)壓器(1.23v),并具有完善的保護(hù)電路、電流限制、熱關(guān)斷電路等。利用該器件只需極少的外圍器件便可構(gòu)成高效穩(wěn)壓電路。提供的有:3.3V、5V、12V及可調(diào)(-ADJ)等多個(gè)電壓檔次產(chǎn)品。相關(guān)芯片數(shù)據(jù)手冊(cè),請(qǐng)點(diǎn)擊文末“相關(guān)芯片與數(shù)據(jù)手冊(cè)”進(jìn)行下載閱讀。
此外,我們項(xiàng)目需要用到的電源有3.3V、5V、12V,所以我們采用19V(15V-24V)筆記本充電電源供電以及電池組成的UPS系統(tǒng)進(jìn)行供電。將設(shè)計(jì)兩個(gè)LM2596模塊,一個(gè)5V,一個(gè)12V。查詢數(shù)據(jù)手冊(cè),我們得到Demo電路圖如下:
……
(由于篇幅限制只呈現(xiàn)部分內(nèi)容,點(diǎn)擊“閱讀原文”瀏覽完整項(xiàng)目方案)
步驟2:軟件平臺(tái)搭建
視頻內(nèi)容截圖:
第二個(gè)步驟給大家?guī)?lái)本次項(xiàng)目的嵌入式軟件平臺(tái)的建設(shè)思路,本次的嵌入式軟件平臺(tái)分為四層。
1、MyLib:底層驅(qū)動(dòng)代碼—>硬件抽象層
本層在C語(yǔ)言的平臺(tái)下,盡可能的實(shí)現(xiàn)面向?qū)ο蟮乃枷搿1敬蔚钠脚_(tái)借鑒了高煥堂先生提出的OOPC的思想,并在此基礎(chǔ)上進(jìn)行了改進(jìn),特此聲明。本次描述可能大家一開(kāi)始看的不太清楚,后續(xù)我會(huì)出一個(gè)專題課程來(lái)講解本次的平臺(tái)設(shè)計(jì)思想,敬請(qǐng)期待。
本次平臺(tái)MyLib層,從兩個(gè)角度出發(fā),一個(gè)是個(gè)人角度,一個(gè)是公司角度。
個(gè)人:
· 個(gè)人技術(shù)以及研發(fā)經(jīng)驗(yàn)的積累;
·減少重復(fù)性勞動(dòng),已經(jīng)開(kāi)發(fā)好的模塊進(jìn)行重復(fù)調(diào)用;
·加快個(gè)人的研發(fā)進(jìn)度;
·提升自我的編程能力以及研發(fā)境界;
公司:
·平臺(tái)化代碼,集中全公司研發(fā)力量;
·實(shí)現(xiàn)公司業(yè)務(wù)代碼的積累,研發(fā)技術(shù)的積累;
步驟3:焊接和硬件測(cè)試
全網(wǎng)第一份手動(dòng)移植TouchGFX視頻教程,不使用CubeMX!!!
在本次的項(xiàng)目中GUI采用了最新的TouchGFX,放棄了已經(jīng)使用多年的emwin。一個(gè)原因是因?yàn)門(mén)ouchGFX以后的使用是免費(fèi)的了,而且界面華麗酷炫;另一個(gè)原因也是對(duì)自己的一個(gè)挑戰(zhàn),在資料非常稀少的情況下能否挑戰(zhàn)成功。本期視頻我將介紹移植過(guò)程中的重點(diǎn)以及注意事項(xiàng),帶領(lǐng)大家感受一下TouchGFX的威力。
很慶幸又一次堅(jiān)持了下來(lái),期間無(wú)數(shù)次想過(guò)放棄,最終還是靠著意志力堅(jiān)持了下來(lái)。當(dāng)成功的那一刻,我發(fā)覺(jué)自己又成長(zhǎng)了。其實(shí)能力的提升就是在這一次次的挑戰(zhàn)中,查閱資料、仔細(xì)分析原因、查找解決方案。在這個(gè)過(guò)程中鍛煉自己的學(xué)習(xí)能力,不斷完善自己的知識(shí)體系。而當(dāng)你完成了一次次的挑戰(zhàn)后,那么你將不再懼怕接觸新鮮的事物,離成為大佬又近了一步。
1、新建文件夾
2、添加必要的移植接口文件
3、添加touchgfx_lib
4、修改OSWrapper.cpp改為使用RT-Thread
5、修改BoardConfiguration.cpp
注意要開(kāi)啟CRC,否則會(huì)進(jìn)硬件錯(cuò)誤!!!
初始化SDRAM
初始化LTDC
注意這里要編寫(xiě)LTDC中斷服務(wù)函數(shù)
7、初始化touchgfx
修改DMA
8、觸摸移植
9、生成touchgfx工程
新建TouchGFX文件夾,用來(lái)存放touchgfx工程
……
……
(由于篇幅限制只呈現(xiàn)部分內(nèi)容,點(diǎn)擊“閱讀原文”瀏覽完整項(xiàng)目方案)
步驟4:開(kāi)發(fā)項(xiàng)目需求和系統(tǒng)整體測(cè)試
關(guān)于上期視頻留下的“坑”,我這次也填上了!(關(guān)于編譯出現(xiàn)不通過(guò)的情況,我找到原因并解決了!)
Q:上次編譯為什么沒(méi)通過(guò)?
A:因?yàn)橹霸趧h除東西的時(shí)候,誤操作將環(huán)境變量也刪掉了,導(dǎo)致編譯不能通過(guò)。
Q:我是如何解決的呢?
A:重新給電腦裝了系統(tǒng),然后順手將軟件都重新安裝了一下,現(xiàn)在可以正常編譯通過(guò)。
本期視頻主要展示本次項(xiàng)目中圖形界面的最新進(jìn)展。
我新增并實(shí)現(xiàn)了幾個(gè)交互效果,以此來(lái)對(duì)touchgfx在項(xiàng)目中的應(yīng)用進(jìn)行一個(gè)評(píng)估,視頻里也有詳細(xì)得講解我是如何實(shí)現(xiàn)這些效果的。
接下來(lái)先用圖文為大家梳理一下本期重點(diǎn):(此次采用自問(wèn)自答的方式)
一、控件的種類是否足夠支撐項(xiàng)目的需求和使用
二、自定義控件如何使用
三、UI和硬件交互是否便捷,人機(jī)交互設(shè)計(jì)是否方便
……
(由于篇幅限制只呈現(xiàn)部分內(nèi)容,點(diǎn)擊“閱讀原文”瀏覽完整項(xiàng)目方案)
整個(gè)實(shí)際操作視頻如下:
步驟5:機(jī)器各結(jié)構(gòu)搭建與組裝
這期視頻為大家進(jìn)一步講解在設(shè)計(jì)人機(jī)交互界面之前的準(zhǔn)備工作。
為了完成字符以及數(shù)字的輸入,這里就需要用到鍵盤(pán)。
不過(guò)遺憾的是目前鍵盤(pán)控件還不能直接在TouchGFX_Designer中直接加入,需要我們通過(guò)代碼進(jìn)行手動(dòng)加入。
在官方提供的demo中只是把字符顯示在了鍵盤(pán)上的text控件上,并沒(méi)有提供對(duì)外的輸出接口,同時(shí)獲取輸入的時(shí)候也需要我們來(lái)實(shí)現(xiàn)。
那么讓我們開(kāi)始這一期的知識(shí)點(diǎn)梳理吧!
1、添加文件到工程下
2、導(dǎo)入鍵盤(pán)素材
導(dǎo)入后可以在touchgfx_designer中看到
3、引用頭文件并創(chuàng)建鍵盤(pán)
4、UI界面設(shè)計(jì)
注冊(cè)回調(diào)函數(shù),來(lái)顯示鍵盤(pán)
因?yàn)殒I盤(pán)不支持拖動(dòng)和隱藏,所以先創(chuàng)建鍵盤(pán)到看不見(jiàn)的地方
實(shí)現(xiàn)彈出效果和文本更新與保存
實(shí)現(xiàn)好了鍵盤(pán)之后,還需要我們實(shí)現(xiàn)一個(gè)拖動(dòng)切換的菜單。
再一次需要表示遺憾的是:我們的TouchGFX_Designer中并不能完全完成設(shè)計(jì)工作,還是需要我們手動(dòng)來(lái)完成圖標(biāo)的更新。
從這些天的使用來(lái)看,這款GUI的設(shè)計(jì)器還有很長(zhǎng)一段路要走,這一點(diǎn)相比于GUIX就要差了一些。
不過(guò)從長(zhǎng)遠(yuǎn)的角度來(lái)看,這款GUI有自己的特色,逐漸發(fā)展完善,相信它一定會(huì)成為人機(jī)交互開(kāi)發(fā)的一把利器。
然后為我們所用!我們要做的就是此時(shí)此刻去“征服”它!
那么接下來(lái)還是手動(dòng)去完成圖標(biāo)的更新:
1、創(chuàng)建一個(gè)自定義控件
2、創(chuàng)建scrollList
3、設(shè)置參數(shù)
4、編寫(xiě)代碼(由于篇幅有限,這里僅展示部分代碼)
整個(gè)流程如何操作的視頻如下:
下面開(kāi)始我們本次項(xiàng)目的UI界面規(guī)劃
步驟6:硬件電路整體展示
本次給大家?guī)?lái)我們“寵物投食器”的硬件電路整體的展示。
我解釋一下啊,由于采購(gòu)部分器件的時(shí)候,發(fā)生缺料,我目前用3D展示給大家,直觀又好看~
本次電路的整體3D效果:
電源板的3D效果:
PCB板圖片
控制板拓展了網(wǎng)口、WIFI模塊接口、USB接口、串口可以滿足很多項(xiàng)目的開(kāi)發(fā),可以將這個(gè)板作為開(kāi)發(fā)板使用。
電源板
平時(shí)可以給主板供電,同時(shí)為電池進(jìn)行充電,當(dāng)外部電源被切斷時(shí)自動(dòng)切換到電池供電,保證系統(tǒng)在意外斷電時(shí)可以正常工作。
關(guān)于更多細(xì)節(jié)部分的講解,請(qǐng)大家移步我最近更新的視頻里:
步驟7:人機(jī)交互界面規(guī)劃實(shí)現(xiàn)
責(zé)任編輯:lq
-
人機(jī)交互
+關(guān)注
關(guān)注
12文章
1211瀏覽量
55444 -
單片機(jī)
+關(guān)注
關(guān)注
6040文章
44589瀏覽量
636802 -
嵌入式軟件
+關(guān)注
關(guān)注
4文章
240瀏覽量
26671
原文標(biāo)題:《來(lái)實(shí)戰(zhàn)》之寵物喂食器:交互界面控件設(shè)計(jì)與硬件電路整體演示(3D展示)
文章出處:【微信號(hào):cirmall,微信公眾號(hào):電路設(shè)計(jì)技能】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論