Issuu on Google+

物聯網系統整合應用 (五) IOT (Internet Of Things)


物聯網(IOT)系統整合應用 課程安排 Part1, 物聯網系統架構介紹 實作: 各裝置硬體實體之熟悉, 以及Beaglebone WebServer基本操作

Part 2,3 Arminno 軟硬體環境介紹及藍芽應用, 與ZigBee Coordinator 流程介紹 實作: Arminno 開發環境使用熟悉及 Arminno+ZigBee 程式說明

Part 4,5 Arduino 軟硬體及相關Ozone模組介紹, 及ZigBee End Devices 流程介紹 實作: Arduino 開發環境使用與ZigBee End, 以及其他感測器相關模組程 式練習

Part 6 Beaglebone WebServer 流程, 及 Phthon Script 程式介 紹 實作: 修改Beaglebone程式, 與其他Linux指令操作練習


課程主題 (Part 5)        

Ozone 模組與 Arduino Shield的差異 Sonar 模組介紹 Thermal 模組介紹 Compass 模組介紹 Acceleometer 模組介紹 RGB Color 模組介紹 MP3 Player 模組介紹 Servo Runner 模組介紹


超音波感應 (Sonar) 模組 特性 可做為偵測距離之工具。配合移動機構(機器人 、自走車…等),可達到避障的功能。  使用簡單,並設有單次(Ranging)、多次(Repeat Ranging)等指令。  可設定簡測結果回傳格式( us、cm、inch)。

接法


偵測限制


Sonar 常用的模組程式庫  SetFloorLevel(FloorLevel) - 以FloorLevel 設定超音波模組 離地高度。(0:離地 > 5cm、1:離地 > 20cm、2:離地 > 50cm、3:近小物體偵測,預設值為0 。)*  RepeatRanging(void) - 重複(週期性)執行超音波偵測。  Status=GetDistance(Type, Distance)- 取得接收狀態存放 於Status,並以Type設定取得資料型態,存入Distance 中。 (Status:0=not ready,1=ready,2=timeout;Type:0 = us, 1=cm,2=inch。)  其他可參考 "SonarA_V2.0.pdf" 文件


Sonar (超音波) 範例程式 #include <ozone.h> SonarA mySonar(5); // 設定 Sonar 模組編號為 5 LCD4X20A myLCD(7); // 設定 LCD 模組編號為 7 uint8_t Status; //儲存取得的偵測結果狀態 uint16_t Distance; //儲存取得的偵測結果 void setup() { myLCD.BacklightOn(0); mySonar.SetFloorLevel(0); //設定離地高度為大於5cm } void loop() { Status = 0; do { mySonar.Ranging() ; //執行偵測 delay(100); //等待100ms Status= mySonar.GetDistance(1, Distance); //取得偵測結果 } while(Status != 1); //迴圈停止條件(Status = 1) myLCD.CursorRC(2,1); myLCD.ClearEOL(); myLCD.BacklightOn(1); myLCD.Display("Sonar Distance: "); myLCD.Display(Distance); delay(500); }


溫度感應 (Thermal) 模組 基本規格 特性 可量測溫度範圍 -40°C ~ 123.8°C 可取得溫度、溼度、露點資料。 可透過I2C方式,下達指令。

接法


濕度 一般在氣象學中指的是空氣濕度,它是空氣中水蒸氣的含量。空 氣中液態或固態的水不算在濕度中。不含水蒸氣的空氣被稱為乾空氣。 由於大氣中的水蒸氣可以佔空氣體積的0%到4%,一般在列出空氣中各 種氣體的成分的時候是指這些成分在乾空氣中所佔的成分。

其中的符號分別是: e – 蒸汽壓,單位是帕斯卡(Pa) Rw – 水的氣體常數=461.52J/(kg K) T – 溫度,單位是開爾文(K) m – 在空氣中溶解的水的質量,單位是克(g) V – 空氣的體積,單位是立方米(m3)


相對溼度(RH) 溼度計正在記錄相對溼度「相對溼度(RH)是絕對溼度與最高溼度之間的比, 它的值顯示水蒸氣的飽和度有多高。相對溼度為100%的空氣是飽和的空氣。 相對溼度是50%的空氣含有達到同溫度的空氣的飽和點的一半的水蒸氣。

