好玩的項目|使用微控制器 PIC16F1459 構建 DIP 開關 USB U盤
今天給大家分享我在github上看到的一個有意思的項目:使用微控制器 PIC16F1459 構建 DIP 開關 USB U盤。(附帶電路原理圖,PCB布局設計,原始應用程序。)
本文引用地址:http://m.butianyuan.cn/article/202407/461187.htm主要是用撥片開關來進行配置設備,只需要撥動紅色開關就可以輕松配置文件。不需要編輯 XML 和 JSON 文件來存儲硬件或軟件的配置設置。
這個項目分享給大家,步驟講解得很詳細,如果感興趣的可以動手試試。
先放上成品圖。
DIP 開關插電腦上圖
DIP 開關 U 盤的后視圖和前視圖(顏值還挺高的)
一、元件選擇
作者總共設計制作了兩種不同版本的DIP 開關U盤。第一個使用非常緊湊的表面貼片DIP開關,第二種使用安裝表面貼裝 DIP 插座中的獨特彩虹 DIP 開關。
USB A插頭(如下圖所示)
Molex USB A 插頭
這是一個安裝在電路板末端的USB A 型插頭,可以直接插入電腦的正面或側面的USB A插孔。
本來是可以使用 USB Type C 插頭,但作者的電腦沒有USB Type C 端口。
1、微控制器 PIC16F1459
作者喜歡用8位的USB微控制器,于是采用了TSSOP-20 封裝的 Microchip PIC16F1459,這個微控制器支持所需的電路和USB軟件。唯一不確定的問題是它是否有足夠的輸入引腳用于DIP開關的8個輸入。在查閱了datasheet,確認連接USB 操作所需的基本組件后,確定了引腳是夠用的。
PIC16F1459 采用 TSSOP-20 封裝,后面有一個 8 位 SMD 開關,用于縮放
2、表面貼裝 DIP 開關
為了使設計更緊湊,就需要把微控制器放在電路板的底部,把開關放在電路板的頂部,就需要一個表面貼裝開關,最后選擇了 CTS 219-8MSTR 8 位表面貼裝滑動開關。
開關頂部帶有可拆卸的膠帶密封,可以承受高焊接溫度和電路板的清洗。
帶有保護涂層的 CTS SMD DIP 開關,保護涂層允許使用拾取和放置設備并在清洗過程中保護開關。
3、彩虹通孔撥碼開關
第一個版本用ITW ERG 制造了彩虹通孔 DIP 開關,第二個版本帶有用于彩虹 DIP 開關的表面貼裝 DIP 插座。
彩虹撥碼開關與類似的滑動和搖桿撥碼開關相比,具有相當醒目的外觀。
三個候選通孔 DIP 開關,作者選擇了 ERG 的彩虹模型
4、表面貼裝 DIP 插座
選擇了一個 Mill-Max 110-47-316-41-105000 表面貼裝 DIP 插座來固定 ERG SDS-8-014 彩虹 DIP 開關。
表面貼裝 DIP 插座
二、原理圖設計
這個項目需要用到一個8 GPIO 引腳來連接 DIP 開關,然后在最靠近 DIP 開關的微控制器一側選擇了 8 個引腳。
但這些 GPIO 引腳不是都有內部弱上拉可用,所以需要添加一些上拉電阻,以便在各自的開關打開時將引腳拉高。
使用這個配置,GPIO 引腳將在開關打開(關閉)時讀取高電平,在開關關閉(打開)時讀取低電平。
然后有一個強制性的按鈕開關和閃爍的LED。按鈕開關與引導加載程序一起使用,可以允許在沒有PLC編程器和標簽連接電纜的情況下升級DIP開關USB U盤。
閃爍的 LED 被編程以指示 USB 枚舉狀態(tài)。緩慢閃爍表示板已通電但未枚舉,快速閃爍表示板已通電并已枚舉。
設計原理圖
三、電路板設計
1、表面貼裝開關版本
設計萬完原理圖后,開始設計與CTS SMD 滑動開關一起使用的電路板。最終布局如下圖所示。
板的非插座版本
當對布局比較滿意的時候,查看了電路板預覽圖像,沒有問題之后,就去訂購PCB板了。
2、表面貼裝 DIP 插座版本
設計了與 CTS SMD 滑動開關一起使用的電路板后,接著設計與表面貼裝 DIP 插座和 ERG 彩虹 DIP 開關一起使用的電路板,最終布局如上圖所示。
唯一真正的區(qū)別是開關或插座的16個焊盤的寬度和高度。
板的插座版本
當布局完成之后,依舊查看電路板板預覽圖,然后定制PCB板。
四、軟件開發(fā)
在等待PCB板的過程,使用Microchip 低引腳數 USB 微控制器開發(fā)板來編寫該項目的軟件。
在這個過程也遇到了許多問題,例如:想實現一個USB大容量存儲設備類,其中包含一個帶有開關狀態(tài)的文件。但是開關的值可以從文件中讀取一次,但當開關更改時就不再更新了。
為了解決這個問題,進行了多次嘗試,例如在每次更改開關時執(zhí)行軟分離和重新連接,但這會導致許多煩人的不安全彈出和發(fā)現消息/警報聲音。
最后將DIP開關USB U盤實現為供應商定義的 USB HID 設備。
USB 主機可以向 DIP 開關 USB 堆棧發(fā)送 USB OUT 報告,詢問開關的當前狀態(tài)。
DIP 開關 U 盤將響應包含開關當前狀態(tài)的 USB IN 報告。
每當切換開關時,DIP 開關 USB U 盤也會以包含開關當前狀態(tài)的 USB IN 報告進行響應。
在真正的板子從工廠回來之前,作者使用了一個 PIC 低引腳數 USB 開發(fā)板來編寫軟件。
為了演示DIP開關USB U盤,編寫了一個快讀的 C# .NET Windows 窗體應用程序。
該應用程序與開發(fā)板或真正的DIP開關U盤進行通信。
使用開發(fā)板,按鈕開關切換紅色開關圖像。使用真板,應用程序中的開關圖像反映了 DIP 開關 U 盤上開關的狀態(tài)。
C# .NET Windows 窗體演示應用程序
五、成品板
與表面貼裝開關一起使用的成品板如下所示。
SMD版成品板
與表面貼裝插座和通孔 DIP 開關一起使用的成品板如下所示。
插座版成品板
下圖圖左側為電路板的表面貼裝開關版本,右側為電路板的表面貼裝插座版本。
這里再強調一次,唯一這兩個版本的區(qū)別是開關或插座的 16 個焊盤的寬度和高度。
板版本比較
六、組裝和測試
將電路板放回原處,首先組裝并測試了電路板的表面貼裝開關版本。
使用Microchip REAL ICE 編程器和 Tag-Connect 電纜將軟件編程到 PIC16F1459 中。
編程后,Windows 找到了一個新設備,啟動了演示應用程序,成功了!
SMD 版本的 DIP 開關 U 盤
后來作者又組裝并測試了板的表面貼裝插座版本,也成功了。(感嘆一句,厲害)
ERG DIP 開關有點挑剔,如果將開關向上推超過其打開位置,它將再次短暫打開,直到它被釋放并回到其打開/關閉位置。
DIP 開關 U 盤的通孔版本
插入 Surface Pro 并運行演示應用程序的 DIP 開關 USB U盤
插入 Surface Pro 的 DIP 開關 U 盤
DIP 開關 U 盤的后視圖和前視圖
七、設計文件
電路板的設計文件、PIC16F1459 固件和 C# .NET 演示應用程序可以在作者的 Github 上的DIP 開關 USB U盤 存儲庫中找到。
項目鏈接:
https://github.com/bikerglen/usb-dip-switch-stick
評論