Dibug ESP32/ESP8266 MicroPython Web Server – Control Outputs

【雕爷学编程】MicroPython手册之双向实时通讯 WebSocket 然后,定义了一个WebSocket处理函数websocket_handler,该函数会在收到客户端的消息时进行处理,并发送相应的回复。通过在客户端接收到传感器数据后,可以实现实时数据传输的功能。MicroPython的WebSocket是一个用于实现WebSocket协议的模块,它可以让用户在Python中访问和控制硬件上的WebSocket客户端或服务器,并实现与外部设备或应用的双向实时通信。案例一:使用WebSocket模块创建一个客户端,并连接到一个远程服务器,发送一条消息,并接收服务器的回复。 阅读详情

实验内容及步骤

实验内容

ESP32/ESP8266 MicroPython Web Server – Control Outputs
ESP32/ESP8266 MicroPython Web Server – Control Outputs

实验步骤

整理boot.py,main.py两个文件

boot.py

# Complete project details at https://RandomNerdTutorials.com

try:
  import usocket as socket
except:
  import socket

from machine import Pin
import network

import esp
esp.osdebug(None)

import gc
gc.collect()

ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'

station = network.WLAN(network.STA_IF)

station.active(True)
station.connect(ssid, password)

while station.isconnected() == False:
  pass

print('Connection successful')
print(station.ifconfig())

led = Pin(2, Pin.OUT)

main.py

# Complete project details at https://RandomNerdTutorials.com

def web_page():
  if led.value() == 1:
    gpio_state="ON"
  else:
    gpio_state="OFF"
  
  html = """<html><head> <title>ESP Web Server</title> <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" href="data:,"> <style>html{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></head><body> <h1>ESP Web Server</h1> 
  <p>GPIO state: <strong>""" + gpio_state + """</strong></p><p><a href="/?led=on"><button class="button">ON</button></a></p>
  <p><a href="/?led=off"><button class="button button2">OFF</button></a></p></body></html>"""
  return html

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)

while True:
  conn, addr = s.accept()
  print('Got a connection from %s' % str(addr))
  request = conn.recv(1024)
  request = str(request)
  print('Content = %s' % request)
  led_on = request.find('/?led=on')
  led_off = request.find('/?led=off')
  if led_on == 6:
    print('LED ON')
    led.value(1)
  if led_off == 6:
    print('LED OFF')
    led.value(0)
  response = web_page()
  conn.send('HTTP/1.1 200 OK\n')
  conn.send('Content-Type: text/html\n')
  conn.send('Connection: close\n\n')
  conn.sendall(response)
  conn.close()

问题描述:

1,会报错
2,只能有一个终端能够连接,与实际使用不服

原因分析:

1,程序Socket端口不关闭,一直处于ACCEP状态
2,Socket端口未固定

解决方案:

# Complete project details at https://RandomNerdTutorials.com

def web_page():
  if led.value() == 1:
    gpio_state="ON"
  else:
    gpio_state="OFF"
  
  html = """<html><head> <title>ESP Web Server</title> <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" href="data:,"> <style>html{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></head><body> <h1>ESP Web Server</h1> 
  <p>GPIO state: <strong>""" + gpio_state + """</strong></p><p><a href="/?led=on"><button class="button">ON</button></a></p>
  <p><a href="/?led=off"><button class="button button2">OFF</button></a></p></body></html>"""
  return html


while True:
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  s.bind(('',80))
  s.listen(5)
  conn, addr = s.accept()
  print('Got a connection from %s' % str(addr))
  request = conn.recv(2048)
  request = str(request)
  print('Content = %s' % request)
  led_on = request.find('/?led=on')
  led_off = request.find('/?led=off')
  if led_on == 6:
    print('LED ON')
    led.value(1)
  if led_off == 6:
    print('LED OFF')
    led.value(0)
  response = web_page()
  conn.send('HTTP/1.1 200 OK\n')
  conn.send('Content-Type: text/html\n')
  conn.send('Connection: close\n\n')
  conn.sendall(response)
  conn.close()
  s.close()

