make something with arduino first class

36
Make something With Arduino 張張張

Upload: zhang-jiawei

Post on 21-Apr-2017

79 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Make something with arduino first class

Make something With Arduino

張嘉幃

Page 2: Make something with arduino first class

講師自介• 大安高工電機科 → 臺師大 EE 108 級• Openlab.Taipei 社群成員• 臺師大資訊研究社 (NTNUCIC) 公關• 沒有特別擅長的項目,但是有熱情• 大家的工具人

• 重點是還是一群男人的工具人

Page 3: Make something with arduino first class

Outline Introduction

什麼是 Arduino Arduino 能拿來做什麼?

基礎電路學 訊號的介紹

動手寫第一個程式! 介紹 Arduino UNO 及工具 簡單的電路分析

Page 4: Make something with arduino first class

什麼是 Arduino? Arduino 到底是什麼? Wiki: 一塊基於 AVR 微處理器的開發板

Page 5: Make something with arduino first class

什麼是 Arduino? 這是 Arduino :

Page 6: Make something with arduino first class

這也是 Arduino

Page 7: Make something with arduino first class

不用說了也是 Arduino

Page 8: Make something with arduino first class

就算外型不像但仍是 Arduino

Page 9: Make something with arduino first class

所以到底什麼是 Arduino? 擷自官方網站的文案:

Arduino is an open-source electronics platform based on easy-to-use hardware and software. It's intended for anyone making interactive projects.

影片欣賞一下: https://youtu.be/UoBUXOOdLXY

Page 10: Make something with arduino first class

Arduino 到底為我們解決了什麼問題? 經由 IDE 的轉介,以及大家幫忙完備學習資源和各種程式碼範例 & 函式庫,使得每個人都能增加完成成品的速度。 跟訊號控制有關係的作品變得不再是 EE 的專利 無論軟硬體層面都大幅促進社會的科技知識普及化

Maker 大量的崛起、眾多前瞻的作品出現 Maker≠ 創客& Maker≠ 電子玩家

電子玩家可以是 Maker 創作任何東西的人都可以是 Maker

Page 11: Make something with arduino first class

好,所以到底 Arduino 能幹嘛? Summary 結論:

傳送訊號 接收訊號

他只做也只能做這兩件事 其他的事情是外接的模組、電路、元件在處理的

探討訊號的定義

Page 12: Make something with arduino first class

訊號是什麼? 傳送資料 (Data) = 數據 數位訊號的基本應用:開關

開關按了就會亮= 1  (有電) 開關按了就會滅= 0  (沒電) 雖然送的電壓是交流電,但控制的概念是數位

類比訊號的基本應用:說話、你家的插座電源

Page 13: Make something with arduino first class

訊號 (Signal)  在二維 XY 圖面上的表示方式

數位訊號:函數值非 0 即 1 其實定義有時也會有些差距 (如中間的圖 ) 但是可以看見每個單位時間 (X 軸的每一格和下一格 ) 內的波型都是一致的

類比訊號:每個時間點的函數值大部分都不一樣 所以也可能會出現不同時間點但卻有相同函數值的函數,比如三角函數。

Page 14: Make something with arduino first class

Arduino 跟訊號的關係 Arduino 可以接收也可以傳送訊號。

只能傳送數位訊號。 有其他的方式可以送出模擬的類比訊號,但超範圍了不特別提及

( 數位類比轉換器 DAC) 也有看起來很像類比訊號的方法,後面課堂會提及。

接收的時候可以是數位訊號也可以是類比訊號。 可以接受類比訊號的原因 : ADC ( 類比數位轉換器 )

