
RpiPicoIO es una tarjeta diseñada por MCI Electronics, que contiene 4 relés y 4 optoacopladores para facilitar el control de elementos de alto requerimiento voltaico con un microordenador Raspberry Pi Pico y similares. Es ideal para ser usada en procesos industriales y automatización.
Además, incluye otros headers conectados directamente a pins de la Raspberry Pi Pico, pero aproximados a los componentes compatibles de la tarjeta. Esto agiliza el cableado, manteniendo orden al acortar la distancia de las conexiones y permitiendo al usuario elegir si optar o no por estas.



(Ver diagrama de conexiones en la sección anterior)
from machine import Pin, ADC, UART
import time
# Entradas digitales con pull-up
inputs = {
"IN1": Pin(10, Pin.IN, Pin.PULL_UP),
"IN2": Pin(11, Pin.IN, Pin.PULL_UP),
"IN3": Pin(12, Pin.IN, Pin.PULL_UP),
"IN4": Pin(13, Pin.IN, Pin.PULL_UP)
}
# Entradas analógicas
analog_inputs = {
"A0": ADC(26),
"A1": ADC(27),
"A2": ADC(28)
}
# Salidas digitales (relés y zumbador)
outputs = {
"RELAY1": Pin(18, Pin.OUT),
"RELAY2": Pin(19, Pin.OUT),
"RELAY3": Pin(20, Pin.OUT),
"RELAY4": Pin(21, Pin.OUT),
"BUZZER": Pin(22, Pin.OUT)
}
# Configurar UART0 para RS485 en GP0 (TX), GP1 (RX)
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
rs485_dir = Pin(2, Pin.OUT)
rs485_dir.value(0)
def test_digital_inputs():
print("== Entradas Digitales ==")
for name, pin in inputs.items():
value = pin.value()
print(f"{name}: {'PRESIONADO' if value == 0 else 'LIBRE'}")
print()
def test_outputs():
print("== Prueba de Salidas ==")
for name, pin in outputs.items():
print(f"Activando {name}")
pin.value(1)
time.sleep(0.5)
pin.value(0)
time.sleep(0.2)
print()
def test_rs485():
print("== Prueba RS485 ==")
message = "Hola desde RS485\n"
rs485_dir.value(1)
uart.write(message)
uart.flush()
time.sleep(0.1)
rs485_dir.value(0)
print(f"Transmitido: {message.strip()}")
time.sleep(0.5)
if uart.any():
received = uart.read().decode('utf-8')
print(f"Recibido: {received.strip()}")
else:
print("No se recibió ningún dato.")
print()
# Bucle principal
try:
while True:
test_digital_inputs()
test_outputs()
test_rs485()
time.sleep(2)
except KeyboardInterrupt:
print("Prueba interrumpida.")