扩展阅读

1,下载安装uPycraft

uPycraft软件我放在了百度网盘,是.EXE可执行文件,直接下载打开使用就好了。
需要注意的是,不需要安装python就可以直接使用uPycraft
链接:https://pan.baidu.com/s/1iLB1ZSj0pjePylt08qcfpA
提取码:aqxs

2,ESP8266使用uPycraft刷micro python固件

这里推荐两个视频,这个哥们讲的比较可以的。

大众IT学 - MicroPython On ESP8266 by 科技小制作

大众IT学 - MicroPython On ESP8266 续 by 科技小制作

uwebsockets:MicroPython WebSockets实现 MicroPython WebSockets(ESP8266实现) ESP8266(仅客户端ATM)的websocket的实现。 这是一项正在进行中的工作,其中一些可能会移入micropython内置的modwebsocket C模块中,但这还不完整,并且握手不符合标准。 esp8266(今天)上没有asyncio,但是我想使用它确实拥有的套接字接收处理程序来构建一个可以满足所有意图和目的的东西,例如asyncio Protocol 。 “截屏” $ pip install adafruit-ampy $ ampy mkdir uwebsockets $ ampy put uwebsockets/protocol.py uwebsockets/protocol.py $ ampy put uwebsockets/client.py uwebsockets/client.py $ a 立即下载

相关推荐

MicroWebSrv:一个微型HTTP Web服务器,支持用于MicroPython的WebSockets,htmlpython语言模板和路由处理程序(用于Pycom模块和ESP32)

-> MicroWebSrv是一个微型HTTP Web服务器,支持用于MicroPython的WebSockets,html / python语言模板和路由处理程序(主要用于ESP32和模块。现在支持厂商提供的所有变体) 仅需3个文件即可非常轻松地集成并且非常轻便: "microWebSrv.py"服务器 "microWebSocket.py"的可选支持 "microWebTemplate.py" -. pyhtml呈现的页面的可选模板语言 rdagger68视频中的迷你兔兔: 简单但有效: 用它在您的模块中嵌入一个很酷的网站 处理GET,POST等请求以与用户进行交互并配置选项 在H

micropython进阶拓展(esp32单片机开发)

micropython语法和python3一样,编写起来非常方便。本套教程属于进阶拓展。本教程会教控制各类型的电机,机械臂,讲解各种常见的通讯协议,315m/413m无线,同时边实践边引导大家看懂各种芯片手册的控制指令。 2025/07/07: 由于该视频在2022年发布,当时py3.10;现在最新py3.13 由于pyreadline冲突rshell已不能用;如果仍要使用rshell请安装py3.12并用我修改的rshell: https://github.com/gamefunc/rshell/releases 为实现操控各种芯片,本教程会讲解与画PCB板;为实现直接通过网页控制机械臂,本教程会教大家asyncio异步编程,并实现http websocket协议。考虑到有部分人工作需求不能开源,本教程会教cpp20 QT6写界面与android写界面,但需要你本身具有c++ / java 编程能力。 本教程会通过通俗易懂的比喻来讲解各种原理与思路,并从0开始编写程序来实现各项功能,完整录制,视频教程的优势是,可根据自己理解速度 暂停 / 回放 / 快进。micropython版本: 2022年发布的1.18 与 2011年发布的1.17。更多内容请看视频列表。  

micropython基础入门(esp32/esp8266单片机开发)

2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.youkuaiyun.com/course/detail/29666 2025/07/07: 由于该视频在2019年制作,当时py3.7;现在py3.13 由于pyreadline冲突rshell已不能用;如果仍要使用rshell请安装py3.12并用我修改的rshell: https://github.com/gamefunc/rshell/releases micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机玩物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  

别再到处找数据了!用Python+Tushare Pro免费获取A股行情、财务、龙虎榜数据(附完整代码)

