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] .
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] :
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)
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.
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)
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.
(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
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 |
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.
Se puede ver que el ángulo de salida del mecanismo de dirección cambia con el cambio del potenciómetro.
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.
▌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 PICO : https://zhuoqing.blog.csdn.net/article/details/114037888
[2]Instale el entorno de desarrollo de Thonny : https://zhuoqing.blog.csdn.net/article/details/114064833
[3]SDK de Raspberry Pi Pico Python : https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf
[4]Hoja de datos de Pi Pico : https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf
[5]Sitio web oficial de Pi Pico : https://www.raspberrypi.org/documentation/rp2040/getting-started/
1. Se dice que muchos ingenieros de software envidian a los ingenieros de hardware
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.