使用esp32c3开发板通过wifi连网络web服务器
实验基本拓扑就是:
esp32c3开发板通过Wifi模块连上局域网,局域网一台服务器通过FastAPI提供8000端口的web服务,在esp32c3开发板中烧录micropython固件,在python交互模式下,连上Wifi模块,并使用socket模块获取8000端口的web数据信息。
下面为AI画图,意思到了,细节就不追究了:

快速启动测试web服务器
启动8000端口的web服务,首先
安装fastapi库
pip install fastapi[standard]
创建openapi.py文件:
from fastapi import FastAPIapp = FastAPI(openapi_url="/api/v1/openapi.json")@app.get("/items/")
async def read_items():return [{"name": "Foo"}]
启动web服务
然后执行:
fastapi run openapi.py
启动后显示:
INFO Using import string openapi:app ╭─────────── FastAPI CLI - Production mode ───────────╮ │ │ │ Serving at: http://0.0.0.0:8000 │ │ │ │ API docs: http://0.0.0.0:8000/docs │ │ │ │ Running in production mode, for development use: │ │ │ │ fastapi dev │ │ │ ╰─────────────────────────────────────────────────────╯ INFO: Started server process [82331]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
在本次实验里,web服务器的ip地址为192.168.0.101 ,所以后面开发板里需要设置这个ip地址。
esp32c3开发板配置
esp32c3开发板烧录micropython 交互环境,参见:esp32c3安装micropython环境-CSDN博客
烧录好固件,启动开发板,进入micropython交互环境。usb串口连接开发板的方法参考:esp32-c3开发板开箱第一步:连上usb口看log信息-CSDN博客
usb串口连上开发板后,可以先输入python命令测试一下,比如:
>>> a = 1
>>> b = 2
>>> print(a+b)
3
这样就证明python环境正常。
将下面代码黏贴进去,注意WiFi名字和密码需要修改为当前Wifi的信息:
# connect/ show IP config a specific network interface
import network
import time
nic = network.WLAN(network.STA_IF)
nic.active(True)
# nic.scan()
if not nic.isconnected():nic.connect("showwifi网络", "wifi密码")print("Waiting for connection...")while not nic.isconnected():time.sleep(1)print(nic.ipconfig("addr4"))# now use socket as usual
import socket
addr = socket.getaddrinfo('192.168.0.101', 8000)[0][-1]
s = socket.socket()
s.connect(addr)
s.send(b'GET /items/ HTTP/1.1\r\nHost: \r\n\r\n')
data = s.recv(1000)
s.close()print(data)
注意,因为开发板缓冲区有限,所以需要分段黏贴代码,分段执行。
运行后,应该输出data信息:
>>> print(data)
b'HTTP/1.1 200 OK\r\ndate: Sun, 17 Nov 2024 02:17:24 GMT\r\nserver: uvicorn\r\ncontent-length: 16\r\ncontent-type: application/json\r\n\r\n[{"name":"Foo"}]'
可以看到最后一部分的输出:application/json\r\n\r\n[{"name":"Foo"}
这部分输出跟浏览器看到的信息一样,证明实验成功!
一块十几元的开发板,就可以登录web网站,能从web网站拿到自己需要的信息,真的太了不起了!
况且esp32c3的主频达到160MHz,这已经达到当年奔腾2 CPU的主频程度了,很多工作它都可以做了,科技的进步真的很快!
esp32c3+FastAPI,大有可为啊!
相关文章:
使用esp32c3开发板通过wifi连网络web服务器
实验基本拓扑就是: esp32c3开发板通过Wifi模块连上局域网,局域网一台服务器通过FastAPI提供8000端口的web服务,在esp32c3开发板中烧录micropython固件,在python交互模式下,连上Wifi模块,并使用socket模块获…...
供应链管理、一件代发系统功能及源码分享 PHP+Mysql
随着电商行业的不断发展,传统的库存管理模式已经逐渐无法满足市场需求。越来越多的企业选择“一件代发”模式,即商家不需要自己储备商品库存,而是将订单直接转给供应商,由供应商直接进行发货。这种方式极大地降低了企业的运营成本…...
Windows docker下载minio出现“Using default tag: latestError response from daemon”
Windows docker下载minio出现 Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded 此类情况,一般为镜像地址问题。 {"registry-mirrors": ["https://docker.re…...
工厂模式-简单工厂模式
1、简单工厂模式 在工厂类的静态方法中,根据要创建产品的type类型,通过if else来返回对应的对象 1.1定义产品抽象接口Product /*** @desc 产品抽象接口**/ public interface Product {void use(); } 1.2 定义具体的产品A和B /*** @desc 产品A**/ public class ProductA i…...
【linux】使用minicom调试串口
在Linux中使用minicom进行串口通信调试,你需要先确保已经安装了minicom。如果还没有安装,你可以使用包管理器进行安装,例如在Debian或Ubuntu系统上使用apt-get,在Red Hat或CentOS系统上使用yum或dnf。 安装完成后,你需…...
C# 异常处理、多个异常、自定义异常处理
C# 异常 异常是为处理异常的发生而设计的,这些特殊情况会改变程序执行的正常流程。 引发或引发异常。 在执行应用期间,许多事情可能出错。 磁盘可能已满,我们无法保存文件。 当我们的应用尝试连接到站点时,Internet 连接可能会断…...
【从零开始的LeetCode-算法】3210. 找出加密后的字符串
给你一个字符串 s 和一个整数 k。请你使用以下算法加密字符串: 对于字符串 s 中的每个字符 c,用字符串中 c 后面的第 k 个字符替换 c(以循环方式)。 返回加密后的字符串。 示例 1: 输入: s "dart&…...
redis linux 安装
下载解压 https://download.redis.io/releases/ tar -zvxf ----redis-7.4.1编译 进入目录下 # redis 依赖c yum install gcc-cmake可能会有问题,所以记得换源# 安装到 /usr/local/redis make PREFIX/usr/local/redis installcd src ./redis-serverredis.confi…...
springboot006基于SpringBoot的网上订餐系统(源码+包运行+LW+技术指导)
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…...
【QNX】QNX侧如何抓取日志?
🦋slog2info 是 QNX 实时操作系统中的一个实用工具,用于读取和解析 QNX 的系统日志(System Logger v2,简称 slog2)。 🦋slog2 是 QNX 提供的用于记录系统和应用程序日志信息的服务,它比传统的 syslog 服务更加强大和灵活,能够处理大量日志信息,并提供高级的过滤和检…...
深度学习:计算卷积神经网络中输出特征图尺寸的关键公式
计算卷积神经网络中输出特征图尺寸的关键公式 在设计卷积神经网络(CNN)时,准确计算每个卷积层的输出特征图尺寸是至关重要的。这不仅关系到网络的结构设计,也直接影响参数优化和整体性能。适当的计算可以确保网络层正确连接&…...
【惠州大亚湾】之维修戴尔服务器DELLR730XD
1:广东省惠州市大亚湾某游客服务中心来电报修1台DELL PowerEdge R730xd服务器无法正常开机的问题。听该负责描述这台服务器因为服务中心电力切换导致意外关机,来电后发现就无法正常开机了。所以找到我们希望配合维修。 2:该机器由于特别着急…...
跟我学C++中级篇——Design Patterns的通俗说法
一、设计模式 Design patterns,软件设计模式,它是什么?很多初学者会被这种高大上的东西给唬住。其实,所有的书籍上都说得很清楚,只是它们把这种说法说得很高大上而已。举个简单例子,在抖音上经常可以看到介…...
消息队列原理面试题及参考答案
什么是消息队列? 消息队列是一种在不同应用程序组件或者系统之间进行异步通信的中间件技术。它就像是一个信息的 “中转站”。从技术层面来讲,消息队列主要由消息生产者、消息队列本身和消息消费者这几个核心部分构成。 消息生产者负责创建消息并将其发送到消息队列中。这些消…...
有序数组的平方(leetcode 977)
一个数组,返回一个所有元素的平方之后依然是一个有序数组。(数组中含负数) 解法一:暴力解法 所有元素平方后再使用快速排序法重新排序,时间复杂度为O(nlogn)。 class Solution { public:vector<int> sortedSqu…...
网页抓取API,让数据获取更简单
网页抓取的过程通常分为以下步骤,尤其是在面对静态网页时: 获取页面 HTML:使用 HTTP 客户端下载目标页面的 HTML 内容。解析 HTML:将下载的 HTML 输入解析器,准备提取内容。提取数据:利用解析器功能&#…...
23.<Spring图书管理系统(强制登录版本)>
在前面两篇,我们基本上实现了图书管理系统所有的功能,但是我们发现没有登录也能对其进行修改。这是非常不安全的。因此这篇文章我们学习如何进行强制登录。只有登录进去才能进行操作。 这不是一个对外开放的项目 这篇文章我们将改写图书管理系统为强制登…...
【插件】重复执行 pytest-repeat
安装 pip3 install pytest-repeat 用法 1.命令行 pytest --count num pytest --count 32.装饰器 pytest.mark.repeat(num) #num运行次数 pytest.mark.repeat(5)#执行结果如下:...
pip/conda install bugs汇总
DNSResolutionError 一直不行,惯防火墙还是不行,可能导致漏洞了; 解决方案: reboot下次try可以刷新DNS缓存: resolvectl flush-cachespip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host‘mirrors.a…...
通过shell脚本分析部署nginx网络服务
通过shell脚本分析部署nginx网络服务 1.接收用户部署的服务名称 [rootlocalhost xzy]# vim 1.sh [rootlocalhost xzy]# chmod x 1.sh [rootlocalhost xzy]# ./1.sh2.判断服务是否安装 已安装;自定义网站配置路径为/www;并创建共享目录和网页文件&…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...
Python的__call__ 方法
在 Python 中,__call__ 是一个特殊的魔术方法(magic method),它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时(例如 obj()),Python 会自动调用该对象的 __call__ 方法…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...
