自從Raspberry Pi問世以來,就有很多商家設計出各式各樣的外殼,也有很多人自己動手製作,琳琅滿目,目不暇給。要賣錢的一般大約350元,好看的約600元,有些鋁製高級品甚至可到2000元之譜。我的Raspberry Pi板子一直都是裸機的狀態,有時放進不合身的紙盒裡,有點可憐啊。
非常漂亮的Pibow,好想要啊。
以3D成型機作出來的外殼,酷。
外型是Star Wars鈦戰機的外殼,太屌了。
幾個禮拜前,無意間發現了三和瓦窯的起厝-砌磚組,突然想到,說不定我可以用迷你磚塊與水泥為Raspberry Pi蓋一棟外殼,哇,試試看吧!
三和瓦窯,位於高雄大樹區。
起厝-砌磚組的內容物,製作說明書一張、小磚40塊(約長4 寬2 高1cm)、小半磚12塊(約長2 寬2 高1cm)、膠泥、攪棒及海棉。
首先,排排看,主要是下底與上蓋兩個部分,確認磚塊數量夠不夠。
水泥加水,攪拌待用。
因為「磚」原本應該用「砌」的,一層一層疊上去,一層一層塗上水泥,但我想要的樣子卻是向水平方向展開的,我試了一下,發現並不容易固定,水泥需要滿長時間才會乾掉,所以我只好先用強力膠固定磚塊,組成適當的外型,然後再填入水泥到縫隙裡。
這是下底。
這是上蓋。
等它乾、等它固定,啊哈,完成囉。
放進去吧,不太可能弄的剛剛好,可在板子與磚塊接觸的地方加入一些橡皮,加以固定。
組合後的樣子。
上面留個洞觀看LED。
好重,大概有700g吧,非常笨重既不炫也不潮,哈哈。
Raise your cup, say cheers to the moon, look down on the ground, the shadow is also drinking with me. I'm not a lonely drinker.
2013/02/12
2013/02/03
將Arduino Uno當做一台ISP線上燒錄器,燒錄sketch到麵包板上的ATtiny85-20PU晶片
我買了一顆ATtiny85-20PU晶片,裡頭空空的沒有任何sketch。但我有一塊Arduino Uno R3板子,它可化身成一台ISP燒錄器;把ATtiny85-20PU放上麵包板,再接上一些電子元件與線材後,便可從主機電腦透過Arduino Uno R3板、將sketch燒錄到麵包板的ATtiny85-20PU晶片裡。
我的板子是Arduino Uno R3,Arduino軟體開發環境是1.0.3 Windows版,燒錄對象是ATtiny85。
本篇介紹的內容,應該也可套用到其他Arduino板子與其他型號的AVR晶片,但我也沒試過,所以此篇內容皆以我的環境為準。(我另一篇是燒錄到ATmega328P-PU。)
若不清楚ISP是什麼意思,若想知道ATtiny85-20PU的PU之意,請參考我寫的:Arduino與AVR微控制器相關詞彙。
底下是我的板子Arduino Uno R3,其微控制器晶片是ATmega328P-PU,屬於PDIP封裝。(另有SMD版本。)
首先,要讓Uno板變成一台ISP燒錄器。很簡單,請開啟Arduino軟體開發環境,然後選File - Examples - ArduinoISP,將這支sketch,Upload(上傳、燒錄)進Uno板,如此即可,ArduinoISP這支sketch的功能就是讓Arduino板子變成一台ISP燒錄器。
Arduino軟體開發環境裡支援的板子,其AVR微控制器晶片皆為ATmega系列,所以我們需先讓它支援ATtiny系列。到這裡下載讓Arduino支援ATtiny的檔案(適用於Arduino軟體開發環境1.0.1版與1.0.3版,1.0.2版不行),解壓縮可得到attiny-master目錄,裡面的attiny目錄才是我們要的,含有子目錄variants與boards.txt檔。
然後以Arduino軟體開發環境的File - Preferences的Sketchbook location:查出sketchbook目錄的路徑,將解壓縮後的attiny整個目錄(不是attiny-master目錄),搬移到sketchbook目錄裡的hardware子目錄裡(若無此目錄請自行建立)。
然後重新啟動Arduino軟體開發目錄,應該就能在Tools - Board裡看到新增的ATtiny系列了。
下圖是單獨的ATtiny85-20PU晶片。
接下來,我們想要燒錄sketch到麵包板的ATtiny85-20PU晶片裡,底下是ATtiny85晶片的腳位功能對照,對照這張圖進行接線。
Arduino板的5V與GND接到麵包板。
ATtiny85-20PU的腳位8(VCC)接到5V。
ATtiny85-20PU的腳位4(GND)接地。
然後根據ArduinoISP這支sketch定義的ISP腳位接線,
Arduino Uno板腳位10,接ATtiny85-20PU的腳位1(RESET)。
Arduino Uno板腳位11,接ATtiny85-20PU的腳位5(MOSI)。
Arduino Uno板腳位12,接ATtiny85-20PU的腳位6(MISO)。
Arduino Uno板腳位13,接ATtiny85-20PU的腳位7(SCK)。
另外,因為我將燒錄Blink範例sketch,所以:
ATtiny85-20PU的腳位3(將會對應到Arduino的數位腳位4)串接220 ohm電阻後接LED長腳,LED短腳接地。
如此便完成硬體線路了。
Arduino Uno板以USB線連接主機電腦後,開啟Arduino軟體開發環境,先做一些設定:
成功後,你應該看到LED閃爍。
內部頻率也可改成8 MHz,請將Tools - Boards改成ATtiny85 (internal 8 MHz clock),然後執行Tools - Burn Bootloader,但其實並沒有定義bootloader的路徑與檔案,所以這個動作將會修改fuse,改變內部頻率。
參考資料:
我的板子是Arduino Uno R3,Arduino軟體開發環境是1.0.3 Windows版,燒錄對象是ATtiny85。
本篇介紹的內容,應該也可套用到其他Arduino板子與其他型號的AVR晶片,但我也沒試過,所以此篇內容皆以我的環境為準。(我另一篇是燒錄到ATmega328P-PU。)
若不清楚ISP是什麼意思,若想知道ATtiny85-20PU的PU之意,請參考我寫的:Arduino與AVR微控制器相關詞彙。
底下是我的板子Arduino Uno R3,其微控制器晶片是ATmega328P-PU,屬於PDIP封裝。(另有SMD版本。)
首先,要讓Uno板變成一台ISP燒錄器。很簡單,請開啟Arduino軟體開發環境,然後選File - Examples - ArduinoISP,將這支sketch,Upload(上傳、燒錄)進Uno板,如此即可,ArduinoISP這支sketch的功能就是讓Arduino板子變成一台ISP燒錄器。
Arduino軟體開發環境裡支援的板子,其AVR微控制器晶片皆為ATmega系列,所以我們需先讓它支援ATtiny系列。到這裡下載讓Arduino支援ATtiny的檔案(適用於Arduino軟體開發環境1.0.1版與1.0.3版,1.0.2版不行),解壓縮可得到attiny-master目錄,裡面的attiny目錄才是我們要的,含有子目錄variants與boards.txt檔。
然後以Arduino軟體開發環境的File - Preferences的Sketchbook location:查出sketchbook目錄的路徑,將解壓縮後的attiny整個目錄(不是attiny-master目錄),搬移到sketchbook目錄裡的hardware子目錄裡(若無此目錄請自行建立)。
然後重新啟動Arduino軟體開發目錄,應該就能在Tools - Board裡看到新增的ATtiny系列了。
下圖是單獨的ATtiny85-20PU晶片。
接下來,我們想要燒錄sketch到麵包板的ATtiny85-20PU晶片裡,底下是ATtiny85晶片的腳位功能對照,對照這張圖進行接線。
Arduino板的5V與GND接到麵包板。
ATtiny85-20PU的腳位8(VCC)接到5V。
ATtiny85-20PU的腳位4(GND)接地。
然後根據ArduinoISP這支sketch定義的ISP腳位接線,
Arduino Uno板腳位10,接ATtiny85-20PU的腳位1(RESET)。
Arduino Uno板腳位11,接ATtiny85-20PU的腳位5(MOSI)。
Arduino Uno板腳位12,接ATtiny85-20PU的腳位6(MISO)。
Arduino Uno板腳位13,接ATtiny85-20PU的腳位7(SCK)。
另外,因為我將燒錄Blink範例sketch,所以:
ATtiny85-20PU的腳位3(將會對應到Arduino的數位腳位4)串接220 ohm電阻後接LED長腳,LED短腳接地。
如此便完成硬體線路了。
Arduino Uno板以USB線連接主機電腦後,開啟Arduino軟體開發環境,先做一些設定:
- 設定Tools - Board選為ATtiny85 (internal 1 MHz clock)。這個設定的意思是「被燒錄的對象」。ATtiny85預設使用內部頻率1 MHz。
- 設定Tools-Serial Port。這是Uno板連接到電腦的序列埠號。
- 設定Tools - Programmer,選為Arduino as ISP。
成功後,你應該看到LED閃爍。
內部頻率也可改成8 MHz,請將Tools - Boards改成ATtiny85 (internal 8 MHz clock),然後執行Tools - Burn Bootloader,但其實並沒有定義bootloader的路徑與檔案,所以這個動作將會修改fuse,改變內部頻率。
參考資料:
- Arduino官方文件,Using an Arduino as an AVR ISP (In-System Programmer),From Arduino to a Microcontroller on a Breadboard。
- Open Electronics的Arduino ISP (In System Programming) and stand-alone circuits,提到如何修改boards.txt新增板子。
- Flashgamer的Using your Arduino as an ISP,碰到晶片型號不同的問題(328-P與328P-PU)、碰到stk500_recv(): programmer is not responding的問題。
- Cooper Maa的把 Arduino 當成一個 AVR ISP(In-System Programmer) 使用(1)、把 Arduino 當成一個 AVR ISP(In-System Programmer) 使用(2)、使用 Arduino 燒錄 ATtiny。
- High-Low Tech的Programming an ATtiny w/ Arduino 1.0。
- t r o n i x s t u f f的Using an ATtiny as an Arduino。
- ToasterBotics的Programming the ATTiny85, Arduino Style。
- GROBO: DIY Arduino - 將Bootloader寫進ATMega晶片!(3)。
- Boarduino, Solderless Breadboard Arduino Clone。
- AVRDUDE。
紅色的Raspberry Pi
原本Raspberry Pi官方授權經銷商有兩家,RS Components與Premier Farnell,現在又多了一家Egoman Technology Corp,負責澳門、台灣、香港、中國大陸的銷售事宜。
原文消息網址。
外觀將改成紅色,為了與其他地方的板子作區別,因為這些紅色Raspberry Pi沒有FCC/CE安規認證,沒通過這些認證不能輸入到歐盟或美國。
雖然沒有FCC/CE,但板子是相容的,只希望價格不要離$35美金太遠就好了。
原文消息網址。
外觀將改成紅色,為了與其他地方的板子作區別,因為這些紅色Raspberry Pi沒有FCC/CE安規認證,沒通過這些認證不能輸入到歐盟或美國。
雖然沒有FCC/CE,但板子是相容的,只希望價格不要離$35美金太遠就好了。
2013/02/01
將Arduino Uno當做一台ISP線上燒錄器,燒錄bootloader或sketch到麵包板上的ATmega328P-PU晶片
我買了一顆ATmega328P-PU晶片,裡頭空空的,沒有Arduino的bootloader也沒有任何sketch。但我有一塊Arduino Uno R3板子,它可化身成一台ISP燒錄器;把ATmega328P-PU放上麵包板,再接上一些電子元件與線材後,便可從主機電腦透過Arduino Uno R3板、將bootloader或sketch燒錄到麵包板的ATmega328P-PU晶片裡。
我的板子是Arduino Uno R3,Arduino軟體開發環境是1.0.3 Windows版,燒錄對象是ATmega328P-PU。
本篇介紹的內容,應該也可套用到其他Arduino板子與其他型號的AVR晶片,但我也沒試過,所以此篇內容皆以我的環境為準。(我另一篇是燒錄到ATtiny85-20PU。)
若不清楚ISP是什麼意思,若想知道ATmega328P-PU的P與PU之意,請參考我寫的:Arduino與AVR微控制器相關詞彙。
底下是我的板子Arduino Uno R3,其微控制器晶片是ATmega328P-PU,屬於PDIP封裝。(另有SMD版本。)
首先,要讓Uno板變成一台ISP燒錄器。很簡單,請開啟Arduino軟體開發環境,然後選File - Examples - ArduinoISP,將這支sketch,Upload(上傳、燒錄)進Uno板,如此即可,ArduinoISP這支sketch的功能就是讓Arduino板子變成一台ISP燒錄器。
底下是單獨的ATmega328P-PU晶片。
接下來,我們想要將bootloader燒錄到麵包板的ATmega328P-PU晶片裡,需要一些硬體線路,所需電子元件如下:
也可以燒錄一般的sketch,之後將會燒錄Blink範例(閃爍LED),所以還需要底下的元件:
底下是ATmega328晶片的腳位功能對照(328與168是一樣的),對照這張圖進行接線。
Arduino板的5V與GND接到麵包板。
ATmega328P-PU的腳位7(VCC)、20(AVCC)接到5V。
ATmega328P-PU的腳位8(GND)、22(GND)接地。
然後是16 MHz石英晶體(不分極性),兩隻腳分別接一個18~22 pF陶瓷電容後,接地。陶瓷電容不分極性。
ATmega328P-PU的腳位9(XTAL1)、10(XTAL2)接到石英晶體的兩隻腳。
然後根據ArduinoISP這支sketch定義的ISP腳位接線,
ATmega328P-PU的腳位1(RESET)接5V。
Arduino Uno板腳位10,接ATmega328P-PU的腳位1(RESET)。
Arduino Uno板腳位11,接ATmega328P-PU的腳位17(MOSI)。
Arduino Uno板腳位12,接ATmega328P-PU的腳位18(MISO)。
Arduino Uno板腳位13,接ATmega328P-PU的腳位19(SCK)。
如此便完成硬體線路了,接下來要燒錄bootloader。
Arduino Uno板以USB線連接主機電腦後,開啟Arduino軟體開發環境,先做一些設定:
然後執行Tools - Burn Bootloader,便可將bootloader透過Arduino Uno板(扮演一台ISP線上燒錄器),燒錄到麵包板上的ATmega328P-PU晶片裡。
會顯示訊息Burning bootloader to I/O Board (this may take a minute)...,會花一點時間,以我的環境來說不到1分鐘。
之後會顯示Done burning bootloader.,代表成功了。只要再加上USB轉TTL序列訊號的電路(譬如SparkFun的Breakout Board for FT232RL USB to Serial),就幾乎等同於一塊普通的Arduino板子了。
相關參考資料請看Physical Computing at ITP的教學文章Setting up an Arduino on a breadboard、swf.com.tw的用麵包板組裝Arduino微電腦實驗板、Dale Wheat的How to Build an Arduino-compatible Physical Computing Platform on a Solderless Breadboard。
接下來要把一般的sketch燒錄到麵包板上的ATmega328P-PU晶片裡。
有一個作法是,拔除Uno板的晶片,然後修改接線(板子的0 RX接到晶片的2、板子的1 TX接到晶片的3),這麼一來,就能跟平常一樣,Upload(上傳、燒錄)一般的sketch了。這種作法就好像是以麵包板的晶片取代Uno板的晶片。詳情請見Arduino官方網站的From Arduino to a Microcontroller on a Breadboard。
上述作法,bootloader與sketch共存,就跟平常使用Arduino板子時一樣。
底下介紹的作法,燒錄sketch會蓋掉先前的bootloader。
原先的接線維持不變,Arduino Uno板仍然扮演ISP燒錄器的角色。
讓我們試著燒錄閃爍LED的sketch,先接好硬體線路,麵包板的ATmega328P-PU晶片的腳位4(就是Arduino數位腳位2),接220 ohm電阻後、接LED長腳,LED短腳接地。
開啟File-Examples-01.Basics-Blink,將sketch裡頭設定的腳位13改為2,然後執行File - Upload Using Programmer,便能將sketch透過Arduino Uno板(扮演ISP線上燒錄器)燒錄到麵包板的ATmega328P-PU晶片裡,成功的話,就能看到LED閃爍。
參考資料:
我的板子是Arduino Uno R3,Arduino軟體開發環境是1.0.3 Windows版,燒錄對象是ATmega328P-PU。
本篇介紹的內容,應該也可套用到其他Arduino板子與其他型號的AVR晶片,但我也沒試過,所以此篇內容皆以我的環境為準。(我另一篇是燒錄到ATtiny85-20PU。)
若不清楚ISP是什麼意思,若想知道ATmega328P-PU的P與PU之意,請參考我寫的:Arduino與AVR微控制器相關詞彙。
底下是我的板子Arduino Uno R3,其微控制器晶片是ATmega328P-PU,屬於PDIP封裝。(另有SMD版本。)
首先,要讓Uno板變成一台ISP燒錄器。很簡單,請開啟Arduino軟體開發環境,然後選File - Examples - ArduinoISP,將這支sketch,Upload(上傳、燒錄)進Uno板,如此即可,ArduinoISP這支sketch的功能就是讓Arduino板子變成一台ISP燒錄器。
底下是單獨的ATmega328P-PU晶片。
接下來,我們想要將bootloader燒錄到麵包板的ATmega328P-PU晶片裡,需要一些硬體線路,所需電子元件如下:
- 16 MHz crystal石英晶體
- 10K ohm電阻
- 18~22 pF陶瓷電容,2個
也可以燒錄一般的sketch,之後將會燒錄Blink範例(閃爍LED),所以還需要底下的元件:
- LED
- 220 ohm電阻
底下是ATmega328晶片的腳位功能對照(328與168是一樣的),對照這張圖進行接線。
Arduino板的5V與GND接到麵包板。
ATmega328P-PU的腳位7(VCC)、20(AVCC)接到5V。
ATmega328P-PU的腳位8(GND)、22(GND)接地。
然後是16 MHz石英晶體(不分極性),兩隻腳分別接一個18~22 pF陶瓷電容後,接地。陶瓷電容不分極性。
ATmega328P-PU的腳位9(XTAL1)、10(XTAL2)接到石英晶體的兩隻腳。
然後根據ArduinoISP這支sketch定義的ISP腳位接線,
ATmega328P-PU的腳位1(RESET)接5V。
Arduino Uno板腳位10,接ATmega328P-PU的腳位1(RESET)。
Arduino Uno板腳位11,接ATmega328P-PU的腳位17(MOSI)。
Arduino Uno板腳位12,接ATmega328P-PU的腳位18(MISO)。
Arduino Uno板腳位13,接ATmega328P-PU的腳位19(SCK)。
如此便完成硬體線路了,接下來要燒錄bootloader。
Arduino Uno板以USB線連接主機電腦後,開啟Arduino軟體開發環境,先做一些設定:
- 設定Tools - Board選為Uno。這個設定的意思是「被燒錄的對象」,但我們並不是要燒錄到Uno板子,因為Uno板使用的晶片跟麵包板上的ATmega328P-PU相同,所以選此設定,但選Arduino Duemilanove w/ ATmega328也是可行的,不過會有些差異,譬如說將燒錄不同版本的bootloader,詳情請見Arduino軟體開發環境目錄\hardware\arduino\boards.txt。如果要燒錄別的型號的晶片,就要選別的選項,甚至要動手修改boards.txt自己新增。
- 設定Tools-Serial Port。這是Uno板連接到電腦的序列埠號。
- 設定Tools - Programmer,選為Arduino as ISP。
然後執行Tools - Burn Bootloader,便可將bootloader透過Arduino Uno板(扮演一台ISP線上燒錄器),燒錄到麵包板上的ATmega328P-PU晶片裡。
會顯示訊息Burning bootloader to I/O Board (this may take a minute)...,會花一點時間,以我的環境來說不到1分鐘。
之後會顯示Done burning bootloader.,代表成功了。只要再加上USB轉TTL序列訊號的電路(譬如SparkFun的Breakout Board for FT232RL USB to Serial),就幾乎等同於一塊普通的Arduino板子了。
相關參考資料請看Physical Computing at ITP的教學文章Setting up an Arduino on a breadboard、swf.com.tw的用麵包板組裝Arduino微電腦實驗板、Dale Wheat的How to Build an Arduino-compatible Physical Computing Platform on a Solderless Breadboard。
接下來要把一般的sketch燒錄到麵包板上的ATmega328P-PU晶片裡。
有一個作法是,拔除Uno板的晶片,然後修改接線(板子的0 RX接到晶片的2、板子的1 TX接到晶片的3),這麼一來,就能跟平常一樣,Upload(上傳、燒錄)一般的sketch了。這種作法就好像是以麵包板的晶片取代Uno板的晶片。詳情請見Arduino官方網站的From Arduino to a Microcontroller on a Breadboard。
上述作法,bootloader與sketch共存,就跟平常使用Arduino板子時一樣。
底下介紹的作法,燒錄sketch會蓋掉先前的bootloader。
原先的接線維持不變,Arduino Uno板仍然扮演ISP燒錄器的角色。
讓我們試著燒錄閃爍LED的sketch,先接好硬體線路,麵包板的ATmega328P-PU晶片的腳位4(就是Arduino數位腳位2),接220 ohm電阻後、接LED長腳,LED短腳接地。
開啟File-Examples-01.Basics-Blink,將sketch裡頭設定的腳位13改為2,然後執行File - Upload Using Programmer,便能將sketch透過Arduino Uno板(扮演ISP線上燒錄器)燒錄到麵包板的ATmega328P-PU晶片裡,成功的話,就能看到LED閃爍。
參考資料:
- Arduino官方文件,Using an Arduino as an AVR ISP (In-System Programmer),From Arduino to a Microcontroller on a Breadboard。
- Open Electronics的Arduino ISP (In System Programming) and stand-alone circuits,提到如何修改boards.txt新增板子。
- Flashgamer的Using your Arduino as an ISP,碰到晶片型號不同的問題(328-P與328P-PU)、碰到stk500_recv(): programmer is not responding的問題。
- Cooper Maa的把 Arduino 當成一個 AVR ISP(In-System Programmer) 使用(1)、把 Arduino 當成一個 AVR ISP(In-System Programmer) 使用(2)、使用 Arduino 燒錄 ATtiny。
- High-Low Tech的Programming an ATtiny w/ Arduino 1.0。
- GROBO: DIY Arduino - 將Bootloader寫進ATMega晶片!(3)。
- Boarduino, Solderless Breadboard Arduino Clone。
- AVRDUDE。