顯示具有 Arduino 標籤的文章。 顯示所有文章
顯示具有 Arduino 標籤的文章。 顯示所有文章

2014年12月24日 星期三

Setting Arduino UNO COM Port in Ubuntu 14.04

你是否在 Ubuntu 14.04  terminal 輸入 : ./arduino
執行 Arduino 時,是否有發現以下的畫面:

1. Arduino IDE 右下角顯示 Arduino 已連結於 COM X  (X 為系統給定的 Port 值,在此為 1)
2. Tools -> Serial Port 無法選擇



如果你有以上狀況別擔心,並不是 Arduino IDE 有問題,或是 USB 無法讀取,而是 Ubuntu 使用者權限的限制問題。只要在輸入執行 Arduino IDE 指令前加上 sudo ,就可以打開 Serial Port 存取功能。

現在改為輸入:sudo ./arduino
Serial Port 項目就可以正常顯示並設定



針對 USB 的存取與控制,Ubuntu 限制的比 Windows 來的嚴格,但這也是對安全的基本考量,因此下次如果遇到 Arduino 無法選擇下載埠,記得先關閉原始 IDE,並使用 sudo 開啟就可以了!



2014年8月10日 星期日

(筆記)強化 RF 模組傳輸距離

今晚在 FB 上看到有網友詢問如何使用 RF 模組 + Arduino 傳輸資料。就實際使用經驗上,我僅使用 serial port 就可以滿足我的應用需求。

但有朋友指出:若需要將 RF 訊號打得更遠,則需要採用 NRZ  或 曼徹斯特編碼方式,才可以將訊號傳輸至較遠的地方。



NRZ : 

NRZ (Nonreturn to Zero),其表現 1 與 0 的方式是以,正電壓為 1 ,副電壓為0 。NRZ 編碼解碼的方式比較容易,但缺乏同步機制,因此缺少了訊號校正的能力。



Manchester:曼徹斯特編碼

曼徹斯特編碼的 1 與 0 表示方式分別為: 1 為正電壓(前)+負電壓(後),0 為負電壓(前)+正電壓(後)。


詳細的說明與繪圖方式,請參閱 GOTOP 的網路試讀章節:
訊號編碼格式介紹(若此連結有版權疑慮,請即刻聯絡我,我會立即修正下架,謝謝!)

2014年5月13日 星期二

Arduino 上使用 DHT11 溫濕度 Sensor + Bluetooth

今天我們要介紹的是如何在 Arduino 上使用 HC-05 這個藍牙模組將 DHT11 溫濕度 sensor 資訊,以無線傳輸的方式回傳至電腦端。

今天用到的材料清單如下:
  • 內建藍牙筆電(或有藍牙接收器的 PC ) x 1
  • Arduino  UNO  x 1
  • DHT11 溫濕度 Sensor  x 1
  • HC-05 藍牙模組   x 1
  • 杜邦線 (公母頭) x 7
  • 外接電源(行動電源或手機充電器) x 1
  • USB 線  x 1

若你手上的 HC-05 藍牙模組需要更改 Baud rate ,請依照 HC-05 藍牙模組設定 這篇文章先進行 Baud rate 設定。

Step 1 :

首先我們先將以下程式燒錄到 Arduino

/*

Board int.0 int.1 int.2 int.3 int.4 int.5
Uno, Ethernet 2 3
Mega2560 2 3 21 20 19 18
Leonardo 3 2 0 1
Due (any pin, more info http://arduino.cc/en/Reference/AttachInterrupt)
*/

#include <idDHT11.h>

int idDHT11pin = 2; //Digital pin for comunications
int idDHT11intNumber = 0; //interrupt number (must be the one that use
                          //the previus defined pin (see table above)
//declaration
void dht11_wrapper(); // must be declared before the lib initialization

// Lib instantiate
idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);

void setup()
{
    Serial.begin(9600);
    Serial.println("idDHT11 Example program");
    Serial.print("LIB version: ");
    Serial.println(IDDHT11LIB_VERSION);
    Serial.println("---------------");
}


