Algunos experimentos básicos interesantes de PI Pico ~

▲ Placa de circuito experimental

El módulo MCU pequeño Raspberry PI Pico, con su bajo precio, funciones ricas y desarrollo conveniente, proporciona una plataforma conveniente para que muchos estudiantes importantes no electrónicos puedan crear prototipos de proyectos creativos. Los siguientes experimentos son algunos experimentos básicos de demostración realizados por estudiantes de diseño de cursos del CDIE.

▌01 tablero de experimentos PI Pico


En la  prueba básica de la placa de desarrollo RASPBERRY PI PICO [1]  , se dan los ajustes básicos de la placa de desarrollo PI Pico   . El desarrollo inicial de Pi Pico se puede facilitar instalando el entorno de desarrollo Thonny [2] .

▲ Parte delantera y trasera de la placa de circuito Pi Pico

En este artículo,   probaremos algunos módulos básicos de PI Pico de acuerdo con los ejemplos dados en Raspberry Pi Pico Python SDK [3] .

Para la configuración de pines de Pi Pico, consulte   la definición de pines de Pi Pico dada en la hoja de datos de Pi Pico [4] :

▲ Diagrama de definición de la función del pin Pi Pico

Se puede obtener más información sobre PiPico en: Sitio web oficial de Pi Pico [5]  .

▌02 Prueba básica


1.LED intermitente a bordo

from machine                import Pin,Timer
from time                   import sleep_us

led = Pin(25, Pin.OUT)
tim = Timer()

print("Flash LED.")

def tick(timer):
    global led
    led.toggle()

tim.init(freq=2, mode=Timer.PERIODIC, callback=tick)

▲ Placa de circuito experimental

2.UART

(1) Procedimiento de prueba

from machine                import UART,Pin,Timer
from time                   import sleep_us

uart = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1), bits=8, parity=None, stop=1)
led = Pin(25, Pin.OUT)

tim = Timer()

print("Send UART.")

def tick(timer):
    global uart, led

    led.toggle()
    uart.write(b'\x55')

tim.init(freq=10, mode=Timer.PERIODIC, callback=tick)

▲ Pin de prueba (0)
▲ Mida la forma de onda del Pin (0)

3.ADC

A través del canal 4 de ADC, lea la temperatura interna del chip. Durante este proceso, use su mano para tocar la superficie de Pi Pico para calentar, o use alcohol para rociar la superficie del chip para que se enfríe.

▲ Leer la temperatura dentro del chip
import machine
import utime

sensor_temp = machine.ADC(4)
conversion_factor = 3.3/(65535)

while True:
    read = sensor_temp.read_u16() * conversion_factor

    temperature = 27 - (read - 0.706) / 0.001721
    print(temperature)
    utime.sleep(2)

▲ Muestra el valor de temperatura leído
▲ Cambio de lectura de temperatura

4.PWM

(1) LED de unidad PWM

La forma de onda que controla el LED integrado es la operación PWM.

from machine                import Pin,PWM
import time

pwm = PWM(Pin(25))

pwm.freq(1000)

duty = 0
direction = 1

for _ in range(16*255):
    duty += direction

    if duty > 255:
        duty = 255
        direction = -1
    elif duty < 0:
        duty = 0
        direction = 1

    pwm.duty_u16(duty*duty)
    time.sleep(0.001)

PWM es un software PWM, se puede configurar en cualquier pin. Pin0, 15, 16 y así sucesivamente probado. Ambos tienen formas de onda similares.

▲ Cambio de forma de onda de Pin25 (LED de conducción)
▲ Cambios en el brillo del LED

(2) Servo de accionamiento PWM

El mecanismo de dirección utiliza un pulso con una frecuencia de 50 Hz y un ancho de pulso de cs 1.0 ~ 2.0 ms como señal de control. El siguiente es el pulso de control de salida cuando se genera la posición básica del servo.

from machine                import Pin,PWM
import time

pwm = PWM(Pin(15))

pwm.freq(50)
pwm.duty_u16(4915)

