从零开始的MicroPython(四) 串口

news2024/9/22 17:21:28

上一篇:按键与外部中断

文章目录

  • 前言
  • 串口(UART)
    • 简介
    • MicroPython的UART
      • UART 类——双工串行通信
  • ESP32(NodeMCU-32S)
    • GPIO
      • 简介
      • 引脚
    • 文档
    • 代码
    • ESP32&&PC通讯

前言

在嵌入式学习中,串口发挥着重要的作用,不仅仅是与模块通讯,还发挥了探明黑箱、代码调试的作用。

串口(UART)

简介

在这里插入图片描述

​ 一般来说我们只关心波特率的设置,波特率一般设置为9600或115200,通讯的两端波特率要一样,TX与另一端的RX相接,RX与另一端的TX相接。校验位、数据位、停止位按图中所示设置。

MicroPython的UART

UART 类——双工串行通信

​ UART 实现标准的 UART/USART 双工串行通信协议。在物理层,它由 2 条线组成:RX 和 TX。通信单位是一个Char,它可以是 8 位或 9 位,一般来说我们选择8位。

可以使用以下方法创建和初始化 UART 对象:

from machine import UART

uart = UART(1, 9600)                         # init with given baudrate
uart.init(9600, bits=8, parity=None, stop=1) # init with given parameters

支持的参数因开发板而异:

Pyboard:位可以是 7、8 或 9。停止可以是 1 或 2。使用parity=None,仅支持 8 和 9 位。启用奇偶校验后,仅支持 7 位和 8 位。

WiPy/CC3200:位可以是 5、6、7、8。停止可以是 1 或 2。

UART 对象是一个stream 对象,读写是使用标准流方法完成的:

uart.read(10)       # read 10 characters, returns a bytes object
uart.read()         # read all available characters
uart.readline()     # read a line
uart.readinto(buf)  # read and store into the given buffer
uart.write('abc')   # write the 3 characters

ESP32(NodeMCU-32S)

GPIO

简介

​ NodeMCU-32S 是安信可基于 ESP32-32S 模组所设计的核心开发板。该开发板延续了 NodeMCU 1.0经典设计,引出大部分I/O至两侧的排针,开发者可以根据自己的需求连接外设。使用面包板进行开发和调试时,两侧的标准排针可以使操作更加简单方便。

引脚

注意图中的UART。UART0是同电脑通讯的,其他的可以接模块,比如蓝牙:蓝牙模块教程

板子上是CH340和是CP2102的可能有区别。

文档

参阅 machine.UART.

from machine import UART

uart1 = UART(1, baudrate=9600, tx=33, rx=32)
uart1.write('hello')  # write 5 bytes
uart1.read(5)         # read up to 5 bytes

ESP32有三个硬件UART:UART0、UART1和UART2。它们各自分配了默认GPIO,但根据您的ESP32变体和板,这些引脚可能会与嵌入式闪存、板载PSRAM或外设发生冲突。

任何GPIO都可以用于使用GPIO矩阵的硬件UART,除了可以用作 rx的仅输入引脚34-39。为了避免冲突,只需在构建时提供txrx 引脚即可。下面列出的默认管脚。

UART0UART1UART2
tx11017
rx3916

代码

ESP32&&PC通讯

import serial, time, struct   

esp32 = serial.Serial(port='COM3', baudrate=9600, timeout=.1)

# code for sender
while True:
    str_1 = "Hello"  # replace random float with a string
    str_2 = "World"
    packet_bytes = struct.pack('2s2s', str_1.encode(), str_2.encode())  # '2s2s': two strings, each of length 2
    esp32.write(packet_bytes)   # send 4 bytes, each string is 2 bytes
    time.sleep(0.01)

# code for receiver
# while True:
#     if esp32.in_waiting:       # Get the number of bytes in the input buffer
#         packet_bytes = esp32.read(4)   # receive 4 bytes
#         str_1, str_2 = struct.unpack('2s2s', packet_bytes)  # unpack into two strings
#         print(str_1.decode(), str_2.decode())


