1. 程式人生 > >嵌入式學習中較好的練手專案和課題整理(附程式碼資料、學習視訊和嵌入式學習規劃)

嵌入式學習中較好的練手專案和課題整理(附程式碼資料、學習視訊和嵌入式學習規劃)

0、引言

何為嵌入式?

        IEEE官方定義:Devices Used to Control,Monitor Assist the Operation of Equipment,Machinery or Plants。

翻譯過來就是:用於“控制、監視或者輔助操作機器和裝置的裝置”。

          其實按我理解,嵌入式系統就是“高大上+土豪”版的微控制器,因為嵌入式不只帶作業系統(OS),並且都是上架構(如ARM)的。其實咱們所用PC機也是一個嵌入式系統,只不過處理器、Bootloader、作業系統OS都是通用化的Intel系列、BIOS、Windows等;而面向具體應用,就需要根據需求,實現硬體資源和軟體作業系統的“私人訂製”

,無非就是先根據需求硬體選型,然後根據硬體資源去裁剪作業系統,把軟體不需要的都去掉,只留有用的,這樣保證我們用的系統在達到需求目標的同時,還保證了實時性穩定性(沒有無關因素干擾)並且小型化具有專用性

       再囉嗦幾句,假設大家對微控制器已經很熟了,舉個栗子:對微控制器引腳控制LED,用C程式設計通過IDE編譯個Hex檔案,燒寫就可以執行實現;那麼對嵌入式來說呢,因為處理器引腳太多(如Cortex-A9架構的Exynos4412晶片 有400多引腳),那麼自己一個個配(裸機程式設計)實在麻煩,而且編的程式都與硬體密切相關,沒有通用性且很難移植;因此就使用上了作業系統;那麼作業系統幹了什麼呢?其實就是和微控制器操作引腳一樣,只不過OS將這些操作封裝成各種驅動

(如GPIO驅動),那麼你只要在應用程式上呼叫這個驅動內的函式,藉助OS核心實現機制,就能向微控制器一樣操作這些引腳,所有嵌入式設計,底層都是這麼實現的。

      So, 怎麼判斷該用嵌入式還是微控制器呢:其實就是看需求,微控制器處理能力、可擴充套件性及其有限,涉及到影象監控處理、網路協議就捉襟見肘了;因此這個邏輯很簡單:微控制器不能實現的,上嵌入式;並且現在是個嵌入式功能都有成型的solution,特別是Linux的開源,資料成堆成堆的。這也是近年嵌入式(包括物聯網、智慧硬體)火這麼快的原因之一吧。

以上都是愚見,切入正題:本人不才整理了幾個嵌入式比較好的練手專案和小課題,有的是我之前做的專案,有的是網路蒐羅,反正都是我個人認為比較綜合而且interesting的,這些網上一大堆相關資料,我這裡只是提個題目和其中關鍵點,具體內容不贅述,感興趣直接百度google,希望給大家一個參照,大家有idea都可以相互交流,有機會共同學習,感謝。

1、微控制器相關

      這裡主要是推薦嵌入式相關,所以微控制器就只簡單提幾句

1.1 基於微控制器的智慧小車、智慧機器人制作

     對於大學經常參加一些智慧車比賽的童鞋,相信已經做吐了。。。小車目前可以算是相關資料最多的練手專案之一,各種腦洞大開的智慧車車,你值得擁有~

1.2 基於Arduino的3D列印機制作

需求:使用微控制器,通過限位開關和溫度等感測器控制步進電機移動、加熱頭,將列印材料加熱擠出後凝固成型。

硬體:Arduino mega2560開發板,3D印表機套件,列印材料,安裝工具等

軟體:Marlini開源程式,上位機軟體Print3D,切片軟體(推薦Cura),三維製圖軟體(推薦犀牛)等。