本文详细介绍了如何使用Python和Tushare Pro免费获取A股行情、财务数据和龙虎榜数据,并构建本地金融数据仓库。通过完整的代码示例,帮助读者快速掌握金融数据接口的使用方法,提升量化分析效率。Tushare Pro作为免费、稳定的数据源,覆盖全面且API友好,是个人投资者的理想选择。

weixin_30596343的博客 617

2022李宏毅作业hw1—新冠阳性人员数量预测。

从非常基础的内容开始,主要是我的水平也很基础。

YI_SHU_JIA的博客 1万+

micropython websocket_通过websocket登录ESP32

故事背景在使用http://micropython.org/webrepl/ 的时候,发现链接地址是:ws://192.168.4.1:8266/只见过http 没有见过ws, 这是什么呢?什么是Websocket?WebSocket 是一种网络通信协议,很多高级功能都需要它。WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。它的最大特点就是,服务器可以主动...

weixin_39806288的博客 1484

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

pig_ning的博客 3146

esp8266开发——使用micropython下的websocket

说明 代码 测试效果

eyhxh的博客 7089

BAPI创建委外采购订单

使用BAPI BAPI_PO_CREATE1创建委外采购订单,组件为手工输入时,有几个点需要注意: 1、已通过CS01创建过BOM的物料,创建时会自动带出components。如果要修改当前组件清单,可以通过设置pocomponents-change_id = 'E’来实现 lv_sline = lv_sline + 1. ls_pocomponents-po_item = l_ebelp + 10. ls_pocomponents-ITEM_NO = l

Buffalo_soldier的博客 3262

CTF入门RSA维纳攻击

RSA维纳攻击 一.题目描述 适用于e过大或国过小情况下的RSA加密 题干如下: #coding:utf-8 import gmpy2 import libnum e = 54856417509806712596137531985117125938559627187663765776152288580865785539464797248184444737659643755765127505761012086539564616967122137525108154121304264697865568653100

noj_h的博客 2232

【亲测免费】 Micropython WebSockets 实现 - 常见问题解决方案

该项目是一个为ESP8266实现的Micropython WebSockets客户端库。它允许ESP8266设备通过WebSockets协议与服务器进行通信。项目主要是用Python语言编写,针对Micropython环境进行了优化。 ## 主要编程语言 - Python ## 新手常见问题及解决方案 ### 问题一:项目安装步骤不清晰 **问题描述:** 新手用户在安装和使用项目时,可能会...

gitblog_00311的博客 623

7 中望CAD二次开发-标注(一)(ZRX C++)

尺寸标注是CAD设计中最常用的功能之一,软件内置了很多标注功能,可以通过使用这些标注工具,对需要标注的长度、角度等一个个进行标注。但这显然效率很低,学习CAD二次开发,就是要把人从重复的劳动中解放出来,实现批量标注。本文介绍,如何通过二次开发进行标注。

cilvsuanna的博客 339

在ESP8266 NodeMcu V3中使用MicroPython编写一个HTTP Web服务器

在ESP8266 NodeMcu V3中使用MicroPython编写一个HTTP Web服务器 本文介绍了在ESP8266 NodeMcu V3中如何使用MicroPython通过socket编程建立一个HttpWeb服务器。服务器好后可通过浏览器访问控制ESP8266 NodeMcu V3板载LED开关。 成果:使连接的LED可以从浏览器客户端打开或关闭。 方法:创建套接字并监听套接字。 im...

camel2014的博客 2258

【QT开发教程】Qt中的数据加密与解密

在现代应用程序中,数据加密与解密是保护敏感信息的重要手段。Qt本身并不直接提供数据加密与解密的支持,但可以使用第三方库,如OpenSSL或Crypto++,来实现这一功能。本文将介绍如何在Qt中使用OpenSSL进行数据加密与解密,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1156

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Micropython esp32/8266】网页点灯控制示例

【Micropython esp32/8266】网页点灯控制示例

perseverance51博客 2237

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第一部分

使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第一部分 microdot文档速查

redrun博客 8123

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【亲测免费】 探索ESP8266的WebSocket世界:Micropython WebSockets库深度揭秘

