【雕爷学编程】MicroPython手册之 WiPy 引脚和 GPIO

在这里插入图片描述
MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。
在这里插入图片描述
WiPy是一款基于MicroPython的无线微控制器模块,它提供了一个完整的硬件和软件解决方案,旨在简化物联网(IoT)设备的开发和部署。

1、微控制器模块:WiPy是一种集成了处理器、内存、无线通信模块和其他必要组件的微型计算机模块。它的设计目标是提供一个紧凑、低功耗的硬件平台,能够运行MicroPython这样的高级编程语言,并具备连接到互联网和其他设备的能力。
2、MicroPython:MicroPython是一种精简版的Python编程语言,专为嵌入式系统和微控制器设计而开发。它提供了Python语言的核心功能和语法,使得开发者能够使用熟悉的Python语法进行硬件控制和物联网应用开发。WiPy作为MicroPython的运行环境,能够直接解释和执行MicroPython代码。
3、物联网(IoT):物联网是指将各种物理设备(如传感器、执行器、嵌入式系统等)通过互联网连接起来,实现智能化、互联互通的网络。WiPy作为一种无线微控制器模块,具备无线通信能力,能够连接到物联网中的其他设备和云平台,实现远程控制和数据交换。
4、无线通信模块:WiPy内置了一种或多种无线通信模块,常见的包括Wi-Fi、蓝牙(Bluetooth)和LoRa等。这些无线通信模块使得WiPy能够通过无线网络与其他设备进行通信,实现数据传输、远程控制、云连接等功能。开发者可以根据具体需求选择适合的无线通信模块。
5、开发和部署:WiPy提供了一套方便的开发工具和开发环境,使得开发者能够快速进行应用程序的开发、调试和测试。开发完成后,WiPy可以直接部署到实际的物联网设备中,与其他设备进行通信和交互。WiPy的紧凑设计和低功耗特性,使得它非常适合嵌入式系统和物联网设备的部署。

在这里插入图片描述
在WiPy上的GPIO引脚功能主要特点、应用场景和注意事项如下:

主要特点:

灵活性:WiPy的GPIO引脚可以配置为输入或输出模式,以满足不同的应用需求。
中断支持:WiPy的GPIO引脚支持外部中断,可以在特定事件发生时立即唤醒处理器,提高系统响应速度。
低功耗:WiPy的GPIO引脚具有低功耗特性,可以在不需要时将其置于睡眠模式,以节省能源。

应用场景:

传感器接口:WiPy的GPIO引脚可用于连接各种传感器,如温度传感器、湿度传感器、光线传感器等,用于获取环境数据。
执行器控制:WiPy的GPIO引脚可用于控制执行器,如LED灯、电机、继电器等,以实现开关或调节其状态。
用户交互:WiPy的GPIO引脚可用于连接按钮、开关等外部输入设备,用于检测用户的输入操作。

注意事项:

电压兼容性:在使用WiPy的GPIO引脚时,需要确保外部设备与WiPy的电压兼容性,以避免电压冲突和损坏。
输入状态稳定性:当将WiPy的GPIO引脚配置为输入模式时,应注意外部设备的状态稳定性和抗干扰能力,以避免误判或错误数据。
输出电流限制:在将WiPy的GPIO引脚配置为输出模式时,需要确保所连接设备的电流要求在WiPy的承受范围内,避免过载或损坏。
综上所述,WiPy的GPIO引脚提供了灵活的输入/输出功能,可用于连接传感器、执行器和用户交互设备。在使用时,需要注意电压兼容性、输入状态稳定性和输出电流限制,以确保系统的正常运行和设备的安全性。

在这里插入图片描述

WiPy是一款基于MicroPython的微控制器,可以通过Wi-Fi网络进行编程和调试。以下是几个实际运用程序参考代码案例,涉及到引脚和GPIO的使用:

案例一:通过WiPy和LED灯实现闪烁功能

from machine import Pin  
import time  
  
# 设置WiPy的引脚和模式  
pin_led = Pin(2, Pin.OUT) # LED灯控制引脚  
  
# 循环闪烁LED灯  
while True:  
    pin_led.value(1) # 打开LED灯  
    time.sleep(1) # 等待1秒钟  
    pin_led.value(0) # 关闭LED灯  
    time.sleep(1) # 等待1秒钟

案例二:通过WiPy和按钮控制LED灯

from machine import Pin  
import time  
  
# 设置WiPy的引脚和模式  
pin_led = Pin(2, Pin.OUT) # LED灯控制引脚  
pin_button = Pin(5, Pin.IN) # 按钮控制引脚  
  
