Top Banner
Make something With Arduino 張張張
36

Make something with arduino first class

Apr 21, 2017

Download

Education

Zhang Jiawei
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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)