在物联网的世界里,高效、实时的数据交互是关键。今天,我们向您隆重介绍一个专为ESP8266量身打造的开源项目——**Micropython WebSockets实现**。这个项目不仅填补了小型设备上WebSocket支持的空白,还展示了在资源受限环境中实现复杂通信协议的无限可能。 ## 项目简介 Micropython WebSockets是一个面向ESP8266微控制器的WebSocket客...

gitblog_00045的博客 1438

方法,数组初学入门

一、方法(面向对象) 1.概念 执行特定业务逻辑操作的结构体,在Java中是方法,在c语言中是函数。 特点:提高代码复用性 简化代码结构 提高代码可维护性 2.语法 访问修饰符 返回值类型 方法名([参数1,参数2,...]){方法体(执行特定操作内容);} 方法四要素: 1. 访问修饰符:public static |private|protected|默认 2.返回值:方法的返回结果类型,类型可以是:引用类型、基本数据类型 3. 方法名:自定义,命名规则和变量相同 4.参数列表:

weixin_49341271的博客 389

使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第三部分

上一章的http服务有个缺点,就是每次都要发送一个请求,如果我们让这个请求保持长连接,这样效率就提高了,在MicroPython设备 新建目录结构。于是websocket就是为此而生的。main.py (程序主入口)public 存放网页内容。lib 存放一些库文件。

redrun博客 2412

WebSocket原理及用Python实现的应用

handle_message`函数定义了处理客户端消息的逻辑,它使用`async for`循环接收客户端发送的消息,并通过`await websocket.send()`方法将消息发送给客户端。3. 客户端收到服务器的响应后,再次发送HTTP请求,但这次请求已经切换为WebSocket协议,请求头中包含Sec-WebSocket-Key字段,用于生成握手响应。最后,我们使用`websockets.serve()`函数启动WebSocket服务器,并通过`asyncio`库的事件循环来运行服务器。

lu_123456的专栏 921

Microdot是一个可以在micropython中搭建物联网web服务器的框架

Microdot一个可以在micropytho中搭建物联网web服务器的框架 micordot英文官网 只要是支持micropython的设备都可以使用它

redrun博客 5523

探索智能边缘:ESP8266web——微小而强大的嵌入式Web服务器

探索智能边缘:ESP8266web——微小而强大的嵌入式Web服务器 在物联网(IoT)的广阔天地中,ESP8266web项目犹如一匹黑马,以其独特魅力和强大功能吸引了众多开发者的眼球。本文旨在带你深入了解这一开源宝藏,探讨其技术细节,应用场景,以及它独一无二的特点。 项目介绍 ESP8266web是一个专为ESP8266设计的轻量级Web服务器,它不仅仅支持基础的HTTP服务,还能通过TCP2U...

gitblog_00339的博客 973

推荐开源项目:ESP8266Web - 超小型ESP8266 Web服务器

推荐开源项目:ESP8266Web - 超小型ESP8266 Web服务器 1、项目介绍 ESP8266Web是一个高效而小巧的Web服务器,专为ESP8266 Wi-Fi微控制器设计。它支持HTTP和WebSocket协议,可用于各种I/O、WiFi和系统变量的实时监控与控制。通过TCP2UART或Modbus RS-485接口,该项目可扩展到其他硬件设备,实现更多功能。 2、项目技术分析 该W...

gitblog_00090的博客 789

探索MicroPython的WebREPL:远程编程的新境界

MicroPython是一个精简版的Python解释器,专为嵌入式系统和微控制器设计,使得在资源受限的设备上也能运行Python代码。其中,`webrepl`是MicroPython的一个重要工具,它允许通过Web接口进行远程编程,极大地提升了开发效率和便捷性。 ## 项目简介 WebREPL是MicroPython生态系统的一部分,提供了一个安全的WebSocket连接,让你能够通过Web浏

gitblog_00100的博客 1173

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 413
下一篇: windows10安装uPycraft
selfceo
博客等级 码龄6年 22粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值