Archivo de etiquetas armbian

PorLeón Ramos

Leer un Switch desde la Cubieboard

¡Saludos, comunidad de creadores digitales! En nuestra aventura continua por el cruce entre la programación y la electrónica, hoy vamos a profundizar en cómo utilizar la biblioteca gpiod en Python para interactuar con un switch de dos polos conectado a una Cubieboard A10, implementando una resistencia pull-up. Este tutorial está diseñado para aquellos de ustedes interesados en fusionar el poder del hardware y el software para dar vida a sus ideas electrónicas.

Lo Que Necesitas

Antes de adentrarnos en la mecánica del código, asegúrate de tener a mano:

  • Una Cubieboard A10.
  • Un switch de dos polos.
  • Cables de conexión.
  • Una resistencia pull-up (sugerimos 10KΩ).
  • Python y la biblioteca gpiod instalados en tu Cubieboard.

Preparación del Entorno

Si aún no tienes la biblioteca gpiod, instálala ejecutando el siguiente comando en tu terminal:

pip install gpiod

Esta biblioteca facilita la interacción con los pines GPIO de la Cubieboard A10 de forma eficiente.

Esquema de Conexión: Switch de Dos Polos con Pull-Up

Para garantizar una lectura precisa del estado del switch sin interferencias del ruido eléctrico, utilizaremos una resistencia pull-up. A continuación, te presento el esquema de cómo conectar el switch de dos polos con la resistencia pull-up al pin GPIO 11 (CSI1-D0, línea 196) de tu Cubieboard A10:

 

Este esquema muestra el correcto cableado, incluyendo la resistencia pull-up conectada entre el switch y la fuente de voltaje positivo (VCC), además de la conexión a tierra (GND) desde el switch. Es una configuración ideal para evitar lecturas falsas por el ruido.

 

Script de Python para Leer el Estado del Switch

Ahora que tenemos todo conectado correctamente, veamos cómo leer el estado del switch mediante Python y gpiod:

import gpiod
import time

CHIP_NAME = 'gpiochip0'
PIN_NUMBER = 196

chip = gpiod.Chip(CHIP_NAME)

line = chip.get_line(PIN_NUMBER)
line.request(consumer='read_switch', type=gpiod.LINE_REQ_DIR_IN)

print("Iniciando monitoreo del switch. Presiona CTRL+C para terminar.")

try:
   while True:
      state = line.get_value()
      if state == 1:
         print("Switch abierto (OFF)")
      else:
         print("Switch cerrado (ON)")
      time.sleep(0.5)

except KeyboardInterrupt:
   print("Finalizando monitoreo del switch.")

line.release()

Desglose del Código

El script inicia importando los módulos necesarios y estableciendo el chip GPIO y el número de pin. Accedemos al pin deseado como entrada y entramos en un bucle para leer constantemente el estado del switch, indicando si está abierto o cerrado.

Conclusión

Integrar componentes de hardware como un switch de dos polos con tu Cubieboard A10 abre un mundo de posibilidades para tus proyectos. Este tutorial te brinda los conocimientos básicos para empezar, desde la configuración física hasta la interacción a través de Python.

Nos encantaría ver qué proyectos increíbles puedes crear a partir de este conocimiento. ¡Comparte tus experiencias y aprendizajes con la comunidad!

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!