树莓派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,一经查实,立即删除!

相关文章

【随手记】python大规模数据读取

题目是MT3055 交换排列 python大规模数据读取用这个sys.stdin.read。 import sys input sys.stdin.read data input().split()这个是题解。 import heapqclass UnionFind:def __init__(self, size):self.parent list(range(size))def find(self, x):if self.parent[x] x:…

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

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

Memcached:高性能分布式内存缓存的深度解析

一、璀璨登场:Memcached的基本概念 在浩瀚的数据处理世界中,Memcached犹如一颗璀璨的星辰,以其独特的魅力照亮了动态Web应用的加速之路。作为Memory Cache Daemon的简写,Memcached自诞生之初便肩负着优化性能、减轻数据库负担的重…

安全防御,防火墙配置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],如果从左到…

R 绘图 - 中文支持

R 绘图 - 中文支持 R 是一种广泛使用的统计和数据分析编程语言,它提供了强大的绘图功能。然而,R 的默认设置并不直接支持中文,这可能会在使用 R 进行绘图时造成困扰,尤其是当需要在图表中添加中文标签或标题时。本文将介绍如何在…

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

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

信道估计算法

Least Square Criteria 模型 输入导频序列, x ( n ) , n 0 , 1 , ⋯ , N − 1 x(n),n0,1,\cdots,N-1 x(n),n0,1,⋯,N−1 加性噪声序列: ω ( n ) , n 0 , 1 , ⋯ , N − 1 \omega(n), n 0, 1, \cdots, N-1 ω(n),n0,1,⋯,N−1 输出序列,…

ls命令学习记录2

1.用不同的颜色显示内容 ls --color 除了使用-F选项在文件和文件夹名称后面附加特殊的符号,还可以让shell用不同的颜色显示内容,这样就能够用另一种方法把不同的内容进行分类,将它们区分开来。 $ ls --color adblock_filters.txt fixm3u …

用 netsh wlan show profile 命令查看历史连接过的 wifi

netsh wlan show profile 命令是 Windows 命令行工具中 netsh 的一部分,netsh 是一个强大的网络配置工具。wlan 子命令用于管理和显示无线网络配置。通过 netsh wlan show profile 命令,你可以查看存储在系统中的无线网络配置文件。这些配置文件包含了连…

java中遍历数组的三种方式

文章目录 遍历数组的三种方式1.for循环(1)遍历一维数组(2)遍历二维数组 2.foreach遍历(1).遍历一维数组(2).遍历二维数组 3.Arrays里的toString方法(1).遍历一维数组(2).遍历二维数组 遍历数组的三种方式 1.for循环 (1)遍历一维数组 int[] arr {1,3,2,4,5}; for (int i 0;i…

(算法)硬币问题

问题:有1元,5元,10元,50元,100元,500元的硬币各有C1,C5,C10.C50,C100,C500个。 现在要用这些硬币来支付A元,最小需要多少枚硬币? 该题使用递归算法,利用局部最优解来推导…

最小二乘是什么?

最小二乘法(Least Squares Method)是一种统计方法,用于通过最小化观测数据与模型预测值之间的误差平方和来拟合数据。这种方法广泛应用于回归分析中,尤其是在线性回归模型中。 基本原理 最小二乘法的基本思想是找到模型参数&…

数学建模中的辅助变量、中间变量、指示变量

在数学建模中,除了决策变量外,还有一些其他类型的变量,如中间变量、辅助变量和指示变量。每种变量在模型中都有特定的用途和意义。以下是对这些变量的详细解释: 1. 决策变量(Decision Variables) 定义&am…

求职笔记day3

运动量3.5万步。五园连通未完成。 未考试,朋友建议按代码随想录的框架先刷对应的知识点。 代码随想录 (programmercarl.com) 704. 二分查找 - 力扣(LeetCode) 单词倒排_牛客题霸_牛客网 (nowcoder.com)

5Python的Pandas:数据结构

Pandas是基于强大的NumPy库开发的,它继承了NumPy中的一些数据结构,也继承了NumPy的高效计算特性。 1.Python的数据类型 Python 提供了多种数据类型,用于存储和操作不同类型的数据。以下是一些主要的数据类型: 数值类型&#xff…

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

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

翁恺-C语言程序设计-07-1. 换个格式输出整数

07-1. 换个格式输出整数 让我们用字母B来表示“百”、字母S表示“十”&#xff0c;用“12…n”来表示个位数字n&#xff08;<10&#xff09;&#xff0c;换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234&#xff0c;因为它有2个“百”、3个“十”、以…

2024.7.13刷题记录-牛客小白月赛98(未完)

目录 一、A-骰子魔术_牛客小白月赛98 (nowcoder.com) 1.模拟 2.简洁写法 二、B-最少剩几个&#xff1f;_牛客小白月赛98 (nowcoder.com) 贪心-数学 三、C-两个函数_牛客小白月赛98 (nowcoder.com) 1.模拟 2.逆元 一、A-骰子魔术_牛客小白月赛98 (nowcoder.com) 1.模拟 …

github actions方式拉取docker镜像

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