露點 (英語:Dew point)或露點溫度(英語:Dew point temperature)是在固 定氣壓之下,空氣中所含的氣態水達到飽和而結成液態水所需要降至的溫度。 在這溫度時,凝結的水飄浮在空中稱為霧、而沾在固體表面上時則稱為露, 因而得名露點。


溫度感應模組常用的程式庫  GetTemp10F(int16_t Value) - 取回最新的溫度值 存於 Value,為華氏溫度乘以十的整數。 回傳值範圍為-400~2549。

 GetHumi10(uint16_t Value) - 取回最新的溼度值 存於 value,回傳值為溼度值乘以十的整數。 value 的回傳值範圍為0~1000。


Thermal 模組範例程式 #include "ozone.h" ThermometerA MyTh(1); int16_t Temp; uint16_t Humid;

//

宣告 ThermometerA 模組 ID = 3

void setup() { Serial.begin(38400); } void loop() {

MyTh.GetTemp10F(Temp); // 取得目前溫度值 Temp = (Temp-320)*5/90; // 轉換數值(華氏X10)為攝氏 MyTh.GetHumi10(Humid); Serial.println(Temp); delay (500); }


特性

Compass電子羅盤模組規格

高精確度電子羅盤,可以用指令取得磁北到模組順時針方 向的夾角值,或是磁場強度 提供偏向角設定,讓使用者能取得與特定角度的差異角度, 不需要都以正北為基準。 偏向角提醒事件,可以在超出設定的角度,產生提醒訊息。 可以儲存現在角度,或是儲存任意角度,做為偏向角設定 時的基準。  能偵測磁場強度為±8Gauss (1高斯=1,000毫高斯=微瓦/每 平方公尺。  每秒可執行最多50次偵測。

接法


Compass電子羅盤模組常用的程式庫  GetAngle(Angle)- 取得由磁北與設定軸向順時針方向 的夾角,以度為單位回傳值範圍為 0~359。 SetTargetAngle (Angle) - 將輸入的Angle 值, 儲存在EEPROM 中。

 GetDevAngle (Angle) - 取得與設定為基準方位差異的偏 向角。 SetDevAngleLimit(Angle)- 設定判斷偏向角的差異值, Status = GetDevAngleLimitStatus(void)- 回傳現在角度是 否大於偏向角極限值,若Status 回傳為1,則代表現在偵測 的方位大於偏向角極限,若Status 回傳為0,則代表在偏向 角極限內


Compass電子羅盤模組範例程式 #include <ozone.h> CompassB myCompass(3); // 設定模組編號為 3 uint16_t wAngle; void setup() { Serial.begin(38400); } void loop() { myCompass.GetAngle(wAngle); Serial.print("Angle="); Serial.println(wAngle); delay(200); }


Accelerometer加速度感測模組規格 特性

Accelerometer 模組是一個高精確度三軸加速度 感測模組。可作為靜態與動態加速度的量測,以感測 受力大小與方向。 提供四種精準度(1.5g,2g,4g,6g)。 可以直接以指令讀取各軸向的數位電壓值。 能偵測範圍達±6g的加速度值。

接法 CMD Bus


Accelerometer加速度感測模組常用程式庫  GetXYZForce(int16_t ForceX, int16_t ForceY, int16_t ForceZ) - 取得X,Y,Z 軸向的力量值,X 軸向存在ForceX, Y 軸向存在ForceY,Z 軸向存在ForceZ,單位會根據設定模式 不同。 GetAngle2D(uint16_t Angle) - 取得2D 平面的合成力與主軸 向的夾角存在Angle,單位為度 GetAngle3D(uint16_t Angle1, uint8_t Angle2) - 取得3D 的 合成力於XY 平面的分力與X 軸向的夾角存在Angle1,單位為 度,力與Z 軸的夾角存在Angle2,單位為度 SetMode(uint8_t Mode) - Mode 可以輸入0~3: Mode = 0 當量測到Force = 800 等於1g,適合量測±1.5 g 內的加速度值 Mode = 1 當量測到Force = 600 等於1g,適合量測±2 g 內的加速度值 Mode = 2 當量測到Force = 400 等於1g,適合量測±4 g 內的加速度值 Mode = 3 當量測到Force = 300 等於1g,適合量測±6 g 內的加速度值


 SetRefreshFreq(uint8_t Rate) - Rate 可以輸入為0~4 等五種 速率: Rate = 0 Rate = 1 Rate = 2 Rate = 3

每10 ms 更新角度值 (100 Hz) 每20ms 更新角度值 (50 Hz) 每40ms 更新角度值 (25Hz) 每100ms 更新角度值 (10 Hz)

 SetAxis2D(uint8_t Type) - Type 可以輸入0~5,分別代表: Type=0 X 為0 度軸,Y 為90 度軸 Type =1 Y 為0 度軸,X 為90 度軸 Type =2 X 為0 度軸,Z 為90 度軸 Type =3 Z 為0 度軸,X 為90 度軸 Type =4 Y 為0 度軸,Z 為90 度軸 Type =5 Z 為0 度軸,Y 為90 度軸


Accelerometer模組範例程式 #include <ozone.h> Accelerometer3A myG(2); // 設定模組編號為2 void setup() { myG.SetMode(0); // 設定靈敏度模式為0,適合量測正負1.5g 的加速度值 myG.SetRefreshFreq(3); // 設定更新速率為每秒更新十次 myG.SetAxis2D(0); } void loop() { myG.GetXYZForce(g_iFx, g_iFy, g_iFz); // 取得XYZ 三軸的加速度值 myG.GetAngle3D(g_wAngle1, g_bAngle2); // 取得3D 和 2D 角度值 Serial.print("fx="); Serial.println(g_iFx); Serial.print("fy="); Serial. println (g_iFy); Serial.print("fz="); Serial. println (g_iFz); Serial.print("Angle="); Serial. println (g_wAngle1); Serial.print("Angle="); Serial. println (g_bAngle2); }


Color RGB 顏色感測模組 特性

接法

Color RGB 模組是三波長顏色感測模組,可量測物體反射的 三色值。  可以分別感測紅藍綠三色光的反射值(λp,紅: 640 nm,綠: 524 nm,藍: 470 nm )。  可以感測三色光混和的光強度。  可以設定顏色編號與感測值,進行自動配對比較,模組提供 三色LED,可以直接調整光源強度。 三組光感測時間可供隨時變換,達到類似快門切換效果。 提供多組內建回傳值比例切換。 CMD Bus


Color RGB 顏色感測模組常用程式庫  Status = GetRGB(ValueR, ValueG, ValueB) - 取得量測狀態放 在Status,0 代表上次讀值後尚未更新量測值,1 則代表此為更新的量測值, 並取得紅綠藍光感測值, 分別存在ValueR、ValueG、ValueB,此數值為 量測到的計數值,為0~65535 間的整數  Status = GetCRGB(ValueC, ValueR, ValueG, ValueB) - 取得 無濾鏡與紅綠藍光感測值  StartMeasure(void)啟動偵測,執行後會根據設定的感測時間,執 顏色的量測,須先執行此命令,並等到量測結束,才能用取得感測值相關指 令,得到最新的感測值,請注意執行量測時,會自動根據設定的LED 強度, 在量測時點亮LED 光源

 TurnOnLED()  SetLEDRGB( Red, Green, Blue) - 分別以Red、Green、Blue, 設定LED 三色光 (紅,綠,藍)點亮時的強度,Red、Green、Blue可以輸入0~255 間的整數值


ColorRGB模組範例程式 #include <ozone.h> ColorRGB myC(6); void setup() { myC.LoadLED(); myC.SetPeriod(0); // 設定量測時間 myC.SetPrescalar(0); // 設定量測倍率 } void loop() { myC.StartMeasure() ; // 開始量測 do { bStatus = myC.GetCRGB(g_wC, g_wR, g_wG, g_wB); //讀取感測顏色 delay(10); } while(bStatus != 1); Serial.print("C"); Serial.println(g_wC); Serial.print("R"); Serial.println(g_wR); Serial.print("G"); Serial.println(g_wG); Serial.print("B"); Serial.println(g_wB); delay(200); }


MP3 撥放模組 特性

接法

Player模組可以分析Micro SD卡中的檔案,判斷MP3檔案並播 放。可以播放或暫停音樂,也能指定曲目,  Micro SD卡插槽,能讀取最多2G的Micro SD卡資料  提供32階音量控制。 十二種EQ(等化器)設定。 上一首與下一首快速跳首指令。  檔案必須放在記憶卡跟目錄的”InnovatiMusic”資料夾中, 錯誤的資料夾名稱與存放位置,都會造成系統無法正常讀取。


MP3 撥放模組常用程式庫-1

 Play(void) - 播放檔案中的曲目,會直接從頭播放目前設定編號的歌曲, 若是原先為暫停狀態,則會從暫停的時間繼續播放  Pause(void)

 Stop(void)  Forward(void)  Backward(void)  SetPlayNum(uint16_t Num) - 根據Num的設定值,設定要播放的 曲目。

 VolUp(void) , VolDown(void)  AnalSD(void) - 解析記憶卡內容,只有在記憶卡已經安裝至模組,並且可以 辨識,此指令才有效。執行後會開始解析記憶卡中的MP3檔案數量,並自動排序儲 存相關位置。指令解析中無法執行播放等相關動作,請以GetSDStatus指令確認是 否解析完成。

 SetRepeat(uint8_t Mode) 0: 資料夾重複播放,當播放完資料夾中 的最後一首,自動從第一首開始播放。 1: 單曲重複播放,重複播放同一首歌曲。 2: 不重複播放。


MP3 撥放模組常用程式庫-2

 Status = GetSDStatus(void) - 取得記憶卡的狀態,存放於Status 參數中。 Status會回傳0~8之間的整數值。 0: 沒有偵測到記憶卡。 1: 記憶卡辨識中。 2: 偵測到錯誤裝置。 3: 記憶卡中沒有可以播放的檔案。 4: 記憶卡為閒置裝置。 5: 歌曲停止播放。 6: 歌曲暫停。 7: 歌曲播放中。 8: 讀取到錯誤資訊。 安裝記憶卡後,要先確定記憶卡狀態不為0,才可以執行播放等動作。

 GetTotalNum(uint16_t &Num) - 取得可以解析到的檔案總數,存 放於Num中。Num會回傳0~1000間的整數值。


MP3播放模組模組範例程式 #include <ozone.h> PlayerA myPlayer(4); void setup() { } void loop() { uint8_t bStatus; // 宣告儲存狀態的參數 //-------------------------------------------------------//--- 無窮迴圈等待記憶卡插上 --//-------------------------------------------------------do { bStatus = myPlayer.GetSDStatus(); } while(bStatus <= 1); myPlayer.AnalSD(); // 開始解析記憶卡 //------------------------------------------------------//--- 無窮迴圈等待記憶卡解析完成 --//-------------------------------------------------------do { bStatus = myPlayer.GetSDStatus(); } while(bStatus <= 1); myPlayer.SetVol(15); // 設定播放音量 myPlayer.Play(); // 開始播放歌曲 while(1); }


Servo Runner (十六組)伺服機輸出控制模組 特性

利基Servo Runner A模組可以一次控制十六個伺服機,並且 提供整合好的指令,讓使用者可以直接使用速度或時間,決定伺 服機的移動模式。設有多達250組記憶體可以儲存伺服機目標位 置與移動方式(速度或時間),讓各種動作輕易組合完成。 提供 32階音量控制。 可控制伺服機位置由0.5 ms至2.5 ms。軟體設定達到微調各 個伺服機轉向角度的目的,可設定-128~127 μS。  程式可以設定伺服機轉向速度,使用者可根據需求設定多段 的伺服機轉向速度。  使用者可以設定一個共同時間,讓各個伺服機在同時間達到 不同的轉向角度。  內建250組伺服機記憶空間, 每組可以儲存目前設定好的 十六個伺服機目標位置,與速度 或時間參數,在需要時直接呼叫, 可以免去重覆設定的動作。


物聯網應用系統 (五)