树莓派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 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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow系列:第四讲:MobileNetV2实战

一. 加载数据集 编写工具类,实现数据集的加载 import keras""" 加载数据集工具类 """class DatasetLoader:def __init__(self, path_url, image_size(224, 224), batch_size32, class_modecategorical):self.path_url path_urlself…

H5的Canvas如何画N叉树数据结构

大家好。我是猿码叔叔,一位有着 5 年Java工作经验的北漂,业余时间喜欢瞎捣鼓,学习一些新东西来丰富自己。看过上一篇 Java 方法调用关系的老铁们,也许遗留了不少疑问,这Java方法调用关系可视化页面就这?这方…

护网HW面试——redis利用方式即复现

参考:https://xz.aliyun.com/t/13071 面试中经常会问到ssrf的打法,讲到ssrf那么就会讲到配合打内网的redis,本篇就介绍redis的打法。 未授权 原理: Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关…

基于SpringBoot的校园志愿者管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架 工具:MyEclipse、Tomcat 系统展示 首页 个人中心 志愿者管理 活动信息…

黑马头条微服务学习day01-环境搭建、SpringCloud微服务(注册发现、网关)

文章目录 项目介绍环境搭建项目背景业务功能技术栈说明 nacos服务器环境准备nacos安装 初始工程搭建环境准备主体结构 app登录需求分析表结构分析手动加密微服务搭建接口定义功能实现登录功能实现 Swagger使用app端网关nginx配置 项目介绍 环境搭建 项目背景 业务功能 技术栈说…

数据结构(Java):树二叉树

目录 1、树型结构 1.1 树的概念 1.2 如何判断树与非树 1.3 树的相关概念 1.4 树的表示形式 1.4.1 孩子兄弟表示法 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的遍历 1、树型结构 1.1 树的概念 树型结构是一种非线…

MySQL复合查询(重点)

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。 基本查询回顾 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J mysql> select * from emp where (sal>500 or jobMANAGER) and ename l…

数据湖仓一体(一) 编译hudi

目录 一、大数据组件版本信息 二、数据湖仓架构 三、数据湖仓组件部署规划 四、编译hudi 一、大数据组件版本信息 hudi-0.14.1zookeeper-3.5.7seatunnel-2.3.4kafka_2.12-3.5.2hadoop-3.3.5mysql-5.7.28apache-hive-3.1.3spark-3.3.1flink-1.17.2apache-dolphinscheduler-3.1.9…

[Vulnhub] Sedna BuilderEngine-CMS+Kernel权限提升

信息收集 IP AddressOpening Ports192.168.8.104TCP:22, 53, 80, 110, 111, 139, 143, 445, 993, 995, 8080, 55679 $ nmap -p- 192.168.8.104 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 …

C++20中的consteval说明符

在C20中,立即函数(immediate function)是指每次调用该函数都会直接或间接产生编译时常量表达式(constant expression)的函数。这些函数在其返回类型前使用consteval关键字进行声明。 立即函数是constexpr函数,具体情况取决于其要求。与constexpr相同&…

半小时获得一张ESG入门证书【详细中英文笔记一】

前些日子,有朋友转发了一则小红书的笔记给我, 标题是《半小时获CFI官方高颜值免费证书 ESG认证》。这对考证狂魔的我来说,必然不能错过啊,有免费的羊毛不薅白不薅。 ESG课程的 CFI 官方网址戳这里:CFI 于是信心满满的…

清华大学孙富春教授团队开发了多模态数字孪生环境,辅助机器人获得复杂的 3C 装配技能

中国是全球3C产品(电脑、通信和消费电子)的主要生产国,全球70%的3C产品产能集中在中国。3C智能制造装备的突破与产业化,对于提升我国制造产业的全球竞争力意义重大。 机器人在计算机、通信和消费电子 (3C) …

常用的设计模式和使用案例汇总

常用的设计模式和使用案例汇总 【一】常用的设计模式介绍【1】设计模式分类【2】软件设计七大原则(OOP原则) 【二】单例模式【1】介绍【2】饿汉式单例【3】懒汉式单例【4】静态内部类单例【5】枚举(懒汉式) 【三】工厂方法模式【1】简单工厂模式&#xf…

springboot 程序运行一段时间后收不到redis订阅的消息

springboot 程序运行一段时间后收不到redis订阅的消息 问题描述 程序启动后redis.user.two主题正常是可以收到消息的,发一条收一条,但是隔一段时间后;就收不到消息了; 此时如果你手动调用发送另外一个消息订阅redis.user.two2&…

vmware workstation 虚拟机安装

vmware workstation 虚拟机安装 VMware Workstation Pro是VMware(威睿公司)发布的一代虚拟机软件,中文名称一般称 为"VMware 工作站".它的主要功能是可以给用户在单一的桌面上同时运行不同的操作系统,它也是可进 行开发…

c# 容器变换

List<Tuple<int, double, bool>> 变为List<Tuple<int, bool>>集合 如果您有一个List<Tuple<int, double, bool>>并且您想要将其转换为一个List<Tuple<int, bool>>集合&#xff0c;忽略double值&#xff0c;您可以使用LINQ的S…

3U 与 SV630A 伺服实现 CANLINK 通讯

1、打开 AUTOSHOP&#xff0c;点击工具>系统选项&#xff0c;勾选自动生成 canlink 轴 控通讯配置和 canlink 轴控指令增强功能。 2、检查 plc 的拨码是否已经拨上去。 1 代表 485 通讯&#xff0c;2 代表 can 通讯&#xff0c;将 2 打到 ON 状态。还有9&#xff0c;10拨…

Matlab 计算一个平面与一条直线的交点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里使用一种很有趣的坐标:Plucker线坐标,它的定义如下所示: 这个坐标有个很有趣的性质,将直线 L L L与由其齐次坐标 V = (

IDEA社区版使用Maven archetype 创建Spring boot 项目

1.新建new project 2.选择Maven Archetype 3.命名name 4.选择存储地址 5.选择jdk版本 6.Archetype使用webapp 7.create创建项目 创建好长这样。 检查一下自己的Maven是否是自己的。 没问题的话就开始增添java包。 [有的人连resources包也没有&#xff0c;那就需要自己添…

AI人工智能开源大模型生态体系分析

人工智能开源大模型生态体系研究 "人工智能开源大模型生态体系研究报告v1.0"揭示&#xff0c;AI(A)的飞速发展依赖于三大核心&#xff1a;数据、算法和算力。这一理念已得到业界广泛认同&#xff0c;三者兼备才能推动AI的壮大发展。随着AI大模型的扩大与普及&#xf…