Arduino UNO常見問題解答
那里有很多Arduino,這可能會引起一些混亂。我們想向人們說明最新版本中的一些更改。
NB 這只是我們對Arduino做出的某些決定的看法和解釋。我們沒有與Arduino相關聯,也不要為他們說話!如果您需要對Arduino問題的正式答復,請直接與他們聯系。謝謝!
NB2 仍在進行中,我們正在收集常見問題來回答。如果您還有其他問題,請在我們的論壇中發布。
Arduino時間軸,但首先……一些歷史!首先是帶有RS232的串行Arduino(它的名字是什么?),它沒有在Arduino團隊和朋友之外使用。
第一個流行制造的Arduino被稱為NG(新一代,例如Star Trek,yknow?)。NG使用了以16 MHz運行的Atmega8芯片和用于USB接口的FT232芯片。該引導程序占用2KB的空間,并以19200波特的速度運行。
下一個版本是Diecimila。 Diecimila將芯片從Atmega8更新為Atmega168。這里最棒的事情是空間和內存增加了一倍(16K而不是8K)。它仍然以16MHz運行。 Diecimila還增加了兩個額外的3.3V插頭(來自FTDI芯片)和復位引腳,當屏蔽層覆蓋了Reset按鈕時,該引腳非常方便。引導加載程序占用2KB的空間,并以19200波特的速度運行。還添加了自動重置功能,使每個人的生活變得更加美好。
2009年,發布了Duemilanove。這也將芯片再次升級到Atmega328。空間和內存又增加了一倍!另一個升級是現在可以在USB和DC插孔之間自動切換電源,從而刪除了先前的跳線。這使得從編程過渡到獨立變得更加容易和快捷,并且擺脫了一些混亂。引導加載程序占用2KB的空間,運行速度為57600波特。
2010年,我們推出了Uno! Uno仍使用328P芯片和電源切換器。它有一個名為OptiBoot的較小引導加載程序(用戶項目有更多空間),運行速度為115K。因此,即使芯片相同,您也可以獲得引導加載程序先前使用的另外1.5K的額外閃存空間。 FTDI芯片也已替換為atmega8u2,后者可支持各種USB接口。最后,還有一個額外的3.3V穩壓器(LP2985),可提供更好的3.3V電源。
新USB芯片 所以!所有較舊的Arduino(NG,Diecimila和Duemilanove)都使用FTDI芯片(FT232RL)來轉換Arduino芯片(Atmel ATmega)的TTL串行。這樣可以進行可打印的調試,并連接到PureData/Max,Processing,Python等軟件,還可以通過串行引導加載程序更新固件。
有關的好消息FT232RL具有免版稅的驅動程序,幾乎可以正常使用。壞消息是它只能用作USB/串行端口。它不能像鍵盤,鼠標,磁盤驅動器,MIDI設備等一樣起作用。
Uno通過將FT232RL芯片與atmega8u2芯片交換來改變了這種情況。這款新芯片可能有幾件事情,但是在我們進行討論之前,讓我們先弄清楚默認情況下,該芯片的功能與它所取代的FTDI芯片相同。這只是USB串行端口!
更新芯片的一項改進是,以前,Mac用戶需要安裝FTDI驅動程序。 8u2模仿“通用” CDC串行設備。因此,現在,Mac用戶不必安裝驅動程序。 Windows用戶仍然需要安裝.INF文件,但是幸運的是沒有驅動程序。這意味著新版本的Windows將出現較少的問題。遺憾的是,沒有辦法在Windows中擁有不需要INF文件的串行USB設備:(
8u2的優點是 advanced 用戶可以將其轉變為另一種USB設備,例如,它可以像鍵盤或鼠標,磁盤驅動器,或MIDI接口等一樣工作。這樣做,但我們希望很快發布。
最后,使用8u2降低了電路板的價格,彌補了其他一些不足。
為什么不只使用atmega32u4?
Arduino團隊已經表明他們考慮了這一點,但更喜歡DIP芯片的可破解性。
現在,有一些帶有32u4芯片的Arduino,例如Leonardo,Micro和Esplora
如何更改USB固件?
可以通過焊接6針ISP接頭(R3具有6針)來對8u2進行編程標頭已預先焊接)并使用標準的AVR編程器。您也可以在8u2中使用引導加載程序(DFU)。在第一代Unos上,您可以通過在板子下面焊接10K電阻器來啟用它。 (Uno的R2和R3版本使用16U2,不需要電阻!)同樣,我們沒有任何示例或教程,但希望很快。
8u2的代碼基于LUFA,這是Dean Cameran極為出色的USB-AVR庫,其中包含大量示例和文檔。它也是完全開源的。
FT232RL具有內部振蕩器,而8u2沒有。這意味著8u2旁邊有一個16mhz晶體,以使其能夠保持精確的USB時序。
另一方面,作為Arduino中核心處理器的Atmega328p芯片現在具有16mhz陶瓷諧振器。陶瓷諧振器的精確度略低于晶體,但我們已經確信這一諧振器已經過指定并且可以很好地工作。
所以Arduino在計時方面不那么精確嗎?
簡短的答案是:是的。長答案是,人們使用Arduino所做的大多數事情都不依賴于20ppm的精確定時,否則100ppm就會失敗。對于需要長期精確計時的人,我們建議使用TCXO(溫度補償晶體振蕩器)-但您會知道是否需要它。
《我class =“ fa fa-question-circle-o”》
兩者之間共享一個16Mhz晶體?
很好的問題,從技術上講可以。但是,實際上,開發板并沒有通過一個晶體通過FCC認證(長的痕跡和快速的方波=大量的噪聲)。
好,可以說我不在乎。..
您絕對可以連接CLKO從‘8u2到’328p的晶體,但是您是一個人,因為我們不認為會有任何相關的教程。
背面的FCC徽標是什么?
Arduino現在已通過FCC認證!這意味著該板本身就通過了FCC電磁輻射認證。這不是不是意味著您的項目已通過FCC認證。更改Arduino的那一刻,它已不再經過FCC認證(盡管我們需要一些備用文檔)。
它還是歐洲人的CE認證。
新的Bootloader?
有一個新的Bootloader。它就像舊版本一樣工作-兼容STK500協議,但大小只有 1/4 !從2K開始,新的引導程序只有512b。這為您的項目代碼提供了更多空間!好極了!它也更快 -115K(而不是57.6k),因此您將在3秒內上傳代碼。
壞消息是,您必須確保在“董事會”菜單中選擇Uno !!!如果您不這樣做,則由于引導加載程序速度錯誤而使您感到困惑,并且您將無法獲得額外的1.5K!
總體而言,它是一個很好的方向,并且芯片可以很好地用于較早的Arduino(因此,您只需更換芯片即可將Diecimila或Duemilanove升級到Uno)。
有關引導加載程序的更多詳細信息,例如源代碼,請訪問Optiboot項目頁面。
為什么不只是將‘8u2用作程序員?
雖然8u2可以充當完整的ISP編程器,但出于某些原因卻并非如此。
初學者使用完整的ISP編程器將導致積木。如果只是被引導加載,就不會將Arduino芯片弄得面目全非。
讓該芯片僅作為USB/串行接口來使用,從而簡化了固件,因此該芯片僅具有一種功能,而不必具有它具有程序員和串行接口的雙重作用(考慮一下,這并不容易)
向后兼容-仍然可以使用FTDI分支板或電纜對Arduino芯片進行編程,使人們很容易面包板或制作克隆。
新的’8u2如何影響Arduino衍生物?
每個USB設備都必須具有唯一的產品ID和供應商ID。供應商ID(VID)出售給公司,產品ID(PID)由該公司選擇。因此,例如,FTDI擁有VID#0403,并且他們給芯片提供的ID在#0000和#FFFF之間(65,536個不同的PID)。Ardiuno的舊會員使用FTDI的VID/PID,因為這是您購買芯片時交易的一部分。由于Uno不再使用FTDI芯片,因此Arduino團隊不得不購買USB供應商ID(VID)。現在,每個Arduino產品都將從Uno(#0001)開始具有自己的PID。
如果要制作自己的Arduino兼容板,您可以選擇以下幾種:
Don ‘不使用8u2,而是使用帶有VID的FTDI芯片代替
如果您打算制造多塊用于個人使用的板,則必須購買VID從USB IF一次性收取$ 2000的費用
如果您要為自己的實驗制作一塊單板,則可以選擇一個不會干擾您設備上的任何設備的VID/PID計算機并替換其中的那些
您可以從開發USB設備的公司購買單個VID /PID對的許可證(目前我們沒有任何特定鏈接)
但是,您分發自己的Arduino兼容產品時不能使用Arduino VID!如果VID的成本對您來說太高了,只需使用FTDI芯片K?
我試圖找到一個購買“ 8u2”的地方,卻找不到任何地方!
是的,目前全球范圍內都缺少Atmel零件。甚至Arduino內核(Atmega328P)中使用的芯片也很難獲得。經濟衰退后會發生這種情況。我們希望這些芯片和其他Atmel芯片能盡快在Digigikey之類的地方出現。直到那時,繼續在findchips.com上搜索!
那么這是否意味著Arduino短缺?
可能不是。 Arduino團隊直接從Atmel購買了成千上萬的芯片。因此,他們可能會優先于分銷商。我們假設團隊購買了足夠的東西可以持續一段時間。
i》
Arduino小組是否已將FTDI芯片從FTDI芯片移到了8u2芯片上,制造商?
雖然出現了難以獲得的芯片并VID/PID的混亂似乎有點令人討厭,我們認為這并不意味著Arduino團隊是惡意的,或試圖使衍生產品的人生活困難。向’8u2的遷移使Arduino更加強大,并且易于安裝,因為安裝的驅動程序更少。盡管現在短缺,但最終市場上會有很多芯片。
Arduino論壇中的某些人已經考慮組建一個小組,該小組將購買VID供Arduinites用于個人項目。這是一個很好的主意,并且可能是避免VID/PID沖突的最佳方法。在65,536個項目中,每個PID花費的錢很少。
當然,因為它們沒有擺脫引導加載程序系統,所以您可以始終使用FTDI芯片。
盾牌還在起作用嗎?
所有以前的屏蔽仍應能正常工作,因為插頭間距相同,核心芯片相同且零件位置相同。實際上,由于3V電源已經升級(請參見下一點),因此某些方法應該工作得更好。
機箱,平板等仍然可以使用嗎?
是的! Uno在物理上與以前的Arduino具有相同的大小和布局。安裝孔在同一位置。現在,還有一個附加的安裝孔。
更多3.3v電源!
對于較舊的主板,一件可悲的事情是它們具有3.3v電源,但這實際上就是FTDI芯片內部3.3v穩壓器所能提供的。您可能會從中獲得50mA的電流。但是諸如XBees,SD卡,某些快速ADC或DAC之類的高功率設備很容易將FTDI芯片拉下并重置USB連接。 Uno通過添加一個新的3.3V穩壓器LP2985解決了這個問題,該穩壓器可以輕松提供150mA電流。
LP2985是一款非常高質量的穩壓器,非常適合于為物品供電,并且非常漂亮。堅實的1%模擬參考。
為什么Arduino芯片可以20MHz運行時為何以16MHz運行?
這是一個常見問題。原因是第一個Arduino使用的Atmega8的運行速度不能超過16Mhz。隨著芯片的升級,他們希望使主板速度兼容。 Arduino也不是真正打算用于快速處理(無論如何它僅是8位的),因此芯片以16MHz運行。
它仍然是開源硬件嗎?和軟件?
是! Uno仍可在知識共享許可下使用。您可以在Arduino網站上獲得最新的原理圖和布局。
UNO R2和R3 在2011年秋季,Arduino團隊透露將會有新的次要修訂經典Arduino的“ UNO R3”(修訂版3)。許多人向我們詢問了有關R3的信息,因此,到目前為止,我們已經掌握了所有信息。
UNO R3直到12月1日左右才對經銷商銷售。真!直到那時還沒有人!
UNO R3向后兼容UNO-相同的驅動程序,相同的上載內容,相同的外觀
UNO中有一些更改,這里是它們是什么:
USB控制器芯片已從atmega8u2(8K閃存)移動到atmega16u2(16K閃存)。 這并不意味著您的草圖具有更多的閃存或RAM 。此升級僅針對USB接口芯片 。從理論上講,這意味著使用低級USB接口(例如MIDI/操縱桿/鍵盤)會更加容易。 但是,這只是理論上的問題,沒有示例代碼或固件可以真正做到這一點。
另外還有三個突破針在PCB上,在AREF引腳旁邊有兩個I2C引腳(SDA/SCL)-這是模擬4和5引腳的重復。沒有額外的I2C接口或其他任何東西,只是因為I2C引腳位于Mega的不同位置,所以他們在那里復制了這些引腳以用作將來的屏蔽。復位引腳旁邊還有一個IOREF引腳-這是為了讓屏蔽層知道板上正在運行的I/O引腳電壓(對于UNO,為5V)。再次,這是電源引腳的重復,它不會增加UNO的電壓電平。
“ RESET”按鈕已移到電源按鈕旁邊。 USB連接器,這樣在屏蔽層位于頂部時更易于按下。
這是UNO中沒有發生的變化:
處理器的尺寸和速度-自從Duemilanove以來,它的運行頻率為16MHz的ATMega328P相同。您的代碼不會在R3上更快或更佳地運行
相同數量的插針-沒有添加額外的插針甚至有更多的突破(請參見上文!)
電路板的尺寸和形狀-與以前相同的尺寸
屏蔽罩的兼容性-每個能正常工作并插入UNO R1/R2的屏蔽罩都應該能夠在R3上正常工作
驅動程序-驅動程序是相同的
上傳速度-相同的上傳速度和技術
如果您想立即使用Arduino R3,請訪問adafruit商店,拿起木板或包裝!
Arduino庫
需要幫助庫?在此處查看我們針對所有操作系統的超級詳細教程:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
什么是庫? 庫是很棒的地方,在美國還不是非法的!如果您需要學習如何做某事,例如修理摩托車,可以去當地的圖書館去拿書。當然,您可以買書,但是圖書館很好,因為作為一種資源,您可以在需要時隨時獲得書,使房子整潔。
軟件圖書館非常相似。在第3課中,我們已經研究了過程是什么:過程是要執行的事情的列表。庫是過程的大集合,其中所有過程都相關!例如,如果您想控制電動機,則可能需要找到一個電動機控制庫:一個已經為您編寫的過程的集合,您可以使用這些過程,而不必進行繁瑣的學習電動機的細微差別的工作。
例如,這是串行庫,它允許Arduino將數據發送回計算機:
使用庫 Arduino項目的最佳功能之一是能夠添加預制的庫,以增加硬件支持。它們很多,您可以選擇安裝哪個。僅當您正在處理的草圖需要它們時才加載它們,因此在大多數情況下,您可以下載并存儲它們以備將來使用。
草圖通常會依賴,在庫中,您可以通過查看草圖的頂部來查看它們的內容。如果您看到以下內容:
下載:文件
復制代碼
#include #include
這意味著您將需要一個名為FatReader的庫或包含文件FatReader的庫。如果未安裝,則會出現錯誤:
庫中有什么? 庫是其中包含一些文件的文件夾,這些文件將以 .cpp (C ++代碼文件)和 結尾。 h (C ++頭文件)。
可能還會有一些 .o 文件。 .o 文件是C ++編譯的對象。如果最終要處理庫并對其進行修改,請確保刪除 .o 文件,因為這將迫使Arduino IDE將修改后的 .cpp 編譯為 .o 。
您可能會看到的兩個可選文件是 keywords.txt (這是一個提示文件,用于告訴Arduino IDE如何為草圖和示例文件夾上色,其中可能會有一些方便的測試標記,這些標記將顯示在“文件”→“示例”→“庫”下拉菜單下。
請記住!庫文件夾的結構非常重要! .c 和 .h 文件必須位于文件夾的“最低級別”中,例如,您不能具有 Arduino/libraries/WaveHC/WaveHC/file.c 或 Arduino/libraries/MyLibraries/WaveHC/file.c -它必須為 Arduino/libraries/WaveHC/file.c
如何安裝庫在Arduino v16及更早版本中,庫存儲在 ArduinoInstallDirectory/hardware/libraries 文件夾中,該文件夾還包含所有內置庫(如Wire和Serial)。
在v17及更高版本中,用戶庫現在存儲在 ArduinoSketchDirectory/libraries 文件夾中。您可能需要第一次制作庫 子文件夾。但是,這樣做的好處是,您不必在每次升級軟件時都移動并重新安裝庫。
例如,這是在Windows中安裝NewSoftSerial時的外觀。當然您的用戶名會有所不同。)
在Mac上,您的arduino素描文件夾可能會被稱為 Documents/arduino ,因此請在名為 libraries 的內部創建一個新文件夾,然后將未壓縮的庫放入
請檢查Documents/arduino/libraries/MyNewLibary文件夾中是否包含.cpp和.h文件。
完成后,重新啟動Arduino IDE。
Bootloader
這是一些高級的Bootloader調整-99%的Arduino用戶應不要惹他們的引導程序!
用于Atmega328的引導加載程序,這里是“固定” ATmega328引導加載程序的軟件包。要對其進行編程,可能需要更改Makefile的ISPTOOL等定義。命令為 make adaboot328;。 make TARGET = adaboot328 isp328 (我無法使用默認的‘isp’目標,因此我制作了一個新目標)。
此版本具有一些修復程序:首先,它集成了下面的“ no-wait”和“ no-hang”修復程序。它還修復了在不使用IDE進行編程時令人討厭的“缺少簽名字節”的錯誤。我還修復了EEPROM代碼,以便現在您可以上傳和下載EEPROM存儲器以及閃存。最后,對于沒有TX/RX指示燈的arduino克隆,LED會提供“上傳反饋”。
請注意,由于擴展了內存,該芯片的保險絲有所不同!
“ No-Wait”引導程序 這是一個引導加載程序hack,它將在上載后自動啟動草圖,并且僅在按下重置按鈕時才會啟動引導加載程序(因此,當您插入電源時,它將直接進入草圖)。 br》
復制以下行:
下載:文件
復制代碼
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader
并粘貼它們,如下所示:
下載:文件
復制代碼
/* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader
/* set pin direction for bootloader pin and enable pullup */
/* for ATmega128, two pins need to be initialized */ /* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader
/* set pin direction for bootloader pin and enable pullup */
/* for ATmega128, two pins need to be initialized */
現在,以相同的方式,復制以下代碼:
下載:文件
復制代碼
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms // autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
并粘貼到此處:
下載:文件
復制代碼
/* Leave programming mode */
else if(ch==‘Q’) {
nothing_response();
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
}
/* Erase device, don‘t care as we will erase one page at a time anyway. */
else if(ch==’R‘) {
nothing_response();
} /* Leave programming mode */
else if(ch==’Q‘) {
nothing_response();
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
}
/* Erase device, don’t care as we will erase one page at a time anyway. */
else if(ch==‘R’) {
nothing_response();
}
您也可以在此處獲取源代碼和已編譯的十六進制文件。
它將在NG或Diecimila Arduino中工作。
無掛機引導程序如果您使用的是自動安裝的Diecimila -reset當通信程序意外觸發引導加載程序時,您可能會感到沮喪。這是一個快速的技巧,可以使引導加載程序在未首先收到‘0’字符的情況下退出(這表示Arduino軟件正在嘗試與之對話。)
復制以下行:
下載:文件
復制代碼
uint8_t firstchar = 0; uint8_t firstchar = 0;
并粘貼:
下載:文件
復制代碼
/* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
uint8_t firstchar = 0; /* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
uint8_t firstchar = 0;
復制:
下載:文件
復制代碼
firstchar = 1; // we got an appropriate bootloader instruction firstchar = 1; // we got an appropriate bootloader instruction
粘貼:
下載:文件
復制代碼
/* Hello is anyone home ? */
if(ch==‘0’) {
firstchar = 1; // we got an appropriate bootloader instruction
nothing_response(); /* Hello is anyone home ? */
if(ch==‘0’) {
firstchar = 1; // we got an appropriate bootloader instruction
nothing_response();
,然后將其粘貼到上面的代碼下方:
下載:文件
復制代碼
} else if (firstchar == 0) {
// the first character we got is not ‘0’, lets bail!
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
} } else if (firstchar == 0) {
// the first character we got is not ‘0’, lets bail!
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
}
您也可以只用 app_start()
上傳草圖 bootloader與‘stk500’兼容,這意味著您可以使用ol‘AVRDUDE對arduino進行編程。
只需插入USB電纜即可。 ,然后在開始avrdude之前按重設。如果需要avrdude教程,請查看此頁面。
使用 -b 19200 將波特率設置為19200
設備簽名顯示為似乎不起作用,因此您需要使用 -F
編程器類型為 avrisp
設備類型為 -p m168
端口是FTDI芯片顯示的端口
升級
簡介
Arduino的“大腦”是一個稱為ATmega的微控制器。它是ATMEL(一家挪威芯片公司)的產品線。就像英特爾和AMD每年發布新的更好的芯片一樣,Atmel也是如此。 Arduino的第一個版本(直至NG)使用ATmega8-一種具有8K閃存和1K RAM的芯片。然后Atmel發布了ATmega168,它是16K閃存和1K RAM的直接替代品-確實是一個很大的改進!現在有了帶有32K閃存和2K RAM的ATmega328。
更新和更換Arduino既輕松又輕松,僅花費幾美元。您的草圖將像以前一樣工作,但還有更多的呼吸空間。
要執行此升級,您將必須購買預編程的芯片,或者自己使用AVR編程器對其進行編程,也可以通過對其進行“位撞擊”。 p》
更換芯片首先,《使用小型平頭螺絲刀或類似工具從插座上強行輕輕地撬起Arduino微控制器。嘗試確保銷釘不彎曲。放在安全的地方。最好放在防靜電袋中。
下一步,準備新芯片。 IC的引腳在出廠時略有傾斜,因此需要將其彎曲一點以使其平行。
span》
最后,更換舊芯片,排列所有引腳,并確保芯片上的凹口與插座上的凹口匹配!
下載具有ATmega328兼容性的Arduino IDE 版本13和更高版本的Arduino該軟件支持328!如果您從2009年2月5日之前從Adafruit購買的芯片,則波特率將設置為19200(與舊版Arduinos相同)。 2月5日之后,升級芯片更改為57600波特率(快3倍!),以便與新的Arduino兼容。如果您使用的是19200波特率的芯片,則上傳將很困難。只需退出Arduino應用程序并在名為 boards.txt 的硬件文件夾中編輯文件,然后將行更改為:
下載:文件
復制代碼
atmega328.upload.speed=57600 atmega328.upload.speed=57600
至:
下載:文件
復制代碼
atmega328.upload.speed=19200 atmega328.upload.speed=19200
如果遇到問題,請同時嘗試以防萬一!
3.3V轉換
介紹 所有正式的Arduino都以5伏電壓運行,長期以來,這一直是業余電子產品和微控制器的“標準”電壓。但是現在最酷的新型傳感器,顯示器和芯片均為3.3V,不兼容5V。例如,XBee無線電,SD卡和天線表均以3.3V邏輯和電源運行。如果您嘗試以5V電壓連接到它們,則可能會損壞附件的內部。
我們使用CD4050之類的芯片進行電平轉換,但是如果您使用大量3.3 V設備,也許您最好將整個Arduino升級為從3.3V開始運行!
為此,我們將更換調節器,以使DC桶形插孔達到3.3v類型穩壓器,不是5V。然后重新配置5V USB電源線,使其也通過調節器。
替換調壓器 默認穩壓器為5.0V類型,但我們希望輸出3.3V,因此需要替換它。我們將在TO-252-3封裝中使用1117-3.3V(有一些1117穩壓器制造商,就像7805由許多工廠制造的)穩壓器。看起來像這樣:
您可以從任何電子零件商店購買這些產品,例如,這里是digikey鏈接。
首先,我們需要刪除舊的調節器。最簡單的方法是先夾住兩條腿。
然后,您需要加熱凸耳以使其呈液體,以便可以將舊零件提起。盡管看似不直觀,但最好將添加焊料到接線片上,然后用鐵將其熔化,這會改善導熱性,因為接線片太大。
清理選項卡并刪除所有剪切的部分仍然卡住。
現在將新的3.3V穩壓器排成一行,然后先焊接接線片,使用大量焊料并耐心等待,接線片就像散熱器一樣。
然后做兩條腿。
更換保險絲 下一部分有點棘手,USB插孔已經給了我們5V的電壓,并且通常與穩壓器的輸出有關(essentia通常,當DC插孔未通電時,它有一個連接它的小電路。)
使USB 5V也通過調節器的最簡單方法是卸下保險絲并將二極管從USB輸出焊接到穩壓器輸入。
您可以使用任何功率二極管,一個1N4001完美的,只需幾美分。
需要權衡的是,USB插孔沒有500 mA保險絲。好消息是,計算機將在USB連接器(計算機內部)上擁有自己的保險絲,因此您不太可能會破壞PC。但是請注意,這會失去一點安全性。
用烙鐵加熱保險絲,再次添加焊料可能有助于導熱。由于保險絲的導電性很強,您可以只加熱一側一段時間,兩端就會熔化。
將二極管短接并將引線彎曲。將沒有條紋(陽極)的一側焊接到最靠近電路板邊緣的舊保險絲墊上。將帶條紋的一端(陰極)焊接到調節器的右腳上。
Arduino仍將自動選擇為您提供更多電源的電源插頭。
就是這樣!您現在使用3.3V供電。這比AVR芯片的功率/頻率規格低一點,因為它們應該具有大約3.6V的電壓才能運行16Mhz,但是自 可能 AVR可以超頻一點。
Arduino黑客
保險杠 讓導電跡線接觸您的桌子并不是很好,您可以通過在底部添加保險杠來保護Arduino。
您可以從McMaster Carr零件號購買。 95495K66(大量)或Adafruit
免費占用一些RAM 如果您正在處理需要很多 的項目,則可以釋放100個以上的字節(ATmega168上RAM的10%!)通過減少串行接收緩沖區。默認情況下,它的128個字節相當多!
打開 hardware/cores/arduino (或 cores/arduino )目錄,然后編輯名為 wiring_serial.c 或 HardwareSerial.cpp
的文件,靠近頂部的是 #define RX_BUFFER_SIZE 128 ,這意味著128個字節用于緩沖區。您可以將其更改為32(甚至16!)。如果幾乎沒有串行輸入,請使其盡可能低,只要其》0。
您還可以通過將 rx_buffer_head 和 rx_buffer_tail 從更改為另外2個字節》 int 到 uint8_t
ArduinoISP
簡介 許多人開始學習使用Arduino的微控制器,但隨后又想構建自己的項目而不必犧牲開發板。或者,也許他們想制作自己的與IDE兼容的Arduino變體。無論哪種方式,一個常見的問題是如何將引導加載程序刻錄到新的AVR芯片上。由于AVR一片空白,因此需要將它們設置為與Arduino IDE兼容,但為此您需要一個AVR編程器(如USBtinyISP)。
好消息是,您可以使用現有的USB刻錄機加載引導加載程序Arduino僅需一點點工作。 arduino.cc站點上甚至還有一個迷你教程。
該教程是該教程的擴展。首先,我們將展示如何通過將28針ZIF插座焊接到原型屏蔽層并使用Arduino的PWM輸出線生成時鐘來制造永久的引導程序刻錄機。這樣一來,您可以“救援”設置為錯誤類型的振蕩器的許多芯片,或者將設置為從外部振蕩器(大多數Arduino引導加載程序)更改為內部的芯片(例如lilypad)。
零件 您將需要。..
Arduino
原型屏蔽套件
28針ZIF(零插入力)插座(您可以使用普通插座,但ZIF是理想的插座)
一些電線
空白ATmega328P
如果您從Adafruit購買了該套件,則會有一些額外的物品,例如壓電蜂鳴器,您可以在此項目的獨立版本中使用的LED,按鈕等,現在就將其忽略!
組裝 首先,將ZIF插座放置在原型屏蔽板上,如下所示:
焊接所有28個引腳一種牢固的連接!
將以下電線焊接到ZIF插座上
將數字1固定到數字10-藍色不要忘記將電線彎曲到下面以進行連接焊接時連接到ZIF插座引腳!!!
引腳7至5V-紅色
引腳8接地-黑色
針9到數字9-灰色
針17到數字11-棕色
針18到數字12-橙色
針19到數字13-黃色
針20到+ 5V-紅色
針22到地-黑色
按照protoshield教程將紅色LED焊接到 LED1 位置,綠色LED置于 LED2 位置。還要在LED旁邊焊接兩個1.0K電阻。我們將使用LED作為指示器。然后,將LED2分支(白色)到模擬0的電線焊接,LED1分支(白色)到數字8的電線焊接。
最后,您需要在接頭上焊接以允許放置屏蔽,斷開0.1英寸的公接頭并將其放入Arduino插槽中,然后將上方的屏蔽層頂部焊接到位。
加載代碼
加載草圖的時間!從我們的Github存儲庫中獲取代碼并將其粘貼到新草圖中,然后將其上傳到Arduino。
我們有報告說此過程不適用于Arduino 1.5.2。請改用最新的主流Arduino版本!
將屏蔽層插入頂部,提起閂鎖,彈出芯片,然后放低閂鎖。確保芯片方向是這樣(因此,通過左側的杠桿,您可以閱讀文本):
在仍然插入USB電纜的情況下(并選擇與以前相同的串行端口),選擇工具→刻錄Bootloader→帶有Arduino的ISP
在更高版本的Arduino IDE,從 Tools→Programmer 菜單中選擇 Arduino as ISP ,然后從Tools菜單中選擇 Burn Bootloader 。
編程時,您將看到此消息,并且LED指示燈將熄滅。
就是這樣!別忘了,您可以刻錄幾種不同的種類引導加載程序,例如Uno,Duemilanove,Lilypad,因此,根據您的情況,您可能希望使用其中一種。
獎金!與AVRdude一起使用 您可以非常輕松地從命令行使用ArduinoISP,使用AVRdude,這是通過運行以下命令對AVR進行編程的標準程序:
下載:文件
復制代碼
avrdude -c arduino -p atmega328 -P COMPORT -b 19200 -U flash:w:filetoburn.hex avrdude -c arduino -p atmega328 -P COMPORT -b 19200 -U flash:w:filetoburn.hex
代替 atmega328 ,您還可以編程 atmega8 atmega88 atmega48 atmega168等,等等
責任編輯:wv
-
Arduino
+關注
關注
187文章
6464瀏覽量
186681
發布評論請先 登錄
相關推薦
評論