使用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;并创建共享目录和网页文件&…...
Java基础——继承和多态
目录 一、继承 继承的定义: 继承的基本用法: 如何调用父类的方法? 二、多态 多态性的好处 多态中的强制类型转换: 包的命名规则——域名倒叙 一、继承 继承的定义: 继承是面向对象编程中的一种机制,…...
长江存储嵌入式面试题及参考答案
构造函数、析构函数可以为虚函数吗,为什么? 构造函数最好不要是虚函数。原因如下: 从对象的生命周期角度来看,虚函数的调用是通过虚函数表(vtable)来实现的。而在构造函数执行的时候,对象还没有完全构造好,vtable 可能还没有被正确地初始化。如果构造函数是虚函数,在…...
WordPress设置自动更新CSS版本号
WordPress 通常会在引用 CSS 文件时添加版本号参数(?verx.x.x)。如果版本号未更新,浏览器可能继续加载旧的文件。 解决方法:确保你在 functions.php 文件中正确加载了 CSS 文件,并动态更新版本号。例如在functions.p…...
【Qt聊天室】客户端实现总结
目录 1. 项目概述 2. 功能实现 2.1 主窗口设计 2.2 功能性窗口 2.3 主界面功能实现 2.4 聊天界面功能实现 2.5 个人信息功能开发 2.6 用户信息界面设置功能 2.7 单聊与群聊 2.8 登录窗口 2.9 消息功能 3. 核心设计逻辑 3.1 核心类 3.2 前后端交互与DataCenter 4…...
服务器数据恢复—raid5阵列故障导致上层系统分区无法识别的数据恢复案例
服务器数据恢复环境: 某品牌DL380服务器,服务器中三块SAS硬盘组建了一组raid5阵列。服务器安装Windows Server操作系统,划分了3个分区,D分区存放数据库,E分区存放数据库备份。 服务器故障: RAID5阵列中有一…...
mysql bin log分析
centos7 部署collabora office (yum版 与 docker)_collabora office部署-CSDN博客 1.下载polardb的bin log文件 show binary logs; mysqlbinlog -u 用户名 -p -h 地址 --read-from-remote-server --raw mysql-bin.001768 mysqlbinlog --no-defaults --databasexxx --base64-…...
深入理解 Vue 3 中的 emit
深入理解 Vue 3 中的 emit 在 Vue 3 中,组件通信是开发中非常重要的一部分,其中通过 emit 实现父子组件通信是最常见的方式之一。emit 的作用是:子组件可以通过触发自定义事件将数据传递给父组件。 在本篇文章中,我们将从以下几…...
#lwIP 的 Raw API 使用指南
1. 简介 lwIP(Lightweight IP)是一个为嵌入式系统设计的开源轻量级 TCP/IP 协议栈。它旨在提供尽可能小的内存占用和高效的性能,适用于资源受限的设备,如物联网设备、路由器和工业控制系统。lwIP 支持多种协议,包括 I…...
Elasticsearch开启认证及kibana密码登陆
Elasticsearch不允许root用户运行,使用root用户为其创建一个用户es,为用户es配置密码,并切换到es用户。 adduser elastic passwd elastic su elasticElasticsearch(简称ES)是一个基于Lucene的搜索服务器。它提供了一个分布式、多用户能力的全文搜索引擎,基于RESTful web…...
【论文阅读】Large Language Models for Equivalent Mutant Detection: How Far Are We?
阅读笔记:Large Language Models for Equivalent Mutant Detection: How Far Are We? 1. 来源出处 本文发表于《ISSTA’24, September 16–20, 2024, Vienna, Austria》会议,由Zhao Tian, Honglin Shu, Dong Wang, Xuejie Cao, Yasutaka Kamei和Junji…...
安徽制作网站的公司哪家好/交换友情链接的注意事项
这篇文章只是纯粹分析python pyc文件格式,主要是关于pyc在文件中的存储方式进行了解析。pyc是python字节码在文件中存储的方式,而在虚拟机运行时环境中对应PyCodeObject对象。关于PyFrameObject以及PyFunctionObject等运行时结构,后续希望学习…...
做js题目的网站/网络公关公司收费
第1步 - 从一段文字和一张图片开始 对于本练习,我们希望将图像强制到右侧以允许内容与其一起流动。我们还想在图像的左侧和底侧添加边距以推送内容。最后,我们想在图像周围添加边框。我们从一段文本中的图像开始。 代码如下所示: <!DOC…...
网站手机端优化/网络营销推广策略
中国移动公布了一季度的业绩,业绩显示盈利有所增长,平均日赚约2.85亿元,看起来这个数据很惊人,不过与此前的赚钱能力相比,它的赚钱能力已有所下滑。中国移动2021年赚了1159亿元,日赚3.17亿,对比…...
外包公司是干嘛的/网站优化一年多少钱
用JDOM读取XML文件需先用org.jdom.input.SAXBuilder对象的build()方法创建Document对象,然后用Document类、Element类等的方法读取所需的内容。IBM : developerWorks 中国站上有一个很好的例子: <?xml version"1.0" encoding"UTF-8"?> …...
河北住房和城乡建设网站/谷歌浏览器手机版免费官方下载
启动项目java -jar /目录 &例如 nohup java -jar /data/wwwroot/springboot.kingsuper.net/demo.jar & 重新启动项目,要先将之前的端口杀死查询端口netstat -tunlp 杀死端口 kill -9 端口例如 kill -9 18607转载于:https://www.cnblogs.com/SeaWxx/p/109377…...
阿里云个人怎么免费做网站/新闻摘抄2022最新20篇
简单谈谈Server2008的NAP<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />刚才看到一个讨论NAP的帖子,感觉这里好像不少人对NAP还不是很了解。我就用我的理解给简单介绍一下吧。什么是NAP?NAP-Network Acc…...