NFC 技術在台灣已經非常普及,舉凡搭乘大眾運輸工具會用到的悠遊卡跟一卡通、信用卡的感應付款、Google Pay、Apple Pay,甚至現在比較新的門鎖也都會採用這個技術。筆者會對 NFC 技術感興趣,也是因為在社區大樓、大學、以及公司都是使用 Mifare 卡片作為門禁卡使用,但門禁卡通常都是識別證大小,不好攜帶,如果不小心忘記帶或是遺失就會很麻煩,於是就開始研究這方面的知識,也從淘寶上面買了各種中國魔術卡、各類讀卡機以及硬體工具來研究。
如果想要模擬一張 NFC 卡片,除了使用比較便宜的中國魔術卡之外,也可以考慮使用有模擬功能的硬體來進行模擬。在目前市面上的產品中,ChameleonTiny 跟 ChameleonUltra 的硬體是目前做的最小最好看的,但前一代的 ChameleonTiny 因為晶片荒,所以導致有價無市的狀況,於是發起人就發起了新一代的 ChameleonUltra 募資,在維持跟前一代相同大小的前提下,使用新的 nRF52840 晶片來解決晶片荒的問題。
目前 ChameleonUltra 的生態圈還在慢慢完善中,在募資結束筆者順利收到硬體後,發起人也把程式碼放到 GitHub 上面開源,雖然目前官方提供的韌體功能還不多,但有一些網友在協助韌體的開發,在 NFC 開源硬體領域的大佬 Iceman 也有在他經營的 Discord 專門建立這個硬體的討論群,另外也有網友幫這個硬體做一個用 Flutter 開發的開源 GUI 程式。
由於筆者是網站後端工程師,同時也有跨足一點點網頁前端技術,所以想嘗試使用 Web Serial/Bluetooth 來控制這個硬體,除了寫出自己要的功能之外,還打算把程式發佈到 npm 上面,讓熟悉網頁前端技術的開發者,可以直接透過網頁來控制 ChameleonUltra 硬體,寫出自己想要的客製化功能。這次的系列文章就是想記錄一下自己開發這個 Side Project 的過程。