O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

物聯網概論 - Arduino

1.332 visualizações

Publicada em

物聯網概論 - 認識 Arduino Uno

國立臺中科技大學 資訊工程系 廖憲得

Publicada em: Internet
  • Seja o primeiro a comentar

物聯網概論 - Arduino

  1. 1. 物聯網概論初探 Arudino Uno 資訊工程系 廖憲得 A R D U I N O 啊椎(台語 追)諾
  2. 2. Arduino Uno 簡介認識 Arduino 資訊工程系 廖憲得 Arduino的各個版本*Arduino 是一張微處理電路板,使用者 可以在 Arduino 板子上接上各種電子裝置,例如 LED 燈、 喇叭、馬達、開關、溫濕度感測器、紅外線發射與接收器、 LCD 顯示裝置,以及 Ethernet, WiFi, XBee, Bluetooth, RFID, GPS 等各種通訊模組。 若再配合撰寫一些自動控制的程式,就能利用 Arduino 做 出各式各樣的自動控制應用,例如利用溫度感測器控制風 扇的運轉、使用可變電阻控制燈光的明暗、控制馬達的轉 速、利用紅外線遙控家電、利用伺服機(Servo)控制機械手 臂或機器人,以及製作自走車、飛行器等等。
  3. 3. Arduino Uno 簡介Arduino 的特色 資訊工程系 廖憲得 一、OpenSource 不僅軟體是開放源碼,連硬體也是開 放的。開發軟體用的 IDE 可免費下載,Arduino 的電路 設計圖也可以從官方上下載。 二、Easy 入門門檻低,即便沒有電子電機相關科系的 背景,也可以很容易學會使用 Arduino。 三、資源超多 由於 Arduino 開放的精神,很多人都樂 於分享作品,所以網路上有超多資源。常常我們只要參 考網友的作品,配合自己的需求調整一下設計,就可以 在短時間內完成自己的作品。 四、超級便宜 (參考售價)
  4. 4. Arduino Uno 簡介Arduino 的應用 資訊工程系 廖憲得 Arduino 的應用非常多。只要你想得到,它都做得到! 1.Easy Robot 簡易機器人 - 一個很簡單的機器人自走車, 網路上有完整的製作教學。(Youtube) 2.Robot ARM - 使用 Arduino 控制機械手臂。(Youtube) 3.ArduCopter - 四軸直升機,哇嗚!這東西看了真是令 人興奮!(Youtube)
  5. 5. Arduino Uno 簡介Arduino 的硬體 資訊工程系 廖憲得
  6. 6. Arduino Uno 簡介數位訊號(Digital) 資訊工程系 廖憲得 顧名思義,這些腳位可輸出高電位5V與低電位0V的數位 訊號,也可接受數位訊號,腳位編號為0到13,不過通 常會寫為D0到D13表示為數位腳位(D代表Digital)。 在 Arduino Uno 中可以看到,D3、D5、D6、D9、D10、 D11的數字編號旁,還有個波浪符號(~),這表示這些腳 位可以用數位訊號來模擬出類比訊號,使用的方式是脈 衝寬度調變(PWM)。 要注意的是D0與D1這兩個數位腳位,分別被標示了 RX(Receiver)、TX(Transmitter),這兩個腳位用於序列 埠傳送,且與USB序列埠連接,因此電腦若使用USB與控 制板互傳資料時(可見到控制板上標示為RX、TX的LED閃 爍),應避免使用D0、D1兩個腳位。
  7. 7. Arduino Uno 簡介類比訊號(Analog) 資訊工程系 廖憲得 在Arduino Uno中右下角有A0至A5六個腳位,可用來接 受類比電壓輸入,但不能輸出類比電壓,如上所述,類 比電壓必須透過數位腳位D3、D5、D6、D9、D10、D11, 以PWM模擬。
  8. 8. Arduino Uno 環境介紹開發環境 資訊工程系 廖憲得 Arduino 的軟體開發環境是開放源碼的IDE(Open-source IDE),可以在它的官網免費下載,它所用的程式語言語 法類似於C/C++,而且Arduino IDE是跨平台的,有 Windows, Macintosh OSX和Linux 的版本。 官方下載連結: https://www.arduino.cc/en/Main/Software
  9. 9. Arduino Uno 環境介紹基本環境 資訊工程系 廖憲得 Arduino IDE 的軟體介面如下
  10. 10. Arduino Uno 實際演練事前準備 資訊工程系 廖憲得 帶您第一支 Arduino 程式! 請先將 Arduino 使用 USB傳輸線接至 電腦(PC)
  11. 11. Arduino Uno 實際演練範例一 資訊工程系 廖憲得 LED閃爍器(利用Arudino 數位輸出讓LED一閃一滅) 第一步驟:將LED正腳(較長)插入ARDUINO第13隻腳、 LED負腳(較短)插入ARDUINO第14腳(接地GND)
  12. 12. Arduino Uno 實際演練範例一 資訊工程系 廖憲得 LED閃爍器(利用Arudino 數位輸出讓LED一閃一滅) 第二步驟:載入範例程式
  13. 13. Arduino Uno 實際演練範例一 資訊工程系 廖憲得 // 當Arudino啟動時會先執行setup()中的程式碼 void setup() { // 設定第13隻腳位為OUTPUT(輸出) pinMode(13, OUTPUT); } // 當Setup()中的程式碼執行完畢後會開始不斷重複執行loop()中的程式碼 void loop() { digitalWrite(13, HIGH); // 數位輸出第13隻腳為HIGH(通電) delay(1000); // 延遲1秒鐘 digitalWrite(13, LOW); // 數位輸出第13隻腳為LOW(斷電) delay(1000); // 延遲1秒鐘 }
  14. 14. Arduino Uno 實際演練範例一 資訊工程系 廖憲得 LED閃爍器(利用Arudino 數位輸出讓LED一閃一滅) 第三步驟:將程式碼上傳即完成!
  15. 15. Arduino Uno 實作挑戰範例一 資訊工程系 廖憲得 LED跑馬燈 利用ARDUINO與LED燈完成單向跑馬燈 (由左到右 或 由右到左)
  16. 16. Arduino Uno 實際演練範例二 資訊工程系 廖憲得 LED開關(利用按鈕開關控制LED燈) 第一步驟: 1.將LED正腳(較長)插入ARDUINO 第13隻腳、LED負腳(較短)插入 ARDUINO第14腳(接地GND) 2.按鈕 一支腳接到 +5V 3.第2腳接到按鈕的另一支腳, 同一支腳位接一個 10K 電阻連到 GND
  17. 17. Arduino Uno 實際演練範例二 資訊工程系 廖憲得 void setup(){ Serial.begin(9600); // 開啟 Serial port, 通訊速率為 9600 bps pinMode(2, INPUT); // 設定2腳為輸入 digitalWrite(13, LOW); // 初始預設LED為暗 } void loop(){ // digitalRead()讀取按鈕的值,會回傳0/1之間的值。 int input = digitalRead(8); // 並且把值輸出到序列埠,按按鈕,看看變化。 Serial.println(input); digitalWrite(13, input); delay(1000); } 第二步驟:輸入程式碼
  18. 18. Arduino Uno 實際演練範例二 資訊工程系 廖憲得 LED開關(利用按鈕開關控制LED燈) 第三步驟:將程式碼上傳即完成!
  19. 19. Arduino Uno 實際演練範例三 資訊工程系 廖憲得 LED呼吸燈(利用ARDUINO PWM模擬類比輸出實作呼吸燈) 第一步驟:將LED正腳(較長) 插入ARDUINO第11隻腳或有 PWM功能(有~)腳位、LED負 腳(較短)插入ARDUINO 第14腳(接地GND)
  20. 20. Arduino Uno 實際演練範例三 資訊工程系 廖憲得 LED呼吸燈(利用ARDUINO PWM模擬類比輸出實作呼吸燈) 第二步驟:載入範例程式
  21. 21. Arduino Uno 實際演練範例三 資訊工程系 廖憲得 int led = 11; // 設定LED腳位為11 (線路接哪一腳及程式必須同步) int brightness = 0; // 初始LED類比值為0 int fadeAmount = 5; // 每次增加輸出值 0,5,10,15..255 void setup() { pinMode(led, OUTPUT); // 設定第 led(11)隻腳為輸出 } void loop() { analogWrite(led, brightness); // 類比輸出 (0~255) 到 led(11)隻腳 brightness = brightness + fadeAmount; // 將現在值與預設值相加 // 當brightness為0時則開始往上加 當brightness為255時則開始向下減 if (brightness == 0 || brightness == 255) {fadeAmount = -fadeAmount ;} delay(30); // 延遲30毫秒 }
  22. 22. Arduino Uno 實際演練範例三 資訊工程系 廖憲得 LED呼吸燈(利用ARDUINO PWM模擬類比輸出實作呼吸燈) 第三步驟:將程式碼上傳即完成!
  23. 23. Arduino Uno 實際演練範例四 資訊工程系 廖憲得 利用光敏電阻控制led(讀取光敏電阻) 第一步驟:安裝電路 1.將LED正腳(較長)插入ARDUINO第13隻腳、LED負腳(較短)插入 ARDUINO第14腳(接地GND) 2.將光敏電阻一支腳接到 5V,另一支腳串接一顆 10k 電阻接到 Analog Pin 第0腳(A0)中
  24. 24. Arduino Uno 實際演練範例四 資訊工程系 廖憲得 void setup(){ // 從腳位A0讀取光敏電阻的值。 // 以腳位13控制LED。 Serial.begin(9600); // 開啟 Serial port, 通訊速率為 9600 bps pinMode(A0, INPUT); // 設定A0腳為輸入 pinMode(13,OUTPUT); pinMode(13, OUTPUT); // 設定13腳為輸出 } int input_min = 400; // 設定input_min變數為400(開關範圍) void loop(){ int input = analogRead(A0); // 讀取光敏電阻的值,會回傳0~1023之間的值。 Serial.println(input); // 並且把值輸出到序列埠 digitalWrite(13, input > input_min ? LOW : HIGH); // 若大於這個值,熄滅LED,若小於就點亮。 delay(1000); } 第二步驟:輸入程式碼
  25. 25. Arduino Uno 實際演練範例四 資訊工程系 廖憲得 利用光敏電阻控制led(讀取光敏電阻) 第三步驟:將程式碼上傳即完成! 完成後,當外界光線強時,光敏電阻會讀到較大的值, LED就會熄滅;外界光線弱時,會讀到較小的值,LED就 會亮起。
  26. 26. Arduino Uno 實際演練範例五 資訊工程系 廖憲得 利用紅外線控制LED開關(IRremote) 第一步驟:安裝電路 1.將LED正腳(較長)插入第13隻腳 LED負腳(較短)插入第14腳(接地GND) 2.將紅外線接受器面對自己 2.1 最左邊接到第2腳(數位輸入) 2.2 中間接到5V 2.3 最右邊接到GND
  27. 27. Arduino Uno 實際演練範例五 資訊工程系 廖憲得 安裝 IRRemote 函式庫 到 這裡 或 這裡 下載 IRRemote 函式庫,然後把檔案解壓縮放到 Arduino 資料 夾底下的 Libraries 資料夾下即可。Arduino 資料夾的預設位置是在「我的文件 > Arduino」 第二步驟:掛載 IRremote library ▲ 把 IRRemote 資料夾放在「我的文件 > Arduino > Libraries」底下即可 重要!安裝後若無法上傳程式碼(錯誤)請看我->救星
  28. 28. Arduino Uno 實際演練範例五 資訊工程系 廖憲得 #include <IRremote.h> // 將IRremote函式庫掛載進來 int RECV_PIN = 2; // 設定紅外線感測器(接收端腳位) int LED_PIN = 13; // 設定LED燈腳位 IRrecv irrecv(RECV_PIN); // 設定紅外線接收端 decode_results results; // 設定紅外線編碼(正常Digital收到的值只有0/1透過 IRremote來編碼) void setup() { Serial.begin(9600); // 序列埠 pinMode(LED_PIN,OUTPUT); // 設定LED腳位為輸出 irrecv.enableIRIn(); // 啟動紅外線接收端 } 第三步驟:輸入程式碼
  29. 29. Arduino Uno 實際演練範例五 資訊工程系 廖憲得 int input; // 建立全域變數為訊號讀取用 void loop() { if (irrecv.decode(&results)) // 當有讀取到紅外線訊號 { input = (results.value); // 將讀取到的訊號值放到input中 Serial.println(input); // 將讀取到的訊號值傳送至序列埠監看視窗 if (input==2295) // 判斷紅外線訊號是否等於開 { digitalWrite(LED_PIN,HIGH); } else if (input==12495) // 判斷紅外線訊號是否等於關 { digitalWrite(LED_PIN,LOW); } irrecv.resume(); // 讀取下一個紅外線訊號 } delay(100); } 第三步驟:輸入程式碼
  30. 30. Arduino Uno 實際演練範例五 資訊工程系 廖憲得 利用紅外線控制LED開關(IRremote) 第四步驟:將程式碼上傳即完成! 遙控器裝上電池之後對著紅外線接收器即可控制LED開 關
  31. 31. Arduino Uno 實際演練範例六 資訊工程系 廖憲得 利用繼電器控制LED開關(亦可控制110V電器開關) 第一步驟:安裝電路 繼電器安裝 IN腳連至數位輸出腳 VCC接到5V GND接地接GND 繼電器使用 上方(NC) 中間(COM)為外部電源 下方(NO)接到物品 (VCC)
  32. 32. Arduino Uno 實際演練範例六 資訊工程系 廖憲得 int Relay = 8; // 繼電器控制腳位(Digital) void setup() { pinMode(Relay, OUTPUT); } void loop() { digitalWrite(Relay, HIGH); // turn on relay delay(2000); digitalWrite(Relay, LOW); // turn off relay delay(2000); } 第二步驟:輸入程式碼
  33. 33. Arduino Uno 實際演練範例六 資訊工程系 廖憲得 利用繼電器控制LED開關(亦可控制110V電器開關) 第三步驟:將程式碼上傳即完成!
  34. 34. Arduino Uno 實際演練範例七 資訊工程系 廖憲得 利用七段顯示器(共陰)顯示單位數字 第一步驟:依照圖示安裝電路 (記得3,8腳互通,接地前須加電阻)
  35. 35. Arduino Uno 實際演練範例七 資訊工程系 廖憲得 // 宣告一二維陣列名稱為 seven_array , 內容為顯示數字之矩陣資料 byte seven_array[10][7] = { { 1,1,1,1,1,1,0 }, // = 0 { 0,1,1,0,0,0,0 }, // = 1 { 1,1,0,1,1,0,1 }, // = 2 { 1,1,1,1,0,0,1 }, // = 3 { 0,1,1,0,0,1,1 }, // = 4 { 1,0,1,1,0,1,1 }, // = 5 { 1,0,1,1,1,1,1 }, // = 6 { 1,1,1,0,0,0,0 }, // = 7 { 1,1,1,1,1,1,1 }, // = 8 { 1,1,1,0,0,1,1 } // = 9 }; 第二步驟:建立輸出矩陣
  36. 36. Arduino Uno 實際演練範例七 資訊工程系 廖憲得 // number 為預輸出數字 D 為是否顯示小點 void sevenWrite(int number,int D) { // 依number數值輸出對應陣列內容 for (int i=0;i<=7;i++) { digitalWrite(2+i,seven_array[number][i]); } digitalWrite(9,D); // 若D為1則顯示小點 } // 副程式使用方法 sevenWrite(0,1); // 輸出 0 且有小點 sevenWrite(0,0); // 輸出 0 且無小點 sevenWrite(3,1); // 輸出 3 且有小點 第二步驟:建立控制副程式
  37. 37. Arduino Uno 實際演練範例七 資訊工程系 廖憲得第二步驟:撰寫程式碼
  38. 38. Arduino Uno 實際演練範例七 資訊工程系 廖憲得 不會亮嗎? 因為您的七段顯示器可能是共陽極(共用接腳3,8需接5V)! 亮的怪怪的? 因為您的程式是共陰極(共用接腳3,8需接GND)使用的! 怎麼解決? 將輸出結果多一個反向(NOT,0變1 1變0)即可! digitalWrite(2+i,!seven_array[number][i]);
  39. 39. Arduino Uno 實際演練範例七 資訊工程系 廖憲得 利用七段顯示器顯示單位數字 第三步驟:將程式碼上傳即完成!

×