本帖最后由 wudianjun2001 于 2020-11-30 20:43 编辑
就大概说说程序的功能实现,8266上网是一个很大的特点,用起来特别方便,这里就不再多说,环境的建立什么的也不说了,就说说项目的实现方面的事情。
磁传感器是5V供电,并且输出信号是5V的,为了保险起见,不敢直接上,今天搭了个电阻的5V转3.3分压电路,这样就可以连接模块的5V信号了。连上模块测试,一次成功,没问题。
项目说明和APP部分请参考第一篇的说明
下面说说具体的接线等程序处理 模块的引脚定义: 指示灯模块自带,用来显示联网状态 温湿度传感器用来测量家庭里的温湿度,然后通过OLED和手机APP显示 磁传感器用来检测门的开关状态,这里直接用磁铁靠近离开来测试,不想折腾装门上了,固定比较麻烦。磁铁靠近的话是门关闭状态,磁铁离开是门打开状态。 还有4路继电器的控制,可以通过手机来控制远程开关,可以连接家里的灯,实现灯的远程打开和关闭。 OLED的显示直接用库,显示比较方便,字库也不用单独取模了,里面有字库的。
下面是传感器的检测函数,直接当成按键来检测处理就行,检测到有传感器变化时刷新显示,并且上传数据到APP
正常工作时的OLED显示处理,温度带一位小数,湿度不带小数,温湿度模块使用的是DHT11,这个精度不高。要精度高的话可以换DHT22,直接把定义时的DHT11几个字符换成DHT22就可以,用库玩起来就是方便。
下面是系统的初始化,就要是初始化端口,并进行联网处理
主循环,主要负责LED的闪烁控制,定时传感器检测和温湿度数据的读取和上传,继电器的控制都在点灯的库里面,通过回调函数来实现
APP按键的回调函数,这个只是一路的,其他路的程序一样
继电器的打开关闭处理,都会回发信息到APP显示
APP显示效果
检测到磁铁信号时门是关闭状态,这个磁传感器挺灵敏的,测试下来效果很好
没有磁铁信号时门是打开状态
传感器在左下角位置,这个图看的清楚点
串口监视器打印门的开关情况,方便测试
|