原理也超範圍了所以 (ry

Page 15: Make something with arduino first class

訊號跟電學的關係 電學基本上就是在探討訊號的關係。

而電路學 / 電子學則是更聚焦於探討訊號在元件當中值域的大小 還記得國中學過的這個嗎?

V=IR電壓差 = 電流 x 電阻 電壓的單位:伏特 ( V ) 電流的單位:安培 ( A ) 電阻的單位:歐姆 ( ohm = Ω ) 就像水往低處流的感覺。

Page 16: Make something with arduino first class

先來寫第一個程式吧! 第一步: Install Arduino IDE:

https://www.arduino.cc/en/main/software 第二步:先觀察一下最上面的工具列,點擊檔案→範例→ Basic→Blink 第三步:插上 USB線,上傳!

Page 17: Make something with arduino first class

先來寫第一個程式吧! 基本的 Blink 接線方式:

Page 18: Make something with arduino first class

為什麼要這樣接線呢!?

Page 19: Make something with arduino first class

元件介紹:麵包板 (Bread Board)

紅線和藍線的洞是橫向相通的 中間的洞洞是縱向相通的

Page 20: Make something with arduino first class

耗材介紹 杜邦線

有公母之分 可以多次插拔

電阻 上面的色碼代表電阻值 沒有正負極之分

Page 21: Make something with arduino first class

簡單的電路分析 GND = 接地 = 基準電位 = 0伏特

就像是畫數線時候的 “原點” 一樣 一個電路一定會有,也只會有一個 GND

VCC = 電源電位 VCC 可以有不同的數字也可能一個電源擁有很多個 VCC ,沒有硬性定義

假如我們只用 5V 和 GND 去看這張圖: Q1:請問這一題的電流數字是多少?

ANS: 由於 V=IR ,元件兩端的電壓是 5V – 0V 所以兩端電壓為 0V 移項一下, V/R=I 則電流 5/220 = 0.0227A = 22.7mA

Page 22: Make something with arduino first class

簡單的電路分析 其實這兩張圖片對電阻來說,在電路意義上是等價的:

但是基準點 (GND) 的位置不同,節點上的電壓就會不一樣 拿右圖舉例:

220歐姆下方的節點,電位是 0V (GND) 但是上方的節點電位是 5V

回到左圖: 找不到基準點的狀況,一般都假設電池下端的節點電壓為 0 但要知道的是,該電池符號的定義是兩端節點的電壓差

Page 23: Make something with arduino first class

簡單的電路分析 如果我們對上頁的右圖改個數字,兩張圖片電路意義 ( 在電阻上的電壓差 ) 仍然相同。

上面節點是 87V ,下面節點是 82V87V-82V = 5V

Page 24: Make something with arduino first class

簡單的電路分析: Blink 回到我們一開始製作的實體電路

= 一個元件尾和接在另一個元件的頭連接的方式叫做串聯

並聯則是一個元件的頭接另一個元件的頭,尾接尾。 PIN13 的節點電壓可以控制 LED燈的亮或是滅。 附註: LED燈如果要亮起來,上下兩個節點的電壓差要 0.7V

Page 25: Make something with arduino first class

認識 Arduino UNO RESET :重開機 支援 6V~12V 電池外部供電

雖然官方文件不建議,但也可以直接用 5V直接對 Vin 送電 VCC固定送出 5V 電壓 Digital: 數位接腳 (PIN)

EX: digitalWrite(13,HIGH); 要求 13 號腳送出高電位 (5V) 。 Analog: 類比接腳

專門接受類比訊號輸入的地方。EX: analogRead(A0);

Page 26: Make something with arduino first class

認識 Arduino UNO Blink 解析 程式碼的運作是一行一行由上到下動作的 setup()

開機的時候只執行一次大括弧內的程式碼 loop()

setup 完以後重複執行大括弧內的程式碼 LED_BUILTIN 內建的 LED 的 PIN腳

每個板子的 LED_BUILTIN 都不一樣 在 UNO , LED_BUILTIN = 13

pinMode 如果你要應用某個 PIN ,你必須告訴Arduino 那個 PIN 的用途

所以 pinMode (LED_BUILTIN, OUTPUT); 等價於 pinMode (LED_BUILTIN, OUTPUT);

Page 27: Make something with arduino first class

認識 Arduino UNO Blink 解析 digitalWrite(LED_BUILTIN,HIGH);

要求 LED_BUILTIN = 13 號腳送出高電位 delay(1000);

整個程式停止一秒 單位是 ms

所以 1000ms = 1000 * 10^-3 = 1s 不要忘記加分號 不要忘記少括號 Void 不是這一次要講的重點

Page 28: Make something with arduino first class

簡單的電路分析: Blink 回到我們一開始製作的實體電路

= PIN13 的節點電壓可以控制 LED燈的亮或是滅 附註: LED燈如果要亮起來,上下兩個節點的電壓差要 0.7V

Page 29: Make something with arduino first class

TEST & 實作時間 & 問問題時間 請修改一下前一頁的 Blink 電路,並嘗試完成下列目標: Q1:請嘗試並聯看看三個 (LED燈+ 電阻 ) ,觀察燈號是否有變化

不建議並聯太多個,因為 UNO 板會推送太多電流造成當機或板子受損 不要傻傻地把 LED 燈跟電阻一起並聯,它們兩個是串聯的

Q2:請嘗試把串聯的 LED燈增加,或增加電阻的數量,觀察燈號的差異性 Q3: 請嘗試計算 LED 燈上面流過的電壓和電流是多少

有點重要的技能,因為過大的電壓或電流很容易將元件燒壞 過小的電壓或電流則沒有辦法驅動。

目標:1. 了解串聯是會把電壓給分壓,造成燈號的電壓衰減,但串聯的元件電流相同2. 了解並聯則是把電流給分流,造成板子的負載 ( 電流供應量 ) 增加,但並聯的各節點電壓相同

Page 30: Make something with arduino first class

電路學 Summary V=IR 電壓準位 並聯跟串聯的性質

為什麼非本科系的人需要了解這些呢?照著接就好啦! 因為你可能會把東西弄爆

Page 31: Make something with arduino first class

使用 Arduino 時要注意的事情 延伸閱讀 :

http://lunglungdesign.blogspot.tw/2012/11/arduino.html 十種會搞爛阿丟諾的方式

最常見的兩大問題:電源暴衝、電流倒灌

Page 32: Make something with arduino first class

電源暴衝 & 電流倒灌 在 USB Port推送太多電流時,電腦的 OS 會自動幫你切斷

Port 以免傷害電腦 EX:瘋狂並聯一堆 LED燈

Page 33: Make something with arduino first class

電源暴衝 & 電流倒灌 電流倒灌如何發生?如果我們把左圖改成右圖 :

Page 34: Make something with arduino first class

電源暴衝 & 電流倒灌 電是由高電位流向低電位的 但是 Arduino UNO 的大部分接腳最多只推送 / 接收 5V 多餘的電流會回流回電源端造成電源受損

假如你是用電腦的 USB 供電的話…… 輕則硬碟的 OS 掛掉重灌 重則整台電腦掰掰 ( 物理 ) 課外 Key word:USB KILLER

Page 35: Make something with arduino first class

今日課程結束!下一次上課: 5/5

Page 36: Make something with arduino first class

課外補充 克西何夫電壓定律

電壓升 ( 電源供應 ) = 電壓降 ( 每個元件吃掉的電壓總和 ) 其實如果有搞懂前面的電路運作,這個你應該已經會了

克西何夫電流定律 流入某個節點的總電流 = 流出節點的總電流

當然,流出節點的電流的總和最後還是會匯集成一條電流流回電源I (total) = I (1) + I (2)