好玩的项目|使用微控制器 PIC16F1459 构建 DIP 开关 USB U盘

时间:2024-07-19来源:李工谈元器件

今天给大家分享我在github上看到的一个有意思的项目:使用微控制器 PIC16F1459 构建 DIP 开关 USB U盘。(附带电路原理图,PCB布局设计,原始应用程序。)

主要是用拨片开关来进行配置设备,只需要拨动红色开关就可以轻松配置文件。不需要编辑 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 枚举状态。缓慢闪烁表示板已通电但未枚举,快速闪烁表示板已通电并已枚举。

设计原理图

三、电路板设计

1、表面贴装开关版本

设计万完原理图后,开始设计与CTS SMD 滑动开关一起使用的电路板。最终布局如下图所示。

板的非插座版本

当对布局比较满意的时候,查看了电路板预览图像,没有问题之后,就去订购PCB板了。


2、表面贴装 DIP 插座版本

设计了与 CTS SMD 滑动开关一起使用的电路板后,接着设计与表面贴装 DIP 插座和 ERG 彩虹 DIP 开关一起使用的电路板,最终布局如上图所示。

唯一真正的区别是开关或插座的16个焊盘的宽度和高度。

板的插座版本

当布局完成之后,依旧查看电路板板预览图,然后定制PCB板。


四、软件开发

在等待PCB板的过程,使用Microchip 低引脚数 USB 微控制器开发板来编写该项目的软件。

在这个过程也遇到了许多问题,例如:想实现一个USB大容量存储设备类,其中包含一个带有开关状态的文件。但是开关的值可以从文件中读取一次,但当开关更改时就不再更新了。

为了解决这个问题,进行了多次尝试,例如在每次更改开关时执行软分离和重新连接,但这会导致许多烦人的不安全弹出和发现消息/警报声音。

最后将DIP开关USB U盘实现为供应商定义的 USB HID 设备。

USB 主机可以向 DIP 开关 USB 堆栈发送 USB OUT 报告,询问开关的当前状态。

DIP 开关 U 盘将响应包含开关当前状态的 USB IN 报告。

每当切换开关时,DIP 开关 USB U 盘也会以包含开关当前状态的 USB IN 报告进行响应。

在真正的板子从工厂回来之前,作者使用了一个 PIC 低引脚数 USB 开发板来编写软件。

为了演示DIP开关USB U盘,编写了一个快读的 C# .NET Windows 窗体应用程序。

该应用程序与开发板或真正的DIP开关U盘进行通信。

使用开发板,按钮开关切换红色开关图像。使用真板,应用程序中的开关图像反映了 DIP 开关 U 盘上开关的状态。

C# .NET Windows 窗体演示应用程序

五、成品板

与表面贴装开关一起使用的成品板如下所示。

SMD版成品板

与表面贴装插座和通孔 DIP 开关一起使用的成品板如下所示。

插座版成品板

下图图左侧为电路板的表面贴装开关版本,右侧为电路板的表面贴装插座版本。

这里再强调一次,唯一这两个版本的区别是开关或插座的 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

关键词: MCU PIC16F1459 USB U盘

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版