树莓派pico入坑笔记,esp01/01s使用

目录

关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏

说明

关于at指令

WiFi的at指令

UDP的at指令

样例程序

调试助手端输入指令

sta端程序

效果

进阶使用

库函数说明

样例代码


关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏

说明

使用硬件为esp01,01s和01在使用上没有差别,故使用方法通用

esp01操作要使用at指令,详情见官网,esp01固件使用官方默认固件,大小8Mbit

文章使用环境为树莓派pico、circuitpython8.x

esp01默认使用uart,波特率115200

关于uart的使用说明见树莓派pico入坑笔记,uart使用

注意在指令最后加上\r\n作为结束,防止esp01会报error说明指令不合法,在python中,可以在字符串里加\r\n。

uart.write('AT\r\n'.encode('ascii'))

关于at指令

用到的指令涉及wifi ap建立,wifi station端连接,udp连接建立,数据发送,数据接收和断开udp连接,这里只介绍一部分用到的指令

其中WiFi最多支持10人接入,udp和tcp连接支持5人接入,本文只用一人接入

WiFi的at指令

AT+CWMODE=1,设置为station模式,相当于手机连接wifi时手机和路由器中的手机

AT+CWMODE=2,设置为ap模式,相当于手机连接wifi时手机和路由器中的路由器

AT+CWSAP="ESP","1234567890",5,3,建立wifi,参数分别时WiFi名称、密码、信道号,加密方式,后两个参数默认使用5和3即可,此外还有其他参数,这里用不到,具体含义和功能见官网

AT+CWJAP="ESP","1234567890",连接wifi,参数为wifi名称和密码

AT+CWLIF,查询连接到 ESP SoftAP 的 station 信息

AT+CIPAP?,查询 ESP SoftAP 的 IP 地址

ATE0,关闭回显,ATE1,开启回显,回显是指输入的命令会和响应数据一同返回给用户

UDP的at指令

AT+CIPMUX=1,启用多连接模式

AT+CIPSTART=4,"UDP","192.168.4.1",1113,1113,0,和该ip地址建立udp连接,该链接id设置为4(0~4),本地udp端口设置为1113,远端udp端口为1113,固定连接模式0

AT+CIPSEND=4,5 ,向id为4 的连接发送长度为5字节的数据,esp会返回>提示用户输入要发送的数据,如果输入的超过5字节,将只发送前5个字节

AT+CIPCLOSE=4,断开和id为4的连接

样例程序

ap端默认ip192.168.4.1,端口1113,sta端默认ip192.168.4.2,端口1113,

已经在电脑端使用安信可调试助手搭建了ap端并建立和192.168.4.2的udp连接

AT指令应答一般包含OK字样,有、可用作为发送下一条指令的依据,防止指令过快而没有被执行

注意发送的数据中有'\'等字符需要加\作为转义,具体注意事项见官网

调试助手端输入指令

AT+CWMODE=2

AT+CWSAP="ESP","1234567890",5,3

AT+CIPMUX=1

AT+CIPSTART=4,"UDP","192.168.4.2",1113,1113,0

sta端程序

import board
import busio
from time import sleepU= busio.UART(board.GP4,board.GP5,baudrate=115200)def Cmd_Send(cmd: str):U.write(bytearray(cmd + '\r\n', 'ascii'))while True:d = U.read(64)U.reset_input_buffer()if d:string = d.decode('ascii')if ('OK' in string) or ('CLOSED' in string) or ('boot' in string):break Cmd_Send('AT+CWMODE=1')
Cmd_Send('ATE0')ssid: str ='ESP'
passworld: str ='1234567890'
Cmd_Send('AT+CWJAP="{}","{}"'.format(ssid,passworld))id: int =4
host: str ='192.168.4.1'
hport: int =1113
lport: int =1113
Cmd_Send('AT+CIPMUX=1')
Cmd_Send('AT+CIPSTART={},"UDP","{}",{},{},0'.format(id,host,hport,lport))data: str ='text'
id: int = 4
Cmd_Send('AT+CIPSEND={},{}'.format(id, len(data)))
Cmd_Send(data)Cmd_Send('AT+CIPCLOSE={}'.format(id))

