Beaglebone Black – 智能家居控制系统 LAS - 插座组装

上一篇完成了服务端,这次是拼图的最后一块,插座。

插座一个,准备废掉它其中一个插头 预想电路草图
Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第1张图片 Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第2张图片

物料清单:

  • 两路插座一个
  • 继电器一个,3.3V 能驱动即可;
  • 交流转直流 3.3V,我买了现成的模块;
  • WiFi 模块,我用 ESP8266 芯片的 ESP-01,AI-Thinker 出品
  • 一个下拉电阻,10K
  • 母杜邦线四条,接ESP-01用
  • 溶胶一支
  • 电线几十CM,注意电流值
  • 草图中最下面的 LED 灯是插座本身有的。

插座原来样子的遗照,各种裸露和神焊接(LED 负极的线居然没有焊好,松的,汗):

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第3张图片

 

首先其中一个插座位移除:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第4张图片

 

题外话,在家里居然有这个东西,现在都是 HDMI,它放着也不会再有用,拆了它用线中间那网来做吸锡线,废物利用而且效果不错:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第5张图片Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第6张图片

 

再用塑料材料做个盖子:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第7张图片

 

淘宝货测试一下交流直流转换那东西,实测到输出电压为 3.4V,OK 了,据说它能供 1A 电流,我用不着那么多:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第8张图片

 

继电器后面线路比较单薄,补点锡加粗:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第9张图片

 

然后接线,万用表测试通电后,上电测试,正常工作:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第10张图片Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第11张图片

 

再加溶胶封住焊接位置。模块安装我直接用溶胶固定。线路和溶胶,都要避开交流直流模块会发热的位置,它会升温的而且我这个没有外壳保护的。连接 ESP-01 的线我用母杜邦线做的。下图未加上下拉电阻:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第12张图片

 

取出 ESP-01,用 BBB 写入 lua 代码,代码于上几篇博文中,唯一改动是加上 PIN 4 (GPIO 2)控制。继电器我是接常开,控制端 IN 用低电平触发。代码很简单,UDP 服务端,端口 4000,收到 JSON 里面 cmd 值为 1 时候,切换高低电平:

udp.lua

onOffState = 1
gpio.mode(4,gpio.OUTPUT)
sv=net.createServer(net.UDP,0)
sv:on('receive', function(c,pl)
        print(pl)
        r=cjson.decode(pl)
        if r.cmd == '0' then
                print('I got a ZERO cmd.')
                c:send('{\"cmd\":\"2\",\"guid\":\"24F92\",\"dType\":\"powerPlug\"}')
        end
        if r.cmd == '1' then
                if onOffState == 1 then
                        gpio.write(4,gpio.LOW)
                        print("Power Off")
                        onOffState = 0
                else
                        gpio.write(4,gpio.HIGH)
                        print("Power On")
                        onOffState = 1
                end
        end
end)
sv:listen(4000)
print('Server started')

 

NodeJS 那边加多一个发送 UDP Payload 为 {“cmd”:”1”} 即可,不写出来了。

 

用电脑发 UDP 包测试一下:

 

最后封好盖子,完成:

Beaglebone Black – 智能家居控制系统 LAS - 插座组装_第13张图片

 

由于这对 BBB 的 nodejs 服务器依赖,我的 BBB 还有别的用途,所以我另外做了个 APP 给媳妇用,冬天关灯不用下床了。

 

后续改良空间: 加上按钮, 触发切换至 AP 模式,收到 Payload 最前面几个字符是 「GET /  」时候(/ 后有空格),发送一个 HTML 给对方(send 方法),里面是 SSID 和密码的输入界面,含 AJAX POST 代码。收到 Payload 是 POST / 时候,取出 Payload 的 JSON,设置回 STATION 模式并且更改登入的 SSID 和密码,然后 node.restart() 重启。

整个项目到此为止。

你可能感兴趣的:(Beaglebone Black – 智能家居控制系统 LAS - 插座组装)