用麵包板組裝Arduino微電腦實驗板

用麵包板組裝Arduino微電腦實驗板
文∕趙英傑

Arduino微電腦(或者說「實物運算平台」)的硬體並不突出,其核心(I/O Board)就是一個AVR系列單晶片處理器,因此做實驗時,可以自己在麵包板上迅速地拼湊一個Arduino。Arduino系列硬體採用的AVR單晶片處理器,主要有ATMega8, ATmega168. ATmega328和ATmega2560等型號,四年前自製Arduino板子時,我只找到ATmega8的賣家。

精簡版的Arduino電路圖與麵包板組裝

底下是採用ATmega8處理器,最基本款式的Arduino I/O版電路圖,我只修改並保留其中的必要部分,淡黃色區域左上角的重置(Reset)按鈕和右上角的ICSP連接插座(註:用於燒錄啟動程式)也是選擇性的,完整的電路圖在這裡

精簡版的Arduino電路圖

根據此精簡版的電路圖,在麵包板上組裝的Arduino模樣如下:

精簡版的Arduino

底下是去掉Reset按鈕的樣子(為了方便讀者看清楚電路配置,我換了一個長腳的石英振盪器):

去除重置按鈕的精簡版Arduino

這個電路還可以再精簡,去掉外部的16MHz石英振盪器,改用處理器內部的振盪電路,以8Mhz或4MHz運作,那麼,Arduino核心只需要一個處理器外加一個電容和電阻。不過,Arduino的啟動程式(Bootloader)和程式編輯器參數,也要設定成8Mhz或4MHz版本,詳見Arduino Standalone 3.3 V 8MHz without external crystal這篇文章的說明。

除了核心板,Arduino還有一系列統稱為Shield的周邊擴充板,像底下的這個Arduino Ethernet Shield(乙太網路擴充介面板)

Arduino Ethernet Shield(乙太網路擴充介面板)

這些擴充介面的插槽都遵循Arduino主板的規劃,方便玩家組裝。若要在麵包板上使用這個擴充板,會比較麻煩一些,不過,Arduino是個自由開放的硬體,自行DIY其實不用拘泥這些形式。

自製並列埠(印表機埠)形式的燒錄器

沒有燒錄Arduino啟動程式(Bootloader)的ATMega晶片,就只是一般的AVR微處理器,稱不上Arduino。

為了將啟動程式寫入ATMega晶片,需要一個燒錄器,可以買現成的,或者自己DIY一個。底下是依照arduino.cc網站的這個(Parallel Port Programmer)電路,自製的並列埠燒錄器(這個就是插在電路圖上ICSP插座的東西):

Arduino的Bootloader並列埠燒錄器

官方的接頭是6 pin的,我用的接頭是從廢棄的桌上型電腦拆下來的連接線(8 in),自己用沒差啦:

Arduino的Bootloader並列埠燒錄器接頭

如果嫌麻煩,網拍上有很多賣家販售現成的Arduino板子,裡面都已經事先燒錄好啟動程式,直接買一塊來用就好。

自製Arduino RS-232序列埠連接板

燒錄好啟動程式的Arduino無法直接和電腦連線,必須透過RS-232序列埠或者USB介面連結。連上電腦之後,才能輸入自行撰寫的Arduino程式。

目前市面販售的Arduino都是採用USB介面(亦即,Arduino板子內建了TTL轉USB的晶片),但由於串列訊號轉USB介面的晶片,大多是表面黏著元件,比較不容易焊接,所以一般的DIY玩家採用RS-232形式的串列介面,再外接RS-232轉USB的轉接線連結電腦。

底下是arduino.cc網站提供的RS-232串列埠介面電路圖:

RS-232串列埠介面電路圖

採用MAX232 IC也行,但是所需零件數量和成本不見得比較划算;我手邊沒有BC557和BC547電晶體,改用2N3905和2N3904替代。

Arduino RS-232序列埠連接板正面

