用 CH552G 做一個數字機械鍵盤
在先前的文章中,我簡單的用之前的 macropad 零件做出來了一個數字鍵盤的原型機,但是因為那個只是功能測試的原型機,沒有進行使用者體驗測試,所以在成為最終設計之前,我還要修整一點東西。 首先:白色! 作為一個機械鍵盤,沒甚麼特色的話很難去吸引到人去注目它。因此在這次的設計裡,我決定做我一直以來都很想試試看的設計:全白! 除了鍵帽以外,連電路板都是白白的,超級好看的。 另外這片電路板設計還有一個特色,就是如果你是喜歡用 macro-pad 的人,你也可以用 macro-numpad 的 layout 來組裝這個鍵盤,讓同一個電路板設計有兩種不同的使用方法。 左:數字鍵盤;右:macro numpad 但是,這樣組裝起來按一下就發現了一點體感上的問題,就是比較長的按鈕在按下的時候會連帶下面的機械鍵一起偏斜。我猜是因為本身機械軸的高度問題,讓很多外面的機械鍵盤都會特別在按鍵跟 PCB 之間加入一層金屬板作為固定層。 不過作為一個超便宜的 DIY 方案,要是 CNC 一片這樣的金屬片就太貴了;作為替代方案,我這裡只當按鈕面積比較大的 2U 鍵進行加固,使用原先預留給 macropad 的按鈕固定孔為固定點,加入了一片特別的 3D 列印件以做到跟金融板同樣的功能。 完成 這樣簡單的搞一搞之後,我的 DIY 機械數字鍵盤就做好了。不知道是因為我還沒習慣機械鍵盤還是甚麼的原因,用這個鍵盤很容易打錯(?),或許下一次我可以用更薄的按鍵和鍵帽來多做一個試試看。
在不更改電路板 BOM 表下把 Macropad 變成 Numpad
話說幾個月之前,我設計並開源了一個四鍵的 macropad (快速鍵鍵盤)方案。電路板上使用 WCH 制的 CH552G 晶片,配合機械鍵與幾顆電阻電容就做成了一個超簡易的四鍵機械 macropad 後來在 hackaday 上分享後不知道為甚麼突然爆紅,收到很多留言,所以我就在想,說不定我可以用同一套零件的方案改用 grid layout 來做到數字鍵盤欸?所以我就來試試看了。 甚麼是 Grid Layout? 以 Arduino 的基本電路為例,通常要抓一個按鈕是不是被按下,一般都會對一個針腳進行讀取(e.g. digitalRead),但是在這樣的情況下,每一個按鈕就會需要用到一個 GPIO 針腳。如果我要做一個標準的 4 x 5 鍵數字鍵盤的話,我不就是需要用上 Arduino Mega 才行了嗎?所以這當然是不可行的。 但是如果你有留意到,外面很多 Arduino 按鈕的範例都是使用 Pull Low (下拉)和檢測針腳是不是 high (高電平)的方法來實現的。因此如果我們有辮法在需要讀到某個按鈕的時候的狀態的時候才對它提供高電平,而沒在讀取的時候提供低電平(即使按下也不會產生高電平狀態)的話,那樣我們就能用一只 GPIO 來選擇讀取哪個按鈕,另一只 GPIO 來讀取選擇了的按鈕來增加總讀取的按鈕數量。 於是就出現了 grid layout 跟 line scanning 的方法了。簡單來說就是對於一個 4 x 5 的 grid 而言,我們只需要控制 5 個針腳以選擇哪一行 (row),然後 4 個針腳來讀取哪一列 (column) 就好。以這樣的方法,原本會需要用到 20 個針腳的電路,現在用 4 + 5 = 9 個針腳就能讀完了。 可是,這樣會出現一個問題。在小量生產 PCBA 的情況下,每一顆零件和焊接費用都是滿貴的。而這個 layout 會讓 10K 電阻比原先的 BOM (四顆)多了一顆!? 不過解決方法也很簡單,只要把電路反過來,使用 pull HIGH + LOW activate 的設計(即是說按鈕按下的時候 MCU 是讀取到 LOW / 0 而不是 HIGH /1 ),那電路的設計就變成下面的樣子,把電阻搬到 INPUT line 上面,從而省下一顆電阻( 設計好了之後就是電路板設計了。這裡用的是 EasyEDA,根據上面的原理大致畫一畫之後電路板就出來了。 正面(預留了 numpad + macropad 兩者的插孔) 背面 組裝的部分也是沒甚麼特別的,先把 micro USB 和 CH552G 焊上去之後,再焊一些比較大的零部件,最後就是燒錄程序作測試。 背面電路板,原型機板本背面甚麼都沒有印 正面裝上 keycap 後的效果,由於是開發軟體用的原型機所以用上了最便宜的量產通用型鍵帽 測試用的 Arduino 寫的 Ch552 numpad firmware,需要先灌 CH55X Arduino 燒錄器 外殼設計與打印 由於這片電路板背面也有零件,因此沒辦法馬上使用,必須要先把外殼生出來才能安心放桌面上使用(不然把零件撞掉就麻煩了),這裡使用 Aprint Editor 簡單的為這台東西設計個外殼 因為不知道要傾斜角度多少會比較舒適,因此設計成可以拆卸的結構以方便測試 原型機成品 由於這是原型機,主要作為軟體開發和測試用,因此外殼甚麼的都是拿手邊剛好有的材料來印(黑色 PLA)。但是外型差不多就是這樣。 正面 底部,兩則的是防滑膠條;用戶可以在那個洞黏上金屬板以增加重量 Micro USB 與 firmware program 的按鈕有一個凹位方便開發者使用 後方的 IO 就只有 micro USB 口與兩顆 LED 最終(小)量(生)產的版本應該會好看很多,但是功能上這東西的確比我想像中的要好(這篇文章就是用這個鍵盤寫的),如果加上配重塊與專用鍵帽的話我猜真的可以取代現在我在用的數字鍵盤的樣子(?
初嘗 CH552G 與 Macro-pad 鍵盤
在一段時間之前,我無意中發現了 CH552g 這一片超便宜的 Arduino IDE 相容開發板。由於它實在太冷門了,冷門到幾乎沒有用它的 DIY Project,所以我就來自己做一個當實驗了。 可是如果只把 CH552G 做成一個類似 arduino 這樣的開發板,我猜應該也不能引起甚麼 Makers 圈的關注,作為一個喜歡 reinvent the wheel 的開發者,我就想到一個能盡用這顆 IC 的功能的小 project -- 4 key macopads keyboard 甚麼是 Macropad Keyboard? Macro-pad (我也不知道中文是甚麼),簡單來說就是一堆快捷鍵,讓你在按下去的時候它幫你自動對電腦輸入一連串的按鍵動作。目標不一定是電腦,例如說也有可以控制 IoT 裝置的 macro-pad,也有可以配合 auto hotkey 控制軟體界面的 macro-pad 等等。但是我這裡做的是最基本的款式:hot-key type macropad 外面有很多類似的東西啊,你設計的有甚麼特別? 講到這個就有趣了。因為 customize mechanical keyboard 這東西是一個很特別的領域,就如迷你版的「HiFi 音響隨便看都上千上萬元一套」領域一樣,市場上有類似的東西價格都是一兩百港幣起跳的,貴的到幾千都有。不過他們貴的原因有很多,有的是用鋁合金電鍍外殼、有的是用上最貴的機械開關(軸)、有的有訂做的鍵帽、螢幕與 RGB 等等。可是作為一個 macropad,這些東西本來就只是 value-added 的附加品,不知道為甚麼弄著弄著就變成了成本最貴的東西(? 在移除了這些附加的東西之後,剩下來的就是鍵盤最基本的部分: 按鍵電路板MCU / Keyboard IC輸出接口 而這個 project 最特別的地方就是: 低成本 我做的這個 macropad 用了以下一大堆神奇的方法來節省成本: 使用更便宜的機械按鍵使用最便宜的 PCB 生產方案(3 HKD / pcs)使用 Mini USB 取代較常見的 type C 接口,省去兩顆 5.1K 電阻盡量減少零件種類(RLC 部件只使用了 10k 電阻跟 0.1uF 電容)以 CH552G 替代常用的 32u4 大部分外面的 DIY 鍵盤都是在用 32u4 作為控制器。這顆 MCU 畢竟是 Atmel 的,說貴不貴但是也不便宜。這顆 4 港幣左右的 CH552G 跟 32u4 一樣內置有 USB HID 裝置,所以能被電腦識別為鍵盤,同時間又因為它需要的外圍零件真的超級少,所以我們只要很簡單的這樣那樣就設計好板子了。 看著這個板子這麼空的時候我都懷疑自己是不是畫漏了零件 背面一樣零件都沒有,只有走線 如果你是不需要 MODE A / B 切換的話連那個物理開關也能省下,但是因為我打算平用來音樂控制器,在做 Youtube 影片時來當 Adobe PR 的 hotkey keyboard,在只有四個按鈕的設計下只好做 multiplex 了。 軟體方面使用了 CH55X Arduino 的 library 與一些 C code 來做到鍵盤機能 https://pastebin.com/Hb0AQzpY 底座 然後因為都做這麼完整了,那就順便幫它做一個鍵盤底座吧? 這軟體是我自家公司開發的 Aprint Editor 成品
3D 打印新手懶人包
見間唔中都有人會入坑試下玩 3D 打印,作為已經玩咗 3D 打印 4 - 5 年嘅 Maker,我就係呢到寫個懶人包方便大家搵野。有問題或者補充歡迎下面留言多多指教 【家用 3D 打印機分類】 3D Printer 有好多種,一般最多人用嘅家用機係 FDM 同 DLP ,以下係一啲你可能聽過嘅例子: FDM Puras i3、Tiny Boy (港產)、P 仔(港產)、Creality Ender 系列、AnyCubic Mega 系列 DLP AnyCubic Photon / NOVA、Creality LD 而你可能會以為佢係 DLP 但係其實佢係 SLA 嘅 FORMLABS Form 系列就唔係包括係上面個表入面 【揀邊種機好?】 你要考慮幾點 你打算印啲咩(結構 / 工程件?機械類模型?公仔?)你需要幾精細 / 想印幾快?你 budget 幾多? 基本上就可以大概知道你應該買邊種機。總括黎講,如果你: 只係打算印啲簡單模型表面光唔光滑唔緊要,最緊要硬正同埋印得快(整下一啲外殼、支撐或者功能性嘅野)想印完即刻用得,唔洗過水、等佢固化 你就可以去買 FDM 嘅機型;但係如果你 打算印一啲好精細嘅模型表面一定要光滑,打印件唔諗住會食力你屋企有個空氣流通嘅位置放部機唔介意印完之後要過水 / 用酒精處理、再放入 UV 燈箱照光做固化 你可以去買 DLP / SLA 嘅機型。 【要用咩軟件?】 3D 打印個過程大概係咁: 你用建模軟件畫一個 3D 模型你將個模型匯出到合適嘅格式(stl / obj)匯入去切片軟件匯出一個部 3D 打印機食到嘅指令檔(gcode / x3g)將個 file 放入去 SD 卡 / 電腦用 USB 線連接部 3D printer 開始打印 所以,係一般情況之下你會學用到兩套軟件(除咗一啲有 build in slicing 嘅 3D modeling engine,呢個後話)。如果你想學,下面呢個 list 你可以選擇一個適合自己嘅試下用。(帶 ✨ 號係香港本地嘅 startup 公司 / Makers 開發嘅產品 / 服務) 【建模 軟件】 帶 🔼 號係指呢個模型係以2D extrusion 變 3D 嘅模式建模,因為要經常 2D 3D 轉黎轉去,一開始唔習慣可能會成日畫錯野 / 搞錯方向〔新手向〕 Draw23D (小學 - 初中,用作將圖片變成 2.5D 的網上工具) ✨ http://www.draw23d.com aPrint Editor (初中 - 高中,帶雲端切片的 3D 建模工具) ✨ https://aprint.io/editor/ TinkerCAD (小學 - 初中,但無法直接匯出 Gcode,需要使用其他切片軟件切完個模型先印到)https://www.tinkercad.com/ Fusion 360 (高中或以上,比較完整嘅一個建模軟件)🔼 〔專業用〕Autodesk Inventor (有學生版免費)🔼 SketchUp (通常用黎畫建築圖)🔼 Blender (功能多到痴線,但係用得熟基本上乜都做到) ZBrush (畫公仔用,呢個我唔熟) 【切片軟件】 呢個通常跟機,特別係一啲用 custom protocol 嘅機型(例如 MakerBot 同埋 FlashForge),但係一般人嘅選擇通常係: 〔雲端切片〕 IceSL (一個超簡單的雲切片軟件)https://icesl.loria.fr/ aPrint Editor (係「列印」則欄有得直接 export Gcode 檔案) https://aprint.io/editor/ OctoPrint (需要自己買部 Pi 返黎…
3D 打印機除錯清單
如果你家裡 或者 學校擁有一台 3D 打印機而又出現了問題,在聯絡維修人員之前,你可以參考這一份除錯清單來自行檢查一下自己的打印機。 注意,這份除錯清單只適用於 Rep Rap 開源之下的打印機。 啟動相關問題 無法開動 請檢查電源供應是否正常,如果你的變壓器上有開關制,請檢查開關是否已經打開。如果電源已經打開,而且也無法開機,請更換一個變壓器或插頭再試一次。 液晶屏無反應(或白屏) 如果你在供電之後液晶屏有亮燈但是無顯示任何文字,你可以嘗試調轉連接到打印機主板的兩條排線。如果依然不行,很有可能你的 Arduino Mega (或控制板)內的控制程式因不知明原因而被消除了,你需要重新灌入驅動程式。 液晶屏顯示正常,可是步進電機不動 請確認已插入 12V 電源及所有步進電機已經接上主控制板   X / Y / Z 步進馬達相關問題 步進馬達只能向其中一個方向移動 如果以 Rep Rap Delta 為例,如其中一個馬達只向下移動而無法向上移動,請檢查位於滑軌最上方的 End Switch 是否卡住或電線接觸不良。 如果以 pursa i3 為例,如其中一個馬達只能順時針轉動,請檢查位於滑軌左右方之 End Switch 是否被卡住。 打印時某一層會移位 這個問題是因為負責 X / Y Axis (或 Z Axis 如果你是在用 Delta)的同步輪與步進馬達間的螺絲鬆脫,導致傳動出現問題。只要把螺絲上緊即可。 自動調平時即使擠出頭已經撞到平台,馬達仍不會停止 這是因為擠出頭上的 End Switch 安裝的位置不良,請嘗試調較 End Switch 與 平台間的距離(一般是用螺絲調整)。 掉步(Skipping Steps) 這是因為步進馬達的信號不良,或許是因為步進馬達的接頭還沒完全插進主控制板或者馬達的電線接觸不良,如果重新接線後仍無法解決建議買一個新的步進馬達。 E 步進馬達 (擠出機)相關問題 Hot End (擠出頭)沒出料 Hot End 沒有出料的問題有很多個,以下為除錯步驟: 先檢查噴頭有沒有加熱(不要用手碰,可以噴一點水上去看看噴頭是否高於 100度) 如噴頭是熱的,檢查在進料時 E 步進馬達是否有轉動 如果有轉動,檢查用作送料的同步輪是否有鬆脫 如沒有鬆脫,請檢查散熱器(噴頭上方)裡是否有「卡料」 如果以上全部檢查後都沒有問題,就需要更換噴頭或使用小火槍把噴頭加熱清理。 打印件表面不平 如果你是使用 ABS,請檢查是否已開啟所有風扇。 如果與風扇無關,可以按以下步驟進行除錯: 檢查傳動帶有沒有鬆動。如有,請調整螺絲使它收緊。 檢查擠出機的同步輪是否有鬆動。 如與硬件無關,請留意 Cura 裡 layer height 的設定。一般是於 0.1-0.3 之間的,大於此值會使打印表面不平。 無法換料(新料無法推進管子裡) 由於管子的快速接口處有一個凸位,所以如換料的時候先把快速接口拔出來,先把料穿過擠出機,再把快速接口套到新料的頭段。這會使換料的時候更方便。   熱床相關問題 熱床不夠熱 可能是你的電源供應 W 數不足,導致加熱速度較慢。建議更換電源。 打印機無法黏住熱床玻璃 請提高熱床的溫度,又或者在加熱後待玻璃表面溫度漸漸提高了再打印。 Cura 沒有熱床溫度設定 可能是因為你的機器本身不支援熱床,所以 Cura 不會顯示熱床設定。不然,部分賣家會提供一個特別版本的 Cura 給使用者,內裡包含了啟用熱床的設定,詳情請向你的供應需查詢。    
3D 打印 PLA 表面平滑化處理及上色用底漆之相關研究
相信大家有在使用 3D 打印的話應該也聽過 PLA 和 ABS 這兩種材料。 後者可以使用 Acetone 來進行表面平滑化處理,而前者因為其溶劑並不常見,因此很難對 PLA 打印件用化學溶解的方式進行表面平滑化。所以,這次就這個原因展開了一次研究,看看到底哪一種常見的物料能對 PLA 表面進行填補,並做到最佳的平滑化處理。 有關的研究報告可以在這裡看到: [pdf-embedder url="http://123.203.74.171:8080/wordpress/wp-content/uploads/2017/03/PLASmoothingResearchReport.pdf"]