注:這個專案實現很費事,可謂處處是坑,不只是微控制器軟硬體知識,還要學三維製圖、機械原理等等,期間會遇到一系列問題,但是最終除錯完,第一次打出自己想要的東西時,感覺真是此生難忘,所以當時一做就做了三臺(下圖,其中左面上角是 Prusa I3 型,其餘那倆都是Kossel 三角洲)。推薦創客們玩玩,比四軸飛行器好玩多了(也省軟妹幣)。

    3D列印現在是所謂工業4.0的主打,特別是牛炸天的細胞列印(對你沒有看錯)、器官列印、粉末金屬列印等。不過我們做的也就列印些塑料小玩具,現在的SLA光敏樹脂列印倒挺不錯,能比FDM的快幾十倍,只是成本太貴(貌似10w+)。又扯遠了。。。咳咳,下面開始劃重點:

2、嵌入式Linux相關

      嵌入式Linux就是在嵌入式硬體平臺上使用Linux作業系統。其實嵌入式開發過程就是硬體+軟體設計過程,本節推薦的都是在一個目標硬體平臺上設計基於linux系統的應用,主要工作一般都是:Bootloader設計與移植、Linux核心裁剪移植、Linux驅動程式開發移植、檔案系統製作移植和最後的應用程式開發移植。說了這麼多移植它是什麼東東?我理解為:拿著別人寫好的東西,稍微自己改改放到自己的平臺上,其中的“改”和“放”的過程就是移植的過程。這也是嵌入式工程師必須具備的能力,一定要借鑑甚至使用別人做好的,自己悶頭寫程式碼只能閉門造車(大神除外)。

         推薦硬體平臺樹莓派(首推),友善之臂、飛凌等開發板(這些開發板自帶很多練手專案課題,網上也很多資料,本文就不再提那些case),架構最好選主流的ARM,像流行的s3c6410(ARM11)、s5pv210(A8)、exynos4412(A9)等。或者自己畫板子(使用現有開源出來的修改下,不過成本高,難度大),有興趣不妨一試,剛開始學習還是老實用開發板吧。

        推薦軟體平臺Linux2.6以上核心(2.6以下很多系統機制會不同)嵌入式系統,Github、開源中國和ChinaUnix上一堆開源的Linux驅動和小應用,宿主(PC)機最好使用Fedora、Ubuntu系統(如果使用虛擬機器VMware版本最好在9.0以上),Bootloader推薦使用U-Boot;檔案系統根據使用的Flash支援,用Busybox製作;人機介面用Qt。

如圖:

嵌入式系統層次結構

2.1智慧掃地機器人

       深藏不露的“掃地僧”,類似壁障設軌智慧小車,只不過有更多人性化功能,網上資料+自由發揮吧

2.2 智慧可穿戴類裝置:智慧安全頭盔

背景:在工廠或危化品儲存等場所,經常發生危害氣體洩漏,而由於環境、風力等因素,人們無法直接在固定位置檢測,而且有的氣體是無色無味,如何解決?其實最終目的還是保證工人的人身安全,這時候就體現出來智慧可穿戴裝置的價值。

需求:設計智慧安全頭盔,當檢測到有害氣體後震動報警,並將該危險地點通過GPS上傳到上位機顯示,生成一個有害氣體地圖(藉助Baidu API)以紅色標出危險地段。

2.3 智慧可穿戴類裝置:面向空巢老人/病人的智慧手環

需求:背景不用說,設計一個智慧手環(或其他裝置),檢測人身體的各項生命特徵,並且實時GPS傳輸老人位置,還具有跌倒報警、遇水報警等突發狀況向子女手機、伺服器端推送報警資訊。自由發揮,有些身體特徵檢測實現確實困難,但總有方法解決,市面已有這類產品。

2.4 物聯網智慧控制系統:家居、農業、醫療

這就是近年炒的最火的智慧家居、智慧農業等物聯網專案,其實都是屬於嵌入式智慧控制系統,無非就是底層感測器網路(如Zigbee)採集環境引數資料,傳給嵌入式閘道器,閘道器再傳給上位機伺服器,再加上遠端控制、視訊監控等。像這樣的題目很多很多,例如智慧溫室大棚控制系統、智慧家居系統、智慧醫院系統、智慧倉儲管理系統等等,其實都能歸結為一套系統,只不過根據應用領域有些不同細節。

 

