【雕爷学编程】MicroPython手册之 WiPy ADC(模数转换)

在这里插入图片描述
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的紧凑设计和低功耗特性,使得它非常适合嵌入式系统和物联网设备的部署。

在这里插入图片描述
MicroPython的WiPy ADC(模数转换)是一种用于将模拟信号转换为数字信号的技术。

主要特点:

模拟信号转换:WiPy ADC通过将模拟信号转换为数字信号,实现对模拟量的精确采样和量化。模拟信号可以是电压、电流、温度等连续变化的物理量。
分辨率:WiPy ADC通常具有一定的分辨率,表示其能够将模拟信号转换为离散的数字值的精度。常见的分辨率为8位、10位或12位,分辨率越高,表示能够更精确地采样和量化模拟信号。
采样速率:WiPy ADC的采样速率表示每秒钟可以进行多少次模拟信号的采样和转换。高采样速率可以捕捉到快速变化的模拟信号,适用于对信号动态变化要求较高的应用。
多通道支持:WiPy ADC通常支持多个独立的ADC通道,可以同时采样多个模拟信号。这使得WiPy在多信号采集和处理时非常灵活。

应用场景:

传感器数据采集:WiPy ADC可用于采集各种传感器输出的模拟信号,如温度传感器、光线传感器、压力传感器等。通过将模拟信号转换为数字信号,可以方便地进行数据处理和分析。
电池电压监测:WiPy ADC可用于监测电池电压,实现对电池电量的检测和监控。通过将电池电压转换为数字信号,可以实时了解电池的电量状态。
音频采集:WiPy ADC可用于音频信号的采集和处理,如声音录制、音频分析等。通过将模拟音频信号转换为数字信号,可以进行后续音频处理和应用。
控制系统反馈:WiPy ADC可用于读取控制系统中的传感器信号,如位置传感器、速度传感器等,实现对系统状态的实时反馈。通过将传感器输出的模拟信号转换为数字信号,可以进行控制算法的计算和控制决策。

扫描二维码关注公众号,回复: 16865290 查看本文章

注意事项:

参考电压:在进行模拟信号转换时,WiPy ADC通常需要一个参考电压来确定模拟量的范围。在使用时,需要正确设置参考电压以确保模拟信号的量化精度和范围。
信号干扰:模拟信号采样过程中可能受到电磁干扰和噪声的影响,从而导致采样结果的不准确。在需要高精度采样的应用中,可能需要采取滤波和屏蔽措施来减少干扰和噪声的影响。
采样速率和带宽:WiPy ADC的采样速率和带宽之间存在相关性。在选择WiPy ADC时,需要根据应用需求合理选择采样速率和带宽,以确保能够满足信号采样的要求。

综上所述,MicroPython的WiPy ADC是一种用于将模拟信号转换为数字信号的技术。它具有模拟信号转换的能力、分辨率和采样速率等特点。WiPy ADC的应用场景包括传感器数据采集、电池电压监测、音频采集和控制系统反馈等。在使用WiPy ADC时,需要注意设置参考电压、处理信号干扰以及合理选择采样速率和带宽等事项。

在这里插入图片描述
案例1:使用MicroPython读取ADC值

from machine import Pin
import time

# 初始化引脚2为ADC输入模式
adc = Pin(2, Pin.IN)

while True:
    # 读取ADC值
    adc_value = adc.read()
    print("ADC Value: {0}".format(adc_value))
    time.sleep(1)  # 延时1秒

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

from machine import Pin, PWM
import time

# 初始化引脚12为PWM输出模式
led = PWM(Pin(12), duty=50)

while True:
    # 设置占空比为75%
    led.duty(75)
    time.sleep(1)  # 延时1秒
    # 设置占空比为25%
    led.duty(25)
    time.sleep(1)  # 延时1秒

案例3:使用MicroPython控制电机的速度

from machine import Pin, PWM
import time

