【硬件外设使用】——GPIO用法
- GPIO基本概念
- GPIO应用
- pyb与micropython
- 什么是pyb
- 什么是micropython
- pyb与micropython关系
- GPIO在micropython中的用法
- 什么是pyb库
- pyb库中的GPIO用法
- micropython下的GPIO用法
经过与硬件群的小伙伴商量,决定直接找个板子讲实战了- -。
本部分内容为视频内容补充。外设基本使用方法+pyb(STM32)+machine(micropython通用。)
GPIO基本概念
GPIO是General Purpose Input/Output的缩写,意思是通用输入/输出。它是一种可以通过软件控制的电子接口,可实现与其他硬件设备的连接和交互。
在树莓派、Arduino等单板电脑中,GPIO常被用于连接各种传感器、执行器、LED灯等外部设备,使得这些设备可以和计算机进行通讯和交互。
通过编写程序,可以实现对GPIO的读写操作,实现各种功能。
GPIO应用
GPIO可以应用在很多方面,例如:
-
控制LED灯:通过将GPIO引脚设置为输出模式,并对其进行控制,可以实现对连接在GPIO上的LED灯的开关。
-
连接传感器:树莓派和Arduino等单板电脑常常用GPIO来读取温度、湿度、气压等传感器的数据。
-
控制电机:电机通常需要连接到GPIO引脚上使用单片机或芯片内部PWM输出的信号来控制转速、方向等参数。
-
控制舵机:舵机可以通过PWM信号控制角度,因此也可以将GPIO引脚设置为PWM输出,并连接到舵机控制线上进行控制。
-
控制继电器:GPIO引脚还可以控制继电器,用于控制家电、电机等高电流负载的开关操作。
GPIO的应用范围很广,可以用于控制各种外接设备,是单片机和嵌入式系统中不可缺少的一个模块。下面是一个GPIO基本结构图。
pyb与micropython
总有小伙伴分不清pyb和micropython,这里简单说一下啊
什么是pyb
Pyboard(pyb)是一个MicroPython的开发板,它提供了一个基于Python的快速原型设计平台,使得使用Python语言来开发嵌入式系统更加容易。
Pyboard基于ARM® Cortex®-M4处理器,具有高速存储器和实时时钟,同时内置有各种外设(例如LED、USB、UART、SPI、I2C等),可以快速构建各种具有交互性的嵌入式系统。
Pyboard还支持通过wifi进行网络通信,使得连接其他设备变得更加容易。
什么是micropython
MicroPython是一种适用于微控制器的Python3解释器,它支持在资源受限的嵌入式设备上运行
Python代码。MicroPython由德国裔澳洲人Damien George发起开发,旨在为硬件爱好者、物联网应用开发人员、科研工作者、教育界等提供一个简单易用的嵌入式开发平台。
除了标准的Python语法和库外,MicroPython还提供了一些针对嵌入式设备的专用库和功能,例如控制GPIO、I2C、SPI、ADC等硬件接口。
并且,由于使用的是Python语言,使得从桌面应用程序的开发跨越到嵌入式设备的开发更加容易。与其他嵌入式开发平台相比,MicroPython在开发效率和代码可读性方面拥有明显的优势。
pyb与micropython关系
Pyboard(pyb)是MicroPython的一种开发板,它提供了一个硬件平台,可以在上面运行MicroPython解释器,并使用Python语言进行嵌入式开发。
Pyboard为MicroPython提供了高性能的ARM Cortex-M4处理器,以及与嵌入式开发相关的硬件接口,例如GPIO、UART、SPI、I2C等。使用Pyboard可以轻松地利用MicroPython解释器和硬件接口快速开发各种嵌入式应用程序。
同时,在Pyboard上运行的MicroPython解释器也可以在其他支持MicroPython的嵌入式设备上运行,使得MicroPython成为一个通用的嵌入式系统开发工具。因此,可以说Pyboard是MicroPython的一种实现方式,提供了一个方便的开发硬件平台,来支持使用Python语言进行嵌入式开发。
GPIO在micropython中的用法
这里主要是pyb库,和machine库。两种方式都列举一下。买板子的时候注意板子支持哪一个。
什么是pyb库
Pyb库是MicroPython中的一个标准库,是为了更方便地访问Pyboard硬件而开发的。Pyboard是MicroPython官方推出的开发板,而Pyb库则提供了一系列针对该开发板的API函数,可以简化对各种硬件模块(如GPIO、I2C、SPI、串口等)的操作。
Pyb库的主要特点包括:
简单易用:Pyb库提供了简单易用的API函数,使用户能够轻松地访问Pyboard硬件。
全面支持Pyboard:Pyb库支持大部分Pyboard硬件资源,包括GPIO、ADC、DAC、I2C、SPI、PWM、定时器、U(S)ART等。
可扩展性:Pyb库允许用户编写自定义的驱动程序来扩展其功能,从而满足更多的应用需求。
使用Pyb库能够很方便地在MicroPython中控制外设硬件,并且代码能够在Pyboard上直接运行。这样既节省了开发时间,又提高了代码的可读性和可维护性。
关系图如下:
pyb库中的GPIO用法
详细用法 咸鱼Micropython—GPIO 可以不看,本篇内容仅了解概念即可。还得看实战。
pyb.Pin()
是MicroPython中的一个模块,用于控制单片机的引脚,与machine.Pin()
类似。但pyb.Pin()
主要用于控制嵌入式板载设备上与Pyboard硬件相关的引脚。
该函数的语法如下:
pyb.Pin(id, mode=-1, pull=None, *, drive=None)
其中,
- 参数
id
表示引脚编号,可以是数字或字符串类型; - 参数
mode
表示设置引脚工作模式,可选值有pyb.Pin.IN
(输入模式)、pyb.Pin.OUT_PP
(推挽输出模式)、pyb.Pin.OUT_OD
(开漏输出模式)等; - 参数
pull
表示设置引脚上拉或下拉电阻,可选值有pyb.Pin.PULL_UP
(上拉电阻)、pyb.Pin.PULL_DOWN
(下拉电阻)和None
(不使用上下拉电阻);参数drive
表示设置引脚驱动能力(即能够输出的最大电流),可选值有pyb.Pin.LOW_POWER
、pyb.Pin.MED_POWER
和pyb.Pin.HIGH_POWER
。
例如,以下代码将与Pyboard硬件相关的LED引脚(即绿色LED)设置为输出模式,同时将引脚电平设置为低电平:
import pyb
led = pyb.Pin('LED_GREEN', pyb.Pin.OUT_PP) # 将绿色LED引脚设置为推挽输出模式
led.low() # 将绿色LED引脚电平设置为低电平
这样操作后,绿色LED将被关闭。如果需要将引脚设置为高电平,可以使用以下代码:
import pyb
led = pyb.Pin('LED_GREEN', pyb.Pin.OUT_PP) # 将绿色LED引脚设置为推挽输出模式
led.high() # 将绿色LED引脚电平设置为高电平
micropython下的GPIO用法
machine.Pin()
是MicroPython中的一个模块,用于控制单片机的引脚,包括输入输出模式、设置引脚电平等。
该函数的语法如下:
machine.Pin(id, mode=-1, pull=None, *, value)
其中,
- 参数
id
表示引脚编号,可以是数字或字符串类型;参数mode
表示设置引脚工作模式,可选值有machine.Pin.IN
(输入模式)、machine.Pin.OUT
(输出模式)、machine.Pin.OPEN_DRAIN
(开漏模式)等; - 参数
pull
表示设置引脚上拉或下拉电阻,可选值有machine.Pin.PULL_UP
(上拉电阻)、machine.Pin.PULL_DOWN
(下拉电阻)和None
(不使用上下拉电阻); - 参数
value
表示设置引脚电平,仅在mode
为输出模式时有效,可选值有0
(低电平)和1
(高电平)。
例如,以下代码将D1引脚设置为输出模式,同时将引脚电平设置为高电平:
import machine
pin = machine.Pin(5, machine.Pin.OUT, value=1) # 将D1引脚设置为输出模式,初始电平为高电平
这样操作后,D1引脚将输出高电平。如果需要将引脚设置为低电平,可以使用以下代码:
import machine
# 将D1引脚设置为输出模式,初始电平为高电平
pin = machine.Pin(5, machine.Pin.OUT, value=1)
# 将引脚电平设置为低电平
pin.value(0)
提醒:买开发时注意支不支持pyb。