// This wrapper is in charge of calling 
// mus be defined like this for the lib work
void dht11_wrapper() {
    DHT11.isrCallback();
}
void loop()
{
    Serial.print("\nRetrieving information from sensor: ");
    Serial.print("Read sensor: ");
    //delay(100);
    DHT11.acquire();
    while (DHT11.acquiring());
    int result = DHT11.getStatus();


    switch (result)
    {
       case IDDHTLIB_OK: 
       Serial.println("OK"); 
       break;


       case IDDHTLIB_ERROR_CHECKSUM: 
       Serial.println("Error\n\r\tChecksum error"); 
       break;


       case IDDHTLIB_ERROR_ISR_TIMEOUT: 
       Serial.println("Error\n\r\tISR Time out error"); 
       break;


       case IDDHTLIB_ERROR_RESPONSE_TIMEOUT: 
       Serial.println("Error\n\r\tResponse time out error"); 
       break;


       case IDDHTLIB_ERROR_DATA_TIMEOUT: 
       Serial.println("Error\n\r\tData time out error"); 
       break;


       case IDDHTLIB_ERROR_ACQUIRING: 
       Serial.println("Error\n\r\tAcquiring"); 
       break;


       case IDDHTLIB_ERROR_DELTA: 
       Serial.println("Error\n\r\tDelta time to small"); 
       break;


       case IDDHTLIB_ERROR_NOTSTARTED: 
       Serial.println("Error\n\r\tNot started"); 
       break;


       default: 
       Serial.println("Unknown error"); 
       break;
    }
    Serial.print("Humidity (%): ");
    Serial.println(DHT11.getHumidity(), 2);

    Serial.print("Temperature (oC): ");
    Serial.println(DHT11.getCelsius(), 2);

    Serial.print("Temperature (oF): ");
    Serial.println(DHT11.getFahrenheit(), 2);

    Serial.print("Temperature (K): ");
    Serial.println(DHT11.getKelvin(), 2);

    Serial.print("Dew Point (oC): ");
    Serial.println(DHT11.getDewPoint());

    Serial.print("Dew Point Slow (oC): ");
    Serial.println(DHT11.getDewPointSlow());

    delay(2000);
}

Step 2 : 接上藍牙與溫濕度 Sensor

在 Step 1 中將程式碼燒錄完成後,我們可以開始將感測器與藍牙接上 Arduino。以下的接線過程中,記得要讓 Arduino 保持斷電狀態。


Bluetooth 腳位對照表,請將各腳位對應至 Arduino 上接好


DHT 11 溫濕度 Sensor 腳位對照表,請將各腳位對應至 Arduino 上接好


Step 3 : 下載通訊軟體

因為 Arduino 在後續的使用上將會脫離與 PC 端連接,因此若要收取經由藍牙回傳至電腦端的封包資料,我們必須在接收端的電腦上安裝一套可以收取 COM port 封包的軟體,在此我們推薦使用 Tera Term  。 Tera Term 是一套 Open source 的軟體,介面簡潔好用,是我相當推薦的原因。

若你的電腦是 Windows 作業系統,請在 Tera Term 的 Download page 中挑選 exe 檔進行安裝。



Step 4 : 搜尋藍牙裝置與建立通訊埠

Arduino 上的藍牙模組要能傳送資料給 PC 前,我們需將 Arduino 電源接上,使 Arduino 處於供電狀態,並在電腦上針對該藍牙模組開啟一個適當的通訊埠(COM  port )。在此我僅示範 Windows 7 的藍牙通訊埠建立流程,詳見如下:


開啟藍牙管理中心後,點選新增裝置

搜尋到藍牙模組後,請點選該模組,並按下一步


選擇『輸入裝置的配對碼』,HC-05 藍牙模組的預設密碼為 1234



密碼驗證成功後,開始安裝驅動程式與建立 COM port



Step 5 : 開啟 Tera Term 接收資料

以上四個步驟都建立好後,開啟 Tera Term,畫面如下,請點選 Cancel


進入主畫面後,請於上方功能選單點選 Setup  ->  Serial port


