各种网站制作uc投放广告网站要自己做吗

当前位置: 首页 > news >正文

各种网站制作,uc投放广告网站要自己做吗,企业网站备案怎么做,中国建设网站的证件怎么查基础例程6 01、WIFI实验—WebServer 实验介绍 ​ 连接路由器上网是我们每天都做的事情#xff0c;日常生活中只需要知道路由器的账号和密码#xff0c;就可以使用手机或电脑连接到路由器#xff0c;然后上网。 ​ 连接路由器#xff0c;将ESP32的IP地址等信息通过shell…基础例程6 01、WIFI实验—WebServer 实验介绍 ​ 连接路由器上网是我们每天都做的事情日常生活中只需要知道路由器的账号和密码就可以使用手机或电脑连接到路由器然后上网。 ​ 连接路由器将ESP32的IP地址等信息通过shell控制台输出显示 ​ 模块包括热点AP模式和客户端STA模式。 ​ 热点AP模式是指电脑或手机端直接连接ESP32发出的热点实现连接如果电脑连接模块AP热点这样电脑就不能上网。 ​ 因此在使用电脑端和模块进行网络通信时一般情况下使用STA模式。也就是电脑和设备同时连接到相同网段的路由器上。 硬件设计 ​ 内置WIFI功能不需要额外连接 软件设计 /* 深圳市普中科技有限公司PRECHIN 普中技术支持www.prechin.net* * 实验名称WIFI实验–WebServer* * 接线说明LED模块–ESP32 IO(D1)–(15)* * 实验现象程序下载成功后手机连接的WIFI需和ESP32连接的WIFI处于同一频段比如192.168.1.xx然后在手机网页输入串口控制台输出的本机IP地址即可进入手机端网页控制板子LED。* * 注意事项/#include public.h #include WiFi.h//路由器账号和密码 const char ssid uestc-2019; const char* password wyj1347863;WiFiServer server(80);//LED控制引脚 #define led_pin 15//WIFI连接路由器 void wifi_connect(void) {Serial.print(Connecting to );Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() ! WL_CONNECTED) {delay(500);Serial.print(.);}Serial.println();Serial.println(WiFi connected.);Serial.println(IP address: );Serial.println(WiFi.localIP()); }void setup(){Serial.begin(115200);pinMode(led_pin, OUTPUT); // set the LED pin modedelay(10);wifi_connect();server.begin();}void loop(){WiFiClient client server.available(); // listen for incoming clientsif (client) { // if you get a client,Serial.println(New Client.); // print a message out the serial portString currentLine ; // make a String to hold incoming data from the clientwhile (client.connected()) { // loop while the clients connectedif (client.available()) { // if theres bytes to read from the client,char c client.read(); // read a byte, thenSerial.write©; // print it out the serial monitorif (c \n) { // if the byte is a newline character// if the current line is blank, you got two newline characters in a row.// thats the end of the client HTTP request, so send a response:if (currentLine.length() 0) {// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)// and a content-type so the client knows whats coming, then a blank line:client.println(HTTP/1.1 200 OK);client.println(Content-type:text/html);client.println();// the content of the HTTP response follows the header:client.print(Click a href\/H\here/a to turn the LED on pin 15 on.br);client.print(Click a href\/L\here/a to turn the LED on pin 15 off.br);// The HTTP response ends with another blank line:client.println();// break out of the while loop:break;} else { // if you got a newline, then clear currentLine:currentLine ;}} else if (c ! \r) { // if you got anything else but a carriage return character,currentLine c; // add it to the end of the currentLine}// Check to see if the client request was GET /H or GET /L:if (currentLine.endsWith(GET /H)) {digitalWrite(led_pin, HIGH); // GET /H turns the LED on}if (currentLine.endsWith(GET /L)) {digitalWrite(led_pin, LOW); // GET /L turns the LED off}}}// close the connection:client.stop();Serial.println(Client Disconnected.);} } 实验现象 Connecting to uestc-2019 .. WiFi connected. IP address: 192.168.0.102 New Client. GET /H HTTP/1.1 Host: 192.168.0.102 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,/;q0.8,application/signed-exchange;vb3;q0.7 Referer: http://192.168.0.102/H Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6Client Disconnected. New Client. GET /favicon.ico HTTP/1.1 Host: 192.168.0.102 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203 Accept: image/webp,image/apng,image/svgxml,image/,/*;q0.8 Referer: http://192.168.0.102/L Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6Client Disconnected.02、WIFI实验—Socket 实验介绍 ​ 01章节学习了使用ESP32连接到无线路由器。现在学习Socket通信。 ​ 在这里我们尝试以最容易理解的方式讲述Socket。 网络通信的分层 ​ TCP/IP模型的传输层和应用层传输层比较熟悉的是TCP和UDPUDP协议基本没有对IP层的数据进行任何的处理。而TCP协议还加入了更加复杂的传输控制比如滑动的数据发送窗口Slice Window以及接收确认和重发机制以达到数据的可靠传输。应用层中网页常用的则是HTTP。 ​ 网络通信时最基础依赖于IP和端口的HTTP一般情况下默认使用端口80。多人连接问题。 ​ 应用层HTTP通过传输层进行数据通信时TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要同一个TCP协议端口传输数据。为了区分不同的应用程序进程和连接许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字Socket。应用层和传输层通过Socket接口区分来自不同应用程序进程或网络连接的通信实现数据传输的并发服务。 ​ 其实Socket抽象层介于传输层和应用层之间跟TCP/IP并没有什么联系。Socket编程接口在设计的时候就希望也能适应其他的网络协议。 套接字Socket)是通信的基石是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示包含进行网络通信必须的五种信息连接使用的协议通常是TCP或UDP)本地主机的IP地址本地进程的协议端口远地主机的IP地址远地进程的协议端口。 ​ Socket的出现只是为了更方便的使用TCP/IP协议简单理解就是其对TCP/IP进行了抽象形成了几个最基本的函数接口。比如create、listen、accept、connect、read和write等以下为通信流程 ​ 一个Socket通信需要一个服务器端和一个客户端。本例中ESP32开发板为客户端电脑使用网络调试助手作为服务器端双方使用TCP协议传输。对于客户端则只需要知道电脑端的IP和端口即可简历连接。 软件设计 深圳市普中科技有限公司PRECHIN 普中 技术支持www.prechin.net PRECHIN普中实验名称WIFI实验-Socket通信 接线说明LED模块–ESP32 IO(D1)–(15)实验现象程序下载成功后软件shell控制台输出当前IP、子网掩码、网关的地址信息在网络调试助手上连接成功后可数据收发。注意事项ESP32 WIFI作为客户端连接路由器热点然后电脑也连接路由器此时可在电脑端使用网络调试助手设置协议类型TCP Server本机主机地址电脑端IP地址本机主机端口10000#导入Pin模块 from machine import Pin import time import network import usocket#定义LED控制对象 led1Pin(15,Pin.OUT)#路由器WIFI账号和密码 ssiduestc-2019 passwordwyj1347863#服务器地址和端口 dest_ip192.168.0.100 dest_port10000#WIFI连接 def wifi_connect():wlannetwork.WLAN(network.STA_IF) #STA模式wlan.active(True) #激活start_timetime.time() #记录时间做超时判断if not wlan.isconnected():print(conneting to network…)wlan.connect(ssid,password) #输入WIFI账号和密码while not wlan.isconnected():led1.value(1)time.sleep_ms(300)led1.value(0)time.sleep_ms(300)#超时判断,15 秒没连接成功判定为超时if time.time()-start_time15:print(WIFI Connect Timeout!)breakreturn Falseelse:led1.value(0)print(network information:, wlan.ifconfig())return True#程序入口 if namemain:if wifi_connect():socketusocket.socket() #创建socket连接addr(dest_ip,dest_port) #服务器IP地址和端口socket.connect(addr)socket.send(Hello PRECHIN)while True:textsocket.recv(128) #单次最多接收128字节if textNone:passelse:print(text)socket.send(I get:text.decode(utf-8))time.sleep_ms(300) shell的窗口 network information: (192.168.0.102, 255.255.255.0, 192.168.0.1, 192.168.0.1) b12345678\r\n b12345603、WIFI实验—MQTT ​ 前面学习了Socket通信当服务器和客户端建立起连接时就可以相互通信。在互联网应用大多使用WebSocket接口来传输数据。 ​ 在物联网中如果是海量的数据就需要用到MQTT消息队列遥测传输协议。 实验介绍 ​ MQTT是IBM于1999年提出的和HTTP一样属于应用层工作在TCP/IP协议族上通常还会调用socket接口。是一个基于客户端-服务器的消息发布/订阅传输协议。其特点是协议是轻量、简单、开放和易于实现的这些特点使得它适用范围非常广泛。 ​ 总结下来MQTT有以下的优势/特性 异步消息协议面向长连接双向数据传输协议轻量级被动数据获取 ​ 从上图可看到MQTT通信的角色有两个分别是服务器和客户端。服务器只负责中转数据不做存储客户端可以是信息发送者或订阅者也可以同时是两者。如下图所示。 ​ 确定了角色后数据如何传输呢下图是MQTT最基本的数据帧格式例如温度传感器发布了主题“Temperature”编号消息是“25”表示温度。那么所有订阅了这个主题编号的客户端手机应用就会收到相关信息从而实现通信。 ​ 由于特殊的发布/订阅机制服务器不需要存储数据当然也可以在服务器的设备上建立一个客户端来订阅保存信息因此非常适合海量设备的传输。 硬件设计 无 软件设计 分为发布者和订阅者 发布者 深圳市普中科技有限公司PRECHIN 普中 技术支持www.prechin.net PRECHIN普中实验名称WIFI实验-MQTT通信发布者 接线说明LED模块–ESP32 IO(D1)–(15)实验现象程序下载成功后软件shell控制台输出当前IP、子网掩码、网关的地址信息MQTT在线助手输入网址http://www.tongxinmao.com/txm/webmqtt.php#进入按默认设置选择连接然后在Subscribe订阅主题中选择程序中设置的Topic主题/public/pz_esp32/1注意事项ESP32 WIFI作为客户端连接路由器热点然后电脑也连接路由器此时可连接成功输出信息#导入Pin模块 from machine import Pin import time from machine import Timer import network from simple import MQTTClient#定义LED控制对象 led1Pin(15,Pin.OUT)#路由器WIFI账号和密码 ssiduestc-2019 passwordwyj1347863#WIFI连接 def wifi_connect():wlannetwork.WLAN(network.STA_IF) #STA模式wlan.active(True) #激活start_timetime.time() #记录时间做超时判断if not wlan.isconnected():print(conneting to network…)wlan.connect(ssid,password) #输入WIFI账号和密码while not wlan.isconnected():led1.value(1)time.sleep_ms(300)led1.value(0)time.sleep_ms(300)#超时判断,15 秒没连接成功判定为超时if time.time()-start_time150:print(WIFI Connect Timeout!)breakreturn Falseelse:led1.value(0)print(network information:, wlan.ifconfig())return True#发布数据任务 def mqtt_send(tim):client.publish(TOPIC, Hello PRECHIN)#程序入口 if namemain:if wifi_connect():SERVERmq.tongxinmao.comPORT18830 #通信猫的端口CLIENT_IDPZ-ESP32 #客户端IDTOPIC/public/pz_esp32/1 #TOPIC名称client MQTTClient(CLIENT_ID, SERVER, PORT)client.connect()#开启RTOS定时器,周期 1000ms执行MQTT通信接收任务tim Timer(0)tim.init(period1000, modeTimer.PERIODIC,callbackmqtt_send)ESP32作为客户端发布者 电脑作为客户端订阅者 调试软件 shell 订阅者 深圳市普中科技有限公司PRECHIN 普中 技术支持www.prechin.net PRECHIN普中实验名称WIFI实验-MQTT通信订阅者 接线说明LED模块–ESP32 IO(D1)–(15)实验现象程序下载成功后软件shell控制台输出当前IP、子网掩码、网关的地址信息MQTT在线助手输入网址http://www.tongxinmao.com/txm/webmqtt.php#进入按默认设置选择连接然后在Publish发布主题中选择程序中设置的Topic主题/public/pz_esp32/1设置要发送的信息点击发布在Shell控制台即可输出主题和消息注意事项ESP32 WIFI作为客户端连接路由器热点然后电脑也连接路由器此时可连接成功输出信息#导入Pin模块 from machine import Pin from machine import Timer import time import network from simple import MQTTClient#定义LED控制对象 led1Pin(15,Pin.OUT)#路由器WIFI账号和密码 ssiduestc-2019 passwordwyj1347863#WIFI连接 def wifi_connect():wlannetwork.WLAN(network.STA_IF) #STA模式wlan.active(True) #激活start_timetime.time() #记录时间做超时判断if not wlan.isconnected():print(conneting to network…)wlan.connect(ssid,password) #输入WIFI账号和密码while not wlan.isconnected():led1.value(1)time.sleep_ms(300)led1.value(0)time.sleep_ms(300)#超时判断,15 秒没连接成功判定为超时if time.time()-start_time150:print(WIFI Connect Timeout!)breakreturn Falseelse:led1.value(0)print(network information:, wlan.ifconfig())return True#设置 MQTT 回调函数,有信息时候执行 def mqtt_callback(topic,msg):print(topic: {}.format(topic))print(msg: {}.format(msg))#接收数据任务 def mqtt_recv(tim):client.check_msg()#程序入口 if namemain:if wifi_connect():SERVERmq.tongxinmao.comPORT18830CLIENT_IDPZ-ESP32 #客户端IDTOPIC/public/pz_esp32/1 #TOPIC名称client MQTTClient(CLIENT_ID, SERVER, PORT) #建立客户端client.set_callback(mqtt_callback) #配置回调函数client.connect()client.subscribe(TOPIC) #订阅主题#开启RTOS定时器,周期 300ms执行MQTT通信接收任务tim Timer(0)tim.init(period300, modeTimer.PERIODIC,callbackmqtt_recv)ESP32作为客户端的订阅者订阅主题 电脑作为客户端的发布者发布主题 调试软件 shell界面 04、WIFI实验—手机控制LED 软件设计 深圳市普中科技有限公司PRECHIN 普中 技术支持www.prechin.net PRECHIN普中实验名称WIFI实验-手机控制LED 接线说明LED模块–ESP32 IO(D1)–(15)实验现象程序下载成功后手机连接的WIFI需和ESP32连接的WIFI处于同一频段比如192.168.1.xx然后在手机网页输入Shell控制台输出的本机IP地址即可进入手机端网页控制板子LED注意事项ESP32作为服务器手机或电脑作为客户端#导入Pin模块 from machine import Pin import time import network import socket#定义LED控制对象 led1Pin(15,Pin.OUT,Pin.PULL_DOWN)#连接的WIFI账号和密码 ssid uestc-2019 password wyj1347863#WIFI连接 def wifi_connect():wlannetwork.WLAN(network.STA_IF) #STA模式wlan.active(True) #激活if not wlan.isconnected():print(conneting to network…)wlan.connect(ssid,password) #输入 WIFI 账号密码while not wlan.isconnected():led1.value(1)time.sleep_ms(300)led1.value(0)time.sleep_ms(300)led1.value(0)return Falseelse:led1.value(0)print(network information:, wlan.ifconfig())return True#网页数据 def web_page():if led1.value() 0:gpio_stateOFFelse:gpio_stateONhtml htmlhead titleESP32 LED control/title meta nameviewport contentwidthdevice-width, initial-scale1link relicon hrefdata:, stylehtml{font-family: Helvetica; display:inline-block; margin: 0px auto; text-align: center;}h1{color: #0F3376; padding: 2vh;}p{font-size: 1.5rem;}.button{display: inline-block; background-color: #e7bd3b; border: none; border-radius: 4px; color: white; padding: 16px 40px; text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}.button2{background-color: #4286f4;}/style/headbody h1ESP32 LED control/h1 pGPIO state: strong gpio_state /strong/ppa href/?ledonbutton classbuttonON/button/a/ppa href/?ledoffbutton classbutton button2OFF/button/a/p/body/htmlreturn html#程序入口 if namemain:if wifi_connect():#SOCK_STREAM表示的是TCP协议SOCK_DGRAM表示的是UDP协议my_socketsocket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建socket连接# 将socket对象绑定ip地址和端口号my_socket.bind((, 80))# 相当于电话的开机 括号里的参数表示可以同时接收5个请求my_socket.listen(5)while True:# 进入监听状态等待别人链接过来有两个返回值#一个是对方的socket对象一个是对方的ip以及端口client, addr my_socket.accept()print(Got a connection from %s % str(addr))# recv表示接收括号里是最大接收字节request client.recv(1024)request str(request)print(Content %s % request)led_on request.find(/?ledon)led_off request.find(/?ledoff)if led_on 6:print(LED ON)led1.value(1)if led_off 6:print(LED OFF)led1.value(0)response web_page()client.send(HTTP/1.1 200 OK\n)client.send(Content-Type: text/html\n)client.send(Connection: close\n\n)client.sendall(response)client.close() 实验现象 网页端