用麵包板組裝Arduino微電腦實驗板
文∕趙英傑
Arduino微電腦(或者說「實物運算平台」)的硬體並不突出,其核心(I/O Board)就是一個AVR系列單晶片處理器,因此做實驗時,可以自己在麵包板上迅速地拼湊一個Arduino。Arduino系列硬體採用的AVR單晶片處理器,主要有ATMega8, ATmega168. ATmega328和ATmega2560等型號,四年前自製Arduino板子時,我只找到ATmega8的賣家。
精簡版的Arduino電路圖與麵包板組裝
底下是採用ATmega8處理器,最基本款式的Arduino I/O版電路圖,我只修改並保留其中的必要部分,淡黃色區域左上角的重置(Reset)按鈕和右上角的ICSP連接插座(註:用於燒錄啟動程式)也是選擇性的,完整的電路圖在這裡。
根據此精簡版的電路圖,在麵包板上組裝的Arduino模樣如下:
底下是去掉Reset按鈕的樣子(為了方便讀者看清楚電路配置,我換了一個長腳的石英振盪器):
這個電路還可以再精簡,去掉外部的16MHz石英振盪器,改用處理器內部的振盪電路,以8Mhz或4MHz運作,那麼,Arduino核心只需要一個處理器外加一個電容和電阻。不過,Arduino的啟動程式(Bootloader)和程式編輯器參數,也要設定成8Mhz或4MHz版本,詳見Arduino Standalone 3.3 V 8MHz without external crystal這篇文章的說明。
除了核心板,Arduino還有一系列統稱為Shield的周邊擴充板,像底下的這個Arduino Ethernet Shield(乙太網路擴充介面板):
這些擴充介面的插槽都遵循Arduino主板的規劃,方便玩家組裝。若要在麵包板上使用這個擴充板,會比較麻煩一些,不過,Arduino是個自由開放的硬體,自行DIY其實不用拘泥這些形式。
自製並列埠(印表機埠)形式的燒錄器
沒有燒錄Arduino啟動程式(Bootloader)的ATMega晶片,就只是一般的AVR微處理器,稱不上Arduino。
為了將啟動程式寫入ATMega晶片,需要一個燒錄器,可以買現成的,或者自己DIY一個。底下是依照arduino.cc網站的這個(Parallel Port Programmer)電路,自製的並列埠燒錄器(這個就是插在電路圖上ICSP插座的東西):
官方的接頭是6 pin的,我用的接頭是從廢棄的桌上型電腦拆下來的連接線(8 in),自己用沒差啦:
如果嫌麻煩,網拍上有很多賣家販售現成的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串列埠介面電路圖:
採用MAX232 IC也行,但是所需零件數量和成本不見得比較划算;我手邊沒有BC557和BC547電晶體,改用2N3905和2N3904替代。
我在電路板底部焊接4-pin針腳,方便插入麵包板:
組裝好上述三樣元件後,就可以開始玩Arduino了。
老師好久不見,近來可好?
老師請問你知道這個網站http://www.cloud-ktv.com/是如何將載入的youtube影片MTV做人聲和音樂的分離嗎?AS的語法該怎麼寫?
抱歉,這個我沒有研究。但是你可以從音效處理軟體的角度反推回去思考,如何濾除某些頻率範圍的聲音。這一篇文章說明如何使用Audacity音效處理軟體濾除人聲:How-To: Easily Remove the Vocals from Most Songs,提供你參考。
have fun!
jeffrey
還是很謝謝老師,老師所介紹的網頁也是一門不錯的技術^^
您好,我想請問”完整電路圖中”,左上角的那一塊電路是甚麼?
因為我搞不懂中間那個IC2是甚麼。
在此先謝謝您的回答。
那個是直流穩壓IC,也就是將輸入電壓降轉成5v,通常採用7805或者1117D-5.0。但如果你的輸入直流電就是介於4.5v~5v之間(例如:電腦的USB輸出、手機的充電器或者四顆充電電池),那就不需要左上角的電路了。
have fun!
jeffrey
請問我使用上面電路圖動手自製Arduino RS-232序列埠連接板
再上傳範例程式Blink到Arduino時,最後會跑出:
avrdude: stk500_getsync(): not in sync: resp=0x00
請問可以解決嗎??謝謝。
hi demons:
我之前購買的USB轉RS-232線不支援Mac OS X,所以我後來製作了一個USB轉TTL的介面卡:
另外也組裝一個藍芽轉TTL的板子:
你提到的錯誤訊息,若非出自硬體,依照adafruit.com論壇上面這個老外的描述,將序列埠從COM3改成COM9就解決了。另外,你也考慮購買現成的USB轉TTL介面卡,採用台灣設計製造的PL2303HX晶片的USB轉接線,一條新台幣幾十元,提供你參考。
good luck!
jeffrey
您好 想請教您一個問題 我將我的Ethernet Shield 和UNO接好之後 把範例程式燒進去(WebServer) 並在網址列打上我設定的IP 但卻都沒辦法連結 請問是我設定的IP有問題嗎? 還是MAC位址設定不對呢? 又或者是 電腦裡面應該做些其它的設定呢? 謝謝!
hi bird:
MAC位址只要不跟區域網路裡的其他網路設備相同,就沒問題,通常都是用電腦的MAC位址加1。
請問你的電腦環境是用固定IP嗎?
Ethernet Shield是否有設定遮罩(mask)和閘道器(gateway)位址?
你也可以先用cross-over(跳線)形式的乙太網路線,直接把Ethernet Shield和電腦相連,測試看看。
have fun!
jeffrey
老師你好:
我看了你的書之後,對於自製Arduino非常有興趣,所以自己就買了塊Atmega328來試試,
結果照著電路圖接完麵包版後,接上空的arduino uno板,程式無法上傳,出現了你所說的重置問題(應該是吧)
所以我就把reset腳接個按鈕,在程式上傳前,讓reset接地,到上傳中時,才把它放開,但是程式依舊無法上傳
我確定電路圖都沒錯
是不是arduino版本問題?
喔…我記得我有成功過1.2次,之後都失敗了 v(@.@)v,why?
還有沒有讓它更穩地的傳送方法?
請問你指的是上傳Arduino程式,而非Bootloader,對嗎?如果是上傳程式,我用B-8頁的方法,未曾失敗過。一勞永逸的方法,則是買一個「USB轉TTL」傳輸線(在網拍上台幣幾十元一條),並將其中的DTR腳焊接出來,按照B-12頁的電路圖連接即可。
thanks,
jeffrey
老師您好!! 請問ATMEGA 8A 利用Arduino as ISP 燒錄boot loader 成功之後 .用書上寫的Arduino 板子還是USB轉TTL
都無法上傳 發現序列埠 找不到該Atmega 8 裝置 電路檢查N次 都沒問題
是不是換一塊 Atmega 8 重做看看???
還是上傳電路不同於 書上Atmeg 328????
hi nelson:
ATmega8的Bootloader,我是用電腦並列埠的自製燒錄器寫入的,未曾在Arduino板子上測試過。
請問在燒錄之前,你有在Arduino的程式工具中選擇”Arduino NG or older /w ATmega8″這個板子選項嗎?
順便檢查一下序列埠的TxD和RxD是否接反了?
thanks,
jeffrey
老師迅速回覆~糾甘心~我確定是點選Arduino NG or older /w ATmega8″板子選項 也Boot成功了但上傳程式時 com埠 卻無法找到該序列埠
當然TxD和RxD也核對過甚至互換過數次,那我再換過新的Atmega 8試試看! 再向老師報告囉!謝謝!!
老師您好!! 回報昨天發問: ATMEGA 8A 利用Arduino as ISP 燒錄boot loader 成功後 .程式無法由序列埠COM上傳….
剛剛將USB轉TTL的板子Reset一下, 哈~穩定!! 完全正常囉~ 謝謝老師囉!!!
恭喜!感謝告知!
thanks,
jeffrey
趙老師你好,
我使用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,可否幫忙解惑,感恩。
hi jerry:
Leonardo板子的SPI腳位和其他板子不同,所以燒錄bootloader時的接腳也要更改,我晚上會再更新一篇文章說明。
thanks,
jeffrey
趙老師你好,
謝謝你快速又詳細的回覆,
使用Leonardo 板子燒錄boot loader 的問題已解決,
您的回覆對我有很大的鼓勵,
感恩.
不客氣~
thanks,
jeffrey
您好:
有個問題想請問您,最近我們公司有向MCRT這間公司買了一個FFU的控制器,是觸控面板式的,買來之後和我們的儀器相接,接著利用廠商給我們的SOP,利用bootloader透過USB port將他所提供的.hex檔寫進去該元件中,但在寫入檔案時,會在5X%直接跳到100%,接著就無法對該面板做任何動作,也無法再重新寫入(重開後連螢幕都不會亮了),後來拆開來看他裡面元件有ATmega2561這個晶片,所以想請問一下,是否是因為燒入錯誤或其他原因,導致螢幕從正常變成無法開啟,並且也無法在重新寫入,謝謝。
拍謝,煩請跟設備廠商聯繫。
thanks,
jeffrey
請問老師,可以將16MHz的石英震盪器改成12MHz嗎?
Arduino官方支援的時脈是8MHz和16MHz,若要改成12MHz,Arduino的bootloader要改寫,開發工具裡的boards.txt文件也要修改。官方應該沒有提供12MHz用的bootlader。
thanks,
jeffrey
老師您好,想請教一個問題唷!
若如上述DIY一個RS-232的介面後,直接接上電腦
還有需要安裝什麼驅動程式嗎?
還是說在開發環境中選工具/序列埠/選定所接的COM埠後
就可以直接燒錄了呢?
hi ding:
我目前的電腦並沒有RS-232埠,我記得不需要驅動程式,只要在Arduino工具中選擇對應的COM埠,即可上傳程式。
thanks,
jeffrey
暸解了,謝謝您
不過還想在請教您幾個問題
不同廠牌的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)呢?
求知欲旺的我有時可能想太多,若造成您的不便,真得還得跟您說聲對抱歉
以上題目還是得麻煩您了 謝謝您
沒錯~以電腦滑鼠為例,各家的有線或無線滑鼠不需要特別的驅動程式也能用,但有些滑鼠具備功能鍵、解析度設定、報告電力狀況…等等,就有賴對應的驅動程式和應用軟體才能發揮這些功能。
1GB是10億位元組,所以您是對的,10Gbps是100億位元。
電容式麥克風的輸出單位應該改成電壓0.02V,您的揪錯對我有莫大的幫助,再次感謝!
thanks,
jeffrey
OK OK 暸解了 非常感謝!!
您真的很厲害~
真的覺得這本書寫得非常好
圖畫得很精美 而且介紹了很多資源
本身還在轉電子科系中
對於不是本科系的人來講 不管是在實務上
或是在電路元件的基本意義上
這本書都是很好的工具
並且可以滿足DIY創作的慾望
很多書籍 並不會寫得如此詳細
除了一堆陌生的電子元件符號外
也不會告訴我們實際元件長怎樣
更不會教我們如何使用
只能說您出這本書 默默的挽救許多人XD
哈哈 不誇張唷!!
過獎了,謝謝,我只是在做自己喜歡的事情。
thanks,
jeffrey
請問
如果我手邊有一個USB轉TTL的介面卡&一顆新的atmega328p
4隻腳分別是+5V、GND、RXD、TXD
我只要把介面卡的RXD連接到atmega328p的TX
TXD連接到atmega328p的RX
這樣就可以正常的燒入我要的程式了嗎
謝謝
hi fang:
可以,前提是:
1. ATmega328P處理器要先燒錄好Arduino的Bootloader。
2. 上傳程式之前,Reset腳要先接地,開始上傳時在放開(接高電位)。
thanks,
jeffrey
你好
請問我如果完成了第一個步驟
那第二個步驟可否再說明仔細一點
因為我會跑出錯誤訊息:
avrdude: stk500_getsync(): not in sync: resp=0x00
謝謝
準備燒錄Arduino程式時,先把Reset腳接地,當你看到「上傳中…」訊息時(如下圖),再拔開Reset腳的接地線。
你也可以嘗試拔除ATmega電源的0.1uF電容。有一次我也是在燒錄過程中出現這個錯誤訊息,但是拔掉0.1uF電容之後,就燒錄成功了。
最好是採用具備DTR輸出腳的USB轉TTL序列板,將DTR腳與ATmega328的Reset相連,就不會有這個問題了。
thanks,
jeffrey
非常感謝所有的文章及開箱文, 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年級生來玩?
我沒用過USBtinyISP,剛才Google了一下,除了燒錄bootloader,也可以上傳Arduino程式,但可能需要修改boards.txt設定,詳細請參閱arduino.cc官方論壇的這兩個討論串:
USBtinyISP will program bootloader but not sketch
Solved – Can’t upload sketches with USBtinyISP to arduino pro mini.
其他問題,再麻煩您詢問廠商。
國小3, 4年級,也許先嘗試Scratch比較好。
thanks,
jeffrey
感謝回覆, 目前已經可以將Sketch燒錄到ATMega328P SMD裡, 並且正常工作.
我在想所有程序都只是要在ATM328P裡執行Skech所要的動作, 所以如果ATMega16U2沒有正常工作, 在目前的狀況下並不會影響最後的結果, 所以, 有沒有ATMega16U2並不重要, 那只是一個傳輸介面, 而這個傳輸介面的敘述文檔似乎有需要更清楚的說明白, 讓有需要的門外漢, 照圖說故事, 一步一步的安裝完成所有需要的程式碼, 當然的, 也必須留下去哪裡下載的路徑.譬如在下我看了這麼多的文章與論壇, 結果也是會者恆會, 不會者恆不會, 所以…….
嗯,我也是這麼想。
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
Hello 你好:
因為對於自製Arduino版很有興趣,於是買了ATmega328P-PU來試試。
完全照安裝bootloader的接法去接,
但在 “使用Arduino當燒錄器”(Arduino as ISP) 去 “燒錄Bootloader” 這步就一直卡住,
總是出現 “avrdude: stk500_getsync(): not in sync: resp=0x00″的錯誤訊息,
懇請解惑!! 謝謝!!
你好:
因為我是用李奧納多,所以燒錄錯誤的原因也找到了(腳位和UNO不同)。
也多虧你們的網站~~ swf.com.tw 很讚喔!!!
抱歉未能及時解決你的問題,感謝告知!
thanks,
jeffrey
老師您好:
我想請問 原本Arduino上有處理Vin 和 USB同時供電時會自動斷開USB供電
這部分電路該怎麼設計呢? 我看上面電路適用二極體,可是我看datasheet好像做法不太一樣
還有就是關於3.3v輸出電路該怎麼設計呢?
最後一個問題是如果焊上RS232接頭後,購買 USB轉RS232線材時需要買內附晶片的還是不用啊?
麻煩老師指點迷津
謝謝
hi yuanchieh:
底下的Arduino電源電路,取自Arduino Uno的電路圖。你提到的二極體,其作用是防止電源逆流到外部電源接孔。實際負責切換USB與外部電源供電的是電壓比較器,以及P通道MOSFET電晶體。P通道MOSFET相當於「反相」邏輯閘,若它的控制端(Gate)腳位輸入低電位,FET將會導通,讓來自USB的5V電源流入Arduino:
若有大約7V以上的外部電源輸入(經過電阻分壓後,變成3.5V),電壓比較器電路將輸出高電位,導致P通道MOSFET截止,因而切斷來自USB的供電。Ardino的Vin輸入腳,與電源輸入圓孔插座,都將接到一個直流轉換電路,輸出5V。
3.3V直流電壓轉換電路可使用AMS1117-3.3電壓調節元件,請參閱這篇文章說明。
最後,如果你採用RS-232的目的是為了與電腦做序列通訊,那麼,除非你的電腦內建的是RS-232序列介面,否則你只需要採用USB介面連接Arduino控制板。
thanks,
jeffrey
老師你好:
可否請教您, 關於USB轉TTL的介面卡的電路和元件
我在外國網站有找到電路, 但是不知道能不能正常運作
老師能提供規格嗎? 謝謝
hi eric:
現在的USB轉TTL序列介面,都是用一個IC模組解決,價格也不高,我覺得不必花費心思與時間自行製作。
最好購買支援Windows 8系統的IC模組,像是FT232RL, PL2303TA和CH340G。
thanks,
jeffrey
好的, 謝謝老師建議
請問老師您推薦的USB to TTL
是否能支援Bluetooth to PC COM Port?
不行,USB轉TTL是「有線」介面,藍牙是「無線」介面。
如果你要在PC上使用藍牙連接Arduino,而你的PC沒有內建藍牙,只要購買一個USB藍牙介面卡即可,藍牙序列資料傳輸功能,是由驅動軟體提供,不用擔心。
至於Arduino端,需要的是HC-05或HC-06藍牙轉序列埠介面板。
thanks,
jeffrey
好的, 謝謝老師
老師您好,
請問我買現成的Leonardo板但不想使用USB與電腦連接,
可否直接將電腦RS232 port與arduino上的Tx,Rx對接上傳程式?
謝謝您!
不行,RS-232的電壓準位 ±12V,超出Arduino的忍受範圍。
thanks,
jeffrey
感謝老師的答覆,
後來又使用現成的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,
想請問老實可能是什麼問題呢? 謝謝您!
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
非常感謝老師的指導!
修改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呢?
再次感謝您的幫助!
補充我也試著將hardware\arduino\programmers.txt中avrispmkii.communication=usb
改為avrispmkii.communication=serial
但依然無法上傳程式, 謝謝您.
你確定RS-232序列埠位於COM1嗎?如果再無法上傳,誠心建議你購買一個具備DTR腳位的USB轉TTL序列埠介面,不要把時間用在解決上傳程式碼的問題。
thanks,
jeffrey
謝謝您的回應,
確定是COM1因為燒錄好的程式透過COM1是可跟電腦互通資料的.
不得不用RS232是因作業環境的限制.
感謝您的幫忙.
抱歉沒能幫上忙….
thanks,
jeffrey
老師您好~
我想使用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的參數嗎?
或者有其他辦法可以解決這個錯誤?
謝謝老師
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
老師您好~
我也有看到那個文章,因為我用的IDE 是1.0.5 所以我下載了Breadboard1-0-x.zip 之後的操作跟他網站上寫的一樣,可也還是不成功
感謝老師這麼快就回覆我了~
我星期三或星期四測試看看。
thanks,
jeffrey
我測試了官方的燒錄韌體方案,出現同樣的錯誤訊息。
後來改用Nick Gammon先生撰寫的arduino_sketches程式燒錄,就成功了。燒錄步驟如下:
1. 先到arduino_sketches的專案網頁下載程式檔(按下該網頁右上方的”Download ZIP”)
2. 解壓縮出其中的Atmega_Board_Programmer資料夾。
3. 將其中的Atmega_Board_Programmer.ino檔,上傳到當作「燒錄器」的Arduino板。
4. 依照下圖接好連線,我的「燒錄板」是UNO,「被燒錄板」則是Duemilanove。
圖片取自Gammon Forum。
5. 回到Arduino軟體,開啟「序列埠監控視窗」,連線速率設置為115200bps。你將看到如下的畫面:
6. 輸入’L’(代表準備燒錄Lilipad Arduino 8MHz Bootloader)並「傳送」後,它將回應底下的訊息:
7. 輸入代表確認的’G’並「傳送」後不久,它將回應驗證(燒錄)成功的訊息:
have fun!
jeffrey
老師你好~
用老師的方法我成功了!!!
燒綠完畢以後,的確可以使用內部震盪器了,PB6 和PB7不被震盪器占用以後,兩個接腳也可以使用了。
所以Nick Gammon先生的方法能夠改到fuse的參數嗎?
感謝老師分享~
是的,改變振盪器配置,必需要修改fuse參數。
thanks,
jeffrey
老師你好!
我在先使用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.
烧录引导程序出错。
赵老师您好!
我自制一个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.
烧录引导程序出错。
hi max:
我曾買過mega2560的板子,但是幾乎沒有使用,不清楚你的問題,抱歉~
thanks,
jeffrey
没关系!谢谢您的回复!您的书写的非常棒!我已经珍藏了!准备留给我儿子看!!!
非常感謝!我家裡還沒有3D打印機,剛剛查了一下價格,挺心動的,也許父親節時買一台送給自己 😛
thanks,
jeffrey
老師您好:
我們購買了max485套件想當作感測器與arduino溝通的橋樑
但是max485所附的電路圖及程式碼是適用於兩塊arduino之間的溝通
而非我們想要的 sensor—(max485)—>arduino 這樣的溝通
有關max485的接線及程式碼編輯問題想請教老師
目前接線是參考以下網址: http://forum.arduino.cc/index.php?topic=17118.0
謝謝!
hi vivian:
max485是EIA-485(或者稱為RS-485)序列訊號的轉換IC,它的作用類似Arduino板子上的USB轉TTL訊號IC,對Arduino來說, 除非你的感測器有提供現成的程式庫可用,否則這方面的程式設計跟一般的「序列通訊」沒什麼不同。
thanks,
jeffrey
老師您好:
在 4×4 方形地板上,某些方格亮著燈,玩家必須站到其它沒亮燈的方格 讓燈亮著,六個亮燈的方格可拼成正方體展開圖才可過關。
如果我要做到這樣
Arduino板應該買MEGA2560就可以了?
然後買個4塊?還是其實一塊就行了?
然後周邊的線路那些的改怎麼挑選呢還是要買哪些呢?謝謝><
單純從運算需求來看,Arduino Uno就夠用了。
你的應用應該是有16個輸入(開關)以及16個輸出(LED)。
你可以用74HC595來擴充數位輸出腳,
用CD4021B來擴充數位輸入腳。
thanks,
jeffrey
老師您好~
我用了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
麻煩老師幫忙
謝謝
請問你的USB轉TTL模組有DTR引腳嗎?另外請參閱這一篇回應。
thanks,
jeffrey
老師您好,因為最近想要試著以ATMEGA328P這顆ic接在麵包板上配合溫濕度感測器進行電路相關測試。
剛好尋線找資料找到您的網頁,然後想要點開「完整電路圖」的連接發現網頁打不開。
請問老師是否還有別的地方可以連結看到電路圖呢?
不好意思打擾您了。
「Arduino Yún Mini:改造TL-WR703N整合自製Arduino板」這篇文章也有電路圖,或者搜尋關鍵字”arduino duemilanove schematic”。
thanks,
jeffrey
老師您好:
我想說透過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);
}
}
因為書本的控制板採UNO,與MEGA 2560截然不同。
關於MEGA 2560的序列埠通訊程式,請參閱這一篇以及這一篇留言。
thanks,
jeffrey