# 初始化引脚14为PWM输出模式
motor = PWM(Pin(14), duty=50)

while True:
    # 设置占空比为75%
    motor.duty(75)
    time.sleep(1)  # 延时1秒
    # 设置占空比为25%
    motor.duty(25)
    time.sleep(1)  # 延时1秒

案例4:使用WiPy ADC读取模拟输入

import machine  
  
# 设置WiPy的ADC通道和引脚  
adc = machine.ADC(machine.Pin(3)) # ADC通道0,使用引脚3  
  
# 读取模拟输入  
while True:  
    adc_value = adc.read() # 读取ADC通道0的模拟输入值  
    print("ADC值为:", adc_value) # 打印读取的模拟输入值

案例5:使用WiPy ADC读取温度传感器输出

import machine  
  
# 设置WiPy的ADC通道和引脚  
adc = machine.ADC(machine.Pin(3)) # ADC通道0,使用引脚3  
  
# 读取温度传感器输出  
while True:  
    adc_value = adc.read() # 读取ADC通道0的模拟输入值  
    temperature = (adc_value * 3.3) / 4096 * 120 - 50 # 将ADC值转换为温度值(以摄氏度为例)  
    print("温度为:", temperature) # 打印温度值

案例6:使用WiPy ADC读取光敏传感器输出

import machine  
  
# 设置WiPy的ADC通道和引脚  
adc = machine.ADC(machine.Pin(3)) # ADC通道0,使用引脚3  
  
# 读取光敏传感器输出  
while True:  
    adc_value = adc.read() # 读取ADC通道0的模拟输入值  
    light_level = adc_value * 4096 / 3.3 # 将ADC值转换为光线强度值  
    print("光线强度为:", light_level) # 打印光线强度值

案例7:读取光线传感器数据:

from machine import ADC

# 初始化ADC引脚
adc_pin = ADC(0)

# 读取光线传感器数据
light_value = adc_pin.read()

# 打印光线传感器数值
print("光线传感器数值:", light_value)

上述代码中,通过使用MicroPython的ADC模块,初始化ADC引脚(这里使用ADC0引脚)。然后通过read()方法读取光线传感器的模拟信号,并将其存储在变量light_value中。最后,打印光线传感器的数值。

案例8:监测电池电压:

from machine import ADC

# 初始化ADC引脚
adc_pin = ADC(0)

# 设置参考电压
adc_pin.vref(1100)

# 读取电池电压
battery_voltage = adc_pin.read() * 2  # 假设使用1:1分压电路

# 打印电池电压
print("电池电压:", battery_voltage, "mV")

上述代码中,通过使用MicroPython的ADC模块,初始化ADC引脚(这里使用ADC0引脚)。然后通过vref()方法设置参考电压为1100mV(假设使用的是1:1的分压电路)。接下来,通过read()方法读取电池电压的模拟信号,并将其乘以2进行换算,得到实际电压值(假设使用的是1:1分压电路)。最后,打印电池电压。

案例9:温度采集:

from machine import ADC

# 初始化ADC引脚
adc_pin = ADC(0)

# 读取温度传感器数据
temp_value = adc_pin.read()

# 转换为摄氏度
temperature = (temp_value - 500) / 10

# 打印温度值
print("温度:", temperature, "°C")

上述代码中,通过使用MicroPython的ADC模块,初始化ADC引脚(这里使用ADC0引脚)。然后通过read()方法读取温度传感器的模拟信号,并将其存储在变量temp_value中。接下来,通过简单的线性转换公式将模拟信号转换为摄氏度的温度值(假设传感器输出范围为0-1000,对应温度范围为0-100°C)。最后,打印温度值。以上代码仅为示例,实际应用中需要根据具体的传感器和电路连接进行适当的修改和调整。同时,确保正确配置ADC引脚、设置参考电压、读取模拟信号并进行适当的转换。

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/133411268