MAKER:Arnov Sharma/譯:趣無盡
今天給大家帶來一期致敬經典的超級馬里奧的徽章。可愛的蘑菇徽章,經典的紅黃配色,立馬把我們拉回到兒時的快樂的時光里(不小心暴露了年齡)。
這款可穿戴徽章由定制的 PCB 構成,采用 SOIC8 封裝的 Attiny85 供電,添加了三個 WS2812B LED 燈可以使蘑菇徽章閃閃發光。你可以把它佩戴在身上也可以別在書包上。
制作過程很簡單,喜歡的創客可以動手試試看!
組件清單
定制 PCB × 1
Attiny85 × 1
WS2812B LED 燈 × 3
1uf 0805 電容 × 1
胸針 × 1
SMD 紐扣電池座 × 1
CR2032 電池 × 1
SOIC8 燒寫夾 × 1
項目介紹
該徽章基于 Microchip 8 位的低功耗微控制器,同時結合了 8 KB ISP 閃存、512B EEPROM、512B SRAM和六條通用 I/O 線,由 Attiny85 供電。
它是一個功能強大的小型 MCU,可以縮小整個設置實現很多基于 Arduino 的項目。更多的數據資料可點擊查看,https://www.microchip.com/en-us/product/ATtiny85。
我采用 CR2032 紐扣電池來供電,它可以為系統提供 3V 電壓。其中,三個 WS2812B LED 燈,每個 LED 燈消耗 50mA,總共 150mA,CR2032 的容量為 210mAh,所以可以提供 1 小時以上的備份。
WS2812B LED 燈的數據資料可點擊查看
PCB 板的創建過程
1、如圖所示,我需要設計一個蘑菇形狀的 PCB 板,將圖形導入到 PCB Cad 軟件。我選擇黑白圖像并將其作為 PCB 層導入。
2、如圖所示,Attiny85 可以控制 Din Dout Config 并完成連接的三個 WS2812B LED 燈的所有工作。
第一個像素的 Dout 連接至第二個像素的 Din,第二個像素的 Dout 連接至第三個像素的 Din,然后再用第一個像素的 Din 提供一個信號來控制這三個像素。
每個LED 燈都有 1uf 的電容器,然后用一個開關連接到 Attiny85 的 D4。最后,將紐扣電池裝入至電池倉供電。
3、設計 PCB 板
首先導入了蘑菇圖像并將其用作 PCB 的輪廓,其中一些細節k可用于制作阻焊層。
所有組件都是 SMD,將它們放在背面,再將 LED 燈放置在圓形區域。在圓形區域我添加了一個阻焊層的開口,可以從頂部可以看到 LED 燈的余光。
這些 WS2812B LED 燈采取倒置的自定義封裝,所以要將 LED 倒置焊接。
4、PCB 打樣
在最后一次檢查完電路板后,我將 Gerber 數據發送到 PCBWAY 以獲取樣品。我選擇的材料是帶有白色絲印的紅色阻焊層。
我在兩側的阻焊層上預留了開口,這樣就可以從頂部可以看到底部的LED 燈。
5、組裝 PCB 板
組裝 PCB 板主要有以下幾個步驟:
a、錫膏點膠工藝
在每個元件焊盤上逐個添加焊膏。我使用的是帶寬注射器的焊膏分配針,焊膏是由 63% 錫和 37% 鉛組成的普通焊膏。
b、拾取和放置過程
使用鑷子將每個組件放置在適當的位置,要小心地處理每一個元件。
c、熱板回流
放置好元件后,將整個電路板放到我自制的熱板回流焊板上進行焊接。完成后,請將其放置冷卻。
d、安裝 LED 燈
由于 PCB 板沒有任何通孔組件,需要在焊盤上焊接電線,然后再將 LED 燈與它連接起來。焊接過程中盡量快一點,因為 LED 焊盤過熱可能會引起外殼熔化。最后,完成三個 LED 燈的焊接。
安裝 Attiny85
1、刷機過程中不能通過 USB 直接對 ATTINY85 進行編程,我采用 ISP 閃存的方法,通過 attiny85 的 SPI 引腳燒錄引導加載程序,然后再燒錄。
為了將 Attiny 與程序連接起來,我使用 SOIC8 燒寫夾,直接將 Attiny 連接到該夾子上。
2、請在 Arduino IDE 中下載并安裝 Attiny85 Core 文件,https://github.com/SpenceKonde/ATTinyCore 。
文件->首選項 PC 或者 Arduino->首選項 Mac,在 “Additional Boards Manager URLs” 中輸入https://github.com/SpenceKonde/ATTinyCore 。
工具->主板->主板管理器,如果使用 1.6.6 版本,請關閉板子管理器并重新打開它。
選擇”ATTinyCore by Spence Konde”,然后單擊安裝。
3、設置 AVR 芯片。AVR 芯片通常是空白的,它需要設置與 Arduino IDE 兼容性,所以需要編程 AVR 程序,例如 USBASP。這里有一個非常簡單的方法,你可以使用 Arduino Uno 或 Nano 板制作自己的 AVR 編程器。
將 Arduino 板與 com 端口連接并選擇以下 sketch:
Example->在 ArduinoISP 中將 sketch 上傳至主板。進入工具菜單并在程序部分選擇 Arduino 作為 ISP 選項。點亮 Attiny85 后,在 Board 部分選擇 Attiny85。
編程過程會使用到 VCC、GND 和四個數據引腳。三個引腳分別連接到 MISO、MOSI 和 SCK 來實現目標,第四個引腳起到復位的作用。
4、用線將 Attiny85 與 Arduino 連接起來。
注意在將 ISP Sketch 上傳到 Arduino 之后,需要在 Arduino 的 Reset 和 GND 引腳之間添加一個 10uf 的電容。
我沒有使用 Arduino 和面包板來完成這項工作,而是使用我自制的用 Attiny 或 Atmega MCU 制作的 DIY Attiny Programmer。
具體詳情可點擊查看,https://www.instructables.com/Multiple-ATtiny8513A-Programmer/。
在以上接線配置中將主板連接到 Arduino 作為 ISP 設置。
選擇正確的端口、正確的編程器(Arduino 作為 ISP),然后點擊 Burn Bootloader。
等待幾秒鐘,你將完成燒錄引導程序的消息。
打開要上傳到這個 AttinyGo 的 Sketch,然后到 Sketch 菜單并選擇上傳程序。
最后 Sketch 會上傳到 attiny85。
編碼
編碼是 Neopixel buttoncycler sketch,當按下連接到 attiny D4 的按鈕時,就會改變 neopixels 的顏色和動畫。
#include#define BUTTON_PIN 4 // Digital IO pin connected to the button. This will be // driven with a pull-up resistor so the switch should // pull the pin to ground momentarily. On a high -> low // transition the button press logic will execute. #define PIXEL_PIN 0 // Digital IO pin connected to the NeoPixels. #define PIXEL_COUNT 3 // Parameter 1 = number of pixels in strip, neopixel stick has 8 // Parameter 2 = pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_RGB Pixels are wired for RGB bitstream // NEO_GRB Pixels are wired for GRB bitstream, correct for neopixel stick // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels) // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); bool oldState = HIGH; int showType = 0; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop() { // Get current button state. bool newState = digitalRead(BUTTON_PIN); // Check if state changed from high to low (button press). if (newState == LOW && oldState == HIGH) { // Short delay to debounce button. delay(20); // Check if button is still low after debounce. newState = digitalRead(BUTTON_PIN); if (newState == LOW) { showType++; if (showType > 9) showType=0; startShow(showType); } } // Set the last button state to the old state. oldState = newState; } void startShow(int i) { switch(i){ case 0: colorWipe(strip.Color(0, 0, 0), 50); // Black/off break; case 1: colorWipe(strip.Color(255, 0, 0), 50); // Red break; case 2: colorWipe(strip.Color(0, 255, 0), 50); // Green break; case 3: colorWipe(strip.Color(0, 0, 255), 50); // Blue break; case 4: theaterChase(strip.Color(127, 127, 127), 50); // White break; case 5: theaterChase(strip.Color(127, 0, 0), 50); // Red break; case 6: theaterChase(strip.Color( 0, 0, 127), 50); // Blue break; case 7: rainbow(20); break; case 8: rainbowCycle(20); break; case 9: theaterChaseRainbow(50); break; } } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i
最后,安裝好 CR2032 紐扣電池,這枚可愛的蘑菇徽章就可以閃光了。
審核編輯:湯梓紅
-
微控制器
+關注
關注
48文章
7789瀏覽量
153130 -
pcb
+關注
關注
4338文章
23303瀏覽量
404102 -
led燈
+關注
關注
22文章
1593瀏覽量
109105 -
microchip
+關注
關注
52文章
1533瀏覽量
118493
原文標題:簡單有趣,DIY 超級馬里奧的蘑菇徽章
文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
基于ESP32制造有趣的超級馬里奧主題時鐘

iPhone7發布會上提到的游戲 馬里奧大叔15日可以在iOS平臺試玩了!
超級馬里奧Run安卓版即將上市,國內玩家先別激動
利用視頻游戲語料庫,訓練一個GAN模型為超級馬里奧兄弟生成游戲級別

馬里奧忠實粉絲稱其自制的渲染圖被超級任天堂世界官網盜用
8位微控制器 -MCU ?PIC16F1503-I/SL

評論