iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 6
1
IoT

來與IoT譜寫一首戀愛樂章吧系列 第 6

op.06 《感知層》-數位 v.s 類比感測器

op.6 感應IoT撲通撲通的心

妳手掌心的溫度與我熾熱的心
皆是隨著時間變化
但我對妳的愛卻是永遠的true!

今天來到第六天,被教授電到飛起,就像火箭般起飛......

今日主題:數位/類比感測器

還記得感知層最重要的元件是甚麼嗎?沒錯,就是感測器,透過感測器才能將現實的狀態轉成數據,最後形成可以用的資料,那,甚麼是感測器,甚麼是數位,甚麼是類比呢? (好多問題啊!

甚麼是感測器?

感測器其實就是將環境中的物理量轉成微控制器可以使用的電訊號的裝置,人類是以五感來感知世界,而感測器好比人類的五感,用來感知環境的變化,感測器的檢測方法又可基本分為兩種,一種是屬於電壓變化,另一種則是電流變化;感測器又有分成數位或是類比的形式,底下會進行數位/類比訊號介紹。

類比訊號 Analog Signal

類比訊號是指在時域上數學形式為連續函式的訊號,舉凡在大自然中的許多東西,比如聲音、溫度、光、壓力等的物理量,都可以去使用類比訊號來表達,用類比訊號來表達,可以幾乎等於原有的訊號。

數位訊號 Digital Signal

根據定義,數位訊號是量化的離散時間訊號,而離散時間訊號則是已經採樣的類比訊號,所以從這兩句推斷,數位訊號來自哪裡?答案淺顯易見,來自類比訊號。但是數位訊號只能接近原本的訊號,並不能實際的代表真正的狀態,而取決是否能接近,那就憑著所謂的取樣率,有興趣可以參考 ADC (類比轉數位)


類比感測器:

對於微控制器來說,必須經過特殊的 pin 腳,進入到微控制器的 ADC ,並且能夠轉換成對應精度的數位訊號,那這樣都可以算是類比感測器,好比 NodeMCU ADC 的精確度是10bit,代表可以轉換對應 0-1023 的變化。

數位感測器:

其實現在很多的數位感測器原本也是類比感測器,都是經過類比轉換成數位的轉換器,達成我們所需的"數位"感測器,簡單的說,對於微控制器來說,只有 true (臻)、false (假)。


進入實作階段啦,拿起手上的 NodeMCU 開始今天的簡單範例啦。
但得先跟各位說說今日的暗號呢~

Serial 相關

Serial.begin()

可以用來設置序列埠的通訊速率,單位為 baud (鮑率),簡單來說 1 baud代表一秒鐘只跟電腦傳輸一個符號。
常使用的有 9600,115200等,記得監控視窗跟設定兩邊都要一樣才不會丟失東西。

Serial.begin(115200);

Serial.println()

用來做序列埠的輸出,也可以使用 Serial.print(),兩者的差異為 Serial.print()輸出完後不會加上換行字元;Serial.println()則會強制輸出完就換行。

Serial.println("Hi~");

讀取相關

analogRead()

類比的輸入,用來讀取已經經過 ADC 轉換後所分布的數位訊號數值,需要填入讀取的腳位。

analogRead(A0);

digitalRead()

數位的輸入,用來讀取數位訊號數值,只有兩種狀態,分別是高態和低態,需要填入讀取的腳位。

digitalRead(5);

光敏電阻的讀取

光敏電阻介紹

電路圖
//暫時先空一下找不到好的軟體
接線圖
//暫時先空一下找不到好的軟體

void setup() {
  Serial.begin(115200);
}

void loop() {
  int value = analogRead(A0);
  Serial.println(value);
  delay(1000);
}

實體照片
https://ithelp.ithome.com.tw/upload/images/20200921/20129084c1eHQdbwCT.jpg

正常環境的Serial監控視窗數值
https://ithelp.ithome.com.tw/upload/images/20200921/20129084UrKvhXmI5c.png

當環境變暗
https://ithelp.ithome.com.tw/upload/images/20200921/20129084KzHkubTKt8.jpg

Serial監控視窗數值下降
https://ithelp.ithome.com.tw/upload/images/20200921/20129084kYQejY1fsm.png

當環境變亮
https://ithelp.ithome.com.tw/upload/images/20200921/20129084cn8r03DLNH.jpg

Serial監控視窗數值上升
https://ithelp.ithome.com.tw/upload/images/20200921/201290841hCn9qXHfj.png


光遮斷器的讀取

光遮斷器介紹

電路圖
//暫時先空一下找不到好的軟體
接線圖
//暫時先空一下找不到好的軟體

void setup() {
  Serial.begin(115200);
}

void loop() {
  int value = analogRead(A0);
  Serial.println(value);
  delay(1000);
}

實體圖
https://ithelp.ithome.com.tw/upload/images/20200921/20129084YUrApCOXWF.jpg

當光遮斷器被遮住 (遮斷為 true / 1)
https://ithelp.ithome.com.tw/upload/images/20200921/20129084QSCoNl5OY5.jpg

Serial監控視窗數值顯示1
https://ithelp.ithome.com.tw/upload/images/20200921/20129084aGj5vASguO.png

光遮斷器沒被遮住 (沒遮斷為 false / 0)
https://ithelp.ithome.com.tw/upload/images/20200921/20129084309m6PgI03.jpg

Serial監控視窗數值顯示0
https://ithelp.ithome.com.tw/upload/images/20200921/20129084Us3jkEDS6h.png

以上就是今天的實作啦~~感謝各位的觀看。


今日的曲子<<大稻埕邊的亭仔腳>>劉昱昀


光佑好帥XDD


上一篇
op.05 《感知層》-初探 Arduino Code
下一篇
op.07 《感知層》-連上熟悉的 Wi-Fi 吧
系列文
來與IoT譜寫一首戀愛樂章吧30

尚未有邦友留言

立即登入留言