我在電路板底部焊接4-pin針腳,方便插入麵包板:

Arduino RS-232序列埠連接板背面

組裝好上述三樣元件後,就可以開始玩Arduino了。

延伸閱讀

Posts created 483

79 thoughts on “用麵包板組裝Arduino微電腦實驗板

  1. 您好,我想請問”完整電路圖中”,左上角的那一塊電路是甚麼?
    因為我搞不懂中間那個IC2是甚麼。
    在此先謝謝您的回答。

    1. 那個是直流穩壓IC,也就是將輸入電壓降轉成5v,通常採用7805或者1117D-5.0。但如果你的輸入直流電就是介於4.5v~5v之間(例如:電腦的USB輸出、手機的充電器或者四顆充電電池),那就不需要左上角的電路了。

      have fun!
      jeffrey

  2. 請問我使用上面電路圖動手自製Arduino RS-232序列埠連接板
    再上傳範例程式Blink到Arduino時,最後會跑出:
    avrdude: stk500_getsync(): not in sync: resp=0x00
    請問可以解決嗎??謝謝。

    1. hi demons:

      我之前購買的USB轉RS-232線不支援Mac OS X,所以我後來製作了一個USB轉TTL的介面卡:

      USB轉TTL介面卡
      USB轉TTL介面卡

      另外也組裝一個藍芽轉TTL的板子:

      藍芽轉TTL介面卡
      藍芽轉TTL介面卡

      你提到的錯誤訊息,若非出自硬體,依照adafruit.com論壇上面這個老外的描述,將序列埠從COM3改成COM9就解決了。另外,你也考慮購買現成的USB轉TTL介面卡,採用台灣設計製造的PL2303HX晶片的USB轉接線,一條新台幣幾十元,提供你參考。

      good luck!
      jeffrey

  3. 您好 想請教您一個問題 我將我的Ethernet Shield 和UNO接好之後 把範例程式燒進去(WebServer) 並在網址列打上我設定的IP 但卻都沒辦法連結 請問是我設定的IP有問題嗎? 還是MAC位址設定不對呢? 又或者是 電腦裡面應該做些其它的設定呢? 謝謝!

    1. hi bird:

      MAC位址只要不跟區域網路裡的其他網路設備相同,就沒問題,通常都是用電腦的MAC位址加1。
      請問你的電腦環境是用固定IP嗎?
      Ethernet Shield是否有設定遮罩(mask)和閘道器(gateway)位址?
      你也可以先用cross-over(跳線)形式的乙太網路線,直接把Ethernet Shield和電腦相連,測試看看。

      have fun!
      jeffrey

  4. 老師你好:
    我看了你的書之後,對於自製Arduino非常有興趣,所以自己就買了塊Atmega328來試試,
    結果照著電路圖接完麵包版後,接上空的arduino uno板,程式無法上傳,出現了你所說的重置問題(應該是吧)
    所以我就把reset腳接個按鈕,在程式上傳前,讓reset接地,到上傳中時,才把它放開,但是程式依舊無法上傳
    我確定電路圖都沒錯
    是不是arduino版本問題?
    喔…我記得我有成功過1.2次,之後都失敗了 v(@.@)v,why?
    還有沒有讓它更穩地的傳送方法?

    1. 請問你指的是上傳Arduino程式,而非Bootloader,對嗎?如果是上傳程式,我用B-8頁的方法,未曾失敗過。一勞永逸的方法,則是買一個「USB轉TTL」傳輸線(在網拍上台幣幾十元一條),並將其中的DTR腳焊接出來,按照B-12頁的電路圖連接即可。

      thanks,
      jeffrey

    1. hi nelson:

      ATmega8的Bootloader,我是用電腦並列埠的自製燒錄器寫入的,未曾在Arduino板子上測試過。

      請問在燒錄之前,你有在Arduino的程式工具中選擇”Arduino NG or older /w ATmega8″這個板子選項嗎?

      順便檢查一下序列埠的TxD和RxD是否接反了?

      thanks,
      jeffrey

  5. 老師迅速回覆~糾甘心~我確定是點選Arduino NG or older /w ATmega8″板子選項 也Boot成功了但上傳程式時 com埠 卻無法找到該序列埠
    當然TxD和RxD也核對過甚至互換過數次,那我再換過新的Atmega 8試試看! 再向老師報告囉!謝謝!!

    1. 老師您好!! 回報昨天發問: ATMEGA 8A 利用Arduino as ISP 燒錄boot loader 成功後 .程式無法由序列埠COM上傳….
      剛剛將USB轉TTL的板子Reset一下, 哈~穩定!! 完全正常囉~ 謝謝老師囉!!!

  6. 趙老師你好,
    我使用Arduino控制板燒錄 ATmega 328韌體(燒錄boot loader)失敗,
    燒錄方法及電路接法都照您書上(page B2~B5)的方法去做,
    error message 如下:

    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.

    又我的板子是使用LEONARDO,可否幫忙解惑,感恩。

    1. hi jerry:

      Leonardo板子的SPI腳位和其他板子不同,所以燒錄bootloader時的接腳也要更改,我晚上會再更新一篇文章說明。

      thanks,
      jeffrey

  7. 趙老師你好,
    謝謝你快速又詳細的回覆,
    使用Leonardo 板子燒錄boot loader 的問題已解決,
    您的回覆對我有很大的鼓勵,
    感恩.

  8. 您好:
    有個問題想請問您,最近我們公司有向MCRT這間公司買了一個FFU的控制器,是觸控面板式的,買來之後和我們的儀器相接,接著利用廠商給我們的SOP,利用bootloader透過USB port將他所提供的.hex檔寫進去該元件中,但在寫入檔案時,會在5X%直接跳到100%,接著就無法對該面板做任何動作,也無法再重新寫入(重開後連螢幕都不會亮了),後來拆開來看他裡面元件有ATmega2561這個晶片,所以想請問一下,是否是因為燒入錯誤或其他原因,導致螢幕從正常變成無法開啟,並且也無法在重新寫入,謝謝。

    1. Arduino官方支援的時脈是8MHz和16MHz,若要改成12MHz,Arduino的bootloader要改寫,開發工具裡的boards.txt文件也要修改。官方應該沒有提供12MHz用的bootlader。

      thanks,
      jeffrey

  9. 老師您好,想請教一個問題唷!
    若如上述DIY一個RS-232的介面後,直接接上電腦
    還有需要安裝什麼驅動程式嗎?
    還是說在開發環境中選工具/序列埠/選定所接的COM埠後
    就可以直接燒錄了呢?

    1. hi ding:

      我目前的電腦並沒有RS-232埠,我記得不需要驅動程式,只要在Arduino工具中選擇對應的COM埠,即可上傳程式。

      thanks,
      jeffrey

  10. 暸解了,謝謝您
    不過還想在請教您幾個問題
    不同廠牌的USB晶片需安裝不同的驅動程式,
    是因為實作USB晶片電路的方式不一樣所以
    電腦在USB晶片存取資料的指令集也不相同,
    想請教您這樣子的理解是否正確ˊˋ

    還有在您出的Arduino 互動設計入門一書的P5-3上半頁
    Thunderbolt,理論速度可達10Gbps(亦即,每秒傳送10億位元)
    讀者覺得應更正為每秒傳送100億位元
    以及
    在P6-16上半頁,麥克風的0.2mV放大200倍,輸出電壓也不會變成4V
    不知老師的原意是否想表達成麥克風的0.02V放大200倍,輸出電壓也不會變成4V呢?
    若是的話還有相關聯的P6-11下半頁,雖然輸出訊號可以是電壓或是電流
    但一般應是以電壓為準,而且讀者覺得若接腳流過20mA應該還算正常不算微弱
    想請教老師
    電容式麥克風的輸出訊號約20多mA(約0.02A) 此段
    是否原意是想表達成輸出訊號約20多mV(約0.02V)呢?

    求知欲旺的我有時可能想太多,若造成您的不便,真得還得跟您說聲對抱歉
    以上題目還是得麻煩您了 謝謝您

    1. 沒錯~以電腦滑鼠為例,各家的有線或無線滑鼠不需要特別的驅動程式也能用,但有些滑鼠具備功能鍵、解析度設定、報告電力狀況…等等,就有賴對應的驅動程式和應用軟體才能發揮這些功能。

      1GB是10億位元組,所以您是對的,10Gbps是100億位元。

      電容式麥克風的輸出單位應該改成電壓0.02V,您的揪錯對我有莫大的幫助,再次感謝!

      thanks,
      jeffrey

    2. OK OK 暸解了 非常感謝!!
      您真的很厲害~
      真的覺得這本書寫得非常好
      圖畫得很精美 而且介紹了很多資源
      本身還在轉電子科系中
      對於不是本科系的人來講 不管是在實務上
      或是在電路元件的基本意義上
      這本書都是很好的工具
      並且可以滿足DIY創作的慾望
      很多書籍 並不會寫得如此詳細
      除了一堆陌生的電子元件符號外
      也不會告訴我們實際元件長怎樣
      更不會教我們如何使用
      只能說您出這本書 默默的挽救許多人XD
      哈哈 不誇張唷!!

  11. 請問
    如果我手邊有一個USB轉TTL的介面卡&一顆新的atmega328p
    4隻腳分別是+5V、GND、RXD、TXD
    我只要把介面卡的RXD連接到atmega328p的TX
    TXD連接到atmega328p的RX
    這樣就可以正常的燒入我要的程式了嗎
    謝謝

    1. hi fang:

      可以,前提是:

      1. ATmega328P處理器要先燒錄好Arduino的Bootloader。
      2. 上傳程式之前,Reset腳要先接地,開始上傳時在放開(接高電位)。

      thanks,
      jeffrey

  12. 你好
    請問我如果完成了第一個步驟
    那第二個步驟可否再說明仔細一點
    因為我會跑出錯誤訊息:
    avrdude: stk500_getsync(): not in sync: resp=0x00
    謝謝

    1. 準備燒錄Arduino程式時,先把Reset腳接地,當你看到「上傳中…」訊息時(如下圖),再拔開Reset腳的接地線。

      上傳Arduino程式

      你也可以嘗試拔除ATmega電源的0.1uF電容。有一次我也是在燒錄過程中出現這個錯誤訊息,但是拔掉0.1uF電容之後,就燒錄成功了。
      最好是採用具備DTR輸出腳的USB轉TTL序列板,將DTR腳與ATmega328的Reset相連,就不會有這個問題了。

      thanks,
      jeffrey

  13. 非常感謝所有的文章及開箱文, ATMega328P SMD已經用 AVR ISP 板子燒錄 Bootloader 成功.
    DIY 一塊 Arduino UNO SMD 還真困難, 不像網站寫的那麼容易, 除了焊接零件, 燒錄控制程式才是重頭戲.
    我買的 AVR ISP 板子是 USBtinyISP v3.0 Arduino Bootloader Programmer RB-03T012
    目前想請教的是:
    1. 可以用這 AVR ISP 燒錄 Sketch 到 ATMega328P SMD 嗎? 需要如何接線? ( 由於 AVR ISP 板子並沒有任何說明文件, 所以不知道還有哪些功能 )
    2. 需要哪些程式或 Driver 來驅動嗎? 哪裡可以下載?
    3. 是否可以用此 AVR ISP 來燒錄 ATMega16U (USB to TTL )所需要的操控程式? ( 要用在 Arduino UNO SMD rev.3 的 USB 介面)
    4. 以上這些適不適合3,4年級生來玩?

  14. 感謝回覆, 目前已經可以將Sketch燒錄到ATMega328P SMD裡, 並且正常工作.
    我在想所有程序都只是要在ATM328P裡執行Skech所要的動作, 所以如果ATMega16U2沒有正常工作, 在目前的狀況下並不會影響最後的結果, 所以, 有沒有ATMega16U2並不重要, 那只是一個傳輸介面, 而這個傳輸介面的敘述文檔似乎有需要更清楚的說明白, 讓有需要的門外漢, 照圖說故事, 一步一步的安裝完成所有需要的程式碼, 當然的, 也必須留下去哪裡下載的路徑.譬如在下我看了這麼多的文章與論壇, 結果也是會者恆會, 不會者恆不會, 所以…….

    1. 嗯,我也是這麼想。

      UNO板子上的ATMega16U2,主要用來取代舊控制板上的FT232R晶片,轉換USB與TTL序列信號,並且希望透過更換韌體,賦予它基本序列通信以外的功能,像是MIDI通信。不過,只有非常少數的玩家,會去更改ATMega16U2晶片韌體。這大概是相關資料也不多的原因吧。

      除了上傳Sketch、和電腦進行序列通訊之外,周邊IC也不會用到USB轉TTL功能,都是直接和Arduino的某些腳位相連,所以自行DIY Arduino控制板時,幾乎不需要在板子上焊接USB轉TTL的晶片。

      再加上Arduino UNO之後的8位元控制板,像是Arduino Micro, LilyPad Arduino USB, Esplora以及Leonardo(李奧納多)和Arduino Robot的主控制板,都改用內建USB介面的ATmega32u4微控器,因此也不需要外接USB轉TTL晶片了。

      所以,在Arduino的生態體系下,會不會燒錄ATMega16U2韌體,真的不重要。

      thanks,
      jeffrey

  15. Hello 你好:
    因為對於自製Arduino版很有興趣,於是買了ATmega328P-PU來試試。
    完全照安裝bootloader的接法去接,
    但在 “使用Arduino當燒錄器”(Arduino as ISP) 去 “燒錄Bootloader” 這步就一直卡住,
    總是出現 “avrdude: stk500_getsync(): not in sync: resp=0x00″的錯誤訊息,
    懇請解惑!! 謝謝!!

    1. 你好:
      因為我是用李奧納多,所以燒錄錯誤的原因也找到了(腳位和UNO不同)。
      也多虧你們的網站~~ swf.com.tw 很讚喔!!!

  16. 老師您好:
    我想請問 原本Arduino上有處理Vin 和 USB同時供電時會自動斷開USB供電
    這部分電路該怎麼設計呢? 我看上面電路適用二極體,可是我看datasheet好像做法不太一樣
    還有就是關於3.3v輸出電路該怎麼設計呢?
    最後一個問題是如果焊上RS232接頭後,購買 USB轉RS232線材時需要買內附晶片的還是不用啊?
    麻煩老師指點迷津
    謝謝

    1. hi yuanchieh:

      底下的Arduino電源電路,取自Arduino Uno的電路圖。你提到的二極體,其作用是防止電源逆流到外部電源接孔。實際負責切換USB與外部電源供電的是電壓比較器,以及P通道MOSFET電晶體。P通道MOSFET相當於「反相」邏輯閘,若它的控制端(Gate)腳位輸入低電位,FET將會導通,讓來自USB的5V電源流入Arduino:

      Arduino Uno電源電路

      若有大約7V以上的外部電源輸入(經過電阻分壓後,變成3.5V),電壓比較器電路將輸出高電位,導致P通道MOSFET截止,因而切斷來自USB的供電。Ardino的Vin輸入腳,與電源輸入圓孔插座,都將接到一個直流轉換電路,輸出5V。

      Arduino Uno電源電路

      3.3V直流電壓轉換電路可使用AMS1117-3.3電壓調節元件,請參閱這篇文章說明。

      最後,如果你採用RS-232的目的是為了與電腦做序列通訊,那麼,除非你的電腦內建的是RS-232序列介面,否則你只需要採用USB介面連接Arduino控制板。

      thanks,
      jeffrey

  17. 老師你好:
    可否請教您, 關於USB轉TTL的介面卡的電路和元件
    我在外國網站有找到電路, 但是不知道能不能正常運作
    老師能提供規格嗎? 謝謝

    1. hi eric:

      現在的USB轉TTL序列介面,都是用一個IC模組解決,價格也不高,我覺得不必花費心思與時間自行製作。

      最好購買支援Windows 8系統的IC模組,像是FT232RL, PL2303TA和CH340G。

      thanks,
      jeffrey

    2. 好的, 謝謝老師建議
      請問老師您推薦的USB to TTL
      是否能支援Bluetooth to PC COM Port?

    3. 不行,USB轉TTL是「有線」介面,藍牙是「無線」介面。

      如果你要在PC上使用藍牙連接Arduino,而你的PC沒有內建藍牙,只要購買一個USB藍牙介面卡即可,藍牙序列資料傳輸功能,是由驅動軟體提供,不用擔心。

      至於Arduino端,需要的是HC-05或HC-06藍牙轉序列埠介面板。

      thanks,
      jeffrey

  18. 老師您好,
    請問我買現成的Leonardo板但不想使用USB與電腦連接,
    可否直接將電腦RS232 port與arduino上的Tx,Rx對接上傳程式?
    謝謝您!

    1. 感謝老師的答覆,
      後來又使用現成的max232 RS232轉ttl轉接版,
      轉接版的RS232連接電腦RS232,
      轉接版的Tx接UNO的Rx, Rx接UNO的Tx,
      編譯完要上傳時按下Reset,
      但仍出現以下錯誤avrdude: stk500_getsync(): not in sync: resp=0x00
      並發現log中顯示使用的baud rate為115200與Windows設定不一致,
      Using Port : \\.\COM1
      Using Programmer : arduino
      Overriding Baud Rate : 115200
      更改avrdude.conf檔中的設定為9600依然顯示為115200,
      想請問老實可能是什麼問題呢? 謝謝您!

    2. hi 葉子:

      請嘗試修改Arduino安裝資料夾裡的\hardware\arduino\avr路徑當中的boards.txt檔,找到”Arduino Duemilanove or Diecimila w/ ATmega328″分類底下的”diecimila.menu.cpu.atmega328.upload.speed=57600″設定,修改它之後再上傳看看。編輯boards.txt檔的資料,將改變avrdude.exe燒錄程式的參數設定。

      thanks,
      jeffrey

    3. 非常感謝老師的指導!
      修改boards.txt中設定後終於在上傳log中顯示為9600,
      但要上傳sketch時仍然顯示以下錯誤
      Using Port : \\.\COM1
      Using Programmer : arduino
      Overriding Baud Rate : 9600
      avrdude: Send: 0 [30] [20]
      avrdude: Send: 0 [30] [20]
      avrdude: Send: 0 [30] [20]
      avrdude: Recv: h [68]
      avrdude: stk500_getsync(): not in sync: resp=0x68
      而由USB寫入一個小程式每三秒丟出一個字串後改由RS232連接是可以在Serial monitor上正常顯示的,
      這樣應該是表示連線與driver是正常的吧!
      若要透過RS232與Arduino連線是否還要安裝UNO driver於COM1呢?
      再次感謝您的幫助!

    4. 補充我也試著將hardware\arduino\programmers.txt中avrispmkii.communication=usb
      改為avrispmkii.communication=serial
      但依然無法上傳程式, 謝謝您.

    5. 你確定RS-232序列埠位於COM1嗎?如果再無法上傳,誠心建議你購買一個具備DTR腳位的USB轉TTL序列埠介面,不要把時間用在解決上傳程式碼的問題。

      thanks,
      jeffrey

    6. 謝謝您的回應,
      確定是COM1因為燒錄好的程式透過COM1是可跟電腦互通資料的.
      不得不用RS232是因作業環境的限制.
      感謝您的幫忙.

  19. 老師您好~
    我想使用atmega328P的內部8MHZ震盪器,做麵包板組裝Arduino的實驗,而不用外接的16MHZ的外接震盪器,可是在燒錄時bootloader時一直出現錯誤:
    avrdude: Yikes! Invalid device signature
    double check connections try again use override or use -F to override this check
    我上網查了一下好像是因為內部熔絲設定值要改的關係~
    請問ARDUINO 的IDE 可以改 fuse的參數嗎?
    或者有其他辦法可以解決這個錯誤?
    謝謝老師

    1. hi jim:

      請問你有選擇8MHz專用的bootloader嗎?

      根據Arduino官網的這篇文章說明,請先下載breadboard-1-6-x.zip壓縮檔(假設你的IDE是1.6.x版),然後把裡面的breadboard資料夾解壓縮到 “文件\arduino” 裡面的 “hardware” 資料夾(若沒有,請自行新增一個)。

      啟動Arduino IDE,就能在「工具→板子」選單,找到 “ATmega328 on a breadboard (8 MHz internal clock)” 選項。請選擇這個選項,再燒錄bootloader。

      have fun!
      jeffrey

    2. 老師您好~
      我也有看到那個文章,因為我用的IDE 是1.0.5 所以我下載了Breadboard1-0-x.zip 之後的操作跟他網站上寫的一樣,可也還是不成功
      感謝老師這麼快就回覆我了~

    3. 我測試了官方的燒錄韌體方案,出現同樣的錯誤訊息。

      後來改用Nick Gammon先生撰寫的arduino_sketches程式燒錄,就成功了。燒錄步驟如下:

      1. 先到arduino_sketches的專案網頁下載程式檔(按下該網頁右上方的”Download ZIP”)
      2. 解壓縮出其中的Atmega_Board_Programmer資料夾。
      3. 將其中的Atmega_Board_Programmer.ino檔,上傳到當作「燒錄器」的Arduino板。

      null

      4. 依照下圖接好連線,我的「燒錄板」是UNO,「被燒錄板」則是Duemilanove。


      圖片取自Gammon Forum

      5. 回到Arduino軟體,開啟「序列埠監控視窗」,連線速率設置為115200bps。你將看到如下的畫面:

      6. 輸入’L’(代表準備燒錄Lilipad Arduino 8MHz Bootloader)並「傳送」後,它將回應底下的訊息:

      7. 輸入代表確認的’G’並「傳送」後不久,它將回應驗證(燒錄)成功的訊息:

      have fun!
      jeffrey

    4. 老師你好~
      用老師的方法我成功了!!!
      燒綠完畢以後,的確可以使用內部震盪器了,PB6 和PB7不被震盪器占用以後,兩個接腳也可以使用了。

      所以Nick Gammon先生的方法能夠改到fuse的參數嗎?

      感謝老師分享~

  20. 老師你好!
    我在先使用arduino mega2560给mega2560芯片bootloade程序,成功了!
    然后 使用CP2102给maga2560下载程序时,无法下载(我自制arduino mega2560 pcb,用cp2102替换了mega16u2),
    后来我使用arduino mega2560 给mega2560芯片bootloade程序,出现了如下错误:
    请问怎么解决?这是什么问题?
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.

    avrdude done. Thank you.

    烧录引导程序出错。

  21. 赵老师您好!
    我自制一个CP2102+ATmega2560的PCB,arduino IDE下载marlin程序未成功!
    后来使用arduino mega2560通过ICSP给mega2560芯片下载了marlin(3d打印机固件),成功了!但PCB和cure不能通信,
    所以我又使用arduino IDE通过CP2102给mega2560下载marlin程序未成功!
    再后来我使用arduino mega2560 通过ICSP给mega2560芯片bootloade程序,出现了如下错误:
    请问怎么解决?这是什么问题?
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.

    avrdude done. Thank you.

    烧录引导程序出错。

    1. hi max:

      我曾買過mega2560的板子,但是幾乎沒有使用,不清楚你的問題,抱歉~

      thanks,
      jeffrey

  22. 没关系!谢谢您的回复!您的书写的非常棒!我已经珍藏了!准备留给我儿子看!!!

    1. 非常感謝!我家裡還沒有3D打印機,剛剛查了一下價格,挺心動的,也許父親節時買一台送給自己 😛

      thanks,
      jeffrey

  23. 老師您好:
    我們購買了max485套件想當作感測器與arduino溝通的橋樑
    但是max485所附的電路圖及程式碼是適用於兩塊arduino之間的溝通
    而非我們想要的 sensor—(max485)—>arduino 這樣的溝通
    有關max485的接線及程式碼編輯問題想請教老師
    目前接線是參考以下網址: http://forum.arduino.cc/index.php?topic=17118.0
    謝謝!

    1. hi vivian:

      max485是EIA-485(或者稱為RS-485)序列訊號的轉換IC,它的作用類似Arduino板子上的USB轉TTL訊號IC,對Arduino來說, 除非你的感測器有提供現成的程式庫可用,否則這方面的程式設計跟一般的「序列通訊」沒什麼不同。

      thanks,
      jeffrey

  24. 老師您好:

    在 4×4 方形地板上,某些方格亮著燈,玩家必須站到其它沒亮燈的方格 讓燈亮著,六個亮燈的方格可拼成正方體展開圖才可過關。

    如果我要做到這樣

    Arduino板應該買MEGA2560就可以了?

    然後買個4塊?還是其實一塊就行了?

    然後周邊的線路那些的改怎麼挑選呢還是要買哪些呢?謝謝><

    1. 單純從運算需求來看,Arduino Uno就夠用了。
      你的應用應該是有16個輸入(開關)以及16個輸出(LED)。
      你可以用74HC595來擴充數位輸出腳,
      用CD4021B來擴充數位輸入腳。

      thanks,
      jeffrey

  25. 老師您好~
    我用了USB轉TTL模組,也燒bootloader,可是在燒錄時一直出現錯誤:
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15

    麻煩老師幫忙
    謝謝

  26. 老師您好,因為最近想要試著以ATMEGA328P這顆ic接在麵包板上配合溫濕度感測器進行電路相關測試。
    剛好尋線找資料找到您的網頁,然後想要點開「完整電路圖」的連接發現網頁打不開。
    請問老師是否還有別的地方可以連結看到電路圖呢?
    不好意思打擾您了。

  27. 老師您好:
    我想說透過usb to TTL的模組,直接對mega版的TX0 RX0做訊號溝通(不透過板子上原有的USB端子),透過電腦端的串口軟體,可以顯示arduino初始化的Serial.println的資料,可是我透過串口軟體(序列port軟體)對arduino下指令,都沒有辦法得到回應,可是我改用mega2560版上的tx1 rx1就可以正常做溝通,查了很多資料,都沒有這一方面的解答,只有在老師的書中,藍芽模組那個章節有提到會占用系統的序列埠,最好不要使用。

    但是理論上,tx0 rx0應該是可以直接引出腳位做通訊的吧,以下是我的程式碼:
    /*
    時間:2018/05/21
    作者:黑修斯(陳建仲)
    版本v1.0.3
    程式名稱:簡單的ARDUINO Serial port測試程式
    說明:簡單的ARDUINO Serial port測試程式
    */

    int val;

    void setup() {
    // start serial port at 9600 bps:
    Serial1.begin(9600);
    Serial.begin(9600);

    }

    void loop() {
    if (Serial.available() > 0) {
    val = Serial.read();

    Serial.print(“輸入的是”);
    Serial.println(val);

    }
    if (Serial1.available() > 0) {
    val = Serial1.read();

    Serial1.print(“輸入的是”);
    Serial1.println(val);

    }
    }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top