開啟 Serial port 選單後,可在上方 Port 選單下拉,檢查是否有新增稍早建立的藍牙通訊埠,在下圖中我們可以看到新增的 COM 6 、COM 11,兩者擇一即可。


選擇 COM port 完成後,請檢查 Baud rate 是否正確。如果你在藍牙模組上所設定的 Baud rate 並非 9600,請依照藍牙上的 Baud rate 進行選擇。例如,你在藍牙上的 Baud rate 為 115200,那麼在 Tera Term 這個視窗中,你就需要選擇 115200 。確認後,按下 OK 即可開始通訊。


若藍牙與溫濕度 Sensor 有正常工作,電腦自藍牙接收到的溫濕度資料就像下圖一樣,分別呈現出不同的溫濕度。




以上就是透過 HC-05 藍牙模組將 Arduino 上的溫濕度 Sensor 資訊傳至電腦端的實驗步驟。透過這些步驟,你可以整合更多有意思的感測器,並透過藍牙或 Wifi 的方式傳回電腦上,讓你的 Arduino 設備不再因為線材而綁手榜腳。

2014年5月12日 星期一

Arduino + HC-05 Bluetooth module setting ( AT Mode and Baud rate setting )

Arduino 有許多容易使用的模組與 Lib ,可以讓人快速的驗證流程與效果,但為了能讀取 Arduino 上的溫濕度、光敏電阻、電壓等數位、類比訊號,我們難道就只能用 USB Cable 讀取嗎?不不,我們還有 Wifi module 和 Bluetooth module 可以幫助 Arduino 添加無線傳輸功能,讓我們拋開 USB Cable ,把 Arduino 發揮更多可能。

市面上販售的藍牙模組、Wifi 模組有許多型號,各種型號版本各有些許差異,但在這篇筆記中,我們僅探討:HC-05 這個藍牙模組。

為什麼僅探討 HC-05 模組?

1. 筆者手邊僅有這個型號的藍牙模組

2  我買來好久一段時間,一直沒能搞定 AT Mode 和傳輸問題

3. 網路上將近八成的藍牙模組筆記,多是探討 HC-06,其底下留言中有許多跟著步驟操
    作仍無法成功的朋友(我亦是其一),且拍賣網頁上的模組介紹,有許多將 HC-06 與 
    HC-05 搞混

4. 幾乎找不到對 HC-05 的 AT Mode 設定文章與介紹

基於以上四點理由,我覺得我該寫一篇文章分享給同樣遇到藍牙模組設定有問題的朋友們。




首先讓我們先來看一下 HC-05 的外觀:


 正面

背面


由背面我們可以看到版本編號為 V1.05 ,但若依照 V1.05 進行搜尋筆記或拍賣時,有可能會得到誤導的資料與型號。筆者依照 V1.05 於露天拍賣、淘寶、Yahoo 拍賣上搜尋,V1.05 的版本名稱為 HC-06 ,但經由實驗過程中發現,這根本是 HC-05!難怪許多網頁上的操作步驟,怎麼測試就是無法進入 AT Mode 更改 Baud rate,原來一開始就搞錯了版本。

HC-05 與 HC-06 的 AT Mode 在操作中, HC-06 較簡單, HC-05 則需要透過 key pin 的設定才可以進入 AT Mode。





進入設定步驟說明前,介紹一下我的設備與 Arduino 版本,並依照下列步驟,逐一將 HC-05 與 Arudino 連接、設定:

  • Arduino UNO           x 1
  • HC-05 藍牙模組     x 1
  • 杜邦線(公母頭)x 4
  • Arduino  IDE  1.0.5 - r2





Step 1 : 以杜邦線將 HC-05 與 Arduion 連接

接線腳位對照表
  • HC-05 GND <---> Arduino GND Pin
  • HC-05 Vcc (5V) <---> Arduino 5V
  • HC-05 TX  <---> Arduino Pin 10 (soft RX)
  • HC-05 RX  <---> Arduino Pin11 (soft TX)
  • HC-05 Key <---> Arduino Pin 9


