互聯(lián)設(shè)備是IoT的核心。設(shè)備會(huì)收集數(shù)據(jù)并監(jiān)控參數(shù)。從工業(yè)設(shè)備、建筑物和汽車,到動(dòng)物、貨物運(yùn)輸、管道和人員,互聯(lián)設(shè)備無(wú)處不在。硬件和軟件部分是通過(guò)標(biāo)準(zhǔn)設(shè)計(jì)協(xié)議為IoT應(yīng)用程序設(shè)計(jì)的:規(guī)范開(kāi)發(fā)、概念設(shè)計(jì)、原型、測(cè)試,以及集成到網(wǎng)絡(luò)中的硬件和軟件的部署。一些平臺(tái),如Arduino和RaspberryPi,可以加快設(shè)計(jì)以及快速進(jìn)行原型構(gòu)建,而無(wú)需定制,從而縮短實(shí)施IoT配置的時(shí)間。
設(shè)計(jì)需要確定性能需求,實(shí)現(xiàn)這些要求所必需的硬件和軟件,然后是組件的規(guī)格(商用現(xiàn)成(COTS)設(shè)計(jì)或定制設(shè)計(jì)),并適當(dāng)考慮到運(yùn)行環(huán)境及其內(nèi)部使用的應(yīng)用。
在我們談到IoT時(shí),設(shè)備是指任何獲取信息和傳輸信息的物件。例如,管道內(nèi)的壓力傳感器,冷藏軌道車內(nèi)的溫度傳感器,或分布在母牛皮膚下的微小芯片,這些都是設(shè)備。設(shè)備可能獨(dú)立運(yùn)行,也可能與其他設(shè)備同步工作。
在本文中,我將回顧一些現(xiàn)成的硬件選項(xiàng),以及在選擇這些硬件開(kāi)發(fā)下一個(gè)IoT項(xiàng)目時(shí)需要考慮的一些因素。
用于為IoT項(xiàng)目設(shè)計(jì)原型的現(xiàn)有硬件類型
開(kāi)發(fā)IoT應(yīng)用程序變得更容易了,這得益于越來(lái)越多現(xiàn)有的低成本、商業(yè)性硬件開(kāi)發(fā)板、平臺(tái)和原型設(shè)計(jì)工具包。模塊化的硬件設(shè)計(jì)使得開(kāi)發(fā)IoT應(yīng)用程序更加靈活。隨著零部件選擇的增多,設(shè)計(jì)師可以更換不同規(guī)格的新傳感器。或者,您可以獨(dú)立地升級(jí)設(shè)備的網(wǎng)絡(luò)、數(shù)據(jù)處理或存儲(chǔ)模塊,以滿足不斷變化的需求。
包括微控制器和單板計(jì)算機(jī)在內(nèi)的許多現(xiàn)有的商業(yè)性硬件設(shè)備,都是圍繞單芯片系統(tǒng)(SoC)集成電路而設(shè)計(jì)。SoC將數(shù)據(jù)處理、存儲(chǔ)和聯(lián)網(wǎng)等功能集成到一個(gè)芯片上。這種配置意味著,您會(huì)犧牲一些靈活性來(lái)?yè)Q取便捷性,但幸運(yùn)的是,有大量具有一系列配置的商業(yè)性設(shè)備可供選擇。例如,表1列出了選擇用于IoT項(xiàng)目原型設(shè)計(jì)的微控制器的技術(shù)規(guī)格,并對(duì)3種常見(jiàn)的單板計(jì)算機(jī)(SBC)進(jìn)行了比較。
微控制器開(kāi)發(fā)板
微控制器是一種提供數(shù)據(jù)處理和存儲(chǔ)功能的SoC。微控制器包括一個(gè)(或多個(gè))處理器內(nèi)核、內(nèi)存(RAM),以及用于存儲(chǔ)在微控制器上運(yùn)行的自定義程序的可擦除可編程只讀存儲(chǔ)器(EPROM)。微控制器開(kāi)發(fā)板屬于PCB,但增加了額外的電路來(lái)支持微控制器,使對(duì)芯片進(jìn)行原型設(shè)計(jì)和編程變得更方便。
傳感器和執(zhí)行器通過(guò)數(shù)字或模擬通用輸入/輸出(GPIO)引腳或通過(guò)硬件總線連接到微控制器。I2C和SPI等標(biāo)準(zhǔn)通信協(xié)議用于與總線上連接的組件進(jìn)行設(shè)備內(nèi)通信。通過(guò)采用各種標(biāo)準(zhǔn),可以更容易地添加或替換與總線連接的組件。
Arduino是一個(gè)開(kāi)源設(shè)備平臺(tái),其制造兼容開(kāi)發(fā)板和工具的社區(qū)十分活躍。不同官方Arduino型號(hào)的設(shè)備功能不同,數(shù)十種第三方兼容電路板的設(shè)備功能也有差異。表1中的設(shè)備都是兼容Arduino的微控制器,包括無(wú)處不在的ArduinoUno、Particle的Electron(其中集成了一個(gè)蜂窩式調(diào)制解調(diào)器),以及EspressifSystems集成了WiFi的低成本、低功耗微控制器ESP8266-01。
像Arduino一樣,ESP8266擁有一個(gè)活躍的采用者社區(qū)?;贓SP8266的著名開(kāi)發(fā)板包括NodeMCU、WeMosD1以及AdaFruit的FeatherHuzzah。開(kāi)源和制造者社區(qū)已為基于ESP8266的開(kāi)發(fā)板開(kāi)發(fā)了許多備選固件,使IoT開(kāi)發(fā)者能使用Lua、Python和JavaScript為這些開(kāi)發(fā)板編程,并支持無(wú)線(OTA)更新。
表1:ArduinoUno、ParticleElectron和EspressifSystemsESP8266-01微控制器技術(shù)規(guī)格
要開(kāi)發(fā)在兼容Arduino的微控制器上運(yùn)行的軟件,標(biāo)準(zhǔn)方法是使用C或C++和ArduinoIDE,但是也有一些社區(qū)開(kāi)發(fā)的語(yǔ)言綁定和可視編程工具。具有相同引腳布局且兼容Arduino的開(kāi)發(fā)板能使用可選的第三方孔壁進(jìn)行擴(kuò)展,例如為了向ArduinoUno添加以太網(wǎng)端口或藍(lán)牙。Arduino是采用最廣泛的業(yè)余愛(ài)好者微控制器開(kāi)發(fā)環(huán)境,但像Tessel這樣的開(kāi)發(fā)環(huán)境原生支持JavaScript,而MicroPython的PyBoard和WeIO等開(kāi)發(fā)板則支持Python。
選擇兼容Arduino的微控制器,更容易將使用跨平臺(tái)Arduino庫(kù)和ArduinoIDE開(kāi)發(fā)的程序移植到其他兼容Arduino的設(shè)備上運(yùn)行。仍然需要仔細(xì)斟酌并體會(huì)細(xì)微差異。
例如,ArduinoUno使用數(shù)字I/O引腳上的5V邏輯電壓(其中0V等于LOW或OFF,5V等于HIGH或ON),但ESP8266和Particle開(kāi)發(fā)板使用3.3V邏輯電壓(3.3V表示HIGH)。這可能影響您對(duì)傳感器或執(zhí)行器組件的選擇,因?yàn)橐恍┙M件僅適用于某一種開(kāi)發(fā)板。將針對(duì)5V邏輯電壓設(shè)計(jì)的傳感器替換為3.3V邏輯電壓的傳感器可能會(huì)導(dǎo)致意外結(jié)果,也可能損壞經(jīng)受不住更高電壓的引腳,所以您需要添加一個(gè)邏輯電平轉(zhuǎn)換器才能使移植奏效。在實(shí)現(xiàn)低電平硬件功能時(shí),比如啟用深度睡眠模式或使用特定協(xié)議從連接的傳感器讀取數(shù)據(jù),可能需要依靠特定于設(shè)備或組件的庫(kù),這些庫(kù)會(huì)導(dǎo)致代碼更不容易移植。
單板計(jì)算機(jī)
單板計(jì)算機(jī)(SBC)比微控制器更進(jìn)一步。它們?cè)试S連接鍵盤、鼠標(biāo)和屏幕等外圍設(shè)備,并提供了更多內(nèi)存和更強(qiáng)的處理能力(例如,表2提供了1.2GHz32位ARM微處理器,而表1僅提供了8位16KHz微控制器)。表2列出了以下三個(gè)SBC的技術(shù)規(guī)格:RaspberryPi4、BeagleBoneBlack和DragonBoard410c。
微控制器與單板計(jì)算機(jī)之間的區(qū)別沒(méi)有固定標(biāo)準(zhǔn)。一些設(shè)備介于二者之間,比如OnionOmega2的板載內(nèi)存和處理能力與低端SBC相當(dāng)。還有一些混合設(shè)備,比如UDOOQuad,它將基于ARM的Linux系統(tǒng)與兼容Arduino的微控制器相集成。
表2:RaspberryPi4、BeagleBoneBlack和DragonBoard3種SBC的技術(shù)規(guī)格
與微控制器一樣,SBC設(shè)備功能也可通過(guò)增加可堆疊的開(kāi)發(fā)板來(lái)擴(kuò)展,這些開(kāi)發(fā)板在RaspberryPi上被稱為hat,在BeagleBoneBlack上被稱為cape,還可以通過(guò)增加電動(dòng)機(jī)控制器或模數(shù)轉(zhuǎn)換器等外部模塊來(lái)擴(kuò)展開(kāi)發(fā)板,減輕設(shè)備內(nèi)置功能的限制。
許多SBC設(shè)備更像一臺(tái)微型PC,而且運(yùn)行著嵌入式操作系統(tǒng)(通常是簡(jiǎn)化的Linux發(fā)行版)。因此,與微控制器開(kāi)發(fā)板相比,對(duì)于這些設(shè)備上連接的傳感器和執(zhí)行器,要開(kāi)發(fā)用于它們的嵌入式應(yīng)用程序,有更多開(kāi)發(fā)工具和語(yǔ)言可供選擇。但是,SBC的設(shè)置更復(fù)雜、更大、能耗更高,而且更容易出現(xiàn)一些問(wèn)題,比如存儲(chǔ)應(yīng)用程序的SD卡或閃存損壞。
在微控制器開(kāi)發(fā)板和單板計(jì)算機(jī)之間進(jìn)行選擇
盡管現(xiàn)有的微控制器開(kāi)發(fā)板和單板計(jì)算機(jī)可能只能在IoT解決方案中發(fā)揮部分作用,但它們是初始開(kāi)發(fā)的理想選擇。
一種入門方式是根據(jù)應(yīng)用程序的需求來(lái)考慮關(guān)鍵的IoT設(shè)備特征,然后制定以下設(shè)計(jì)決策:
確定您需要的外圍傳感器和輸出組件的類型和數(shù)量,如有必要,還需要確定這些組件的設(shè)計(jì)電路
選擇一個(gè)微控制器或單板設(shè)備來(lái)協(xié)同控制外圍組件并從中讀取數(shù)據(jù)
確定您用于設(shè)備內(nèi)通信的數(shù)據(jù)通信協(xié)議(例如,對(duì)微控制器與任何附加傳感器之間的通信使用I2C)
選擇需要用來(lái)與云服務(wù)和應(yīng)用程序進(jìn)行通信的網(wǎng)絡(luò)硬件和協(xié)議
例如,要在預(yù)算內(nèi)設(shè)置一個(gè)家庭自動(dòng)化系統(tǒng),您可以選擇RaspberryPiZeroW,因?yàn)樗且粋€(gè)成本非常低的小巧的SBC設(shè)備,而且擁有充足的處理能力和內(nèi)存(1GHzARM6處理器和512MBRAM)來(lái)在設(shè)備上執(zhí)行數(shù)據(jù)處理和分析。它支持采用最高64GB的microSD閃存擴(kuò)展卡來(lái)存儲(chǔ)程序和數(shù)據(jù)。而且像RaspberryPi4一樣,它配備了一個(gè)完整的40引腳GPIO端板,允許連接多個(gè)傳感器,同時(shí)還支持SPI和I2C協(xié)議。它擁有板載WiFi,可用于連接家庭網(wǎng)絡(luò),而且可以通過(guò)micro-USB從移動(dòng)電源或墻插式電源供電。
隨著您在IoT架構(gòu)設(shè)計(jì)方面的深入,您可以停下來(lái),將您的預(yù)期性能與設(shè)計(jì)意圖進(jìn)行比較。進(jìn)行設(shè)備設(shè)計(jì)和原型設(shè)計(jì),選擇嵌入式軟件,選擇上游服務(wù)和應(yīng)用程序,然后停下來(lái)對(duì)其進(jìn)行評(píng)估。您可以根據(jù)功能需求和非功能需求(包括性能、可靠性和安全性)定期評(píng)估原型,并在必要時(shí)重新考慮這些選擇。
部署IoT項(xiàng)目的硬件要求
IoT設(shè)備是高度專業(yè)化的,而且是為在非常特定的上下文和環(huán)境中運(yùn)行而設(shè)計(jì)的。所以IoT項(xiàng)目的硬件千差萬(wàn)別。雖然可以通過(guò)通用的現(xiàn)成硬件進(jìn)行原型設(shè)計(jì),但最終您可以根據(jù)IoT解決方案的要求著手設(shè)計(jì)和開(kāi)發(fā)定制PCB和組件。作為此過(guò)程的一部分,您需要考慮以下幾種硬件需求。
安全需求:安全是IoT的關(guān)鍵要素。在設(shè)計(jì)和開(kāi)發(fā)的所有階段都必須考慮到這一點(diǎn)。即使是在原型設(shè)計(jì)期間,也必須保證設(shè)備捕獲的數(shù)據(jù)的完整性和安全性。安全需求適用于IoT設(shè)備本身、網(wǎng)絡(luò)以及云、移動(dòng)和Web服務(wù)應(yīng)用。
相關(guān)安全需求包括:
確保每個(gè)設(shè)備擁有足夠的處理能力和內(nèi)存,以便能以發(fā)送和接收數(shù)據(jù)和消息的速率對(duì)它們進(jìn)行加密和解密;
確保嵌入式軟件開(kāi)發(fā)庫(kù)支持在向上游服務(wù)和應(yīng)用程序執(zhí)行驗(yàn)證時(shí)使用的授權(quán)和訪問(wèn)控制機(jī)制;
選擇采用現(xiàn)有的設(shè)備來(lái)實(shí)現(xiàn)設(shè)備管理協(xié)議,以便在將新設(shè)備添加到網(wǎng)絡(luò)時(shí),安全地注冊(cè)這些設(shè)備以免發(fā)生欺詐;此外,選擇包含固件功能的現(xiàn)有設(shè)備,可用無(wú)線方式安全地更新安全補(bǔ)丁。
易開(kāi)發(fā)性:在原型設(shè)計(jì)期間,易開(kāi)發(fā)性是另一個(gè)要優(yōu)先考慮的需求,滿足該需求才能快速輕松地讓您的IoT設(shè)備正常運(yùn)行,捕獲數(shù)據(jù),并與其他設(shè)備和云進(jìn)行通信。
考慮API文檔、開(kāi)發(fā)工具,以及硬件制造商或開(kāi)發(fā)社區(qū)所提供的支持的可訪問(wèn)性、可用性和質(zhì)量。選擇的設(shè)備要能快速輕松地編程和刷新,而且在部署時(shí)只需較少的接觸,不需要配置或只需針對(duì)每個(gè)設(shè)備進(jìn)行極少的配置,以便在開(kāi)發(fā)IoT應(yīng)用程序時(shí)少走彎路并節(jié)省時(shí)間。
數(shù)據(jù)獲取、處理和存儲(chǔ)需求:連接的傳感器數(shù)量、捕獲的數(shù)據(jù)的分辨率,以及數(shù)據(jù)采樣速率,這些都決定了要處理的數(shù)據(jù)量,還會(huì)影響數(shù)據(jù)處理和存儲(chǔ)需求。
需要保留在設(shè)備上的數(shù)據(jù)量,取決于連接設(shè)備向上游傳輸數(shù)據(jù)的頻率。安裝在智慧建筑中的始終通過(guò)電纜連接的設(shè)備,會(huì)直接向一個(gè)高度可用的服務(wù)器傳輸少量的原始數(shù)據(jù),與需要處理大量突然傳入的數(shù)據(jù)相比,這種設(shè)備需要的處理能力和存儲(chǔ)空間相對(duì)較少。為了省電而每隔幾小時(shí)進(jìn)行連接的設(shè)備需要更大的存儲(chǔ)空間,在連電期間將數(shù)據(jù)記錄到本地。
連接需求:無(wú)線網(wǎng)絡(luò)的連接需求包括操作范圍,或者信號(hào)的傳輸距離,以及預(yù)計(jì)要傳輸?shù)臄?shù)據(jù)量和傳輸速率。考慮設(shè)備的容錯(cuò)能力,以及在斷開(kāi)連接后重連并重新嘗試發(fā)送數(shù)據(jù)的能力。您的硬件可能擁有集成式網(wǎng)絡(luò)連接,比如藍(lán)牙或WiFi,或者可能需要通過(guò)擴(kuò)展板或模塊來(lái)添加此能力??缮?jí)的外部模塊能提供更高的靈活性,因?yàn)槟梢赃x擇試用不同模塊來(lái)評(píng)估它們的范圍和功耗。
電源需求:其他許多需求也會(huì)對(duì)設(shè)備的電源需求產(chǎn)生影響,這些需求包括需要的傳感器數(shù)量和網(wǎng)絡(luò)傳輸速率??紤]您的設(shè)備是連接電源,還是需要需要電池或超級(jí)電容之類的移動(dòng)電源。如果需要便攜式電源(如電池),那么您需要了解電池的大小、重量和容量需求,以及電池是否可以重復(fù)充電、更換,或者在電池耗盡后是否應(yīng)丟棄。如果設(shè)備可再充電,應(yīng)多久充一次,通過(guò)什么方式充電?
物理設(shè)備設(shè)計(jì)需求:物理設(shè)備設(shè)計(jì)需求包括設(shè)備的外觀和大小。
還需要考慮設(shè)備將安裝到哪些環(huán)境條件下,例如它是否需要防水或有堅(jiān)固的外殼?例如,作為車隊(duì)監(jiān)控應(yīng)用的一部分,安裝在卡車底部的設(shè)備需要得到妥善保護(hù),以確保它們?cè)趷毫訔l件下能夠繼續(xù)運(yùn)行;它需要防水、耐臟和抗震。
成本需求:硬件的成本包括硬件和關(guān)聯(lián)組件(比如任何傳感器)的初始費(fèi)用,以及它們的持續(xù)操作成本,比如電源成本和更換磨損部件或缺陷組件的維護(hù)成本。還要考慮某些組件或設(shè)備驅(qū)動(dòng)程序的版權(quán)費(fèi)。購(gòu)買商用的現(xiàn)成開(kāi)發(fā)板或SBC可能比制造定制板更經(jīng)濟(jì)。如果您通過(guò)許多設(shè)備擴(kuò)展IoT網(wǎng)絡(luò),那么專用硬件設(shè)備可能是更明智的選擇。
每種應(yīng)用和情況各有不同。在為IoT項(xiàng)目選擇硬件時(shí),沒(méi)有萬(wàn)全之策。采用基于標(biāo)準(zhǔn)的商業(yè)性硬件,比如微控制器或單板計(jì)算機(jī),可以在開(kāi)發(fā)的早期階段節(jié)省時(shí)間和開(kāi)支,而不會(huì)犧牲靈活性。您在原型設(shè)計(jì)階段學(xué)到的知識(shí),能幫助您在之后部署IoT解決方案時(shí)制定關(guān)鍵的硬件設(shè)計(jì)決策。
-
微控制器
+關(guān)注
關(guān)注
48文章
7552瀏覽量
151426 -
IOT
+關(guān)注
關(guān)注
187文章
4210瀏覽量
196807 -
互聯(lián)設(shè)備
+關(guān)注
關(guān)注
0文章
12瀏覽量
3058
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論