2015年2月8日 星期日

Arduino Pro Mini 上傳程式出現錯誤訊息?

玩Arduino,有人喜歡玩大的比如說Mega,看重它I/O pin夠多,Memory比較大之類的,但也有人喜歡玩小的,比如說Pro Mini,I/O數跟Uno差不多,分為5V/16MHz與3.3V/8MHz兩種,但它沒有USB,也因此讓體積更小。如果想要連接電腦,就需要接另一張USB轉TTL/RS232的小卡。下圖從右開始依序是Uno, Nano, Pro Mini以及USB轉接卡:


使用Pro Mini的第一個問題就是要怎樣跟USB to TTL卡連接。Pro Mini買來時通常pin腳要自己焊,不過附贈的針腳常是90度公頭的,也就是跟左邊USB卡上的針腳一樣,可以去電子材料行買90度母頭的(如圖)來焊。

USB to TTL/RS232上面的針腳從左開始依序是:DTR / RX / TX / VCC / CTS / GND
而我這片Pro Mini上的針腳從左開始依序是:DTR / TXO / RXI / VCC / GND / GND
有的Pro Mini標示會不太一樣,比如說第一腳標 GRN,最後一腳標BLK之類的。但其實它的順序都是一樣的,直接一對一接上即可。

其中DTR是Auto Rest腳位,如果沒有接這條,你會發現在上傳程式時出現「avrdude: stk500_getsync(): not in sync」的錯誤訊息。上網找資訊往往會發現有人建議在上傳程式時,看到白色compile完計算程式大小的字樣時,趕緊按下Pro Mini上的reset鍵,就可以成功上傳,一試還真靈,心中暗暗感謝谷歌大神,殊不知這是因為沒接DTR腳位,所以在上傳程式時無法自動reset。




另外建議焊接母頭的原因是這樣可以確保連接正常,在撰寫程式時常常需要從Serial Console顯示內容,以確認程式run的對不對,這時兩個板子之間傳送的資訊就十分頻繁,要是接觸不良,Serial Console往往會斷線,變成基本的debug都很難進行。

像這樣合體,就牢固多了

另外一個需要注意的,是IDE上選擇Board,Pro Mini有4種選擇如下,像我買的這片「號稱」是加強版3.3V/16MHz的,我發現如果選到 5V/16MHz的話,整個板子的運行速度會變慢約一倍,也就是delay(1000)的速度會變接近兩秒才跳一次,選回3.3V/8MHz的正常了。


還有有關FTDI驅動程式的問題,我用的是OS X Yosemite,上網下載VCP 2.2.18 64bits的驅動程式安裝10.7版的即可使用,上網查詢好像之前有人用Windows8但買到的不是正牌FTDI晶片(正牌跟仿冒的我也分不出來),安裝驅動程式後會把仿冒晶片上的Device ID給改掉讓程式無法運行,所以需要使用舊版驅動程式才行,這部份使用Windows的可能需要注意一下。

總之,剛拿到Pro Mini時,由於上傳要按Reset鍵、IDE選錯板子以及重裝驅動程式等步驟搞的我以為這片板子有問題,程式在UNO及Nano上跑的好好的,一到Pro Mini就到處出問題。其實確認正確的相關使用環境參數等是很重要的,特別記錄下來給大家參考。

P.S. 其實Arduino Mini(另一塊,沒有Pro的)在設計上就是上傳程式時要按reset的,這在官網上就有說明,有時會誤導以為Pro Mini也是這樣。

沒有留言:

張貼留言