Step 2 : 上傳程式碼至 Arduino

/*

AUTHOR: Hazim Bitar (techbitar)
DATE: Aug 29, 2013
LICENSE: Public domain (use at your own risk)
CONTACT: techbitar at gmail dot com (techbitar.com)

*/


#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

void setup()
{
  pinMode(9, OUTPUT);// this pin will pull the HC-05 pin 34 (key pin)HIGH 
                     // to switch module to AT mode

  digitalWrite(9, HIGH);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

void loop()
{

  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available())
    BTSerial.write(Serial.read());
}

將上面程式碼複製到 Arduino IDE 中編譯、上傳,並開啟 Serial Moniter。



Step 3 : 設定 HC-05 進入 AT Mode

* 注意 : 請先將 Arduino 電源拔除再進行以下步驟


1. 確認是否線路皆依照 Step 1 接線完成

2. 把 Arduino 接上電源前,請將 HC-05 連接至 Arudino 上的 Vcc 腳位拔除,其餘四支腳位皆維
    持連接狀態

3. 確認拔除 Vcc 腳位後,現在可將 Arduino 接上電源

4. 確認 HC-05 目前沒有與任何藍牙裝置配對中

5. 將 HC-05 的 Vcc 腳位插回 Arduino Vcc

6. 上述步驟都正確執行後, HC-05 的 LED 燈應該維持兩秒閃爍一次的頻率。若燈號狀態正
    常,此時已進入 AT Mode

7. 為了驗證是否正確登入 AT Mode ,請開啟 Serial Moniter ,並設定視窗右下角的 Baud rate 為
    9600,於 Serial Moniter 上方欄位中輸入大寫 " AT " ,將收到回應 " OK "

8. 如果依舊沒有辦法收到 " OK " 回覆,請再次檢查您的線路與步驟是否正確


進入 AT 模式後,若設定皆正常,於畫面應顯示 " Enter AT commands ",而非亂碼,若呈現亂碼請注意右下角 Baud rate 速率與格式設定。輸入 " AT ",可得到回應 " OK " 。

改變 HC-05 Baud rate , 請輸入 " AT+UART=115200,1,0 ",改變成功可得到回覆 " OK ",其中 115200 為最高 Baud rate 值,1 則是停止位元,0 為檢查位元,調整 Baud rate 時,僅需調整前面的 Baud rate 值即可。


請注意程式碼中的 Serial.begin(9600) 與 BTSerial.begin(38400),這兩者的數值請勿調整

Step 4 : 設定 HC-05 各項 AT 指令

以下為常用指令,若需參考其他 HC-05 指令,可點選以下連結:
http://www.electronicaestudio.com/docs/istd016A.pdf

返回初始預設值 : AT+ORGL

查詢版本 : AT+VERSION?

更改藍牙名稱 : AT+NAME=XXXX  (其中 XXXX 為欲設定的名稱 )

更改 Baud rate : AT+UART=XXXX,1,0  (其中 XXXX 為欲設定的 baud rate 值 )

更改密碼 : AT+PSWD= XXXX ( 其中 XXXX 為新密碼 )




障礙排除

如果 HC-05 與 Arduino 的接線皆正常,程式也沒有錯誤,打開 Serial Moniter 設定與 Baud rate 也正常,但無論怎麼輸入 " AT " 都無法得到 " OK " ,請參考以下解決方案

燈號狀態


  • 若燈號為兩秒閃爍一次,請重新確認 BTSerial.begin(38400) 是否正確,並請重新操作上述步驟


  • 若燈號為快速閃爍,請依照以下步驟設定


1. 拔除 USB 線,使 Arduino 處於斷電狀態

2. 將 Pin 9 的腳位拔除後,插入 Vcc 3.3V 腳位

3. 插上 USB 後,檢查 HC-05 燈號,若燈號為兩秒閃爍一次,此時已正確進入 AT Mode,若燈
    號為快速閃爍,請重新操作一次接線步驟