效果

接收的数据为

+IPD,4,4:text,其中+IPD,4,4意思是接收到连接4发来的4字节数据:text

进阶使用

esp01库下载,本库针对udp单链接设计,读者可用根据需要进行修改

库函数说明

def Esp01_Init(uart: busio.UART,debug: bool =False )

初始化,提供esp连接的uart,第二个参数为True时将输出发送的每一条at指令,作为调试信息

def Wifi_Sta_Init(ssid: str ='ESP',passworld: str ='1234567890')

WiFi sta初始化,默认wifi名称和密码见上

def Wifi_Ap_Init(ssid: str ='ESP',passworld: str ='1234567890')

wifi ap初始化,默认wifi名称和密码见上

def Udp_Server_Init(id: int =4,host: str ='192.168.4.2',hport: int =1113,lport: int =1113)  

udp server初始化,默认连接id、ip、本地端口和连接端口见上

def Udp_Client_Init(id: int =4,host: str ='192.168.4.1',hport: int =1113,lport: int =1113)

udp client初始化,默认连接id、ip、本地端口和连接端口见上

def Udp_Deinit(id: int =4)

udp断开连接,默认连接id见上

def Cmd_Send(cmd: str) 

发送at指令,收到正确应答后返回,返回时清空uart缓冲

def Data_Get() -> str

接收传进的数据,返回时清空uart缓冲

def Data_Send(data: str ='text', id: int = 4)

发送数据,默认发送数据和发送到的连接id见上

样例代码

import esp01 as esp
import board
import busio
from time import sleep
uart= busio.UART(board.GP4,board.GP5,baudrate=115200)
# 初始化,缺省默认不开启调试输出
esp.Esp01_Init(uart)
data='hello'
# 缺省默认wifi接入
esp.Wifi_Sta_Init()
# 缺省默认udp连接
esp.Udp_Client_Init()
# 缺省发送默认数据
esp.Data_Send()
# esp.Data_Send(data)#发送自定义数据
# 缺省断开默认连接
esp.Udp_Deinit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秋招突击——7/12——复习{每日温度、完全平方数、无重复最长子串}——新作{字节面试——控制多线程按照顺序输出}

文章目录 引言复习每日温度复习实现参考学习 完全平方数复习实现参考学习 无重复字符的最长子串复习实现参考学习 新作控制多线程输出Java实现线程——不使用锁实现使用synchronized关键实现——使用锁实现使用synchronized、wait和notify关键字实现 总结 引言 今天又要面试字…

安全防御,防火墙配置NAT转换智能选举综合实验

一、实验拓扑图 二、实验需求 1、办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 2、分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 3、多出口环境基于带宽比例进行选路,但是&…

DP(3) | 0-1背包 | Java | LeetCode 1049, 494, 474 做题总结(474未完)

1049. 最后一块石头的重量 II 和 LC 416.分割等和子集 类似 思路(我没有思路): 两块石头相撞,这里没有想到的一个点是,相撞的两个石头要几乎相似 以示例1为例,stones [2,7,4,1,8,1],如果从左到…

Collections:专为集合框架而生的工具类

