在物聯網當中,最理想的實現方案就是利用開發底板構建設計原型——而Photon在將成果與云環境對接方面擁有著獨特的優勢。
硬件與軟件開發人員在構建物聯網產品時面對著一項值得關注的難題:我們該如何將其接入更為廣闊的互聯網世界當中?
當然,直接構建聯網Arduino或者使用Raspberry Pi提供的內置以太網端口也是可行的。但如果我們希望能夠最大程度發揮傳感器以及執行器的全部功能,我們當然需要以無線網絡技術作為立足根基——具體而言,就是利用Wi-Fi以及蜂窩網絡將用戶自身與設備接入網絡體系。
遺憾的是,我們還面臨著一道難以逾越的障礙:無線網絡世界在設計方面并沒有真正考慮到處理設備、特別是采用固件而非軟件驅動的單一用途單元的實際需求。但幸運的是,我們還有其它選項。
我們完全可以選擇蜂窩網絡服務運營商所使用的機器到機器模型,其中由獨一無二的設備識別碼(即IMEI以及手機號碼)處理設備的驗證、連接與交互任務,這相當于把設備當作應用并加以控制。除此之外,對于像Arduino Yn這樣的設備,我們還可以將固件與軟件加以結合,并在其中搭載一塊與微控制器固件共享內存的無線應用處理器。
Photon的云連接之道
由Particle公司推出的Photon售價19美元,這套方案為我們提供了另一種選擇。我曾經在上個月的Maker Faire上買到過一套開發工具包,并且一直饒有興味地鼓搗到現在。與其它眾多開發底板一樣,它也采用ARM Cortex M3處理器并提供充足的I/O端口。
Photon出色的聯網能力源自其圍繞博通Wi-Fi芯片組構建而成的Wi-Fi模塊,能夠以802.11b/g/n方式接入互聯網。更重要的是,這款Particle云設備擁有強大的聯網服務,能夠實現該設備與用戶應用之間的橋接,并以此為基礎進行代碼編寫、更新以及設備管理等操作。
從零開始上手Particle的服務以及開發底板其實非常輕松——大家只需要簡單下載一款iOS或者Android應用程序即可。我們利用該應用創建一個Particle賬戶,而后就能通過該公司的云服務訪問自己的設備了。接下來,大家可以使用這款手機應用隨時接入Photon開發底板并對其Wi-Fi連接進行配置。在第一次聯網時,設備會下載一項相關固件更新。
在Photon上編寫代碼
設置工作完成之后,接下來我們就可以著手編寫代碼了。大家會發現,Photon的使用感受與其它開發底板非常相似,我們可以使用C類語言直接訪問Photon的數字化與模擬端口。不過與其它開發底板不同的是,Particle公司的固件當中包含有多種函數,用于處理設備同云服務之間的對接——大家在設置過程中需要將該服務連入自己的開發底板。
云API調用使用的是Spark.function調用,負責將云調用鏈接到本地函數——舉例來說,我們可以將一項云函數調用鏈接至本地ledblink()函數處。這種處理方式簡化了固件功能與外部應用程序之間的對接途徑,從而保證用戶能夠更為輕松地對應用程序在云與設備之間進行映射。一條Spark.function總是接受一條字符串作為參數,且永遠返回一個整數結果。
發送字符串的意義在于:我們的設備端代碼能夠使用不同的字符串在多種不同選項之間切換,例如允許開發者將數字輸出設定為開或關,或者改變受控輸出組合。在這種情況下,我們也能夠更輕松地發回整數,因為由模擬到數字的轉換器通常都會提供整數輸出能力。大家可以使用組件規范對返回的溫度或者亮度級別整數進行轉換。
[page]Particle云介紹
Particle公司推出的云服務可以被稱為是物聯網領域的Twilio。它才是實質上的核心業務,而開發底板以及Wi-Fi模塊只能算是該服務的附屬裝置。
作為核心設計思路,Photon單純是為了設計原型方案所存在。Particle公司迎合了那些以規模化方式產出數以十萬甚至百萬計設備的企業——在這種情況下,這些企業用戶顯然更傾向于使用自己的芯片方案。Particle的作用只是幫助這些客戶開發出足以同合作方所提供的芯片相匹配的模塊設計成果。
與Twilio一樣,大家需要處理的只是云REST API,其中每一臺設備都擁有一個硬編碼ID。大家可以利用自己的賬戶ID認證相關調用——這樣我們就能將這些調用交付至服務器應用,從而確保用戶無需訪問驗證令牌。由于大多數平臺都支持REST機制,因此Particle公司不必另行提供公共頁面,特別是在用戶通過Node-red等工具構建物聯網應用的情況之下。設備可以進行重新命名,因此大家可能會采取自己的一套命名規劃,從而保證以更為精簡的代碼同時對多臺設備進行調用。
自行構建
Particle公司的Photon開發工具包當中包含多塊組件與底板,幫助大家從零開始實現硬件設計,而配套的手機應用則提供一系列極具實用性的工具集、能夠在無需編寫代碼的前提下支持我們直接處理這款硬件。基礎Photon固件提供一套UI,我們可以利用其處理傳感器及輸出結果,從而構建電路并了解其如何與Photon底板進行交互——這對于接下來的編程工作而言不啻為重要的前提與基礎。
同樣重要的是,我們要記住Photon代碼由于固件范疇、且最好被視為將傳感器與執行器同云環境相對接的實現手段——我們的大部分業務邏輯都將在這里運行。大家能夠在Web IDE當中找到一套基礎Tinker固件副本,從而更輕松地對自有版本進行fork并以此為起點構建屬于自己的應用程序。
大家也可以直接通過USB接入閃存設備,并利用ARM開發工具與編譯器構建自己的低級代碼。如果大家打算利用Particle模塊及服務作為硬件基礎,那么這一選項將非常重要。
以Photon為代表的各類開發底板適用于那些希望率先邁出物聯網探索之旅的用戶。大家可以獲得易于使用的云API集合,同時利用云IDE讓面向硬件的I/O代碼編寫變得更為輕松。
雖然硬件與開發工具同樣極具吸引力,但需要強調的是,API才是這一切的核心所在。對云與設備之間的對接進行簡化,意味著我們能夠真正將注意力集中在關鍵性事務身上:構建屬于自己的應用程序及服務方案。
原文標題:Build your own IoT prototype, cloud included