(上圖是網路上找的)物聯網被稱為繼電腦、網際網路之後的第三波資訊革命,主要是以萬物皆可連網為構想,透過不同的媒體(藍牙、無線電波、有線網路等等),讓不同的物品利用網路聯結,提供人類即時相關資訊訊息,進行即時的控制。其實原本我在寫這幾個範例時,只是想教學生如何用行動裝置的藍牙連結Arduino,進行設備的控制與資訊的讀取,沒想到後來把簡單的物聯網架構都完成了(咦,我好像有自虐的傾向)
這一個例子主要是說明如何將設備上的資料上傳到網路資料庫中,提供遠端線上觀看資料與遠端控設備週邊的開關,完成一個物聯網的粗略架構。在辦公室整理各式感應器時發現,有許多感應器是屬於數位資料的,既然上次有介紹過如何接收設備的類比資料,這次就多加了一個數位的溫度感測器,順便介紹接收設備的數位資料的作法(其實跟接收的類比資料的作法幾乎是完全相同的)(下圖是網路上找的)
這次多加的數位感應器是18B20溫度模組,由於資料是數位化,所以就算是接線離Arduino板子很遠,也不會影響準確度(類比的接線太長可能會有影響)。它使用1-Wire(One-Wire)資料傳輸協定,資料傳輸只需一條線即可,在一般狀況下需要三個腳位(電源、資料、接地),1-Wire裝置裡含有電容,可經由資料線充電,所以僅需兩個腳位即可(資料+電源、接地)
接法是把標-的地方接地,中間那一根接5V,標S的接D2,再度秒接線完成
正確接上後,18B20溫度模組會有一個小燈,一閃一閃的。把上次寫的Arduino端程式(由手機透過藍牙接收設備的類比資料),針對多加的溫度模組修改程式。為了要傳遞溫度模組的資料,我多加了兩個位元組以便透過藍牙將資料傳送到手機上,所有的資料在送到手機(行動裝置)上會再儲存到網路資料庫中。
在行動裝置的APP還是延續上一個例子,多加了TextBox來顯示數位溫度,多加了兩個WebView以便上傳資到網路資料庫、同歩遠端設備與資料庫內記錄的狀態值,多了一個Clock來搭配遠端控制的功能
由於多加了一個溫度感應器,所以在程式中要處理兩個多出來的位元組,在上次的程式碼中做相應的處理,在這一段程式碼中最後還多加了一段程式透過WebView將資料上傳到網路資料庫中
除了上傳資料的功能外,行動裝置端還必須同歩伺服器端與遠端設備間的狀態, 所以底下的程式要做一些修改,就是在開關LED燈時要把狀態同歩到資料庫中
第二個Clock的作用就是每隔1秒就去檢查資料庫,看是否有從遠端更改了LED燈的開與關,進行設備上LED燈的同歩處理,在這個地方主要是用WebView去接收伺服器端的數據(詳細作法可參考讀取檔案做為離線資料來源)
執行畫面
接下來提伺服器端的狀況,所使用的資料庫是SQL Server,上傳資料的方式跟之前寫的一些範例類似(行踨記錄器),伺服器上有三個Asp.Net寫的網頁,一個主要的功能是接收資料、寫入資料到Sql Server的資料庫中;另一個是動態地控制遠端設備LED燈的開與關,展示遠端設備的資料圖表;還有一個是用來同歩遠端設備與資料庫內記錄的狀態值。底下是遠端程式的執行畫面
使用者可透過手機或電腦的瀏覽器連上這個頁面,畫面上會同步顯示遠端設備LED燈的開關狀況,可以線上去修改遠端設備LED燈的開或關(行動裝置與伺服器會自動同步),最底下會顯示資料的曲線圖與相關資料,關於線上曲線圖是利用Google Chart畫的(作法可參考超簡易圖像陰影比例計算(加強版))。吔,完成了!