Python可以這樣玩(26):Arduino 與 IoT


物聯網的定義是:當今的電腦以及網際網路幾乎完全依賴於人類來提供資訊。網際網路上大約有50 petabytespetabyte1,024 terabytes)的資料,其中大部分最初由人來取得和建立的,通過打字、錄音、照相或掃描條碼等方式。傳統的網際網路藍圖中忽略了為數最多並且最重要的節點,人。

如果我們將這些節點換成 ,就不難想像何謂物聯網了,更簡潔的概念是:「物聯網是一個『物』(Things) 能自動對電腦通信,物件本身也能彼此互通的世界,它以人類利益為服務要件。」

台灣有一個i236計畫,政府自2002年以來引領企業從E化、M化、逐漸走向i-Taiwan,再加上自從2005年到現在所推動的RFID,很自然的將科技產業應用推向智慧化,並且落實於在地生活運用。

i236計畫於2010形成,內容包括「Smart Town」與「Intelligent Park 2 個示範場域,建置發展 3 種網路:「數位網路」、「寬頻網路」與「感知網路」,主推 6 大領域含農業休閒、安全防災、醫療照護、節能永續、智慧便捷、舒適便利等。





如果要讓 Arduino 可以連上 IoT,當然要先連上Internet,在Maker圈,大概沒人不知道ESP8266吧,基於這個Wi-Fi晶片發展出的開發套件系列,這一、兩年紅透半邊天,甚至給其他通訊晶片大廠很大的壓力,想不通為什麼ESP8266會突然這麼火紅呢?的確,ESP8266的崛起走的並非晶片商所熟悉的途徑,而是站在社群的力量下異軍突起,以下提出一些觀察心得,或許能給晶片商不一樣的思維。

開宗明義地說,就是:「便宜」!去光華商場,只要199元台幣就可以買到ESP8266。第二就是豐富的支援,例如ESP8266的程式開發原本需要了解FreeRTOS即時作業系統,並用專業C語言撰寫,但之後有人為其開發撰寫Arduino IDE的外掛,如此一來只要用Arduino IDE開發環境就能撰寫ESP8266控制程式,大幅降低其程式開發的進入門檻。長相如下:




一般的書都會先介紹 ESP8266 如何接線,如何使用,這是因為這類書籍都是以電路學為出發點,目的是介紹 ESAP8266,但是我的目的不同,我是從 IoT 的觀點去討論有什麼電子元件可以使用,所以決定反過來,先從 IoT 開始。

既然是從 IoT 出發,就可以省略討論如何自己建站,取得公有IP等等步驟,我們要考慮的事情很簡單,就是申請一個現有 IoT 雲帳號,然後把感應器例如溫度濕度的值傳到這個 IoT 平台上面,可以讓我們用手機登入看到數據就行了。

十大 IoT 平台

既然要開始玩 IoT,當然必須知道目前有哪些 IoT 的平台可以用,下面的分享節錄於 DigiTime 能改變企業營運方式的十大IoT平台這篇文章:

聯網(IoT)平台正在成為連網裝置、感測器及網路服務的樞紐。各行各業藉分析IoT平台收集的數據來設計更高效的產品、改善商業模式、提高生產力,來產生更多現金流及保持競爭優勢。然而,現今IoT平台市場高度碎片化,據估有350多種專用IoT平台。SDxCentral特別從中整理出十大能改變企業營運方式的IoT平台。

IoT研調公司MachNation預估,到2025IoT平台產生的營收將由2016年的20億美元成長到834億美元。MachNation總裁表示,許多IoT平台被視為綜合資料和設備管理的應用支持平台(AEP)。其中最主要的十大IoT平台分別詳述如下。

一、AT&T IoT平台

AT&T IoT平台已連接逾3,000萬個IoT裝置,服務遍及200多個國家/地區。AT&T表示,其IoT平台不僅能管理大量裝置,且具靈活性和擴展性。用戶毋須重新設計核心IoT平台,即可嘗試不同類型的裝置、網路、應用程式、應用程式介面(API)和雲端環境。

