开发者学堂课程【嵌入式之 RFID 开发与应用2020版:Wifi- nodeMCU-esp8266 实现自动发现主人回家后给主人开灯】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11210
Wifi- nodeMCU-esp8266 实现自动发现主人回家后给主人开灯
内容介绍
一、代码展示
二、演示
一、代码展示
实现自建热点,并发现主人回家之后自动开关灯。步骤如下:
1.初始化 GPI0
2.配置 wifi 为 SOFTAP,并设定 SSID 和 PWD
3.创建定时器,定时查看是否有主人接入热点
4.如果主人接入,自动开灯
5.如果主人离开,自动关灯
实现代码如下:
led=4
gpio .mode (led, pio. OUTPUT)
gpio. write (led, gpio. HIGH)
wifi. setmode (wi fi. SOFTAP)
print (wifi . ge tmode () )
softap_ cfg={ssid="qfedu" ,pwd="123456789"}
wifi. ap. config (softap_ cfg)
print("AP Ip is ". .wifi.ap.getip() )
arr={ }
t= tmr.create ()
t : register (1000 , tmr . ALARM AUTO , function ()
arr=nil
arr=wi fi.ap. getcl ient ()
for maC, ip in pairs (arr) do
gpio. write (led,gpio. LOW)
print (mac,ip)
print ("open led")
return
end
gpio. write (led, gpio. HIGH)
print ("close led")
end)
t:atrat()
此时是软路由,配置与之前配置相同。此时只是监听是否有客户端连接服务器,可以将其做得更加专业,连接服务器可以获取设备信息,从而获取是家中哪一个成员连接到了网络。首先创建一个定时器,然后定义表,初始值为空,继续获取客户端IP。将客户端IP获取之后,遍历客户端, pairs 就是遍历的意思。 Pairs 遍历是无序遍历,如果加上 ipairs,就是有序遍历,遍历完成之后将遍历的结果:Mac 和 IP 地址存储起来。能够将地址存储起来的前提是还能够遍历到客户端。只要能够遍历到客户端就将灯打开,如果遍历不到任何客户端,for 循环就不执行,直接指下代码:
gpio. write (led, gpio. HIGH)
通过该代码将灯关闭,遍历不到客户端,也就是家中不存在用户,所以将灯关闭,只要能够遍历到客户端,就将灯点亮,每隔 1 秒钟监听一次用户,周期能够设置更长,例如 10 秒钟监听一次,也就是 10 秒钟之后就将灯关闭。
二、演示
将之前代码删除之后,重新进行下载。下载完成之后,立刻将灯打开。效果如下:
此时将网络断开,换网络连接,此时灯关闭。如图所示:
使用手机进行控制演示。如图所示,在手机中找到热点并进行连接,此时灯亮:
想要灯关掉,切换热点或关掉热点,灯就会关掉。
回到家后,只要连上家里的路由器,灯就会亮,离开家灯就会关,是有趣的直观的。如果接到继电器上,再接到灯,就完成了完整的家电控制。原理图如图所示:
有关家电控制的演示有单独的演示视频,可以看一下效果,本节课讲述了原理。以上代码和演示实现自动发现主人回家后给主人开灯,可以对代码进行优化,使得更加符合产品需求。
以上是有关 WiFi 的所有网络编程,之后课程会基于 SDK 的源代码开发,或连接天猫精灵实现语音的控制。