top of page
作家相片Elvis Tsang

Tinkercad - 在家學習物聯網?

已更新:2021年1月15日

在疫情嚴峻的香港,面授課堂愈發不可能,只能依靠網上授課甚至需要延期課程。部分傳授軟件應用或編程的課程或許影響不大,對於依賴硬件實踐所學的物聯網來說卻是一大難關。有意學習物聯網的初學者,在缺乏所需硬件在手的情況下可以如何入門?


有見及此,今天將介紹名為Tinkercad的網上工具,讓我們可以安在家中進行初學物聯網相關的幾個簡單的小實驗。


物聯網 Internet of Things 顧名思義即一種將各種設備相互連接到同一網絡的系統。一般來說,物聯網最重要的是計算裝置,而最常見的是微控制器 (Microcontroller) 例如Arduino, micro:bit, STM32等等。Tinkercad正可以模擬Arduino和micro:bit的基本編程和運作,讓我們學習物聯網必不可缺的重要一環。不過此文會專注在Tinkercad的操作和實驗,有關實驗和物聯網的背後理論及原理將留待未來詳談。

 

Tinkercad的網頁上註冊並登入後,依照下圖所示選擇"Circuit (電路)" 然後 "Create new Circuit (創建新電路)"。


迷利伺服電機控制 Micro Servo Motor Control

我們的第一個實驗將嘗試控制一個伺服電機 (Micro Servo)。Servo Motor與一般直流電機 (DC Motor)不同,屬於位置控制 (Position Control) 而非速度控制 (Speed/Velocity Control) 的一種電機,適合應用於需要精準位置的裝置例如機械臂。


首先在右邊的面板中把Arduino Uno R3和Micro Servo拉到左邊的空白位置如下圖一般。

當我們把鼠標指到不同的針腳(Pin)上面時,會顯示出相應的名字,例如:















對這些Pins不熟悉的讀者可以先跟隨以下的指示操作,我們將來會再深入探討這些元件的背後原理和細節。


除了每個裝置必須的電源(Power & GND),我們只需要一個針腳作為數字信號輸出 (Digital Signal Output) 控制Micro Servo。根據下表將Micro Servo的針腳連接到Arduino:


Micro Servo <---> Arduino Uno R3

--------------------------------------------

Ground GND (Ground)

Power 5V

Signal 3 (D3)

--------------------------------------------

(線路顏色差異只為了方便顯示,與實際功能無關)


然後在右上角點選"Code (代碼)"

你應該可以看見一段預設Scratch代碼用作控制內置LED燈的閃爍:

所有顯示在這個畫面上的代碼均會被依序重複執行,每次迴圈 (loop) 會把所有代碼先運行一次,然後進入下一個loop重複執行代碼。由於我們需要控制Servo Motor,所以先把"rotate servo on pin 0 to 0 degree" 拉到右邊的位置拼圖的頂部,再由pin 0 改為我們先前所連接的pin 3以及把角度改為50,如下圖所示:

當然我們很多時候都不會使用Scratch來對Arduino編程,而是使用C語言。如果你想看到相應的代碼,可以在代碼版面的左上角由Blocks改為Blocks + Text即可以在右邊看見實際的代碼。

然後在右上角點擊 "Start Simulation (開始模擬)" 就可以看見Servo由初始位置轉到50度角並且標示為"L"的LED會每秒閃爍一次。


物聯網系統除了微控制器 Microcontroller 外,另一種常用的元件是傳感器 Sensor,而當中環境傳感器例如溫度、濕度等等最為常見。我們接下來將會使用溫度傳感器 Temperature Sensor 來判斷如何控制剛才加入的Servo Motor。


首先在右邊面板找到 Temperature Sensor (TMP36) 並根據下表連接到Arduino。


TMP36 <---> Arduino Uno R3

--------------------------------------------

Ground GND (Ground)

Power 5V

Vout A0

--------------------------------------------


成功連接後,我們回到Code的介面,在Input底下找到 "read temperature sensor on pin A0 in units C" 並拖到右邊的空白位置。你可以留意到這一句代碼不能像之前一樣拼到其他代碼段上面,因為這屬於 Input,需要結合其他代碼使用。餘下的代碼部分請按照下圖:


如代碼中所示,當溫度傳感器的讀數超過30度時,Servo Motor將會轉到50度,否則會回到初始0度的位置。點擊右上角的 Start Simulation再點選傳感器即可透過滑動條實時修改溫度讀數,可以見到電機成功按照代碼中的邏輯調整角度。


雖然以上的實驗只有三個元件並且非常簡單,但是已經可以用作實現一些簡單的自動化控制。例如Servo Motor可以連接著一個連杆結構 (Bar linkage) 或是機械臂,在溫度超過30度時透過連杆或機械臂控制風扇的開關,不過當然我們可以使用電子控制而非機械控制來實現類似效果。

 

今次對於Tinkercad和物聯網的介紹就到此為止,建議大家可以自行嘗試其他不同的元件和代碼組合,做出獨特的不同效果。未來我們將會深入介紹Arduino和物聯網中常用的傳感器以及其他控制元件,以及重要的相關理論和應用。

Comments


bottom of page