Arduino 生態(tài)系統(tǒng)使數(shù)百萬(wàn)對(duì)編程或處理器架構(gòu)知之甚少或一無(wú)所知的人可以輕松地進(jìn)行嵌入式開(kāi)發(fā)。該平臺(tái)變得如此流行,以至于有時(shí)很難讓學(xué)生甚至工程專(zhuān)業(yè)人士放下他們的 Arduino 并編寫(xiě)“真正的”嵌入式軟件。在這里,我們著眼于超越 Arduino 并將你的嵌入式軟件和系統(tǒng)開(kāi)發(fā)技能提升到新水平的五個(gè)技巧。
提示 #1 – 過(guò)渡到使用 mbed
人們可以考慮做的第一件事就是從 Arduino 過(guò)渡到 mbed 生態(tài)系統(tǒng)。Mbed 為 Arduino 開(kāi)發(fā)人員提供了從大部分 8 位或 16 位部件遷移到 32 位 Arm 架構(gòu)的機(jī)會(huì)。Mbed 支持更廣泛的微控制器開(kāi)發(fā)板,并提供更豐富的生態(tài)系統(tǒng)供開(kāi)發(fā)人員利用。事實(shí)上,mbed 開(kāi)發(fā)人員可以直接在云端在線(xiàn)開(kāi)發(fā)他們的軟件,或者以更傳統(tǒng)的方式在本地開(kāi)發(fā)。這打開(kāi)了在幾個(gè)不同的 IDE 中甚至直接在命令行中工作的選項(xiàng)。環(huán)境的變化將迫使開(kāi)發(fā)人員學(xué)習(xí)新技能并擴(kuò)大他們目前對(duì)軟件開(kāi)發(fā)的理解。大多數(shù) Arduino 開(kāi)發(fā)人員也知道 C++,并且由于 mbed 也是基于 C++ 的,因此對(duì)使用 mbed 會(huì)有一定程度的熟悉。
提示 #2 – 試試 MicroPython
有時(shí),開(kāi)發(fā)人員可能希望將自己推向完全未知的新領(lǐng)域。一種方法是完全擺脫 C/C++ 并嘗試使用 Python 開(kāi)發(fā)系統(tǒng)。對(duì)于微控制器開(kāi)發(fā)人員,MicroPython 是編寫(xiě) Python 代碼的首選工具。MicroPython 支持 Python 3.4 并提供移植到 C 的 Python 解釋器,以便它可以在微控制器上運(yùn)行。這允許開(kāi)發(fā)人員隨后編寫(xiě)簡(jiǎn)單的 Python 腳本并利用 MicroPython 庫(kù)和 API 快速輕松地開(kāi)發(fā)應(yīng)用程序。該選項(xiàng)提供了一種非常流行的新語(yǔ)言來(lái)學(xué)習(xí),并且抽象出硬件,因此嵌入式開(kāi)發(fā)人員不必掌握底層處理器架構(gòu)。
提示 #3 – 學(xué)習(xí)實(shí)時(shí) C++ 技術(shù)
有時(shí),Arduino 開(kāi)發(fā)人員可能對(duì)他們使用的硬件和他們使用的語(yǔ)言非常滿(mǎn)意。他們只是想擴(kuò)展他們的語(yǔ)言技能。在這種情況下,開(kāi)發(fā)人員不一定要超越 Arduino,而是學(xué)習(xí)編程技能,如果他們?cè)敢?,可以讓他們超?Arduino。一個(gè)很好的方法是學(xué)習(xí)實(shí)時(shí) C++ 編程技術(shù)。這將要求開(kāi)發(fā)人員更詳細(xì)地研究 C++ 語(yǔ)言并學(xué)習(xí)使用純虛函數(shù)、模板以及如何構(gòu)建可重用軟件等技術(shù)。
提示 #4 – 開(kāi)發(fā)你自己的驅(qū)動(dòng)程序代碼
如果開(kāi)發(fā)人員真的想了解底層硬件的工作原理,那么嘗試編寫(xiě)驅(qū)動(dòng)程序?qū)⑹亲叱?Arduino 舒適區(qū)的絕妙一步。編寫(xiě)驅(qū)動(dòng)程序需要了解處理器架構(gòu)、內(nèi)存映射以及要為其編寫(xiě)驅(qū)動(dòng)程序的外圍設(shè)備。嵌入式開(kāi)發(fā)人員仍然可以利用他們的 Arduino 板,但只是轉(zhuǎn)移到軟件堆棧中的較低級(jí)別。如果這聽(tīng)起來(lái)對(duì)你來(lái)說(shuō)很有趣,建議你先編寫(xiě)一個(gè)通用輸入/輸出驅(qū)動(dòng)程序,然后再編寫(xiě)一個(gè)可以發(fā)送和接收字符的 USART 驅(qū)動(dòng)程序。這可以進(jìn)一步編寫(xiě)一個(gè)循環(huán)緩沖區(qū)來(lái)存儲(chǔ)這些字符,如果你真的有野心,你可以編寫(xiě)自己的串行數(shù)據(jù)包協(xié)議和代碼來(lái)解碼和驗(yàn)證數(shù)據(jù)包。
提示 #5 – 探索 ESP32 生態(tài)系統(tǒng)
如果 Arduino 開(kāi)發(fā)人員正在尋求重大改變,他們可以完全改變語(yǔ)言和硬件并嘗試 ESP32 生態(tài)系統(tǒng)之類(lèi)的東西。ESP32 是一種 Wi-Fi/藍(lán)牙處理器模塊,每天都在越來(lái)越多的物聯(lián)網(wǎng)設(shè)備中使用。這些模塊本身很便宜,并提供與 Arduino 相當(dāng)?shù)拈_(kāi)源庫(kù)。不同之處在于庫(kù)是用 C 編寫(xiě)的,這使開(kāi)發(fā)人員可以更深入地了解硬件并提供更多的靈活性和控制力。相當(dāng)多的模塊也是多核的,可以為開(kāi)發(fā)人員學(xué)習(xí)和掌握更高級(jí)別的軟件復(fù)雜性。
結(jié)論
Arduino 為開(kāi)發(fā)人員提供了一個(gè)強(qiáng)大的生態(tài)系統(tǒng)來(lái)構(gòu)建快速原型并證明工程概念。但有時(shí),Arduino 不夠用,或者開(kāi)發(fā)人員可能需要突破極限,尋找新的挑戰(zhàn)來(lái)擴(kuò)展他們的技能。我們已經(jīng)探索了幾個(gè)超越 Arduino 的技巧,這些機(jī)會(huì)應(yīng)該磨練嵌入式開(kāi)發(fā)人員的軟件技能,進(jìn)入許多專(zhuān)業(yè)開(kāi)發(fā)人員工作的世界。