Arduino Yun Mini簡介

19
Arduino Yun Mini 簡介 真理大學資訊工程學系 蘇維宗

Transcript of Arduino Yun Mini簡介

Arduino Yun Mini簡介

真理大學資訊工程學系

蘇維宗

版本控制

● 第2版(2016/1/4): RESET按鈕介紹、新增FAQ● 第1版(2015/12/31): 軟硬體介紹、開發環境(參考資料: 官方網站)

2

Yun Mini與一般的Arduino有甚麼差異?

● 基於Arduino Leonardo (ATmega32u4微控制器)● 多了一顆Atheros WiFi SoC (AR9331 / AR9330 rev. 1)

○ 處理器:

■ MIPS 24Kc架構(32-bit RISC)

■ 運作頻率最高可達400 MHz

○ 網路

■ 內建802.11n (傳輸速度最高可達150Mbps; 天線架構: 1I1O)

○ 作業系統/協定堆疊

■ Linino (OpenWrt-Yun Linux)

■ OpenWrt wireless stack

○ 程式設計環境

■ 內建Python 2.7

注意: Yun沒有做電壓(5V)調節(voltage regulator),所以外接電源時請小心!

3

Artheros AR9311方塊圖*

4

透過Bridge連結ATmega 32u4與AR9311

5

Yun Min

6

Yun Min (續)

7

● 32U4 RST○ 重置ATMega32U4微控制器

● YUN RST○ 重置AR9331 - 重新啟動Linino Linux (在RAM中的程式和資料會消失 )

● WLAN RST○ 按下超過5秒: 還原WiFi設定(IP: 192.168.240.1)

○ 按下超過30秒: 還原Linux (在Flash ROM中的資料會被全部還原 )

Yun Mini v.s. Yun

● 沒有Ethernet介面(PoE)● 沒有USB Host介面

● 沒有Micro SD介面

Arduino Yun8

Linino - 網頁介面

● 如何登入Linino的網頁介面○ 將Yun Mini接上電源

○ 將電腦WiFi連結至SSID為Linino-XXXXXXXXXXXX的AP

■ XXXXXXXXXXXX是MAC位址

○ 以瀏覽器開啟http://192.168.240.1

○ 輸入密碼: doghunter // 或是arduino (根據韌體不同 )

○ 將WiFi設定連結到指定的AP

注意: 如果不知道取得的IP,可以透過進入Linino的Shell底下以ifconfig指令找wlan0介面的IP位址。

(請參閱下一張投影片了解如何進入Linino的Shell) 9

Linino - Shell介面

● 如何透過USB進入Linino的Shell?○ 使用USB連接電腦與Yun Mini

○ 利用電腦終端機軟體以 UART(USB模擬)進入Linino的shell (預設不須輸入密碼 )

● 利用透過SSH進入Linino的Shell?○ 前提

■ Yun Mini的WiFi連線已設定好

■ 執行SSH的電腦要與Yun Mini在同一個區域網路

○ 利用電腦SSH軟體連線到Yun Mini的IP (預設帳號密碼 : root/doghunter)

10

Linino - Shell介面(續)

● 如何安裝其他套件?○ 利用opkg (https://www.arduino.cc/en/Tutorial/YunPackageManager)

■ # opkg update (更新套件資料庫 )

■ # opkg install [套件名稱] (安裝套件)

■ # opkg remove [套件名稱] (移除套件)

■ # opkg upgrade [套件名稱] (更新套件)

11

Arduino Yun Mini與Arduino IDE

● Yun Mini可以透過WiFi與Arduino IDE連結○ 可以寫入Sketch

○ 可以在Console中顯示Yun Mini的輸出訊息

● 如何使用○ 前提

■ Yun Mini的WiFi連線已設定好

■ 執行Arduino IDE的電腦要與Yun Mini在同一個區域網路

○ 在Arduino IDE的「工具」>「序列埠」中選擇 linino-[IP位址](Arduino Yun)

注意: 透過WiFi寫入Sketch或開啟Console時會要求輸入密碼(預設為doghunter)

12

在Sketch中透過WiFi與Console互動

#include <Console.h>

void setup() { Bridge.begin(); Console.begin();

while(!Condsole){ ; //等待連線 { //將訊息顯示在Console上 Console.println(“Conectted!”);}

int incomingByte;

void loop() { //讀取Console送過來的資料 if(Console.available() > 0) { incomingByte = Console.read(); // DO SOMTHING }}

13

利用Process在Sketch中執行Linux程式

#include <Process.h>

void setup() { Bridge.begine(); Console.begine(); while(!Console){ ; } Console.println(“Connected!”);

runLinuxProcess();}

void runLinuxProcess() { Process p; p.begin(“curl”); p.addParameter(“[URL]”); p.run();

while(p.available()>0){ char c = p.read(); Console.print(c); }}

14

利用Bridge以REST API存取Yun Mini

● 設計自己的REST API存取Yun Mini (白色部分可自行設計並撰寫程式處理)○ 設定PIN模式

■ 將PIN 13設定為Input: http://[Yun Mini的IP位址]/arduino/mode/13/input

■ 將PIN 13設定為Outpu: http://[Yun Mini的IP位址]/arduino/mode/13/output

○ 讀取PIN

■ 讀取數位PIN 13的數值: http://[Yun Mini的IP位址]/arduino/digital/13

■ 讀取類比PIN 2的數值: http://[Yun Mini的IP位址]/arduino/analog/2

○ 寫入PIN

■ 將1寫入數位PIN 13: http://[Yun Mini的IP位址]/arduino/digital/13/1

■ 將123寫入類比PIN 2: http://[Yun Mini的IP位址]/arduino/analog/2/123

15

利用Bridge以REST API存取Yun Mini (續)

#include<Bridge.h>#include<YunServer.h>#include<YunClient.h>

YunServer server;

void setup(){ Bridge.begin(); server.begin();}

void loop(){ YunClient client = server.accept(); if(client){ process(client); client.stop(); } delay(50); //避免同時太多requests} 16

// 只處理http://[IP位址]/arduino/digital/13/(0 或1)void process(YunClient client) { //client只會收到”digital/13/0” String command = client.readStringUntil(‘/’);// 取得”digital” int pin, value; if(command==”digital”) { //處理數位PIN pin = client.parseInt(); // 取得”13”轉成整數13 if(client.read(“/”)) { // 寫入數位PIN value = client.parseInt(); digitalWrite(pin, value); } else { // 讀取數位PIN value = digitalRead(); client.print(value); } }}

利用Bridge以REST API存取Yun Mini (續)

17https://www.youtube.com/watch?v=fv9JKGalzKc

FAQ

18

如何轉換到不同的WiFi網路?

19

以下是當更換 WiFi網路時的處理步驟

1. 按下WLAN RST超過5秒(但不超過30秒)重置WiFi設定

2. 以電腦連到Yun Mini重新設定WiFi3. 完成