以上為進入 HC-05  AT Mode 設定,若你在其他 Blog 或 論壇上找到的操作方法無法正常設定,或許你手上的藍牙模組有可能與我的相同是『掛羊頭賣狗肉』的 HC-05 ! 

2013年2月6日 星期三

基本電學計算與串並聯概念


基本電學要了解的細節是電壓 ( V ) 與 電流 ( I ) 、
電阻 ( R )的比值關係。


透過 V= IR  公式,我們可以理解以下幾個重點:


1.  求電壓  :  V = I R

2.  求電流  :   I  = V / R

3.  求電阻  :   R = V / I


透過以上三個計算式,可依照個人對電路的需求進行計算。


例如:

有一電源電壓 5V ,欲透過該電源電壓點亮一顆順向電壓1  3.2V的 LED ,
請問此一電路中的電阻該配多少?



首先我們需有一個很基本的概念,單色LED燈的驅動電流多為 20mA,
因此套用  R= V / I 公式,我們就可求得電阻 R 的阻值。

由於單位大小需相同才可進行計算,因此 20mA 我們改寫為 0.02A
計算式為:R= 5 / 0.02  ,因此 R= 250歐姆

以上答案是:錯的!



當電源電壓流經負載時,產生壓降2,因此計算上需將電源電壓扣除壓降後,

才可與電流做計算,方可得到正確的電阻值。

正確計算為:R = ( 5- 3.2 ) / 0.02,因此 R = 90 歐姆



串聯:

串聯顧名思義就是全部電路全部形成「單一迴路」,簡單的說法即是各元件的正負極為「+ - + - 」這樣的頭尾相接的方式。拆開手電筒的電池蓋後,將電池取出,即可看見最常見的串聯。

串聯的好處在於,整體迴路中的「電流相同」。利用水管的概念作為說明,即整條水管若無其他分支,由水塔輸出至串聯路徑中的各出水口,水流量將是一樣的。


並聯:

並聯最大的不同在於,整體迴路中所有的負載,其「電壓相同」,各元件的擺放如下圖:



並聯中,各分支的正極相接至正電壓 5V,負極也相接至接地端。此一概念與家中電路、水管理念一致,筆者較喜歡用水管概念說明電壓。因此若水塔透過並聯方式輸出至同一樓層各用水區域,每一個用水區域將可得到同樣大小的水壓。


因此了解基本電學公式:V = I R 後,再搞清楚串、並聯的接線方式,就可以搭配各種所需的電路,減少不必要的能源浪費與額外設計。






1.  順向電壓(或稱切入電壓)代表該 LED 燈需多大電壓才可點亮,
因此電源電壓的選擇,就需要大於順向電壓方可正常運作。

2.  壓降一詞為:當電壓流經負載,如 LED 時,會於負載元件兩端產生電壓位差,
通稱為:壓降。而壓降的大小與 LED 所需的順向電壓相同。

2012年11月2日 星期五

USBasp 以 Progisp 軟體燒錄 Arduino (ATmega168、ATmega328) bootloader 設定教學

前一篇我們帶著大家利用  AVR Studio  設定  AVRISP   mkII  進行 Fuse 等細節燒錄,
但上一篇教學是針對 Arduino   ATmega  2560 這顆單晶片。

若手邊只有 USBasp,而且要燒錄的對象只是 ATmega 168、ATmega 328,
那麼只需要上網搜尋一個輕量級的軟體: Progisp  ,即可燒錄。

由於該軟體相當容易搜尋,因此就不在此提供連結。




當軟體準備開啟前請先將 USBasp 插上 Arduino 的 ICSP 腳位,
並將 USBasp 與 Arduino 上的 USB 線連接至電腦。




接著將 Progisp 開啟,開啟畫面如下,
請先選擇晶片,接著按一下 USBasp 的 icon





接著我們針對常用的幾個 icon 進行介紹,紅色方框中的部份是我們會用到的常用選項,
圖片如下


1 . 一鍵清除晶片
2.  全自動(清除、上傳、驗證,一鍵完成)
3.  Fuse 等細部設定
4.  更多命令功能 ( Earse  flash、Upload  flash ....etc. )


