Wifi-nodeMCU-esp8266tcp 服务器创建并通过 tcp 调试助手远程控制 LED | 学习笔记

简介: 快速学习 Wifi-nodeMCU-esp8266tcp 服务器创建并通过 tcp 调试助手远程控制 LED

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:Wifi-nodeMCU-esp8266tcp 服务器创建并通过 tcp 调试助手远程控制 LED】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11207


Wifi-nodeMCU-esp8266tcp 服务器创建并通过 tcp 调试助手远程控制 LED

接下来进入 8266 的核心功能,8266 主要是 wifi 模块那么基于 wifi 的网络编程是比较重要的部分。接下来不按 ppt 讲解,主要讲解一下内容:第一个是模块作为服务器,第二个是是模块作为客户端,第三个是模块作为热点,最后是模块作为普通家用节点或者热点和普通的终端兼容的功能。

 

一、模块作为服务器

首先做模块作为服务器的内容,这部分内容比较简单。打开代码,首先配置了 IO 接口,配置成输出并且配置为高电平根硬件电路有关,GPIO16 连接 IO,VDD3V3连接高电平它是共阳的,共阳意味着低电平灯亮高电平灯灭。使用代码中开始是设置高电平使灯灭,wifi.setmode (wifi.STATIONAP) 设置 wifi 的工作模式STATIONAP(混合模式)既可以做热点又可以做客户端。

image.png

设置 Wifi 工作模式:wifi.STATIONAP,I 混合模式,软路由即热点和客户端共存模式,既要连接服务器又要给客户提供连接服务器。最简单的模:wifi.STATION,客户端模式,只能搜索别的 wifi 信号进行接入。wifi.SOFTAP,软路由或支持热点,自己当做路由建立热点,等待其它设备连接。

代码中使用 wifi.STATIONAP,I混合模式;而下面语句 connect 意思是连接别人,连接别人可以使用客户端模式。station_cfg {ssid="huiyi",pwd="huiyi..."} 服务器的 ssid 和服务器密码,ssid 更改为 ChinaNet-fTVU,密码改为 hgd4de5a,然后继续配置,其中不明白的可以参考手册中的 wifi 模块。设置模式后需要获取模式,有关联网不属于 wifi 需要查找子模块中的内容. wifi.sta.config(station cfg)

wifi.sta.connect () 配网后进行连接,怎么知道是否连接成功需要创建一个定时器t tmr.create()。然后给定时器注册一个回调函数,定时器以毫秒为单位,t:register (1000,tmr.ALARM AUTO,function ()一秒钟的定时器以闹钟的形式自动触发,到时间会调用函数 function()。

函数定义: function 关键字,然后是函数名 create_srv,这个函数是无参的可以在括号中添加参数。之前讲过不管是函数题还是循环体或者是条件语句后都需要加上 end。

image.png

代码中的第一个 end 是回调函数的,第二个 endt 类中是 register方法。如果代码看着不习惯,可以进行拆分:

function conn_back()

if wifi.sta.getip()==nil then

print ("connecting...")

else

print("connected,Ip is "..wifi.sta.getip())

t:stop()

create_srv()

end

end

I

t tmr.create()

t:register (1000,tmr.ALARM_AUTO,conn_back)

t:start()

t:register (1000,tmr.ALARM AUTO,function 一秒钟的定时器以闹钟的形式自动触发,到时间会调用函数 function()。函数中 if wifi.sta.getip()==nil then通过 WiFi 的子模块获取 ip 如果获取 ip 为空表示还在连接即未连接,然后继续获取 IP。如果得到 IP 执行 else 后的语句把 IP 打印出来,打印后执行 t:stop()关闭闹钟,关闭闹钟表示已经连上 WiFi,连上 WiFi 后创建服务器 create_srv 。第一个函数中 print 指打印数据到终端,print("connected,Ip is "..wifi.sta.getip())中的..表示字符串连接即前后字符串连接,wifi.sta.getip()为 IP 地址,把两个字符串连接成一个字符串(在 python 中使用加号进行字符串的连接)然后调用函数 create_srv。

函数 create_srv 创建服务器,使用 net 模块创建服务器。srv=net.create

Server (net.TCP,30) 创建 TCP 服务器,30 是指延迟的时间。srv:listen (8888,function(conn) 调用 listen 监听 8888;监听时假设发生一些事件例如收到数据还有其他事件,这里只处理一个接受到数据。conn:on ("receive",function(client,pyload) 然后有是一个回调,监听到后把参数传递过来,然后连接客户端,客户端发送数据,pyload 即发来的数据。

if (string.find(payload,"open")~=nil)then 如果从发来的数据中可以找到 open,~=nil 表示能够找到 open,string.find 字符串查找,如果找到 open 执行apio.write(led,qpio.LOW) 把灯点亮。

elseif (string.find(payload,"close")~=nil)then 如果找到 close,把灯关闭 gpio.write(led,gpio.HIGH)。如果即找不到 open 又找不到 close 把传递的内容输出,print("recv:"..payload)。client:send (payload.."...oK\n");给客户端回复 OK,如关灯 OK,开灯 OK。最后 collectgarbage();表示垃圾回收,一般加上collectgarbage();回收网络资源。

image.png

在工具 ESPlorer 中点击 open 打开文档, reload 刷新代码,然后点击 CTRL+S保存代码后点击 Save 加载代码,下载完成后模块开始连接,连接到 IP 为192.168.1.17 已经连接到热点并获取到 IP。接下来访问服务器,需要使用一个网络调试助手,可以在网上下载。首先,注意是 TCP 的客户端,服务器 IP 为192.168.1.17, 服务器端口号为 8888,然后点击 【连接】

image.png

连接后开发板灯亮,因为默认的是亮灯。在网络调试助手中发送 close,服务器回了 OK 但是灯并没有灭,服务器发送 OK 表示已经收到指令。重新在网络调试助手中发送 open,开发板上面的灯亮,那么刚才没有出错,是操作开发板上面的灯。

image.png

那么关于网络 server 讲解到这,下节课讲解如何同继电器连接起来或者是如何通过网页,手机如何控制。

相关文章
|
22天前
|
域名解析 网络协议 数据库
TCP/IP服务器
【10月更文挑战第20天】TCP/IP服务器
116 65
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
127 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
135 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
Python
Flask学习笔记(二):基于Flask框架上传图片到服务器端并原名保存
关于如何使用Flask框架上传图片到服务器端并以其原名保存的教程。
74 1
|
1月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
31 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
1月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
61 2
|
1月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
65 1
|
1月前
|
网络协议 Python
Python创建一个TCP服务器
Python创建一个TCP服务器
|
3月前
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
|
2月前
|
网络协议 数据处理 C语言
利用C语言基于poll实现TCP回声服务器的多路复用模型
此代码仅为示例,展示了如何基于 `poll`实现多路复用的TCP回声服务器的基本框架。在实际应用中,你可能需要对其进行扩展或修改,以满足具体的需求。
81 0