暑假做了個小project
起源
今年暑假應該算是最後一個可以自由地做想做的事的暑假了,讀研究所後應該就沒辦法像現在這樣。之前學期中都會莫名產生很多想做的小 project,但也許因為懶也許因為要忙課業的事,都想說推到暑假,但是一到暑假沒事的時候卻又有點懶得做。想到這是最後的暑假所以就挑了代辦事項中的一個 project 來挑戰。
於是就有了 EmbedCube 這個專案,靈感來至之前看到類似下面的圖片覺得蠻酷的,原本有逛一下蝦皮看看有沒有類似的,但發現都蠻貴的,所以打算自己做一個類似的。

圖片來源: https://www.huomi360.cn/fqxty/aqxty/a24782.html
這個 project 我覺得蠻好玩的是它運用到了很多的領域的知識,而且是我之前比較沒有碰過的,所以算是一次從做一個 project 點了很多技能,雖然大多只是碰到皮毛可以簡單應付這個專案而已。
這次 project 用到的材料有
- ESP32-C3 Super Mini:整個裝置的大腦
- 正方體分光鏡:用來投影畫面
- OLED 0.96吋 小螢幕:用來顯示畫面
- Rotary Encoder EC11:可以旋轉和按壓的按鈕
- MPU6500 陀螺儀:偵測搖晃、移動、旋轉等行為
- LED:debug 用的
- 自己畫的 pcb
會選擇 ESP32-C3 Super Mini 是因為他本身體積小又有內建 wifi、藍芽的功能,網路上教學也多,感覺蠻適合作為入門嵌入式的選擇
使用到的技能大概可以分為寫韌體、焊接、pcb設計、畫3D模型,接下來就簡單介紹一下:
寫韌體
我是選擇在 vscode 上面開發,加上 PlatformIO 插件,使用 arduino framwork,因為在先了解過後 espidf 這個 framwork 雖然能做比較底層的控制,但比較難上手,考量我沒接觸過 FreeRTOS,所以就先不考慮。
雖然沒有寫過 esp32 的程式,但畢竟這算是我比較熟悉的領域,之前有 low-level programming 的經驗和 OS 的基礎知識,所以在 task 之間的通訊、排程、interrupt 等等的處理我覺得蠻快就可以進入狀況。
焊接
這其實蠻好玩的,但也很吃技巧,一開始(現在也是)有時候銲錫會頑固的黏在烙鐵頭焊不上去想要的位置,後來發現可能是助焊膏不夠多,常常只是要焊幾隻腳而已一個小時就過了…
PCB 設計
這個是我後來才加上的,因為原本覺得這個應該蠻難的,我短短暑假應該做不完,但是看到我線接完長這副模樣(如下圖),如果沒有畫個 pcb 應該會變成超大一坨東西。
結果上網找個 KiCad 教學才發現以我這種簡單的應用來說,其實沒有想像中那麼難
畫完會出檔案後我就交給 JLCPCB 幫忙打印和組裝,因為有些 SMD 零件要特別的工具才比較好焊上去,還是交給專業的比較放心,只是送出前真的再三確認 footprint 是否合理、pcb pin number 有沒有畫錯,不然就會跟我一樣狼狽,還好最後都有辦法解決。最後就是等一個多禮拜就送來啦。
3D 模型
最後這個 3D 模型我是用 Autodesk Fusion 非商用版畫的,整體使用上是蠻直覺的,但是難的永遠不是要把東西畫出來(可能是我的外殼不夠複雜拉😅),而是從無到有設計出外殼、量好尺寸、讓列印機成功印出來。我光是設計外殼就花了兩三天,這期間一直在想要怎麼擺我的螢幕、按鈕等等的位置,但實際畫 3D 模型後又發現一些不合理的地方一直在反覆修改。到了列印的時候又發現實際印出來的模型和設計上會有一點誤差,有些孔洞不能畫得太剛好等等問題要注意。
結語
兩個月前如果跟我說我暑假可以做這個 project 出來我是打從心底不相信,現在回想有點不可思議,可能有些事情不開始嘗試永遠不知道自己能做出來。雖然最後的成品沒有很完美,也有許多要改進的地方,但我從中學到了很多,也許之後有時間再改進吧。