# 循环检测按钮状态并控制LED灯  
while True:  
    # 检测按钮状态  
    button_state = pin_button.value()  
    if button_state == 1: # 如果按钮未按下,就关闭LED灯  
        pin_led.value(0)  
        print("LED灯已关闭")  
    else: # 如果按钮已按下,就打开LED灯  
        pin_led.value(1)  
        print("LED灯已打开")  
    time.sleep(0.1) # 等待0.1秒钟后再次检测按钮状态

案例三:通过WiPy和GPIO控制外部设备

import machine  
import utime  
  
# 设置WiPy的GPIO引脚和模式  
gpio_pin = machine.Pin(15, machine.Pin.OUT) # GPIO控制引脚  
  
# 循环控制外部设备(这里以GPIO输出高低电平为例)  
while True:  
    # 输出高电平  
    gpio_pin.value(1)  
    utime.sleep(1) # 等待1秒钟  
    # 输出低电平  
    gpio_pin.value(0)  
    utime.sleep(1) # 等待1秒钟

案例四:使用MicroPython控制LED灯的亮灭

from machine import Pin
import time

# 初始化引脚2为输出模式
led = Pin(2, Pin.OUT)

while True:
    led.value(1)  # 点亮LED
    time.sleep(1)  # 延时1秒
    led.value(0)  # 熄灭LED
    time.sleep(1)  # 延时1秒

案例五:使用MicroPython读取温湿度传感器的数据

from machine import I2C, Pin
import time

# 初始化I2C接口和DHT11传感器
i2c = I2C(scl=Pin(5), sda=Pin(4))
sensor = DHT11(i2c)

while True:
    # 读取温度和湿度数据
    temperature, humidity = sensor.read()
    print("Temperature: {0:.1f} C, Humidity: {1:.1f} %".format(temperature, humidity))
    time.sleep(5)  # 每5秒读取一次数据

案例六:使用MicroPython控制舵机转动

from machine import Servo
import time

# 初始化舵机对象
servo = Servo(Pin(12), min_pulse=500, max_pulse=2500)

while True:
    # 设置舵机角度
    servo.write(0)  # 舵机转到0度
    time.sleep(2)  # 延时2秒
    servo.write(90)  # 舵机转到90度
    time.sleep(2)  # 延时2秒
    servo.write(180)  # 舵机转到180度
    time.sleep(2)  # 延时2秒

案例七:控制LED灯:

import machine
import time

# 初始化LED引脚
led_pin = machine.Pin('P2', machine.Pin.OUT)

# 控制LED灯闪烁
while True:
    led_pin.on()
    time.sleep(1)
    led_pin.off()
    time.sleep(1)

上述代码中,WiPy通用板通过引脚控制LED灯的开关状态。通过将引脚配置为输出模式,并使用on()和off()函数控制引脚的高低电平,从而控制LED的亮灭状态。

案例八:读取按钮状态:

import machine

# 初始化按钮引脚
button_pin = machine.Pin('P0', machine.Pin.IN, machine.Pin.PULL_UP)

while True:
    # 读取按钮状态
    button_state = button_pin.value()
    if button_state == 0:
        print("按钮被按下")
    else:
        print("按钮未被按下")

上述代码中,WiPy通用板通过引脚读取按钮的状态。通过将引脚配置为输入模式,并使用value()函数读取引脚的电平状态,从而获取按钮的按下状态。

案例九:使用外部中断检测按钮按下:

import machine

# 初始化按钮引脚
button_pin = machine.Pin('P0', machine.Pin.IN, machine.Pin.PULL_UP)

# 定义外部中断回调函数
def button_interrupt(pin):
    print("按钮被按下")

# 配置外部中断引脚
button_pin.irq(trigger=machine.Pin.IRQ_FALLING, handler=button_interrupt)

# 进入休眠模式
machine.deepsleep()

上述代码中,WiPy通用板通过外部中断引脚检测按钮的按下事件。当按钮引脚检测到下降沿时,会触发预先定义的外部中断回调函数button_interrupt(),从而执行相应的任务。以上代码仅为示例,实际应用中需要根据具体需求进行适当的修改和调整。同时,确保正确配置引脚功能和电气特性,并根据需要进行适当的错误处理和异常处理。

请注意,以上案例只是为了拓展思路,可能存在错误或不适用的情况。不同的硬件平台、使用场景和MicroPython版本可能会导致不同的使用方法。在实际编程中,您需要根据您的硬件配置和具体需求进行调整,并进行多次实际测试。确保正确连接硬件并了解所使用的传感器和设备的规范和特性非常重要。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值