AT&T IoT平台包括AT&T FlowM2X資料服務。Flow是基於Web的開發環境,供開發者設計和部署應用程式;M2X資料服務為託管服務,能讓用戶建構服務及共享連網裝置資料,並附帶開發者工具、API存取、測試工具和SIM卡。

二、亞馬遜AWS IoT平台

2015年推出的AWS IoTAWS的託管雲平台,可讓連網裝置與雲端應用和其他裝置安全互動。其目標是讓硬體開發人員更輕易在產品中連結AWS LambdaS3Kinesis等功能,在受託管的基礎架構中創建可收集、處理和及分析資料的IoT應用。AWS IoT還有用於將裝置連接到雲端的軟體開發套件(SDK)

三、Azure IoT Suite

微軟(Microsoft)Azure IoT Suite主要功能是作為Azure雲端服務其他Azure IoT Suite服務的入口。Azure IoT Suite可處理傳入的遙測、聚合數據及檢測事件,也能處理包括資訊和裝置的指令回應。

例如,Azure IoT SuiteConnected Factory平台即針對想將物件鏈接與嵌入控制(OPC)裝置連線到Azure的製造商而設計。Azure已與Unified Automation SoftingHPE等多家OPC公司合作,簡化Connected Factory平台的操作。

四、博世(Bosch)IoT Suite

博世IoT Suite基於開放原始碼標準,並提供建構IoT應用所需的中間軟體功能。博世表示,該公司已管理全球500多萬個IoT裝置,並擁有4,000多名專注於IoT的軟體工程師。

博世正在與開放原始碼軟體社區Eclipse基金會合作,以鼓勵創新及提高互通性(interoperability)。博世還與通用電器(GE)合作,增加其IoT平台的互通性,並減少IoT核心技術的碎片化。

五、思科(Cisco)Jasper

思科於20162月收購IoT新創公司Jasper Technologies,取得Jasper3,500家企業客戶,為其IoT戰略奠定基礎。到20172月,Jasper客戶數已成長到9,000家。

思科希望藉由讓Jasper提供行動網路以外的Wi-Fi、低功耗廣域(LoRa)無線網路等連線選項,讓客戶能在相同介面下使用其他網路,進一步擴大客源。Jasper平台具備監控功能,可管理和監控裝置連線和資料用量,讓企業能預測電信費支出。

六、GE Predix

PredixGE的工業物聯網(IIoT)平台,目前已有1.1萬多名開發人員。GE預測,在2020年之前,Predix營收將達150億美元。GE自推出Predix以來,一直藉購併擴大Predix平台的功能,並於201611月收購Bit StewWise.io這兩家AI新創公司以強化Predix

專注於即時數據處理的Bit Stew,適用於資料不斷被饋送到應用程式中的IoT系統;Wise.io則將機器學習應用於大量數據,並開發出可解釋客戶問題的工具,以加快解決時間。

七、Google Cloud Platform IoT Core

Google Cloud IoT Core是一種託管服務,可協助企業利用工業設備上的感測器所收集的數據。Cloud IoT Core能讓企業將其分布在全球的設備連線到Google Cloud Platform進行集中管理。客戶還能建構應用程式並將其與Google的資料分析服務進行整合。

八、IBM Watson

IBM Watson致力於為自駕車、製造業及醫療業的大量客戶創建IoT服務,目前已有6,000多名客戶使用Watson的認知安全、分析和人工智慧(AI)服務。IBM德國慕尼黑IoT總部有約1,000名研究人員、工程師、開發人員和業務經理,IBM還擁有一系列認知IoT實驗室來為客戶開發IoT方案。

九、西門子(Siemens)MindSphere

MindSphere跟奇異的Predix同樣專注於IIoTMindSphere是開放式IoT PaaS雲端服務,能讓用戶將機器、設備、第三方應用程式和服務,以及物理基礎架構連接到平台。客戶可與西門子或第三方供應商整合,取得預測性維護服務和能源資料管理。MindSphere還提供生命週期管理軟體。

