前言
前段时间,用 HAA 固件试着做了一个 HomeKit 灯泡,觉得挺有意思,于是想做一个可以在宿舍用的东西。但是宿舍的灯管不好改造,就考虑对桌子上的台灯下手,顺便给这东西起名叫 BakaKit。
我这个台灯是大一的时候买的 LED 灯管,只有 4000k 一档色温,以及三档亮度调节,额定功率为 5V 1A。
计划要实现以下功能:
- 可以通过 HomeKit 控制台灯开关及调光
- USB Type-A 接口输出,无需对原本台灯进行任何改造
- HomeKit 控制的同时还可以使用物理按钮
- 有 USB 转串口接口,方便后期修改固件
ESP-01
首先 8266 输出 PWM 信号肯定是不能直接给到 LED 灯的,功率不够,所以使用一个大功率 MOS 管模块,PWM 信号给大功率 MOS 管模块,转换为 5V 再输出。这就需要一个电源,能同时输出 3V 给 8266 和 5V 给大功率 MOS 管模块。
最开始我是用 ESP-01 来做,ESP-01 只有两个 GPIO 接口,要接物理按键的话完全不够,不过刚开始我也没考虑这么多... GPIO 0 连接一个拨动开关,一边接地,一边连接到大功率 MOS 管的信号输入。当拨动到接地端时,GPIO 0 接地进入下载模式;反之运行模式通过 GPIO 0 输出 PWM 信号进行调光。
不过很快出现了问题,固件配置好后,一启动 ESP-01 直接就无响应,但是如果把 GPIO 0 置空的话就没有问题...经过测试后发现,只有先把 GPIO 0 置空,然后再启动,再把 GPIO 0 连接上才能正常工作...不能理解其原因。
后来我又尝试使用 ESP-01s 进行同样的测试,01s 就完全没有这个问题...
除了 GPIO 0 之外还有另一个 GPIO 2,我在上面接了一个微动开关,用于控制灯光的开关,最后的配置 JSON 如下:
{
"c": {
"o": 0
},
"a": [
{
"t": 30,
"s": 0,
"st": 1024,
"d": 1,
"e": 10,
"w": 0,
"fw": 1,
"p": 1024,
"fr": 1,
"fg": 1,
"fv": 1,
"b": [],
"f0": [
{
"g": 2,
"t": 1
}
],
"f1": [
{
"g": 2,
"t": 1
}
]
}
]
}
之后我在一个万能板上进行了放飞自我的连线,BakaKit 第一代原型大概就这样了。
ESP-12F
由于 ESP-01 不够用,我就又买了两片 ESP-12F,其拥有 9 个 可用 IO,而且 Flash 由 ESP-01 的 8 Mbit 增加到 32 Mbit。
于是稍微规划了一下 IO 口的使用:
- GPIO 0: 连接一个拨动开关,一端接地进入下载模式
- GPIO 4: 输出 PWM 信号
- GPIO 15: 这个看文档的接线示意图是要接地,那就连到 GND
- GPIO 14: 控制灯光开关
- GPIO 13: 降低亮度
- GPIO 12: 增加亮度
另外 GPIO 16 是用于 8266 深度睡眠唤醒的,也就不能当普通 IO 用了。
JSON 如下:
{
"c": {},
"a": [
{
"t": 30,
"s": 5,
"st": 1024,
"d": 1,
"e": 20,
"fr": 1,
"fg": 1,
"fv": 1,
"b": [],
"w": 4,
"fw": 1,
"f0": [
{
"g": 14,
"t": 1
}
],
"f1": [
{
"g": 14,
"t": 1
}
],
"f2": [
{
"g": 12,
"t": 1
}
],
"f3": [
{
"g": 13,
"t": 1
}
]
}
]
}
由于完全没学过,所以原理图完全是凭感觉画的...
这里有个最大的问题,就是左边 KEY2 KEY3 KEY4 三个按钮接错了,应该接到同一边的...咱也没用过,咱也不知道,就这么画上去了,最后拿到板子才发现不对。
还有电源,最开始由于想把重点放在主要功能这边,所以没有自己设计电源,直接拿了一个淘宝现成的电源,能同时输出 5V 和 3V,不过输出口太多,有些浪费地方了,下一版应该会自己弄一个电源来用。
最后的 PCB 图就是这样:
电源由于元件库里没有,需要自己画,但是我手又比较残,孔间距就量错了,最后差点装不上(强行把排针掰弯插进去的x,CH340E 没自己量,就按它库里的图直接丢上去,最后发现实际长出来一点...而且我感觉板子应该还能再小一点
之后找工厂打样,文件发过去之后内心比较忐忑,因为自己也是第一次画板子,完全没有经验,生怕哪里不对了。
几天之后收到成品,因为打样是 5 片起步,但是我其实要一张就够了,其它的就送人加收藏吧。
花了两个小时把东西都焊上去,淘宝这个电源全是带排针的,我问了好几家店就没有一个不焊的,我费了好大劲才把排针一个个拆下来。
按钮连线的错误我就直接一坨锡把两边连起来了,虽然不好看但是能用(x
本来我还想在淘宝定制一个亚克力壳子的,但是问了一下价格都在四五十...告辞,于是我又花了 10 块钱买了几块亚克力板子,看能不能自己做一个壳子出来。等东西到了再更新吧。
3 comments
请问nmos的选型有讲究吗,我淘宝搜到都是电压几百伏特的
你好,我是一个小白,看了你的教程受益良多。非常感谢分享。
我在某宝上买了一个用12f控制四路继电器的板子,可以请你帮忙写一个json 配置吗?(另外如果能有这些配置的解释就更好了。)多谢
哈哈,焊工很感人