当前位置: 首页 > news >正文

从零开始的MicroPython(四) 串口

上一篇:按键与外部中断

文章目录

  • 前言
  • 串口(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 UARTuart = 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 UARTuart1 = 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 stringstr_2 = "World"packet_bytes = struct.pack('2s2s', str_1.encode(), str_2.encode())  # '2s2s': two strings, each of length 2esp32.write(packet_bytes)   # send 4 bytes, each string is 2 bytestime.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。运行可以观察到结果。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【智能时代的创新工具】LangChain快速入门指南:轻松掌握语言模型的集成与运用
  • [C++] vector对比list deque的引出
  • TImyWebServer项目详解(1)-线程同步机制封装类
  • 【Cesium开发实战】水流模拟功能的实现,自定义区域加载水流效果
  • Transformer预测模型及其Python和MATLAB实现
  • 淘天笔试0508-选择题
  • 基于STM32的多旋翼无人机设计与实现
  • C#实战 - C# 实现心形图案
  • Matplotlib面积图绘制秘籍:让你的数据‘膨胀’起来,但不吹泡泡哦!
  • 循环结构作业
  • MATLAB(14)预处理
  • 釉面陶瓷器皿和玻璃器皿 SOR/2016-175认证
  • Javascript前端面试基础(八)
  • MySQL--MySQL函数
  • Python,Maskrcnn训练,cannot import name ‘saving‘ from ‘keras.engine‘ ,等问题集合
  • 【译】JS基础算法脚本:字符串结尾
  • [译]CSS 居中(Center)方法大合集
  • 11111111
  • CentOS6 编译安装 redis-3.2.3
  • CSS3 变换
  • Golang-长连接-状态推送
  • go语言学习初探(一)
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JAVA并发编程--1.基础概念
  • 闭包--闭包作用之保存(一)
  • 复杂数据处理
  • 关于使用markdown的方法(引自CSDN教程)
  • 观察者模式实现非直接耦合
  • 巧用 TypeScript (一)
  • 深入浅出webpack学习(1)--核心概念
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 算法之不定期更新(一)(2018-04-12)
  • 学习使用ExpressJS 4.0中的新Router
  • 用Python写一份独特的元宵节祝福
  • 优秀架构师必须掌握的架构思维
  • 再次简单明了总结flex布局,一看就懂...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # .NET Framework中使用命名管道进行进程间通信
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Git) gitignore基础使用
  • (二)pulsar安装在独立的docker中,python测试
  • (分布式缓存)Redis哨兵
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (理论篇)httpmoudle和httphandler一览
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (十八)三元表达式和列表解析
  • (四)React组件、useState、组件样式
  • (转)LINQ之路
  • (转)Sublime Text3配置Lua运行环境
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net refrector
  • .NET 分布式技术比较