MicroPython-On-ESP8266——GPIO引脚

芯片管脚介绍

开发板能做什么功能,取决于核心芯片的支持,ESP8266EX是乐鑫公司研制的一款物联网wifi低功耗芯片。乐鑫官方产品规格书对芯片的管脚定义如下

MicroPython-On-ESP8266——GPIO引脚_第1张图片

黑色:管脚序号 & 名称 | 紫色:管脚类型 | 红色:用途介绍

GPIO Pin

上图中类型为I/O的管脚即为GPIO引脚,作为与外界交互的输入与输出端使用,如控制led灯、蜂鸣器、读取温湿度传感器数据、输出PWM脉冲信号等。

红色用途字体中,有对可用GPIO引脚的说明和号码的定义,实际上只有以下这些才是可用的GPIO引脚

  • GPIO0
  • GPIO2
  • GPIO4
  • GPIO5
  • GPIO12
  • GPIO13
  • GPIO14
  • GPIO15
  • GPIO16

其他的都有特殊用途(如:GPIO1 & GPIO3被用作UART与硬件进行信息交互的接口,前面进的REPL就是通过这两个引脚来实现的)

代码控制Pin

>>> from machine import Pin  # 从machine库中引入Pin
>>> pin = Pin(2, Pin.OUT)    # 实例化一个Pin,使用GPIO2,并定义模式为输出
>>> pin.value(0)             # 设置pin为低电平
>>> pin.on()                 # 设置pin为高电平

开发板板载了一个LED灯,接在GPIO2引脚上,而且是反接的。所以当pin.value(0)给低电平时,反而点亮了灯。

8266开发板在实例Pin对象时,还有一个pull参数,可以定义引脚pull为无模式None或者上拉模式 PULL_UP

上拉/下拉其实对于没有电工电子基础的我来说也比较蒙圈。查了些资料,大概意思是芯片内部对于GPIO的驱动能力是有限的,当驱动不足时 (以下理解可能有误,待学习深入以后再过来确认和纠正)

配合上拉电阻可以提高引脚电平值,从而达到外部器件的输入要求。(向外拉电流)(外部接GND)
配合下拉电阻可以降低引脚的电流,从而小于外围器件电流,方便外部输入。(向内灌电流)(外部接VCC)

  1. esp8266没有下拉模式
  2. GPIO16引脚没有上拉模式,所以这个引脚不能用OUT模式来控制外部器件,只能读取外部输入值

外部中断IRQ

除GPIO16外,其他引脚都可以响应输入中断事件。可以给中断配置回调函数来实现定制的功能。

先定义一个简单的回调:

>>> def callback(p):
...     print('pin changed', p)

使用两个引脚来测试中断事件

>>> from machine import Pin
>>> p4 = Pin(4, Pin.IN)
>>> p5 = Pin(5, Pin.IN)

给引脚绑定中断类型和响应回调

>>> p4.irq(trigger=Pin.IRQ_FALLING, handler=callback)
>>> p5.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=callback)
  • tigger 中断类型
    • IRQ_RISIONG 即引脚从低电平转变为高电平,
    • IRQ_FALLING反过来从高电平转变为低电平
  • handler 绑定事件(回调函数)

REPL中执行上面代码后,用手去触碰4、5引脚,可以看到回调函数打印的日志。

MicroPython-On-ESP8266——GPIO引脚_第2张图片

你可能感兴趣的:(MicroPython,开发板)