注:這類課題難度適中,建議多人合作,分別負責感知層(感測器網路),閘道器層(嵌入式平臺),上位機應用層(Web伺服器、安卓App);至於雲端架構可以使用樂聯網、Yeelink等已實現好的物聯網平臺。總之多借鑑別人好的案例。

友情提示:可以先做底層採集溫度,傳給閘道器顯示並轉發到伺服器,這一路通了後面程式就好開發了。或者靈活變通,用嵌入式閘道器採集感測器(需移植感測器驅動到Linux核心),就不需要使用Zigbee等WSN了(如下圖)這也可以算是一個題目,都很open的,怎麼做你來定,只要腦中有idea,生活處處皆課題(簡直是自虐)。

2.5 基於Linux的嵌入式網路視訊監控系統

面向安防等應用中,具多個攝像頭同時視訊傳輸,為減少頻寬、提高視訊解析度和幀率,就需要使用編碼標準對視訊編碼後再傳輸,so做一個軟編碼器,我做過基於H.265的編碼(有興趣百度Lib265),這裡可以使用H.264(資料較多)其實原理很簡單,涉及到攝像頭驅動和編碼庫。還有上位機解碼軟體。

Linux網路伺服器可以使用開源的mjpg-streamer。(可以參照國嵌高階專案班視訊)

2.6 移動影象監控系統

      類似2.4, 例如國嵌高階專案班中就有介紹,多了一個入侵檢測。使用攝像頭抓取影象,通過Motion庫動態監控比對,一旦出現和前一個影象較大變化(如家中進來一個人),則立即拍照將照片傳到上位機,並報警等聯動。

    後面還包括安全檔案傳輸系統,嵌入式MP3兩個都是國嵌教程裡的專案,後面都有連結,我也是以前學習時候在網上找的,如有侵權等問題請告知

       另外:視訊影象做好了,就可以做很多應用,如現在比較牛的機器視覺,無損檢測、缺陷檢測等等。

2.7 基於TCP/IP的安全檔案傳輸系統(TLS/SSL)

    其實就是把Socket包通過OpenSSL的工具加密一下(TLS/SSL),再發送,然後接受端再解密。裡面用到了執行緒池,在企業專案會經常用到。

2.8 嵌入式MP3播放器

2.9 基於Qt的新能源汽車電池管理系統

    如題,使用Qt作為GUI顯示,實現對電池容量顯示和管理操作。較簡單,不過可擴充套件性強,大到汽車管理,再大一點還可以上升到車聯網。

2.10 嵌入式車載導航定位系統 Qt+GPS+Baidu Map

    GPS採集經緯度資料通過GPRS、WiFi無線傳輸到伺服器上,並藉助Baidu、Google提供的API進行精確定位。(還是那句話,借鑑網上現有的,自己開發難度Huge)

2.11 無人機

好吧,不得不又談四軸了,現在無人機導航送快遞、監控交通可謂前景廣大,有興趣創客可以做一個,網上各類資料,實現不難,但主要是燒錢….燒錢….錢…

Ps:買就要買好的模組,特別是圖傳和電調!,要麼一摔就….別問我怎麼知道的!

2.12 嵌入式VR、AR

VR/AR實際沒接觸過,不過很高大上的樣子,最近好多大牛公司在搞虛擬現實。感覺還是嵌入式影象處理+全景映象的應用吧,有興趣可以看看Google的產品。

2.13嵌入式結合AI、Machine Learning

此類課題必火!本質就是將機器學習、人工智慧等演算法,應用在嵌入式領域。AI將是嵌入式工程師的又一擇業選擇,未來必將處處AI,且處處嵌入式AI(如現在市面各類AI電器)。因為AI涉及到N多演算法,學習過程也能極大提高嵌入式er的演算法能力,網上也有好多大神編譯好的演算法模型可以借鑑,不過開始學習建議自己從無到有搭建演算法模型、找資料集訓練、交叉驗證最終移植髮布,有可能自己搭的模型效果不咋地,但這個過程我覺著還是能學到不少AI的精髓。。