MindSphere平台客戶主要為想收集和分析營運資料的製造業客戶。例如,渦輪機製造商能使用MindSphere的資料模型深入了解其設備如何運作及客戶如何使用其產品。

十、Verizon ThingSpace

ThingSpace2015年推出。Verizon表示,截至2016年底,其IoT業務已產生近10億美元營收。該平台有1.6萬開發人員,而Verizon已與約1,000IoT通路夥伴合作。

Verizon已透過內部開發和購併來擴充ThingSpace的服務。例如,Verizon24億美元收購FleetmaticsGPS追蹤系統,使車隊營運商能監控車輛位置、燃料使用率、速度和里程。

為擴大智慧社區產品,Verizon2016年還收購LED照明公司Sensity SystemsVerizon專注於IoT領域的五個不同市場,包括智慧社區、交通運輸、智慧電網、智慧追蹤和無人機操作。ThingSpace平台支援LTEWi-FiZigbee和藍牙網路。

之前我買的IoT相關書籍中,介紹做多的就是 Xively ,但是很不幸的(或許應該說很幸運) Xively Google 收購了,也順利地讓 Google 擠進了前十大 IoT平台。不過對我們這些玩家而言,就沒有辦法再繼續使用 Xively 了。不過還好,原本的第二選擇 ThingSpeak 現在變成了第一選擇,我最近買的書裡面發現,大家都不約而同地使用 ThingSpeak,我們就直接開始吧。

ThingSpeak

我們就從申請帳號開始,請進入 ThingSpeak.com 之後,選取 Sign up 即可已開始申請帳號:




申請好了之後,還需要透過 E-mail 認證,認證之後就可以 Sign In 了,如下圖:





輸入您的帳號密碼之後,就會進入您的首頁:





建立通道

何謂通道?我們可以這樣想,如果您用 Arduino 搭配 DHT11 製作了一個溫度濕度監控器,希望定時把溫度濕度的數值傳上 IoT 雲端平台,這樣一組數值就必須透過一個通道來傳送。

雖然我們現在還沒有製作感應設備,但是可以先建立一個 Channel 來測試,請按下 New Channel 按鈕:





填完名稱之後,其他欄位可以先不要填,按下下面的  Save Channel 按鈕即可。這時 Channel 就建立完畢,首先,會看見剛才所建立的 Channel 名稱為 MyDHT11Tester。如下圖:





上圖中左下角的 Access: Private 就代表剛才所建立的 Channel 是屬於個人的,只有自己可以看見,Channel ID 則需要把它紀錄下來,未來會用到。
再往下看,就會看到目前處於 Private View 這個標籤頁,下面就會顯示剛才我們創建的兩個欄位:





API Key

接下來進入重點,我們如果要讀取或是寫入 ThingSpeak IoT 平台的時候,必須透過 API Key,所以 ThingSpeak 提供了兩組 API,如下圖:





左邊的兩個 API Key 也請複製起來並貼在某處,右邊則是說明如何下 API Request 來跟 ThingSpeak 溝通。

Update a Channel Feed 的範例如下:

GET https://api.thingspeak.com/update?api_key=MSFPC7MCUNU9K2KN&field1=0

請開啟一個瀏覽器,在網址框中貼上(GET不需要)

https://api.thingspeak.com/update?api_key=MSFPC7MCUNU9K2KN&field1=24.7&field2=69

結果如下,出現一個1就代表成功了:



接下來回到剛才您的 ThingSpeak 首頁,切換到 Private View,就可以看到下面的結果:


在輸入一次,這時網頁會回復 2,代表輸入了第二筆,再看一次結果:


到目前為止,我們已經可以用手動的方式將溫度濕度寫入 ThingSpeak 了,改成傳感器,只不過是用程式將我們剛才輸入的字串改成電腦輸入而已。另外,我們也已經知道如何使用 DHT11,所以剩下的部分,就是如何讓我們的感應器連上網路了。

待續...

留言

這個網誌中的熱門文章

Python可以這樣玩(16):共陰/共陽七段顯示器

Python可以這樣玩(15):蜂鳴器與音樂

Python可以這樣玩(13):外部LED控制