物联网应用非常广泛,现在的智能家居系统就是物联网的一个典型应用。
基于EMW3080的物联网节点,是以EMW3080模组和STM32F103C8T6为控制核心的智能家居节点。本设计中EMW3080负责连接外网,STM32主要负责处理硬件层。现在是V1版,只有一个设备,可控制插座通断、检测环境温湿度,并接入天猫精灵。在时间、精力充足前提下,工作之余在本次设计基础上完善,做一套智能家居系统,并考虑开源到立创。
本设计中,主控采用STM32F103C8T6,LQFP-48封装;WIFI采用EMW3080,直连阿里云;支持手动按键打开/关闭插座(继电器);蜂鸣器用于提示插座动作,也可用于报警提示;两颗LED分别指示联网状态和插座状态;带温度/温湿度传感器接口,可检测环境温湿度;板载I²C接口,可连接OLED显示器或其他硬件外设。
STM32程序负责收发云端数据、按键检测、控制插座开/关、检测温度/湿度、显示数据和与外部设备通讯(I²C),用KEIL编STM32程序。
在32程序主要有几个关键点:
1、云端数据收发(封包与解包);
2、网络连接状态处理(断网、连通);
3、逻辑架构;
4、稳定性。
目前正在写32端基础功能代码(LED、按键、继电器驱动、OLED显示、温度/湿度检测),根据云端数据情况考虑选用那种代码逻辑类型。
云端选用阿里云现成云平台(飞燕),免去搭建通信链路部分。
模组直接烧录庆科提供的固件,通过AT指令配置云端。
接收云端下发的数据,并根据数据有效帧,执行对应功能。执行完成后将状态数据上传到云端。
节点板上带有DHT11/DS18B20接口,插上传感器即可使用。可检测环境温度/湿度,并将数据显示到OLED或上传到云端。
节点板预留I²C总线,可挂载I²C设备、无线模块、单片机(I²C通讯)。
参考本次训练营的电路,可控制小功率家电(台灯、白炽灯)。用继电器做功率转换,由单片机控制继电器接通/关断,达到控制强电电路通断。
电路上直接使用参考设计,继电器控制引脚由功率开关U6控制,U6控制端过反向器U7送到单片机IO。这里使用功率开开关,可以去掉继电器线圈续流二极管。
插座(继电器)通断可有按键KEY1控制,也可由云端指令控制。当插座打开/关闭,蜂鸣器发声提示动作状态,同时,LED2指示继电器当前状态。
由于涉及部分强电电路,避免继电器动作瞬间触电或焊点打火,在板子上做有隔离槽。
V1版中WIFI模组与继电器间隔比较近,长期使用肯定有问题,在后续版本中,会考虑将电器做成模块或放在电源板上。
V1版主要做调试和验证,为了便于调试和安全考虑,没有加入开关电源板,后续版本会用开关电源代替USB供电,并去掉SUB电路。
电源部分直接用USB输入5V,滤波后分为四路,分别供给CH340、系统电源、WIFI电源和继电器。
系统电源采用AMS1117-3.3低压差线性稳压芯片,输出3.3V,为单片机及其外围电路供电。
WIFI模组因为功耗较大,为了保证其稳定工作,采用单独一组电源。这里选用TD6817TR DC-DC芯片,定压输出3.3V,最大输出电流为2A。
选用CH340C USB转TTL芯片,并带有STM32自动下载电路,使用ISP下载时免去设置BOOT。
关于STM32自动下载原理不难,百度一搜一大堆。
板子上除了STM32下载串口以外,还有多个串口,为了便于调试,将用到的串口引出,用跳帽手动选择,不需飞线。
STM32开发时,调试代码有时会用SWD接口仿真,并且相对于ISP接口,SWD下载速度更快。这里引出SWD接口是我个人喜好。
本设计中,用到两颗轻触按键,两颗LED。一颗按键用于复位STM32,另外一颗按键用于WIFI配网和控制插座通断。两颗LED分别指示联网状态和插座状态。
程序逻辑
状态机逻辑
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持