本人這方面還是小白,目前正在學習,找到好的嵌入式AI資料再第一時間奉上。(前期可以看看吳恩達的視訊)

3、嵌入式Android相關

嵌入式Android開發,就相當於自己定製各種功能的手機一樣,因為Android系統釋出就是面向移動端裝置的,Android系統移植後也保留大量移動裝置應用。因為Android系統基於Linux核心,所以底層還是Linux的東西,但應用層就完全不一樣了,要在之前的基礎上開始學Java、JNI、Android程式設計,相關嵌入式資料也沒有Linux多,所以想開發還是有一些門檻的。

要說明的是:上述嵌入式Linux的專案,用嵌入式Android一樣開發,只不過平臺不一樣,用的Linux核心不太一樣而已,這時候如果真心想學,可以在上面專案做完後的基礎上,將你的專案移植到Android平臺。這裡要注意使用的Linux核心版本,缺少什麼就補什麼,如驅動、庫檔案等等,然後重新編譯移植核心

Android系統架構

 推薦硬體平臺樹莓派、友善之臂、飛凌等開發板,這裡一般的處理器就不行了,ARM11以下可能連安卓2.0系統都帶不動,So推薦使用Cortex-A9四核處理器或以上,否則系統卡頓…頓….

 推薦軟體平臺嵌入式Android2.3以上系統,宿主(PC)機最好不要用虛擬機器,我用真實Ubuntu,i5+8G記憶體的主機編譯Android5.0.2系統都編譯了8個多小時,推薦使用開發板廠家提供的已經編譯好的版本,不要重新一點點編譯;Bootloader和上章一樣,Linux核心3.0以上;人機介面直接用Android自帶的(嵌入式Android優勢)。

3.1 物聯網智慧控制系統:家居、農業、醫療

同上文一樣,只不過閘道器那一層換成Android平臺,個人感覺這個還是很有搞頭的,畢竟Android使用者群這麼大,大家跟熟悉,操作使用更方便。

這裡說到了 ,類似上章的題目,都可以把Linux平臺轉到Android平臺,所以這裡關於上面提到的題目就不再贅述。

3.2 嵌入式家庭保健系統

藉助Android良好的人際互動,開發整合智慧心率計、血壓計等檢查專案的嵌入式系統。

3.3 智慧電視TV、AR/VR眼鏡

就是家裡用的網際網路電視機頂盒,例如小米、樂視盒子,結合AR技術

需要支援HDMI音視訊輸出、VGA輸出、AV音視訊輸出、支援網口與WIFi、支援USB裝置(滑鼠鍵盤)、支援紅外裝置(遙控器)等。

3.4 自己定製的平板電腦、手機等

從底層或者上層應用定製自己的移動裝置,比如說更改開機介面為你的果照。。

4、裸機開發

“裸奔”挺難的,因為不使用作業系統,不光要整天和晶片datasheet打交道,還要深入處理器架構以及各類儲存機制。其實嚴格意義來講,我們之前搞微控制器也是屬於裸機開發。

如果是大神中的大神,上述的一些題目完全也可以用裸機開發出來,我沒有奔過,不敢妄自評測,所以只提供幾個小題目。

4.1 裸機實現串列埠通訊

4.2 裸機實現DMA方式SD卡讀寫

4.3 裸機是實現NANDFlash、EEPROM的操作(擦除、讀寫)

5、相關資料分享

福利來也

注:這些都是以前學嵌入式時候購買或者在網上找的,如有侵權等問題請告知刪除

連結:http://pan.baidu.com/s/1b0QLOy 密碼: 

連結:http://pan.baidu.com/s/1cDsqp4 密碼: (本文提到的很多專案原始碼和視訊)

連結:http://pan.baidu.com/s/1dFmNHxZ 密碼: 

連結:http://pan.baidu.com/s/1gfFPTIV 密碼: 

PS:一直稽核不過,考慮或許有不少涉及版權,就把連結密碼去了,所以需要資料的留言郵箱或者email我吧~(關注後回覆能更及時哦) 

歡迎轉載,Howie原創作品,本文地址:

謝謝