Thonny IDE 构建picoweb实现Webserver-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6540|回复: 5

Thonny IDE 构建picoweb实现Webserver

[复制链接]
发表于 2020-10-8 23:21 | 显示全部楼层 |阅读模式
本帖最后由 topdog 于 2020-10-9 06:32 编辑

上一讲我们谈了Thonny IDE安装,本讲探讨Micropython官方ESP32固件通过picoweb实现HTTP Webserver。
1,使用Thonny IDE一键烧写固件;
本讲使用的是ESP32 WROVER 4MB FLASH 外带8MB PSRAM电子模块,我们去Micropython官网下载型号对应的固件,基本上每天都会发布新的固件,下载地址
把固件下载到本地PC,打开Thonny IDE,用USB线把ESP32连接到PC上。

点击-->运行解释器-->解释器和端口的下拉列表做好选择

运行解释器.JPG

点击固件下方长按钮-->下拉reload选择串口-->点击browse找到下载好的固件-->点击install

固件.JPG

全片擦除


擦除.JPG

烧写固件

烧写.JPG

成功

成功.JPG

根据提示按ESP32开发板的RST键,Thonny IDE下部shell窗口显示出ESP32重启反馈的片内信息。

重启.JPG

2,使用Thonny IDE下载文件,建立依赖的驱动;为了比较直观的观察ESP32片上的文件变化情况,点击视图-->勾选文件,重启Thonny IDE左侧就会出现文件窗口。上部是ESP32片上信息,下部是本地PC文件夹信息。
文件.jpg

为了感性的认识,我们先看一下最终的框架结构。分为三个部分:第一;lib里面是程序运行需要的驱动文件,第二;index.html超级文本写成的HTTP Webserver效果 第三;main.py是执行程序的入口。


完整的架构.JPG

首先介绍ESP32联网后用upip下载到片上的方法:
A:点击文件窗口boot.py,复制黏贴下面的程序,把ssid和password修改成你的无线网络名称和密码。点击文件-->保存,按ESP32开发板的RST键,shell窗口会打印出ESP32在局域网中的IP地址,说明联网成功。

[pre]try:
  import usocket as socket
except:
  import socket

from machine import Pin
import network

import esp
esp.osdebug(None)

import gc
gc.collect()

ssid = 'ssid'
password = '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(21, Pin.OUT)[/pre]
B:联网成功后,在shell窗口输入:

import upip
upip.install('picoweb')


upip.install('picoweb').JPG

Micropython会在标准库内下载相应的依赖到片上lib文件夹。picoweb、uasyncio和pkg_resources.py属于micropython-lib里面包含的,可以用此方法直接下载。



C:对非标准的ulogging.py如何下载呢?我们可以去https://pypi.org/查询,下载到本地,解压以后,再上传到ESP32片上lib文件夹。

D:当然大家还可以到我的 https://github.com/pdtopdog/picoweb-micropython-esp32 仓库去下载到本地pc再上载到ESP32片上,但是要把前面第2A修改过的boot.py删除。没有修改过的不必删除。

把main.py里面的ssid和password修改成你的无线网络名称和密码,保存到ESP32片上呦
ssid.JPG

直接选中main.py,点击绿色的运行当前脚本或者快捷键F5,shell窗口反馈运行结果,HTTP Webserver在局域网中的地址和端口。

链接地址.JPG
点击此链接,默认浏览器呈现出的效果。

最后效果.JPG

picoweb是一个“微”web微框架(因此,“pico-framework”),用于使用完全无膨胀的Python实现,Pycopy的完全无膨胀的web应用程序。其特点:从一开始就是异步的,为Pycopy (uasyncio)使用不膨胀的异步类库。这意味着picoweb可以同时处理多个并发请求(使用I/O和/或CPU多路复用)。小内存的使用。一个普通的web应用程序的初始版本需要大约64K的堆,从那以后,它被优化为允许在大约36K的堆中运行更多或更少的现实web应用程序。计划对所有级别(Pycopy和up)进行更多的优化(但是可能会导致API更改)。API与一些著名的Python web微框架有密切关系,因此它应该是一个简单的开始。





(完)

















发表于 2020-10-18 09:14 | 显示全部楼层
谢谢分享,我以前还没注意thonny的固件烧写功能,很棒
 楼主| 发表于 2020-10-18 20:47 | 显示全部楼层
沧海笑1122 发表于 2020-10-18 09:14
谢谢分享,我以前还没注意thonny的固件烧写功能,很棒

谢谢沧海老师的关心和指导。
发表于 2020-11-2 14:03 | 显示全部楼层
ulogging模块必须另外安装,不然出错。
 楼主| 发表于 2020-11-2 21:15 | 显示全部楼层
a461624201 发表于 2020-11-2 14:03
ulogging模块必须另外安装,不然出错。

C:对非标准的ulogging.py如何下载呢?我们可以去https://pypi.org/查询,下载到本地,解压以后,再上传到ESP32片上lib文件夹。
发表于 2022-5-2 23:28 | 显示全部楼层
安装很容易出错,最好的方式是用楼主的文件【 https://github.com/pdtopdog/picoweb-micropython-esp32】,直接上传到ESP32开发板上,完美。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:42 , Processed in 0.198002 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表