Archivo de etiquetas control

PorLeón Ramos

SOS: Enciende un LED con la GPIO de tu Cubieboard A10

Hola:

Acá les voy a compartir la receta de cocina para poder controlar un led desde uno de los pines de la GPIO. Tengo una Cubieboard A10 con Armbian 23.11.1 bookworm. Vamos a necesitar:

  1. Una resistencia de 220 (rojo, rojo, café) o 330 (naranja, naranja, café) ohms.
  2. Un diodo led de preferencia de bajo consumo (no ultrabrillante).
  3. Una protoboard
  4. Algunos cables dupont para conectar de header macho a protoboard (Dupont macho-hembra).

 

Para empezar, seleccionamos un pin de la GPIO. Para eso buscamos el diagrama pinout de la placa.

Diagrama pinout Cubieboard A10 GPIO

 

 

En nuestro caso vamos a seleccionar el pin 11 del puerto del lado derecho del diagrama. Es el pin margado como CSI1-D0. Y para aterrizar el circuito usaremos el pin 19 o 20  marcados como GND o Ground del mismo puerto. El circuito nos quedaría de la siguiente forma:

Diagrama de conexiones

Actualizar sistema

sudo apt update
sudo apt upgrade

Instalar dependencias de python

sudo apt install python3-libgpiod

Revisar pines disponibles

dtc -I dtb -O dts -o sun4i-a10-cubieboard.dts /boot/dtb/sun4i-a10-cubieboard.dtb

Script python

Acá estaría el script que debes de copiar y pegar en un archivo. Yo le puse de nombre sos.py.

#!/usr/bin/python

import gpiod
import time

def morse_code_signal(line, symbol):
    if symbol == ".":
        line.set_value(1)
        time.sleep(0.2)  # Duración del punto
        line.set_value(0)
        time.sleep(0.2)  # Espacio entre partes de la misma letra
    elif symbol == "-":
        line.set_value(1)
        time.sleep(0.6)  # Duración de la raya
        line.set_value(0)
        time.sleep(0.2)  # Espacio entre partes de la misma letra

def morse_code_sos(line):
    # Representación de SOS en Morse: ... --- ...
    for symbol in "... --- ...":
        morse_code_signal(line, symbol)
        if symbol == " ":
            time.sleep(0.6)  # Espacio entre letras

chip = gpiod.Chip('gpiochip0')
line_number = 196
led = chip.get_line(line_number)
led.request(consumer='gpio_led_morse', type=gpiod.LINE_REQ_DIR_OUT)

try:
    while True:
        morse_code_sos(led)
        time.sleep(5)  # Espera 5 segundos antes de repetir
finally:
    led.release()

 

Ahora podemos darle permisos de escritura

chmod 755 sos.py

Ejecutamos como superusuario

sudo ./sos.py

¡Y listo! ¡Ya podemos controlar un LED con un script python en linux!

Happy coding!