一。wifi智能家居项目开发
【开发准备1】:继电器控制开发
1.智能开关
器件准备:wifi(esp8266,使用CP2102)继电器
结果:
2.继电器工作原理
(1)继电器是一种自动电气开关
(1) 输入输出电路隔离
(2)信号转换(从断开到接通)
(3)增加输出能力
(2)继电器工作原理
利用电磁铁控制工作电路通断的开关
(3)继电器模块介绍
高电平触发指的是信号触发端(IN)与电源负极之间有一个正向电压,.通常是用电源的正极与触发端连接的一种触发方式,当触发端有正极电压或达到触发的电压时,继电器则吸合。低电平触发指的是信号触发端与电源负极之间的电压为Ov时,或者说触发端的电压比电源正极的电压更低,低到可以触发的电压时,使继电器吸合,通常是将电源的负极与触发端连接的一种触发方式使继电器吸合。
产品参数:
电压版本:5v静态电流:4mAs工作电压:65mA蚀发电压:2-5V触发电流:2mA
(4)继电器模块使用
3.开发要求:
1.ComBox模拟TCP客户端连接ESP8266
(1)发送“relayon”打开继电器
(2)发送“relayoff”关闭继电器
4.硬件连接
1.采用GPIO5直接驱动继电器
2.继电器电源VCC连接到VIN 继电器GND连接到GND
5.开发流程
1.在SDK目录下新建relay文件
2.拷贝tcpserver下所有文件到relay下
3.在relay/user目录下新建relay.c
4.在relay/include目录下新建relay.h
5.在tcpserver下完成relayon/relayoff解析
6.控制命令解析
【开发准备2】:环境采集模块
1.智能环境采集
器件使用
wifi模块+温湿度
结果:温湿度采集模块
2.空气温湿度传感器原理
数字式空气温湿度传感器
16Bit温度测量 16Bit湿度测量
3.驱动设计
1.启动采集
2.配置IO为输出模式
3.拉低18ms后拉高
4.配置IO为输入模式
5.延时40us等待DHT11相应
6.DHT11拉低
7.等待拉低80us后拉高
8.等待拉高80us后拉低
4.
5.需求分析
1.ComBox模拟TCP客户端连接ESP8266
2.定时5秒采集一次温湿度数据
3.客户端发送readdata,服务器当前温湿度数据
6.功能开发
(1)新建dht11工程目录
1.在SDK目录下新建dht11目录
2.拷贝tcpserver目录下所有文件到dht11目录下
(2)新建dht11源码文件
1.在user目录下新建tdht11.c
2.在include目录下新建dht11.h
(3)Sourceinsight配置
1.在之前的工程中,移除relay文件夹
2.添加dht11文件夹
7.代码实现
1.在dht11.c下
(1)创建Dht11_init(),用于任务创建
(2)创建void ATaskDht11( void *pvParameters ),用于任务实现
(3)创建DHT11_TEST(void) ,用于温湿度数据采集
【正式实现1】:wifi智能灯开发
1.智能灯泡
wifi+WS2812RGB
结果:智能灯
2.WS2812RGB介绍
WS2812RGB原理:
控制电路与RGB芯片集成在一个5050封装的元器件中, 构成一个完整的外控像素点。 每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示, 扫描频率不低于400Hz/s。
串行级联接口, 能通过一根信号线完成数据的接收与解码。 当刷新速率30帧/秒时, 低速模式级联数不小于512点, 高速模式不小于1024点。
数据发送速度可达800
WS2812RGB硬件连接:
WS2812驱动时序图
输入码型
输入码型(高位先发,按照GRB的顺序发送数据)
数据传输方法
硬件连接
1.采用GPIO5直接驱动WS2812 VIN
2.VCC连接到3.3V GND连接到GND
3.驱动设计
1.发送0码
2.发送1码
3.ns级延时
4.发送复位码
5.写入RGB数据
4.代码实现
1.进入临界段
2.发送复位码
3.循环写入7组RGB数据
4.退出临界段
【正式实现2】:wifi智能灯开发2
1.功能需求
1.ComBox模拟TCP客户端连接ESP8266
2.客户端发送setcolour,服务器接收解析,改变一次灯泡颜色
2.功能开发
新建ws2812工程目录
1.在SDK目录下新建ws2812目录
2.拷贝tcpserver目录下所有文件到ws2812目录下
新建ws2812源码文件
1.在user目录下新建ws2812.c
2.在include目录下新建ws2812.h
Sourceinsight配置
1.在之前的工程中,移除dht11文件夹
2.添加ws2812文件夹
代码实现
1.在ws2812.c下
(1)创建delay100Ns(),用于精准延时
(2)创建SEND_WS_0(),用于写入0码
(3)创建SEND_WS_1(),用于写入1码
(4)创建Ws2812REST (),用于帧复位
(5)创建Ws2812Write(colours colour),用于颜色写入