2013/09/09

在麵包板上建構Arduino(ATmega328P加USB轉TTL Serial轉接卡)

其實之前的「將Arduino Uno當做一台ISP線上燒錄器,燒錄bootloader或sketch到麵包板上的ATmega328P-PU晶片」,就已經曾在麵包板上建構Arduino,不過那時使用一塊Arduino板子當做ISP線上燒錄器,而這篇使用「USB轉TTL Serial」轉接卡。關於USB轉換功能的相關產品,可參考這一篇

我將在麵包板上插入ATmega328P-PU微控制器晶片,並加入「USB轉TTL Serial」轉接卡FTDI Friend,開發時就跟一般的Arduino開發板完全一樣。我假定微控制器晶片已經燒錄bootloader了。

這是ATmega328的腳位功能圖,跟ATmega168一樣。


電路圖如下,從電腦USB埠、經由FTDI Friend供電給ATmega328,FTDI Friend的TX、RX連接到ATmega328的RX、TX。

ATmega328針腳1(reset),接10k歐姆電阻再接5V;另接開關再接地,燒錄必須手動按開關重置。

ATmega328針腳10(對應Arduino數位腳位13),接220歐姆電阻、串聯LED。將燒錄Blink範例草稿碼測試是否正常。

其他就是基本接法,接電源、接地、接外部石英晶體震盪器。


麵包板示意圖如下。


FTDI Friend的背後。


完成囉,使用時就跟一般Arduino開發板相同,哈哈。

當然啦,也可以轉移到洞洞板上,需要自己焊接線路。

除了使用「USB轉TTL Serial」的轉接卡或轉接線,如果你的電腦還有9針的RS-232序列埠的話,加上「RS-232轉TTL Serial」的產品,也是可以的。但要記得,連接序列介面時要跨接,某端的RX與TX分別接到另一端的TX與RX,但某些產品似乎故意調換這兩個腳位的標示。