El mecanismo de dirección tiene tres conexiones:

  • Marrón: GND

  • Rojo: +4.5 ~ + 6V

  • Amarillo: señal de pulso de comando

▲ Servo y su interfaz

La fórmula para calcular Duty_16 es:

Relación correspondiente entre el ancho de pulso y duty_u16:

Ancho de pulso (ms) deber u16
1 3277
1,5 4915
2 6554

▲ Salida 50Hz, ancho de pulso de 1.5ms
▲ La forma de onda cambiante de PWM hace girar el mecanismo de dirección
from machine                import Pin,PWM
import time

pwm = PWM(Pin(16))

pwm.freq(50)

for _ in range(100):
    pwm.duty_u16(3276)
    print("Out pulse width : 1ms")
    time.sleep(1)

    print("Out pulse with : 2ms.")
    pwm.duty_u16(6553)
    time.sleep(1)

(3) Experimento PWM + ADC

Utilice el potenciómetro para introducir el voltaje cambiado en ADC (0), la MCU obtiene el valor ADC correspondiente y cambia la salida PWM para que el ancho del tiempo de salida cambie de 1 ms a 2 ms.

▲ Introduzca el potenciómetro en ADC (0)

Se puede ver que el ángulo de salida del mecanismo de dirección cambia con el cambio del potenciómetro.

▲ Gire el potenciómetro para cambiar el ángulo del servo
from machine                import Pin,PWM
import time

pwm = PWM(Pin(16))

pwm.freq(50)

control = machine.ADC(0)

for _ in range(1000):
    adc = control.read_u16()
    duty = int(adc * (6553-3276)/0xffff) + 3276
    pwm.duty_u16(duty)
    time.sleep(0.1)

5. Interrumpir IRQ

Utilice el borde descendente del pin PIN2 para generar una interrupción. El programa de muestra es el siguiente:

from machine                import Pin

p2 = Pin(2, Pin.IN, Pin.PULL_UP)

p2.irq(lambda pin:print("IRQ with flag:",
        pin.irq().flags()),
        Pin.IRQ_FALLING)

Utilice un puente para conectar el PIN2 a tierra. Cada vez que la espera provocará una interrupción.

▲ Conecte el PIN2 a tierra para ver que se activa la interrupción

▌Conclusión


A través de varios experimentos básicos de Pi Pico, se ofrece un ejemplo de aplicación preliminar de este módulo.

Referencia

[1]

Prueba básica de la placa de desarrollo RASPBERRY PI PICOhttps://zhuoqing.blog.csdn.net/article/details/114037888

[2]

Instale el entorno de desarrollo de Thonnyhttps://zhuoqing.blog.csdn.net/article/details/114064833

[3]

SDK de Raspberry Pi Pico Pythonhttps://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf

[4]

Hoja de datos de Pi Picohttps://datasheets.raspberrypi.org/pico/pico-datasheet.pdf

[5]

Sitio web oficial de Pi Picohttps://www.raspberrypi.org/documentation/rp2040/getting-started/

1. Se dice que muchos ingenieros de software envidian a los ingenieros de hardware

2. Varias interfaces de comunicación comúnmente utilizadas en microcontroladores, como I2C, SPI, UART, etc.

3. Se publican los resultados de las clasificaciones de lenguajes de programación de enero, y tenemos cinco hallazgos importantes

4.5 yuanes cambiados a 70, oye, el chip está agotado nuevamente

5. ¿Cómo diseña el conjunto de instrucciones el procesador RISC-V? Que es tan especial

6. Definiciones de macros comúnmente utilizadas por ingenieros integrados

Descargo de responsabilidad: este artículo se reproduce en línea y los derechos de autor pertenecen al autor original. Si está involucrado en los derechos de autor del trabajo, comuníquese con nosotros, confirmaremos los derechos de autor en función de los materiales de certificación de derechos de autor que proporcione y pagaremos la remuneración del autor o eliminaremos el contenido.

Supongo que te gusta

Origin blog.csdn.net/DP29syM41zyGndVF/article/details/114267071
Recomendado
Clasificación