當我們要上傳程式之前,請先按下 Earse 作晶片清除,接著按 Auto,就完成了全部的工作。
好,節目到此結束,我們下週見。


哎呀,當然不是這樣就沒啦!
的確這兩個步驟就可以做完全部的工作,只要一開始的晶片選擇有選對,
就是這麼輕鬆簡單。



我們再來介紹一下選項 3 和選項 4 的兩個功能


選項 3 點開後的圖示如下

若你有閱讀過我們前一篇使用 AVR  Studio 燒錄的文章,
那這邊應該有些 Fuse 的名字很熟悉,例如 SPIEN(SPI  Enable)。





以電腦的概念而言,1代表開,0代表關,但為什麼 SPIEN 是 0 呢?
因為在 AVR 的 Fuse  設定中,0就代表開,1就是關閉。
所以千萬別被 Fuse 這堆 1, 0 嚇到了。

這邊的 Fuse 設定,我們都不需要去更改設定,只需要看看 SPIEN有沒有被設定為 1 就行了。





那麼到底晶片的 Fuse 設定,應該是什麼樣的規定才是正確的?
有沒有一個表格可以查詢?
這問題我想應該很多初學者也很困擾,但別擔心,網頁上就能找到讓你搞懂 Fuse 的網站!

Embedded AVR Fuse Calculator:http://www.engbedded.com/fusecalc



進入網站後,可以看見中間有個選擇晶片的選項



我以 ATmega 328 晶片為例,選擇後會跳出以下畫面,
共計有三個大項目:

1. Feature  configuation

2. Manual fuse bits configuration

3. Current setting




這個網站所提供的 Fuse 與其他細節設定值,可以直接套用至燒錄器中的選項設定中,
因此萬一拿到一片新的 AVR  晶片不曉得要怎麼調整,可到這個網站來查詢一下。



選項4的按鈕 command 則是把一些功能選單隱藏起來,讓畫面更乾淨




綜合以上介紹後,對於 Progisp 是不是比較熟悉了?

其實若沒有特殊需求,需要特別設定,
在一開始打開 Progisp ,選擇好晶片,直接按下 Earse 和  Auto  就可以了。

不過 ATmega  2560 在這個燒錄器有個很妙的情況,
燒錄可以成功燒錄,但是在 Arduino  IDE 卻無法上傳 Sketch。

正常燒錄成功的 Arduino ,應該是可以透過 USB 或 ICSP 腳位(利用燒錄器)上傳程式,
不過 ATmega 2560 卻失敗了。



因此筆者在此強烈建議:

ATmega  168 、ATmega  328  可用 USBasp 燒錄,簡單又便宜,

ATmega 2560 則用 AVRISP  mkII ,可增加成功燒錄的機率。



燒錄器與 Arduion  Bootloader  系列文章,就在此告一個段落,
希望很快有新的研究可以分享給各位!

Have fun !


AVRISP mkII 與 AVR Studio 於 Arduino 2560 燒錄 Bootloader 與 Fuse 設定

Dear  all,
昨天那篇 USBasp 使用文章,是否讓各位有所幫助呢?

今天我們要講的部份是針對:  AVRISP  mkII  與  AVR  Studio  的使用設定

為什麼?
之前的文章不是已經教過怎麼安裝設定 AVRISP  mkII 的驅動程式,
而且還可以利用 Arduino  IDE  去燒錄更換新的 Bootloader ?


兩者不太一樣,之前的 AVRISP  mkII  的驅動程式是使用 Arduino  IDE 所提供的,
若要在 Arduino  IDE 底下使用 AVRISP  mkII 進行燒錄 Bootloader 或上傳 Sketch,
那就一定要使用 Arduino IDE  所提供的AVRISP  mkII  驅動程式。


不過若要使用  AVR   Studio  這套強大的編譯器去對 Atmega 2560 單晶片作更細微的 Fuse 設定,
那你非得要先移除原有 Arduino  IDE  所提供的驅動程式,再另行安裝。



