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

news2024/9/23 21:20:42

目录

关于树莓派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 sleep

U= 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.coloradmin.cn/o/1924684.html

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

相关文章

【Superset】dashboard 自定义URL

URL设置 在发布仪表盘(dashboard)后,可以通过修改看板属性中的SLUG等,生成url 举例: http://localhost:8090/superset/dashboard/test/ 参数设置 以下 URL 参数可用于修改仪表板的呈现方式:此处参考了官…

Linux 下 redis 集群部署

目录 1. redis下载 2. 环境准备 3. redis部署 3.1 修改系统配置文件 3.2 开放端口 3.3 安装 redis 3.4 验证 本文将以三台服务器为例,介绍在 linux 系统下redis的部署方式。 1. redis下载 下载地址:Index of /releases/ 选择需要的介质下载&am…

[NSSRound#4 SWPU]1zweb

非预期解&#xff1a; 输入/flag&#xff0c;点击查看 预期解&#xff1a; upload.php <?php if ($_FILES["file"]["error"] > 0){echo "上传异常"; } else{$allowedExts array("gif", "jpeg", "jpg"…

GuLi商城-商品服务-API-品牌管理-JSR303自定义校验注解

自定义注解规则: 可以参考@NotNull注解 package com.nanjing.common.valid;import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target;i…

数据结构(空间复杂度介绍)超详细!!!

1. 数据结构前言 1.1 数据结构 数据结构是计算机存储、组织数据的形式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合 1.2 算法 算法&#xff1a;良好的计算过程&#xff0c;它取一个或一组的值为输入&#xff0c;并产生出一个或一组的值作为输出。即算法经…

react的解构赋值

我最近在用react讨生活。我的感觉&#xff0c;react开发效率不高。这当然应该是我还不熟悉react的缘故。但是&#xff0c;在阅读react代码过程中&#xff0c;其中一个容易困惑的地方是它到处充斥着的解构赋值。当然了&#xff0c;解构赋值并不是React特有的功能&#xff0c;而是…

多表联合的查询(实例)、对于前端返回数据有很多表,可以分开操作、debug调试教程

2024.7.13 一、 对于多表的更深层的认识1. 认识2. 多表联合查询的列子&#xff1a;3. 对于多表查询的进一步认识4. 在实现功能的时候&#xff0c;原本对于省市县这样的表&#xff0c;对于项目的要求&#xff0c;是直接全部查询出来&#xff0c;然后开始使用&#xff0c;但我想着…

在 CentOS 6.4 VPS 上安装和保护 phpMyAdmin 的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 许多网站和应用程序需要数据库来存储和管理大量信息。MySQL 和 MariaDB 是流行的数据库管理系统&#xff0c;因为它们具有灵活性、…

redisTemplate报错为nil,通过redis-cli查看前缀有乱码

public void set(String key, String value, long timeout) {redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);} 改完之后 public void set(String key, String value, long timeout) {redisTemplate.setKeySerializer(new StringRedisSerializer()…

前端工程化10-webpack静态的模块化打包工具之各种loader处理器

9.1、案例编写 我们创建一个component.js 通过JavaScript创建了一个元素&#xff0c;并且希望给它设置一些样式&#xff1b; 我们自己写的css,要把他加入到Webpack的图结构当中&#xff0c;这样才能被webpack检测到进行打包&#xff0c; style.css–>div_cn.js–>main…

万界星空科技MES系统:食品加工安全的实时监控与智能管理

万界星空科技MES系统通过集成多种技术和功能&#xff0c;能够实时监控食品加工过程中各环节的安全风险。以下是对该系统如何实现实时监控的详细分析&#xff1a; 一、集成传感器和数据分析技术 万界星空科技MES系统利用集成的传感器和数据分析技术&#xff0c;实时监控生产过程…

Linux rsync文件同步工具

scp的不足 1. 性能问题 单线程传输 SCP只使用单线程进行传输&#xff0c;这意味着在传输大文件或大量小文件时&#xff0c;其传输速度和效率可能不如其他多线程工具。 无法压缩数据传输 SCP不支持内置的压缩机制&#xff0c;这在传输大文件时会导致带宽使用效率较低。 2.…

神经网络以及简单的神经网络模型实现

神经网络基本概念&#xff1a; 神经元&#xff08;Neuron&#xff09;&#xff1a; 神经网络的基本单元&#xff0c;接收输入&#xff0c;应用权重并通过激活函数生成输出。 层&#xff08;Layer&#xff09;&#xff1a; 神经网络由多层神经元组成。常见的层包括输入层、隐藏层…

【MySQL 进阶】MySQL 程序 -- 详解

一、MySQL 程序简介 MySQL 安装完成通常会包含如下程序&#xff1a; 1、Linux 系统 程序⼀般在 /usr/bin 目录下&#xff0c;可以通过命令查看&#xff1a; 2、Windows系统 目录&#xff1a;你的安装路径\MySQL Server 8.0\bin&#xff0c;可以通过命令查看&#xff1a; 可…

Vue el-input 限制输入内容

&#x1f914;日常项目中经常遇到既要el-input的样式&#xff0c;又要el-input-number限制&#xff0c;所以需要绑定input事件进行约束输入限制。 以下使用自定义指令进行约束el-input输入的值&#xff0c;便于后期统一管理和拓展。 预览 代码 <!DOCTYPE html> <ht…

STM32入门开发操作记录(二)——LED与蜂鸣器

目录 一、工程模板二、点亮主板1. 配置寄存器2. 调用库函数 三、LED1. 闪烁2. 流水灯 四、蜂鸣器 一、工程模板 参照第一篇&#xff0c;新建工程目录ProjectMould&#xff0c;将先前打包好的Start&#xff0c;Library和User文件^C^V过来&#xff0c;并在Keil5内完成器件支持包的…

[MySQL][表操作]详细讲解

目录 1.创建表1.基本语法2.创建表案例 2.查看表结构3.修改表1.语法2.示例3.modify和change区别 4.删除表 1.创建表 1.基本语法 语法&#xff1a; CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engin…

阿里云产品流转

本文主要记述如何使用阿里云对数据进行流转&#xff0c;这里只是以topic流转&#xff08;再发布&#xff09;为例进行说明&#xff0c;可能还会有其他类型的流转&#xff0c;不同服务器的流转也可能会不一样&#xff0c;但应该大致相同。 1 创建设备 具体细节可看&#xff1a;…

STM32F103定时器中断详解

目录 目录 目录 前言 一.什么是定时器 1.1 STM32F103定时器概述 1.2基本定时器 1.2通用定时器 1.3高级定时器 1.4 三种定时器区别 基本定时器&#xff08;Basic Timer&#xff09; 通用定时器&#xff08;General-Purpose Timer&#xff09; 高级定时器&#xff08;Advanced Ti…

企业网三层架构

企业网三层架构&#xff1a;是一种层次化模型设计&#xff0c;旨在将复杂的网络设计分成三个层次&#xff0c;每个层次都着重于某些特定的功能&#xff0c;以提高效率和稳定性。 企业网三层架构层次&#xff1a; 接入层&#xff1a;使终端设备接入到网络中来&#xff0c;提供…