Collections 是 JDK 提供的一个工具类,位于 java.util 包下,提供了一系列的静态方法。 排序操作 reverse(List list):反转顺序shuffle(List list):洗牌,将顺序打乱sort(List list):自然升序sort(List lis…

解答|服务器只能开22端口可以申请IP地址SSL证书吗?

IP地址SSL证书,是一种专门颁发给公网IP地址的SSL证书,而不是常见的基于域名的SSL证书。SSL证书主要用于保障数据在客户端(如用户的浏览器)和服务器之间传输时的加密性和安全性,以防止数据被截取或篡改。 服务器只能开…

github actions方式拉取docker镜像

参考: https://wkdaily.cpolar.cn/archives/gc 注意github actions提供的免费虚拟机空间有限,空间不足会报错,查看大概语句有10来G 我在workflow file里加了df -h 运行查看磁盘情况: 通过pwd命令,可以知道运行目录/ho…

ETL数据集成丨主流ETL工具(ETLCloud、DataX、Kettle)数据传输性能大PK

目前市面上的ETL工具众多,为了方便广大企业用户在选择ETL工具时有一个更直观性能方面的参考值,我们选取了目前市面上最流行的三款ETL工具(ETLCloud、DataX、Kettle)来作为本次性能传输的代表,虽然性能测试数据有很多相…

【JavaScript】解决 JavaScript 语言报错:Uncaught TypeError: XYZ is not a function

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 变量或对象属性类型错误2. 函数名拼写错误或覆盖3. 作用域问题导致的函数未定义4. 调用未初始化的函数 四、解决方案与预防措施1. 确保变量类型正确2. 检查拼写错误3. 注意作用域4. 初始化变量 五、示例代码…

C#中的反射

dll和exe文件的区别 用途: .exe(可执行文件):是可以直接运行的程序文件。当你双击一个 .exe 文件或在命令行中输入它的名字,操作系统会加载并执行这个程序。 .dll(动态链接库):包含…

graphviz subgraph添加边界框

subgraph name 属性必须要以cluster开头。 A Quick Introduction to GraphvizAn awesome tool for software documentation and visualizing graphshttps://www.worthe-it.co.za/blog/2017-09-19-quick-introduction-to-graphviz.html digraph {rankdir"LR"// the n…

【探索Linux】P.39(传输层 —— TCP的三次 “握手” 和四次 “挥手” )

阅读导航 引言一、TCP的三次握手1. 简介2. 图解三次握手3. 名词解释(1)SYN(同步序列编号)包(2)SYN-ACK(同步确认)包(3)ACK(确认)包 4.…

基于matlab的SVR回归模型

1 原理 SVR(Support Vector Regression)回归预测原理,基于支持向量机(SVM)的回归分支,其核心思想是通过寻找一个最优的超平面来进行回归预测,并处理非线性回归问题。以下是SVR回归预测原理的系统…

浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法

前言 本次设置只针对配置V偏,其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考:浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

面试内容集合

用例设计方法 (一)等价类划分  常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理…

智慧校园毕业管理:全面解读毕业批次功能

在智慧校园的毕业管理系统中,毕业批次模块通过其精心设计的毕业批次功能,为即将离校的学子们提供了一个高效、便捷的过渡平台。这一特色功能聚焦于特定时间段内的毕业生群体,巧妙融合数字技术,从信息核实到最终的离校程序&#xf…

代码随想录二刷7.22|977.有序数组的平方

暴力解法: ——如果想暴力解决这个问题的话,可以像题目那样,先将每一个元素平方,然后再排序 双指针: ——从题目中找到的信息:这是一个非递减顺序的整数数组,从例子中,可以容易看…

西邮计科嵌入式复习

西邮嵌入式复习 一、第一章复习二、第二章复习三、第三章复习四、第四章复习 一、第一章复习 二、第二章复习 三、第三章复习 四、第四章复习

内网服务器通过squid代理访问外网

一、背景 现在要对172.16.58.158服务器进行openssh升级操作,我用之前写好的升级脚本执行后,发现没有备份旧的ssh程序文件,然后还卸载了oenssl-devel,然后我发现其他服务器ssh该服务器失败。同时脚本执行时报错“ configure: error: *** zlib.h missing - please install first …

无人驾驶大热,新能源汽车智能化中的算网支持

来源新华社:百度“萝卜快跑”全无人驾驶汽车行驶在路上 当前,新能源汽车产业数智化已成为全球汽车产业数字化转型的焦点。一方面,随着人工智能、大数据、云计算等技术的深度融合,新能源汽车在自动驾驶、智能互联、能源管理等方面…

xmind梳理测试点,根据这些测试点去写测试用例

基本流(冒烟用例必写) 备选流 公共测试点: