Wifi- nodeMCU-esp8266 实现自动发现主人回家后给主人开灯 | 学习笔记

简介: 快速学习 Wifi- nodeMCU-esp8266 实现自动发现主人回家后给主人开灯

开发者学堂课程【嵌入式之 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 秒钟之后就将灯关闭。

 

二、演示

将之前代码删除之后,重新进行下载。下载完成之后,立刻将灯打开。效果如下:

image.png

此时将网络断开,换网络连接,此时灯关闭。如图所示:

image.png

使用手机进行控制演示。如图所示,在手机中找到热点并进行连接,此时灯亮:

image.png

想要灯关掉,切换热点或关掉热点,灯就会关掉。

image.png

回到家后,只要连上家里的路由器,灯就会亮,离开家灯就会关,是有趣的直观的。如果接到继电器上,再接到灯,就完成了完整的家电控制。原理图如图所示:

image.png

有关家电控制的演示有单独的演示视频,可以看一下效果,本节课讲述了原理。以上代码和演示实现自动发现主人回家后给主人开灯,可以对代码进行优化,使得更加符合产品需求。

以上是有关 WiFi 的所有网络编程,之后课程会基于 SDK 的源代码开发,或连接天猫精灵实现语音的控制。

相关文章
|
物联网 开发者
Wifi-nodeMCU-esp8266 实现自动发现主人回家后给主人开灯演示 | 学习笔记
快速学习 Wifi-nodeMCU-esp8266 实现自动发现主人回家后给主人开灯演示
101 0
Wifi-nodeMCU-esp8266 实现自动发现主人回家后给主人开灯演示 | 学习笔记
|
2月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
115 0
|
2月前
|
XML API Android开发
Android WIFI使用简述(上)
Android WIFI使用简述(上)
130 0
|
2月前
|
Android开发
Android 状态栏WiFi图标的显示逻辑
Android 状态栏WiFi图标的显示逻辑
59 0
|
2月前
|
Android开发
Android获取当前连接的wifi名称
Android获取当前连接的wifi名称
50 6
|
2月前
|
Android开发
android连接指定wifi
android连接指定wifi
32 0
|
2月前
|
Java Android开发
Android 9在连接以太网情况下 还能连接WiFi
Android 9在连接以太网情况下 还能连接WiFi
26 0
|
2月前
|
Java Android开发 开发者
rk3399 android以太网和wifi共存
rk3399 android以太网和wifi共存
45 0
|
2月前
|
缓存 Java Android开发
Android 9.0 WiFi 扫描结果上报和获取流程
Android 9.0 WiFi 扫描结果上报和获取流程
51 0
|
2月前
|
Android开发
Android 获取Wifi开关状态、控制Wifi开关
Android 获取Wifi开关状态、控制Wifi开关
29 0