
【训练营_进阶班】创新物联网智能插座
简介
对市场销售的物联网智能插座优缺点进行分析并调研市场对该商品的实际功能应用需求,增加或删除功能、添加或减少外围元件、优化程序人性化设计。
简介:对市场销售的物联网智能插座优缺点进行分析并调研市场对该商品的实际功能应用需求,增加或删除功能、添加或减少外围元件、优化程序人性化设计。开源协议
:GPL 3.0
描述
创新物联网智能插排(附视频、教程)
一图胜千言
功能特点
开关功能
- 支持四路开关独立控制,控制自由度更高
- 支持定时开关控制,更加智能
- 支持GoogleAssistant等语音助手操作,方便快捷
- 按键可控制开关和空调
监视功能
- 支持检测环境温湿度
- 支持按键操作显示四路开关状态
- (已遗弃 待迭代)支持功率检测
其它功能
- 支持作为红外遥控器,控制其它红外设备(空调、电视、投影仪等),让非智能设备的远程控制成为可能
- 支持手机APP一键配网
- 支持IFTTT场景自动化
- 支持OTA固件升级
- 接入HomeAssistant私有物联网平台,支持多平台App以及网页客户端,公网HTTPS访问
技术特点
该产品以实际应用为标准进行设计
- 支持100-240V超宽电压,更适合全球使用;即插即用,无需外接其它供电电源
- PCB设计紧凑,精简小巧(7.43cm * 6.56cm),便于嵌入插排内,配合外壳以及单根铜线(或铜片)连接到插排母座
- 红外遥控功能支持使用标准38kHz的设备(空调、电视等),后续迭代可增加遥控学习功能
- 更侧重商业化产品设计:PCB上不引出GPIO、不设计USB-TTL串口等实际应用无关电路、仅保留调试用测试点
- 温湿度传感器采用母座或飞线,能够更好地将传感器暴露在环境中从而保证采集精度,湿度误差+-3%RH,温度误差+-0.3°C
- 软件支持OTA(Over The Air)固件升级,用户可以轻松通过操作客户端对设备进行升级,云端也可以及时修复软件重大漏洞
- 一键配网技术基于espressif的SmartConfig Demo
硬件选型
类型 | 型号 | 优势 | 成本 |
---|---|---|---|
主控+Wifi | ESP8266-12F | 具有较高的主频与较强的处理性能,同时成本低廉,十分适合在节点类智能设备使用 | ¥8.86 |
AC-DC | HLK-PM01 | 具有5V@3W的强大输出能力,输出电压、纹波等十分稳定,可以胜任驱动四个继电器的角色 | ¥19.29 |
LDO | SPX3819M5-L-3-3/TR | 相对于AMS1117,它节约了相当大的空间,同时500mA的输出能力足以应对大功率的射频电路 | ¥0.86 |
驱动 | NUD3105DMT1G | 超小封装的感性驱动器,节省了相同原理的双MOS占用的极大体积 | ¥1.66 * 2 |
驱动 | 74LVC2G14GW | 反相器,防止主控复位时误触发继电器误吸合 | ¥0.37 * 2 |
传感器 | ACS715ELCTR-05B-T | 基于霍尔效应的传感器,具有超高的响应频率(可惜误解了Vout的VCC/2的偏置电压) | ¥12.21 |
传感器 | SHT30 | 具有较低温漂和较高精确度的温湿度传感器,有极快的响应速度 | ¥11.30 |
继电器 | SRD-DC5V-SL-C | 松乐是有二十多年历史的专业继电器厂,品质经过德国、美国、中国等其它国家的权威认证 | ¥2.11 * 4 |
人机交互
语音控制
目前支持GoogleAssistant语音控制如下部分功能:
- 打开关闭空调
- 设定空调温度
- 打开关闭灯
- 打开关闭单个或全部开关
客户端
对于用户操作体验,一个好用的客户端和界面同样不容小觑。这里采用开源的HomeAssistant项目,它支持接入一些第三方企业未知协议的物联网设备甚至车辆。
- 秒响应,秒启动客户端操作界面;支持HTTPS访问,更安全
- 高度支持UI自定义
- 支持MQTT协议的自定义设备
- 支持IFTTT、场景等常见智能家居功能
服务器
为了应对各种复杂的网络环境以及MCU在应对网络协议时存在较吃力的情况,我们选择MQTT协议来保证信号的高效、快速、稳定传输。
众所周知MQTT协议中MQTT的服务器非常关键。它负责了来自设备、用户的订阅、发布信息的转发,因此是一个关键的中转中枢。这里选择国人开发的EMQ MQTT服务器。
运行环境为Debian10,服务运行故障率极低。
- 支持公网设备访问MQTT服务器
- 具有图形化管理界面,方便调试和管理订阅、主题、客户端等
其它
更深入的测试
为了能够让智能设备应对更复杂的实际应用环境,更苛刻的网络条件,我模拟了一些实际可能存在的故障并做出的一些解决方案
- 没有Wifi/不想配网:防止设备无Wifi时一些应用无法联网而抛出exception
- 无Internet:防止MQTT无法连接到服务器后死循环,无法喂狗导致WDT复位
- 人机体验优化:防止按钮操作后,平台延迟接收到状态信息
- Bug修复:脱发
存在的缺陷
由于只是第一版PCB,还没有进行迭代,因此存在一些最初考虑的功能没有实现
- ACS712电流传感器目前因偏置电压的原因超出ESP8266的ADC范围,导致无法测量
- 指示Led和红外Led复用同一个GPIO,今后扩展功能可能会限制Led的指示功能丰富性
- 按键所在的GPIO2会影响ESP8266启动模式的选择。因此当上电时用户按住了按键,可能会影响产品使用,影响用户体验
- 目前ESP8266的GPIO几乎全部用完,但今后调试完毕可以禁用串口以增加两个GPIO
开发环境
PCB绘制
采用高效、永久免费的国产PCB设计工具:立创EDA。在当下多人协作如此重要的阶段,立创EDA对于小团队开发速度进度有了极大程度上的提升。此外,相对于其它大型PCB绘制软件,它具有环境配置要求极低的优势,对于新手极其友好,可以快速上手,省略了一些不常用的参数以及预置一些常用的参数。
软件开发
主控采用安信可的ESP8266-12F/S模块,具有主频高、工作稳定、成本极低等优势,将WiFi及MCU合二为一,极大地提高了开发者的开发效率。上位机环境可选择espressif基于eclipse的IDE,也可使用Arduino对ESP8266的兼容库。受限于学习时间成本,这里选择后者。同时,通OSHWhub一样,它也具有较庞大的开源社区,降低了开发的难度。
演示视频
请见页尾
注:视频中配网用到的EBeam智能家居APP基于ESP Touch开发,已在附件中分享
心得体会
通过这次立创EDA组织的训练营,让我更全面地接触了立创EDA,相对于其它大型PCB设计软件,它轻量、免费、开发应用省时省力,帮助我们初学者快速入门,尽可能省下一些本无需浪费的时间.此外,这也是我第一次设计强电应用,几乎也是第一次实战设计实际(商业)应用。同时感谢训练营本次机会,让我接触更多IOT平台、认识更多IC、更多实用的网站。
技术分享(硬核教程)
- 物理资源需求:闲置PC或树莓派,本教程对PC有较强针对性;当然你也可以选择阿里云轻量应用服务器,它们都足以应付该实例应用
- 系统环境需求:deb系,建议Debian9 / Debian10
基本环境搭建
Docker环境安装
- Docker引擎安装教程:详情参见教程,“使用官方安装脚本自动安装”和“手动安装”二选一即可
$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- Portainer安装教程:详情参见官方文档
$ docker volume create portainer_data
$ docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
注:Portainer是一个图形化的管理界面,方便通过web管理Docker(http://your-server-ip:9000/),非必需
EMQ MQTT服务器安装
- MQTT服务器的安装有两个方案,安装在Docker内和不依赖Docker引擎。大多数情况下我推荐前者,但对于我的环境安装于Docker内会抽风无法启动
- Docker环境安装:详情参见官方文档
- 不依赖Docker安装:详情参见官方文档,向下滚动找到“Debian”的“使用储存库安装 EMQ X”,实测支持Debian10
$ sudo apt update && sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://repos.emqx.io/gpg.pub | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://repos.emqx.io/emqx-ee-ce/deb/debian/ \
$(lsb_release -cs) \
stable"
$ sudo apt update
$ sudo apt install emqx-ee
$ emqx start
$ sudo systemctl start emqx
$ sudo service emqx start
EMQ MQTT服务器配置
- 安装完成后,你就可以通过http://your-server-ip:18083/来访问EMQ MQTT的后台
- 建议在左侧菜单中选择最底的通用->用户,新建一个用户以备使用
HomeAssistant安装
- 针对PC(Docker环境):详情参见官方文档
$ docker run -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:stable
注:命令中的“/PATH_TO_YOUR_CONFIG”修改为你物理机中想保存数据的目录,例如“/root/hassdata”
- 针对树莓派:详情参见官方文档
HomeAssistant配置
- 安装完成后,你就可以通过http://your-server-ip:8123/来访问HomeAssistant的后台
- HomeAssistant的配置主要通过修改保存数据的目录下的“configuration.yaml”配置文件实现,因此你需要对yaml有浅层次了解才能对它进行修改,当你不确定时,请先备份原文件
- 分享我的部分配置文件,Copy后从后台重启应该就能使用了
default_config:
sensor:
- platform: mqtt
name: "次卧温度"
state_topic: "home/secbedroom/temp"
unit_of_measurement: '°C'
- platform: mqtt
name: "次卧湿度"
state_topic: "home/secbedroom/humi"
unit_of_measurement: '%RH'
climate:
- platform: mqtt
name: 次卧空调
fan_modes:
- "auto"
- "quiet"
- "1"
- "2"
- "3"
- "4"
- "5"
- "turbo"
swing_modes:
- "off"
- "on"
mode_command_topic: "home/secbedroom/ac/modectrl"
mode_state_topic: "home/secbedroom/ac/modestat"
temperature_command_topic: "home/secbedroom/ac/tmpctrl"
temperature_state_topic: "home/secbedroom/ac/tmpstat"
fan_mode_command_topic: "home/secbedroom/ac/fanctrl"
fan_mode_state_topic: "home/secbedroom/ac/fanstat"
swing_mode_command_topic: "home/secbedroom/ac/vswingctrl"
swing_mode_state_topic: "home/secbedroom/ac/vswingstat"
current_temperature_topic: "home/secbedroom/appatemp"
min_temp: 16
max_temp: 30
temp_step: 1
retain: false
switch:
- platform: mqtt
name: "插排开关1"
command_topic: "home/secbedroom/socket/relay1ctrl"
state_topic: "home/secbedroom/socket/relay1stat"
- platform: mqtt
name: "插排开关2"
command_topic: "home/secbedroom/socket/relay2ctrl"
state_topic: "home/secbedroom/socket/relay2stat"
- platform: mqtt
name: "插排开关3"
command_topic: "home/secbedroom/socket/relay3ctrl"
state_topic: "home/secbedroom/socket/relay3stat"
- platform: mqtt
name: "插排开关4"
command_topic: "home/secbedroom/socket/relay4ctrl"
state_topic: "home/secbedroom/socket/relay4stat"
automation: !include automations.yaml
group: !include groups.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
- HomeAssistant支持众多功能,官方资料等你来玩
Arduino项目源码
- 源码还在完善中!听说点赞+收藏+评论催更可以提高速度哦!
设计图
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | 指示灯 | LED1 | LED0805-RD | 1 |
2 | IR-LED | IR1 | LED-5MM-2.54MM | 1 |
3 | SPX3819M5-L-3-3/TR | U3 | SOT-23-5_L3.0-W1.7-P0.95-LS2.8-TL | 1 |
4 | HLK-PM01 | U2 | PWRM-TH_HLK-PM01 | 1 |
5 | S8050_C141642 | Q1 | TO-92-3_L4.9-W3.7-P1.27-L | 1 |

评论