使用USB转TTL,TX接GPIO32,RX接GPIO33

image

USB端接电脑。Micro usb线也接电脑。

在thonny IDE的option-general中取消只允许一个IDE运行的设置并确认。

开启两个IDE窗口,将上边的代码分成接收和发送两份。接收端解释器为Python3.x,发送端为MicroPython。运行可以观察到结果。

下一篇:PWM

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

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

相关文章

C++ 随机单词(萌新练习项目)

目录 项目名称 项目目标 功能描述 技术要点 示例代码 扩展建议 学习资源 项目名称 随机单词生成器(Random Word Generator) 项目目标 学习C基本语法和数据结构。练习使用C标准库中的随机数生成功能。理解容器(如std::vector&#xf…

由浅入深的了解进程(5)--环境变量

环境变量 前言环境变量1、更多的环境变量及添加和删除2、整体理解环境变量系统 前言 在上一篇文章中简单的介绍了环境变量,但是没有讲述的比较全面了,所以现在再写一篇来介绍环境变量。 环境变量 在上一篇文章中,我们已经简单的学习了如何…

“网络身份证”来了,淘宝、微信、小红书等已上线试点版功能

“网络身份证时代”即将开启。 近日,公安部、国家网信办共同起草《国家网络身份认证公共服务管理办法(征求意见稿)》公开征求意见后,未来是否需要“持证上网”一时间引发热议。而在征求意见的期间,小红书、淘宝、微信等…

linux-环境变量,进程地址空间

1.环境变量 1.1基本概念 环境变量 (environment variables) 一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写 C/C 代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接…

Stable Diffusion绘画 | 文生图设置详解—随机种子数(Seed)

随机种子数(Seed) Midjourney 也有同样的概念,通过 --seed 种子数值 来使用。 每次操作「生成」所得到的图片,都会随机分配一个 seed值,数值不同,生成的画面就会不同。 默认值为 -1:每次随机分…

速度规划之:起点速度和终点速度不为零的非对称梯形速度规划

起点速度和终点速度不为零的非对称梯形速度规划 一、引言二、理论基础1. 梯形速度规划概述2.数学建模- 变量定义- 约束关系- 公式推导 三、计算过程1.只存在减速段2.只存在加速段3.存在加速段和减速段4.存在加速度段、匀速段和减速段 四、仿真实现五、优缺点优点缺点 六、总结 …

电销外呼系统是如何实现高效触客?

首先我们都有个疑问? 什么是外呼系统,有什么用处 简单来说就是解决打电话高频封号问题,提升销售工作效率,搞笑筛选一线客户 沃创云电销外呼系统通过一系列智能化、自动化的功能和技术手段,实现了高效触客。以下是该系…

MySQL数据库学习笔记

1、数据库的相关概念 数据库是存储数据的仓库,数据是有组织的进行存储 (DataBase)DB. 数据库管理系统:操作和管理数据库的大型软件 DataBase Mangement System(DBMS) SQL 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。 1、Oracle 2、MySQL 3…

LLC数字控制TMS320F28034,3-DSP的timer定时器配置介绍

***配套代码工程*** LLC数字控制TMS320F28034,3-DSP的timer定时器配置介绍 LLC数字控制TMS320F28034,3-DSP的timer定时器配置介绍1 TMS320F280341.1 系统时钟大小1.2 TMS320F28034 芯片系统时钟源介绍 2 时钟库函数说明示例3 TMS320F28034手写定时器功能…

武汉流星汇聚:亚马逊平台消费者众多,助力中国卖家销售额大幅增长

在全球电商的浩瀚星空中,亚马逊凭借其庞大的消费者规模和强大的市场影响力,为无数商家特别是中国卖家提供了前所未有的发展机遇。近年来,越来越多的中国卖家选择通过亚马逊平台,将优质产品直接送达全球消费者的手中,并…

【系统架构设计师】二十三、通信系统架构设计理论与实践②

目录 二、5G 网络边缘计算 三、存储网络架构 四、软件定义网络架构 五、网络构建关键技术 5.1 网络的高可用性 5.2 IPv4 与 IPv6 融合组网技术 六、网络构建和设计方法 6.1 网络需求分析 6.2 网络技术遴选及设计 6.3 层次化网络模型设计 6.4 网络安全控制技术 6.5 …

基于Gromacs的蛋白质与小分子配体相互作用模拟教程

在生命科学的广阔领域中,蛋白质与小分子配体之间的相互作用扮演着至关重要的角色。这些相互作用不仅影响着生物体内的各种生命活动,如信号传导、代谢调控和药物作用等,同时也是药物设计和开发的核心内容。因此,深入理解并模拟这些…

模板进阶【C++】

文章目录 模板的特殊化函数模板特化的作用 函数模板的的特殊化语法:函数模板特化的要求 类模板的特殊化类模板的特殊化的要求类模板的特殊化的语法全特化偏特化实例化部分模板参数对基本类模板(母板)的模板参数进行限制 非类型模板参数非类型…

ESP32低功耗蓝牙服务端的库介绍和实例演示

ESP32低功耗蓝牙服务端的库介绍和实例演示 1.概述 前面的文章介绍了经典蓝牙库和使用示例,这篇文章介绍低功耗蓝牙库的使用。 这篇文章不介绍低功耗蓝牙实现的架构知识,只介绍 如何使用它的库文件实现应用开发只介绍服务端蓝牙开发方式 2.低功耗蓝牙…

R语言大尺度空间数据分析模拟预测及可视化:地统计与空间自相关、空间数据插值、机器学习空间预测、空间升降尺度、空间模拟残差订正、空间制图等

目录 专题一 R语言空间数据介绍及数据挖掘关键技术 专题二 R语言空间数据高级处理技术 专题三 R语言多维时空数据处理技术、数据清洗整合和时间序列分析 专题四 R语言地统计与空间自相关、空间插值方法 专题五 R语言机器学习与空间模型预测及不确定性评估 专题六 R语言空…

htsjdk库ReferenceSequenceFile接口介绍

ReferenceSequenceFile 是 HTSJDK 库中的一个接口,用于表示参考基因组文件。它定义了读取参考基因组序列的标准方法。这个接口使得不同类型的参考基因组文件(如 FASTA 格式)能够以统一的方式进行访问。 ReferenceSequenceFile 接口主要功能 访问参考序列: 提供获取参考基因…

如何在 Windows/Mac/iPhone/Android 上将 PDF 转换为 Word

PDF(便携式文档格式)是一种流行的格式,广泛用于在数字电子设备中呈现文档。输出文件小且兼容性强,使 PDF 如此受欢迎。但是,编辑 PDF 文件并非免费。您无需购买 PDF 编辑器,而是可以将 PDF 转换为 Word 进行…

嘉兴网站建设的思路

随着互联网的快速发展,网站已经成为企业宣传和推广的重要工具。作为浙江省的一个重要城市,嘉兴具有得天独厚的地理位置和经济实力,因此开展嘉兴网站建设具有重要意义。在进行网站建设的过程中,需要有一定的思路和规划,…

跑深度学习模型Ⅱ:一文安装正确pytorch及dgl

如果要用到GPU ,先看这篇安装并保证cuda可用。跑深度学习模型I:一文正确使用CUDA-CSDN博客 啊每次都是pytorch版本问题引发的一系列错误! 1. 查看自己的cuda版本 nvcc --version 可以看到我的cuda版本是11.8 nvidia-smi 查看NVIDIA驱动版…

智能变“智障”?云鲸扫地机器人频发故障引质疑

近年来,扫地机器人市场以其智能化技术革新和不断升级的产品功能,成功吸引了消费者的目光,甚至打破了家电行业的价格僵局,实现了价格与价值的双重攀升。然而,在这股智能家电的浪潮中,云鲸扫地机器人却因其频…