前言

前段时间,用 HAA 固件试着做了一个 HomeKit 灯泡,觉得挺有意思,于是想做一个可以在宿舍用的东西。但是宿舍的灯管不好改造,就考虑对桌子上的台灯下手,顺便给这东西起名叫 BakaKit。

我这个台灯是大一的时候买的 LED 灯管,只有 4000k 一档色温,以及三档亮度调节,额定功率为 5V 1A。

台灯

计划要实现以下功能:

  1. 可以通过 HomeKit 控制台灯开关及调光
  2. USB Type-A 接口输出,无需对原本台灯进行任何改造
  3. HomeKit 控制的同时还可以使用物理按钮
  4. 有 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 图就是这样:

PCB 图

电源由于元件库里没有,需要自己画,但是我手又比较残,孔间距就量错了,最后差点装不上(强行把排针掰弯插进去的x,CH340E 没自己量,就按它库里的图直接丢上去,最后发现实际长出来一点...而且我感觉板子应该还能再小一点

之后找工厂打样,文件发过去之后内心比较忐忑,因为自己也是第一次画板子,完全没有经验,生怕哪里不对了。

几天之后收到成品,因为打样是 5 片起步,但是我其实要一张就够了,其它的就送人加收藏吧。

PCB

花了两个小时把东西都焊上去,淘宝这个电源全是带排针的,我问了好几家店就没有一个不焊的,我费了好大劲才把排针一个个拆下来。

成品正面

按钮连线的错误我就直接一坨锡把两边连起来了,虽然不好看但是能用(x

成品背面

本来我还想在淘宝定制一个亚克力壳子的,但是问了一下价格都在四五十...告辞,于是我又花了 10 块钱买了几块亚克力板子,看能不能自己做一个壳子出来。等东西到了再更新吧。

If you think my article is useful to you, please feel free to appreciate