88 comments:

  1. 使用 RS-232轉TTL Serial 模組,也可以進行self-progamming燒錄(微控制器裡已有bootloader)。

    ReplyDelete
  2. 如果我用MAX232晶片DIY一個RS-232轉TTL Serial 模組,
    是否也可以用他來為Arduino灌bootloader與upload sketches?

    ReplyDelete
    Replies
    1. 可以upload sketches,
      但灌bootloader應該不行,要用燒錄器。

      Delete
  3. 請問洞洞板的部分是如何供電的? 再麻煩說明, 謝謝

    ReplyDelete
    Replies
    1. 網頁最後一張照片,洞洞板的右下角落是線性穩壓晶片7805,輸入端加上0.33 µF電容,輸出端加上0.1 µF電容,我以9V方形電池從螺絲端子台供電,經7805穩壓成5V電壓。

      另可參考我寫的Arduino入門書(http://yehnan.blogspot.tw/2014/02/arduino_21.html)裡第9章關於7805與其他穩壓晶片的部份。

      Delete
  4. 再次打擾您, 請問站長, 板子上有一個3.3V的孔, 如果用這種方式, 請問要怎麼用, 謝謝

    ReplyDelete
    Replies
    1. 什麼板子有3.3V?
      請問你的問題是什麼?

      Delete
  5. 站長你好

    我最近想要試做arduino官方提供的

    http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3

    網站的電路說ic必須用ATMEGA8(or ATMEGA168)

    但我手邊只有ATMEGA328

    找了DATASHEET也不太清楚兩者使用上有什麼不同(電路的電阻、電容值...之類的差別)

    想請問站長兩者(ATMEGA8(or ATMEGA168)與ATMEGA328)使用的電路是一模一樣的嗎?

    ReplyDelete
    Replies
    1. 據我所知,atmega168與atmega328的腳位功能完全相同,差別僅在於328的記憶體較大。
      所以這份電路應該可以換成atmega328。

      Delete
    2. 站長您好:

      請問arduino官方提供的這塊板子(http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3)要怎麼燒入程式呢??,是否可以用RS-232轉USB的傳輸線直接燒入呢??

      Delete
    3. 這塊板子有RS-232 9針以及電壓轉換的電路(應該是12V轉5V,不太確定),如果你電腦還有RS-232的話,可直接以一條RS-232線(一頭9針插板子、一頭9針或25針插電腦)連接,進行燒錄。

      也可使用RS-232轉USB的傳輸線,把電腦的USB埠模擬成序列埠,然後進行燒錄。

      所以你問題的答案是:可以。
      等於是從電腦的USB埠、經線材轉成RS-232、再由板子上的電路轉成Arduino微控制器晶片可接受的電壓與訊號。

      Delete
  6. 站長您好:
    看完你打的這幾篇文章後還是有一些不解之處
    1.如果我使用atmega328p這一顆MCU再搭配電腦USB埠經由FTDI Friend在使用此文章的電路就可以在電腦上打程式燒錄嗎?
    2.如果可以在電腦上是用什麼程式來編輯??
    3.bootloader 在站長其他文章中有討論過燒錄這個程式主要是來單步執行與Debug嗎? 我可以單存只要燒入我sketch嗎?

    ReplyDelete
    Replies
    1. 1. 對。但atmega328p必須已含有bootloader。
      在麵包板上建構Arduino並加上FTDI Friend,其實就等同於一塊Arduino板子。
      2. 就是一般的Arduino程式。使用Arduino的軟體開發環境。可到http://arduino.cc/en/Main/Software下載。
      3. 燒錄sketch時,
      a. 可以使用並列埠燒錄線,http://yehnan.blogspot.tw/2013/09/arduino.html
      b. 可以使用專門的燒錄器,http://yehnan.blogspot.tw/2013/09/avr-ispadafruit-usbtinyisp.html,可燒錄sketch、也可燒錄bootloader。
      c. 當MCU已含有bootloader時,透過一般USB(轉序列埠)連線,便可燒錄,這也是一般採用的方式。

      你不想要bootloader、只想燒錄sketch的話,可以使用a.與b.。

      詳情請參考我寫的其他文章http://yehnan.blogspot.tw/2012/02/arduino_21.html,
      也可參考拙作「Arduino輕鬆入門:範例分析與實作設計」http://yehnan.blogspot.tw/2014/02/arduino_21.html 的第12章。

      Delete
  7. 站長你好:
    閱讀完其他文章後發現還是有一些不解之處(可能領悟力較差~如果問到比較基本的問題~麻煩站長多多包容)
    1.目前的了解是atmega328p如果沒有燒bootloader到裡面就沒辦法使用此文章方法來進行燒入我的程式??
    2.bootloader他應是debug用或電腦同步單步執行??
    3.因為目前arduino uno是跟朋友借的,所以爾後(如果我沒有arduino uno或相關產品)買來新的atmega328p(無bootloader無sketch)就無法做燒入了嗎?

    ReplyDelete
    Replies
    1. 1. 對。
      2. Arduino的bootloader很簡單,就是燒錄用。據我所知應無除錯功能,但想要的話可以自己加。
      3. 光買一顆atmega328p晶片,裡頭一般來說並沒有Arduino的bootloader。想要燒錄的話,可使用燒錄器,例如http://yehnan.blogspot.tw/2013/09/avr-ispadafruit-usbtinyisp.html。
      有些拍賣商家可幫你事先燒錄bootloader。

      Delete
    2. 買張Arduino開發板的好處就是方便,一連接電腦就可以了,
      想要在麵包板上建構Arduino的話,通常是為了降低成本、深入學習,
      不論如何,手上還是要有一張板子才好,現在板子也很便宜吧,
      而且,有一張Uno板的話,也可以把Arduino Uno當做一台ISP線上燒錄器,燒錄bootloader或sketch到麵包板上的ATmega328P-PU晶片,詳情請看http://yehnan.blogspot.tw/2013/02/arduino-unoispbootloadersketchatmega328.html 。

      Delete
  8. 站長您好,請問reset 的時機點是什麼時候,以及多久呢?我都一直收到 vrdude: stk500_recv(): programmer is not responding

    ReplyDelete
    Replies
    1. 請問你是哪塊板子?

      上傳需使用RX與TX,對應腳位通常是0與1,請拔除接線,避免衝突。

      到Arduino IDE偏好設定裡,勾選 顯示詳細輸出:上傳。
      在看到
      avrdude: Send: 0 [30] [20]
      avrdude: Send: 0 [30] [20]
      avrdude: Send: 0 [30] [20]
      的時候按下板子的RESET鍵,按一下即可,約0.3秒吧。 也可試試在看到「之前」按下。
      也可試試...按下Arduino IDE的Upload,然後一直按著板子的RESET不放,看到以上訊息後再放開RESET。

      解除安裝電腦端的驅動程式,然後重新安裝。

      如果都不行,那就只能使用燒錄器了。
      我有張板子,怎麼弄都不行,只好用燒錄器來燒錄程式。

      Delete
    2. 感謝您迅速回復。我晶片是用 ATmega328P,而USB轉TTL 用的是 FT232RL,是從淘寶買的 ( http://goo.gl/EK8vHk )

      外國人有些好像還會說DTR CTS也要接,一個接地一個接電容串reset ,但我還是沒用

      晶片買回來的時候已經燒了閃燈程式,我按照您的接法也看到閃燈了 (表示晶片有在運作)

      不過用IDE 就是一直失敗

      不知是否還有什麼眉角我沒有注意到的

      Delete
    3. 晶片買回來的時候已經燒了閃燈程式?
      你確定 ATmega328P裡面有Arduino的bootloader嗎?使用這種燒錄方式的話,必須有bootloader。

      我沒使用DTR CTS也可燒錄。

      你的USB轉TTL(FT232RL)的驅動程式裝了嗎?在Arduino IDE裡看到Port編號?

      Delete
    4. 他有強調他已燒bootloader 已經下載閃燈程序

      FT232RL 在mac 有看到 port 編號

      reset 按鈕的反應很快,一放開馬上閃燈,不知道是不是正常?

      會這麼懷疑是因為,我有買一個 arduino nano ,他也得按reset才能下載程式,它按下去就有一種 "似乎正在boot " 的延遲感

      可是這個麵包版上的晶片,按下去燈滅,放開卻馬上閃燈

      如果再不行,我就試一下您其他教學 (我有一個大的 arduino UNO 開發版,乾脆把它變成燒錄器好了)

      感謝,您的相關文章都很有用!

      Delete
    5. 的確不太正常,除非他有改過bootloader。

      你確定FT232RL的TX/RX跟Atmega328p的TX/RX,有接對嗎?
      有些模組的TX/RX寫反了。

      Delete
  9. MultiWii SE 上面是使用 ATmega328P 的晶片,板上有一組 FTDI 接腳,一組 TTL 接腳,
    看網路上都使用專屬的 FTDI USB to TTL 來做飛行模式調校程式的更新,
    如果是使用 Raspberry Pi 的 USB to TTL(http://goods.ruten.com.tw/item/show?21308225323607),
    請問站長是否知道是要接板上的 FTDI 接腳或是 TTL 接腳?
    如果要接 FTDI 的接腳,Raspberry Pi 的 USB to TTL 側邊有接孔,
    是否可自行焊連接線做一個跟 MultiWii SE 板上 FTDI 接腳相符的接口?

    ReplyDelete
  10. USB to TTL(http://goods.ruten.com.tw/item/show?21308225323607)已經具備USB轉TTL的晶片,USB端接往電腦,TTL當然就直接接往ATmega328P的TTL接腳。

    但如果MultiWii SE自己已經有FTDI(USB轉TTL),就如同一般的Arduino板子(已內含USB轉TTL功能),那就不需要另外買一條轉接線了,直接以普通的USB線連接不就得了。

    ReplyDelete
  11. Anonymous8/9/14 00:50

    您好:
    想請教您,我按照您所提供的基本電路用洞洞板弄出了一塊 arduino板。但現在有點問題。
    請問您有測試過自製的arduino板上,analog pin的功能是否正常嗎?
    我有一個按照網路所製作的DS1307 RTC,使用A04與A05 pin讀取。
    在購買的arduino板上運作正常,但是在自製的arduino板上會顯示無法sync RTC。
    我測試過,將自製的arduino板上的ATMEGA328P拆下直接裝到購買的arduino板上(沒有重新燒程序),RTC是可以正常同步的。但再裝回自製的arduino板上,就又變成無法跟RTC sync。
    Digital pin有測試過設定按鍵與點亮LED功能,是正常的。
    我沒辦法排除analog pin的問題,請問您是否有什麼想法呢?

    ReplyDelete
  12. > 自製的arduino板上,analog pin的功能是否正常嗎?
    是的,正常;測試過。

    > DS1307 RTC,使用A04與A05 pin讀取
    也都正常,不管是用Uno板,還是用自製的。

    使用RTC時,Uno的A4其實是I2C的SDA、A5其實是I2C的SCL。應該跟analog pin無關。

    既然ATmega328P拆下來後是正常的,那麼晶片與程式方面應無問題。所以是自製的arduino板方面的線路問題吧,
    RTC的GND有跟Arduino的GND接在一起?

    你是在麵包板上弄的還是在洞洞板上焊接?是否A4、A5的部份有短路現象?

    只好再次檢查一次線路囉。加油。祝好運。

    ReplyDelete
    Replies
    1. Anonymous8/9/14 13:51

      >所以是自製的arduino板方面的線路問題吧,RTC的GND有跟Arduino的GND接在一起?
      是的,所有的+5V或是GND都是接在一起的。
      >你是在麵包板上弄的還是在洞洞板上焊接?是否A4、A5的部份有短路現象?
      是在洞洞板上,有測過焊點,沒有短路的現象。
      不過我剛剛用自製版的ATMEGA328P在麵包板上重建電路,結果還是一樣沒有辦法與RTC sync。

      Delete
    2. 嗯,隔空抓藥很困難啊。

      照片?

      Delete
    3. 我剛剛又測了一遍,一切正常。話說回來,你的RTC既然可用於Uno板,自製的板應該也可以,嗯,問題在哪裡呢。

      線路連接錯誤嗎? 你把DS1307的SDA SCL接到ATmega328P的哪個腳位了?

      Delete
  13. Anonymous8/9/14 15:30

    好的,這是照片
    http://imgur.com/JgGKABd
    RTC沒有放上去,因為會擋住線路。

    >你把DS1307的SDA SCL接到ATmega328P的哪個腳位了?
    SCL接ATmega328P的38 pin,SDA接ATmega328P的37 pin

    我現在對為什麼無法sync RTC是覺得有點難以理解。

    ReplyDelete
    Replies
    1. 線路看不出問題。
      那麼RTC的部份呢?


      Delete
    2. Anonymous8/9/14 17:40

      RTC的線路很亂,照片上會很難看出線路。
      不過接到購買的arduino板上都是正常的,可以從RTC取得時間。

      Delete
    3. 嗯,那就...再檢查看看吧。

      Delete
    4. 如果可以的話,還希望你找出原因後,能回到這裡留言。謝謝。

      Delete
    5. Anonymous9/9/14 12:05

      我剛想到,打算將購買的arduino用I2C連接到自製的arduino,用以測試自製arduino上I2C讀取是否正常。
      以排除自製arduino及自製RTC是否有問題。

      >如果可以的話,還希望你找出原因後,能回到這裡留言。謝謝。
      哈哈...多謝您的幫助.....如果我找得出來問題的話......

      Delete
    6. 可以的話,拍RTC部分的照片讓我看看。

      Delete
    7. Anonymous10/9/14 00:33

      我剛剛試過將購買的arduino用I2C連接到自製的arduino,結果通訊是正常的。
      所以我想可能是自製的RTC的部分有狀況。
      這是我的RTC的正面: http://min.us/i/pIr4fZdeAfa3
      這是我的RTC的反面: http://min.us/i/W5Y7gL3NlWR7
      我已經將照片的方向鏡像處理過了,是直接對應的。

      是否能再麻煩您一件事,您發布的DS1307的程式很好用,設定時間也很方便。
      但我將delay(1000)的方式拿掉,改使用 Timer.h 讓時間以每秒一次顯示,這時候我就沒辦法設定時間了。
      比如我使用 Timer.h 讓時間每秒顯示一次,顯示是正常的,但我如果輸入y2014 或是 M2等等設定時間日期的指令,都只會顯示"wrong"。如果改回成delay(1000)的方式來顯示時間,就可以正常設定時間日期。是不是有什麼樣的方法能夠修正呢,謝謝。

      Delete
  14. > 我想可能是自製的RTC的部分有狀況
    可是你不是在一般的Arduino板上測試過且沒問題,那麼RTC部分應該是正確的啊。

    嗯,果然很亂,看不出所以然。orz。

    看到"wrong"代表執行了程式裡的pf("Wrong\n");
    也就是int t = Serial.read();的t讀到了奇怪的東西,
    試著把Serial.read()讀到的東西印出來看看,看看讀到些什麼。


    ReplyDelete
    Replies
    1. Anonymous10/9/14 12:23

      >可是你不是在一般的Arduino板上測試過且沒問題,那麼RTC部分應該是正確的啊。
      對,這也是我覺得很奇怪的事情。

      >試著把Serial.read()讀到的東西印出來看看,看看讀到些什麼。
      對耶,我試試看。

      Delete
    2. Anonymous12/9/14 02:29

      >>試著把Serial.read()讀到的東西印出來看看,看看讀到些什麼。
      >對耶,我試試看。
      我今天試過了。我在您的DS1307程序裡的serialEvent()內,
      while((temp = Serial.read()) != -1){ v = v * 10 + (temp - '0');} 的後面
      加入Serial.println(t);
      當使用delay方式顯示時間(可以正常設定時間),在輸入y2014後,serial monitor會顯示121,然後顯示新設定的日期時間。
      當使用Timer方式顯示時間(無法正常設定時間),在輸入y2014後,serial monitor會顯示121 (\n) 50 (\n) Wrong (\n) 48 (\n) Wrong (\n)
      如果我猜得沒錯的話,timer 讓serial.read 沒辦法一次讀完輸入的指令,而是拆成一個字一個字輸入,所以變成錯誤指令就無法設定時間日期。

      Delete
    3. 我猜是因為loop裡沒有delay後,serialEvent被執行的速度太快了,導致一次只接收到一個字元,所以當輸入y2014時,程式卻只接收到y「121」。

      要改成更穩固的寫法的話,必須定義緩衝區,逐步接收序列埠傳來的資料(因為不確定一次會傳來多少個),判斷收到的資料是否有效,然後再處理。

      嗯,要花點時間。

      Delete
    4. 我以原來的程式碼為基礎(http://yehnan.blogspot.tw/2013/01/arduinortcds1307.html),改用Timer程式庫(使用1.3版,https://github.com/JChristensen/Timer/tree/v1.3),

      寫好後放在https://github.com/yehnan/arduino_practices/tree/master/RTC_DS1307_Timer

      改寫後,輸入設定值時,必須在末尾加一個非字母或數字的字元,譬如:
      「M9 」,含有M、9、空白字元。

      Delete
    5. Anonymous14/9/14 12:22

      是說等於用空白字元當作字串輸入的結束碼,讀到空白就表示字串輸入完成,是這樣的意思嗎?

      感謝您連日來的幫助。不知道是我的電路很奇怪還是供電很奇怪之類的。
      不過這兩天我把DS1307的兩個上拉電阻換成4.7k ohm,就能正常的在自製的arduino板上面運作了。
      多謝~

      Delete
    6. 對。試試就知道了。

      4.7k? 嗯,那麼你原本的上拉電阻的值沒弄錯吧?

      Delete
    7. Anonymous14/9/14 13:16

      >4.7k? 嗯,那麼你原本的上拉電阻的值沒弄錯吧?
      是的,原本的是 紅紅紅金 的電阻,用電錶量是2.2k 的。

      其實我也不知道為什麼,是因為上次做這項測試 時候是用4.7k 的電阻做上拉電阻。所以就想說試試看。
      不過因為我沒有做很完整的測試,所以可能就當作參考。

      Delete
    8. Anonymous14/9/14 13:19

      上次做 將購買的arduino用I2C連接到自製的arduino 這項測試的時候

      Delete
    9. 嗯...
      這裡有寫怎麼計算上拉電阻,參考一下吧。
      http://www.edn.com/design/analog/4371297/Design-calculations-for-robust-I2C-communications

      Delete
    10. Anonymous14/9/14 23:30

      好的,謝謝您,我會讀看看的。
      不過可能八成都看不懂....orz

      Delete
    11. 我也看不懂。

      Delete
  15. 請問一下 我是用usb to ttl 紅-3.3v 黑-gnd 綠-rx 白-tx
    燒入一般uno板子 為何無法燒入avrdude: stk500_getsync(): not in sync: resp=0x00

    ReplyDelete
    Replies
    1. 出現avrdude: stk500_getsync(): not in sync: resp=0x00的原因很多,
      請參考
      http://yehnan.blogspot.tw/2014/10/arduinostk500getsync-not-in-sync.html

      Delete
    2. 謝謝你哦
      所以 我這樣這樣的接線應該沒錯吧:D
      我只有四條線 都接再 uno板子上
      用一般usb可以正常使用 usbttl接過去才有問題

      Delete
    3. 不確定。
      我沒看到你的接線,不知道你用的是哪一個usb to ttl產品。
      有些產品的rx與tx相反了。
      Uno板是5V,你確定3.3V可行?

      Delete
    4. 後來我把它改接到5v了 參考的網址 幾乎都嘗試過一次了
      除了 換線(只有一條)
      還有bootloader(原本的板子可以使用是不是就代表ic上有了,不需要再燒錄?)
      下面是接線和usb ttl的圖片 麻煩您幫我看看 我用了好久都是無解阿哈哈
      https://drive.google.com/file/d/0B5YFJr3WxNkEMi11UFZHd3FZdm8/view?pli=1

      Delete
    5. 有些改Arduino IDE的選單「Tools-Port」嗎?
      燒錄時,有在適當時機按下板子的Reset鈕?

      請提供Arduino IDE的輸出。

      Delete
  16. 後來我把它改接到5v了 參考的網址 幾乎都嘗試過一次了
    還是無法使用 除了
    換線(因為只有一條哈哈)
    微控制器裡的bootloader壞了(這個是不是原本的可以上傳就是有bootloader了?)
    下面是我的接線圖 和usb ttl 麻煩您幫我看一下 用了好久都無解阿哈哈
    https://drive.google.com/file/d/0B5YFJr3WxNkEMi11UFZHd3FZdm8/view?usp=sharing

    ReplyDelete
  17. Anonymous7/5/15 09:45

    您好
    想請教一個問題,我有購買網路上的Arduino Pro mini 3.3V/8Mhz
    我將上面的Atmega 328P MCU拆下來接在我的小板上
    有將TX、RX、DTR、VCC、GND拉出來接USB to TTL版
    MCU使用內振,Arduino 也有使用官網的"ATmega328 on a breadboard (8 MHz internal clock)"板子
    但是程式一直沒燒入進去MCU
    請問是否還有什麼需要注意的呢?
    謝謝

    ReplyDelete
    Replies
    1. Anonymous7/5/15 10:04

      您好
      我剛剛使用朓腺,將小板上的OSC腳外接8Mhz振盪器
      就可以燒錄了
      請問是否因為MCU的Bootloader燒錄版本為外振8Mhz
      所以才會無法使用內振燒錄程式碼呢?
      謝謝

      Delete
    2. 應該是因為fuse的設定。
      更動震盪頻率也需修改fuse。

      Delete
  18. uno板上AREF空接 麵包板上需要接vcc嗎 假如我的analog signal是0~5V

    ReplyDelete
  19. 請問當我要用atmega328 當單晶片,並且商品化,要注意甚麼?
    我最近在研讀相關的電路學,卡在的點是計算相關功耗,是否降到最低呢?
    而商品是藍牙相關傳資料,採用HM-10 藍牙4.0,有要考量到安全性嗎?

    ReplyDelete
    Replies
    1. > 商品化,要注意甚麼?
      很多。
      > 是否降到最低呢?
      根據你的需求而定。
      > 有要考量到安全性嗎?
      不懂你的問題。

      Delete
  20. 請問您~若外接電源 Vcc
    用四顆1.5V電池,共6V會燒毀嗎?
    謝謝您

    ReplyDelete
    Replies
    1. 規格書寫著Operating Voltage 1.8 - 5.5V,Absolute Maximum Voltage 6.0V。
      所以如果你確定真的是6V,那就應該可以。
      但是直接用電池,也就是unregulated,電壓會上下起伏,不建議。

      Delete
  21. 你好
    想請問一下像上面您提到的那顆ATmega168的9腳、10腳,上面是PB6、PB7這種腳可以直接空接嗎?
    還是也必須連到哪些腳位上嗎?

    ReplyDelete
    Replies
    1. ATmega168的9腳、10腳,通常外接crystal。
      若不接,可使用晶片內建的震盪時脈,但需修改fuse。

      Delete
  22. 您好,想請問一下?
    如果我用兩塊自製Arduino要做對接資料傳輸
    並且不打算接USB傳輸,打算把ATmega328裝在Uno板上做燒錄
    TX與RX還是必須做RS232轉TTL?
    還是只要先燒錄好,直接把自製的板子對接就好?

    ReplyDelete
    Replies
    1. 直接連接兩顆ATmega328的TX與RX。
      這邊TX接另一邊的RX。

      Delete
    2. 了解 感謝老師的解答

      Delete
  23. 您好,關於arduino的SD卡有問題想請教一下
    如果是將感測的資料,然後存到SD卡
    目前可以將兩筆資料同時存到一個檔案
    請問有辦法將兩筆資料同時存到兩個檔案裡嗎
    或者是每使用一次 自動存成一個檔案
    例如開關20次 會有20個檔案
    語法的部分該如何表示
    懇請請葉大指導

    ReplyDelete
    Replies
    1. 改成不同檔名,不就可存入不同的檔案。

      不懂你的問題。

      Delete
    2. 有試著改成不同檔名
      但是第二筆資料都無法存入第二檔案
      我再試看看是不是語法錯誤
      感謝您的回覆

      Delete
  24. 請問attiny85也可以用這方法嗎?

    ReplyDelete
    Replies
    1. attiny85,請參考
      http://yehnan.blogspot.tw/2013/02/arduino-unoispsketchattiny85-20pu.html

      http://yehnan.blogspot.tw/2014/04/attiny85adafruit-trinket.html

      Delete
  25. 請問可以提供洞洞板那張圖的完整電路圖嗎?
    急需~

    ReplyDelete
  26. 葉大您好~
    我買了cp2102的usb ttl轉接版
    確定驅動程式有安裝成功 可是直接燒錄上傳程式卻失敗
    是因為之前有用arduino當燒錄器 燒入blink過的關係嗎?
    還是必須再將晶片重新燒錄bootloader?

    ReplyDelete
  27. 是的。

    使用燒錄器的話,不管晶片裡有什麼(一般程式或bootloader),都可燒錄。

    使用 usb ttl轉接板的話,要靠電腦端的程式(Arduino IDE與avrdude)與晶片裡的bootloader,通力合作,才能燒錄一般程式。

    ReplyDelete
  28. Using Port : COM5
    Using Programmer : arduino
    Overriding Baud Rate : 115200
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x48

    我重新用arduino燒錄bootloader
    再回來使用usb ttl燒寫,仍然會出現上面訊息

    ReplyDelete
    Replies
    1. 你是選 「草稿碼」-「上傳」吧?

      arduino板子開機(有電)後,bootloader先進入「燒錄模式」,此時可接受來自Arduino IDE/avrdude的燒錄指令,過幾秒後,若無燒錄指令,會進入「一般模式」,此時會執行一般的草稿碼,例如Blink。

      Arduino IDE按上傳按鈕後,Arduino板子端要重置,才能進入燒錄模式。
      一般Arduino板子,如Uno/Leonardo,Arduino IDE端想要上傳草稿碼(燒錄)時,板子/晶片端會自動重置,所以沒問題。

      我不確定cp2102會不會,假定不會,那你必須在Arduino IDE想要跟板子/晶片溝通進行燒錄時,重製晶片。

      Delete
    2. 我剛剛試過在上傳一般程式時
      多按幾次reset按鍵就可以成功了

      感謝葉大的協助!!

      Delete
    3. 應該是在適當的時間點,按一次reset即可。

      Delete
  29. This comment has been removed by the author.

    ReplyDelete
  30. 您好,想請問一個問題
    我arduino在燒錄完畢之後,本來可以將資料存取到SD卡,但是都在20秒的時候讀不到SD卡
    每次都如此,請問是什麼問題呢?

    ReplyDelete
  31. 葉老師您好:
    請問USB to TTL 如何直接接Arduino呢?
    我的用意是希望檢查USB to TTL是否故障,因為我懷疑他壞了!

    ReplyDelete
  32. 您好!
    想請問,若想在洞洞板的Arduino,也能實現原本Arduino以USB界面連接電腦的功能。
    (以UART傳輸資料,Arduino指令[print]能顯示在COM Port視窗的功能)

    若要實現以上功能,是否要另外加裝16U2這個晶片?

    ReplyDelete