以下是原本使用 Arduion  IDE 的驅動程式:


今天我們要更換成 AVR  Studio 所提供的版本,安裝後應如下圖:




請注意:   如果沒有移除原有驅動程式,就直接安裝新版本驅動程式將如下圖,
                  請記得移除 LibUSB-Win32 Devices




以上是驅動安裝成功與否的檢查畫面,需要兩個驅動程式都是在 Jungo 底下,
請自行留意是否正確。


======================================================================

讓我們開始進入正題,帶著各位一步一步安裝 AVR  Studio。

安裝前,請再確定一次你已經移除原有的 AVRISP   mkII 驅動程式,
因為先行移除,才不會造成後續安裝的困擾。




在此我們示範的 AVR  Studio ,是  :  AVR  Studio  4 ,
官方網站目前提供的版本是最新的  :  AVR  Studio  6。


點選執行 AVR  Studio  4 後開啟畫面如下



點選: I   accept  the  terms  of  the  license  agreement,並選擇安裝位置




安裝驅動程式。若之前的 AVRISP  mkII  驅動程式你有移除,在此就可直接放心按 Next




確認並安裝




安裝完畢後,開啟 AVR  Studio  4





開啟  AVR   Studio  4 ,請於開啟檔案的詢問視窗點選:Cancle





在上方的  Toolbar  找到 AVR  icon 後點選,如下圖


選擇燒錄器型號,以及連線方式







接下來就是我們的重頭戲啦,請各位看官們留神了!


1.   首先選擇 AVR 單晶片型號





2.  燒錄 Bootloader

     請先按下 Erase  Device,清除 AVR  單晶片上的舊有資料。

     在 Flash 欄位選擇 Bootloader 來源位置,Bootloader 我們一樣選擇 Arduino IDE 提供的
     筆者的Arduino 資料夾解壓縮後的位置是:C:\ ,因此Bootloader 的位置是:

     C:\arduino-1.0.1\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex

     請以自己的 Arduino  資料夾位置為主。選擇後按下 Program。



3. 調整 Fuse 

    燒錄完 Bootloader 後,還要調整 Fuse 的部份。
    Fuse的調整可以讓 AVR 單晶片的每個腳位都能以正常的初始值進行工作。

    請注意: 畫面中有一個 SPIEN 欄位,他的灰色方塊    『不可以取消勾選 』
                因為若取消勾選,將保護模式,無法上傳程式與更新 Bootloader

上圖中有勾選的選項,我在下方列出:

BODLEVEL  : Brown-out detection at VCC=2.7V
SPIEN              :  勾選    (千萬要勾選)
BOOTSZ         :  Boot Flash size=4096 words start address=$1F000
BOOTRST      :  勾選
SUT_CKSEL  :  Ext. Crystal Osc. 8.0- MHz; Start-up time: 16K  CK + 65 ms


EXTENDED   :  0xFD
HIGH               :  0xD8
LOW                :  0xFF


以上資料確定無誤後,按下 Program  即可





4.  設定 LOCKBIT


在這個頁面中,只需要針對中間空白區域,寫著 LOCKBIT 中的值作修正。
預設值若是 0xFF,請直接修改欄位中的值為  0x0F 或 0xCF,並將下方的 Verify 選項取消。


  • 若輸入 0x0F,下方的 Verify 沒有取消的話,將會跳出警告視窗。當關閉警告視窗後,原本輸入 0x0F的值,會自動調整為  0xCF。




5.   設定自動燒錄

      如果從第 1 步驟到第 4 步驟,你都有按部就班,基本上第 5 步驟是不需要的。
      但若你很熟悉稍早那些設定後,若能在全部設定都設置好後 「 一鍵完成 」 ,
      這豈不是很棒?

      請按照下圖中的勾選設定,勾選完畢後,按下右下角的  Start,就完成全部的燒錄工作了!
   



    到這恭喜各位已經完成在 AVR   Studio  下針對 AVR 單晶片做好 Fuse 以及 LockBit 的設定,
    好好享受你的實驗與冒險!  Have   fun !