今天給大家?guī)硪粋€(gè)非常好玩的項(xiàng)目,帶有 54 顆 LED、陀螺儀,支持 WiFi 控制的可編程骰子。
這枚骰子主要由一個(gè) ESP8285-01F、六塊 PCB 和 54 顆 LED 組成。其結(jié)構(gòu)設(shè)計(jì)十分巧妙,在制作的過程中也處處體現(xiàn)出結(jié)構(gòu)的精巧(文中「組裝骰子」部分有完整的焊接視頻)。
1、內(nèi)部的陀螺儀傳感器可以檢測運(yùn)動(dòng)和骰子的位置。
3、骰子內(nèi)部的控制器旁有一個(gè) 150mAh 的鋰電池和充電電路。
4、每塊 PCB 板的尺寸為 25×25mm,包括了九個(gè) WS2812-2020 迷你 LED 像素。
5、骰子內(nèi)部的控制器旁有一個(gè) 150mAh 的鋰電池和充電電路。
如果你想要了解更小立方體,可點(diǎn)擊查看我的第一版由環(huán)氧樹脂制作的立方體。
https://www.makermoekoe.net/post/pikocube-is-it-the-smallest-led-cube
2、材料清單
ESP8285-01F WiFi MCU × 1
ADXL345 陀螺儀 × 1
貼片電容器 0603(100n、1μ、10μ) × 若干
貼片電阻 0603(600、1k、5k、10k、47k、100k、190k、1M) × 若干
貼片二極管 SOD123 1N4148 × 若干
貼片 LED 0805 × 若干
貼片 Mosfet(IRLML2244、IRLML2502) × 若干
貼片 LDO MCP1700 × 若干
貼片 90deg 按鈕 × 若干
WS2812 2020 LED × 54
MCP73831 充電器 × 1
貼片二極管 MBR0530 × 若干
JST 1.25mm 2P 連接器 × 1
3、PCB 設(shè)計(jì)
我使用 Autodesk EAGLE 設(shè)計(jì) PCB 板。并同時(shí)用兩種不同的方法來設(shè)計(jì) PCB 板,確保骰子的體積不要過大。兩塊 PCB 的尺寸均為 25x25mm 的正方形。
這些 PCB 板的不同之處在于,每側(cè)的三個(gè)蜂窩式的孔可以將三個(gè)信號(hào)(+5V、GND 和 LED 信號(hào))分布到整個(gè)骰子上。
PCB 板的排列方式如圖所示。一旦骰子組裝折疊后,彩色的邊就聚集在一起。
箭頭圖標(biāo)記出 WS2812 的信號(hào)線。
兩版的 PCB 設(shè)計(jì)原理圖、電路板和 BOM 文件請?jiān)陧?xiàng)目文件庫中下載。
https://make.quwj.com/project/214
4、PCB 板的說明
整個(gè)骰子由兩種不同類型的 PCB 板組成。一種帶有充電電路和鋰電池插孔,另一種帶有 MCU、傳感器和一些電源自鎖電路。每塊 PCB 板只安裝一次,骰子其余外部的面都包含九個(gè) LED。
PCB 板的每一個(gè)邊都帶有蜂窩式的孔,它具有兩種功能。一方面,這些孔或焊料墊讓這些板子看起來像一個(gè)骰子,同時(shí)可以將所有東西固定到位。另一方面,它還可以傳輸 LED 的功率和 WS2812 的信號(hào)。
后者較為復(fù)雜,它必須按照特定的順序進(jìn)行排列。每個(gè) PCB 板都有一個(gè)輸入信號(hào)和一個(gè)輸出信號(hào)。為了防止在某一點(diǎn)上中斷信號(hào),我添加了一些貼片焊接跳線墊。
5、組裝骰子
關(guān)于組裝骰子的細(xì)節(jié),你可以參考視頻來組裝。
組裝骰子的焊接部分比較難,因此我設(shè)計(jì)了一種小型焊接輔助工具,可以先將三個(gè) PCB 板焊接在一起。
重復(fù)兩次,然后將它們的 PCB 邊緣焊接起來即可完成。注意檢查骰子是否能夠正常使用
。
在連接電池插孔之前,請確保將三個(gè) PCB 板焊接在一起。你需要修改 .stl 文件,在插孔處添加一個(gè)合適的小孔。
.stl 文件請?jiān)陧?xiàng)目文件庫中下載。
https://make.quwj.com/project/214
下面是完整的焊接視頻,步驟還是有些復(fù)雜的,需要耐心,感興趣的朋友可以了解一下:
6、Arduino 編程
骰子開始可以啟用禁用 WiFi 的模式以便節(jié)省電量,這就是調(diào)制解調(diào)器睡眠模式。關(guān)于 ESPs 數(shù)據(jù)表,MCU 在調(diào)制解調(diào)器休眠時(shí)僅消耗 15mA 的電流,而在正常模式下則需要 70mA 左右。
因此這種設(shè)置適用于電池供電的設(shè)備。為此,在調(diào)用設(shè)置功能時(shí),你需要輸入以下代碼。
void preini
t() {
ESP8266WiFiClass::preinitWiFiOff();
}
按下另一個(gè)按鈕,你可以通過調(diào)用標(biāo)準(zhǔn) WWiFi.begin() 功能或 Blynk.begin() 來喚醒 WiFi。它是我用來控制骰子的 APP 設(shè)置。
在骰子上,一些動(dòng)畫轉(zhuǎn)換其實(shí)是一些數(shù)字的轉(zhuǎn)換。骰子外體墻面的矩陣可以轉(zhuǎn)化為像素,它是通過輸入以下代碼完成的:
int get_pixel(int mat, int px, int py) {
//starting at top left corner
return (px + py * 3) + mat * 9;
}
第一個(gè)矩陣是頂部的矩陣,第二個(gè)矩陣是面向正面的矩陣,第三個(gè)矩陣是圍繞骰子向右方移動(dòng),最后一個(gè)矩陣是底部的矩陣。
使用代碼時(shí),需要將 WiFi 憑證連接到你的網(wǎng)絡(luò)。為了正確使用 Blynk APP,在打開草圖之前,請將兩個(gè)文件( BLYNK.ino 和另一個(gè)包含 Blynk 的文件)放入同一文件夾中。草圖中包含兩個(gè)不同的選項(xiàng)卡。
另一個(gè)文件實(shí)際上不執(zhí)行任何操作,不需要配備其他選項(xiàng)卡,它僅用于在未按下按鈕時(shí)使骰子休眠。否則,骰子就無法進(jìn)入睡眠狀態(tài),并會(huì)一直消耗電量。
代碼文件請?jiān)陧?xiàng)目文件庫中下載。
https://make.quwj.com/project/214
7、APP 設(shè)置
只需要按下一個(gè)按鈕就可以開始把玩骰子了,但不是從 WiFi 的功能開始。當(dāng)骰子啟動(dòng)后再按一次按鈕就可以啟用 WiFi 并連接到預(yù)定義的網(wǎng)絡(luò)。
稍后,你可以使用 Blynk APP 來控制骰子。
https://blynk.io/en/getting-started
當(dāng)然,你可以擴(kuò)展功能,這樣骰子就更好玩了!
這里展示一個(gè) Blynk APP 內(nèi)部的簡單布局。它包括了兩個(gè) SLIDER(亮度和動(dòng)畫速度)、兩個(gè) STYLED 按鈕(更改動(dòng)畫模式并關(guān)閉骰子)、一個(gè)用于切換骰子的邏輯、一個(gè)用于顯示骰子面朝上的 LED 以及用于顯示電池狀態(tài)的 GAUGE。
所有這些小部件都利用虛擬引腳進(jìn)行 APP-MCU 通信。它的功能是通過 MCU 讀取虛擬引腳。
V1 是指使用的虛擬引腳,而 param.asInt() 會(huì)保存該引腳的當(dāng)前值。該功能是為了限制輸入值,安全第一。
BLYNK_WRITE(V1) {
//StepH t = millis();
current_mode = constrain(param.asInt(), 0, n_modes - 1);
}
將虛擬引腳寫入 Blynk APP,并使用以下功能:
int data = getBatteryVoltage();
Blynk.virtualWrite(V2, data);
8、完成
設(shè)計(jì)和建造骰子非常的有意思!但它也存在一些問題,需要我們?nèi)ニ伎肌?/span>
1、在第一版中,我使用升壓轉(zhuǎn)換器電路,以確保 WS2812 LED 以 5V 運(yùn)行。實(shí)際上,它們將以大約 3.7V 的電池電壓運(yùn)行,因?yàn)樯龎恨D(zhuǎn)換器的噪聲太高干擾了 LED 的信號(hào),從而導(dǎo)致骰子非正常的閃爍。
2、在第二版中,我嘗試使用無線充電。我添加了一些充電墊,可從骰子的外部訪問這些充電墊,但電感功率會(huì)受到 PCB 和其他元件的干擾。因此,我必須再造一個(gè) 3D 打印的充電座將骰子放進(jìn)去,并且設(shè)置一些觸點(diǎn)。
http://make.quwj.com/project/214
via instructables.com/id/Six-Sided-PCB-LED-Dice-With-WIFI-Gyroscope-PIKOCUB/
博士學(xué)位真的那么重要嗎?上交大博士親述科研心路,獲4萬高贊,網(wǎng)友:這是知乎最好的回答
若覺得文章不錯(cuò),轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機(jī)、等等!
在公眾號(hào)內(nèi)回復(fù)「
更多資源
」,即可免費(fèi)獲取,期待你的關(guān)注~
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!