Archivo del autor León Ramos

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

Wrapper: Ejecutar un script desde un servidor web en una cubieboard

¡Hola!

En esta ocasión vamos a realizar un wrapper o un script para realizar algunas acciones desde una página web en nuestra cubieboard A10.

IMPORTANTE: Cabe resaltar que esta práctica es altamente insegura y deberán de colocarse controles adicionales como contraseñas o manejo de usuarios para evitar problemas futuros.

Instalar dependencias

  • Lo primero que hay que realizar es asegurarse de que tenemos el servidor web apache instalado:
sudo apt-get install apache2 php

¿Funciona apache?

  • Ahora probaremos que está funcionando, conéctate a la misma red de tu cubieboard y revisa cuál es su dirección ip.
ip a
  • Abre un navegador y deberás ver una página de inicio como la siguiente

 

El script bash

  • Crearemos un script sencillo para probar la ejecución en la carpeta /var/www/html/scripts
sudo mkdir -p /var/www/html/scripts

cd /var/www/html/scripts/

nano script1.sh

El contenido del script será el siguiente:

#!/bin/bash

usuario=$(whoami)
echo "Este es un script BASH!!!! ejecutado por $usuario"

Recuerda darle premisos de ejecución:

sudo chmod 755 script1.sh

La página html

  • Ahora generaremos una página web con un botón en el archivo boton.html
cd /var/www/html

nano boton.html

El contenido del archivo es este:

<!DOCTYPE html>
<html lang="es">
  <head>
  <meta charset="UTF-8">
    <title>Botón para invocar un script Bash</title>
    <script>
      function ejecutarScript() {
        // Realiza una solicitud HTTP POST a un script PHP que ejecutará el script Bash
        console.log("Invocando PHP de fondo");
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "ejecutar_script.php", true);
        xhr.send();
      }
    </script>
  </head>
  <body>
    <h1>Botón para invocar un script Bash</h1>
    <form action="ejecutar_script.php" method="post">
      <input type="submit" value="Ejecutar script redirigiendo"/>
    </form>
    <form action="ejecutar_script_sudo.php" method="post">
      <input type="submit" value="Ejecutar script redirigiendo y sudo"/> 
    </form>
    <button onclick="ejecutarScript()">Ejecutar Script SIN redirigir</button>
  </body>
</html>

El script php

  • Ahora crearemos un script ejecutar_script.php para que lance el script bash
nano ejecutar_script.php

el contenido del archivo es el siguiente:

<?php
// Ruta al script Bash
$scriptPath = "/var/www/html/scripts/script1.sh";

// Ejecuta el script Bash
$output = shell_exec("bash $scriptPath");

// Si deseas imprimir la salida del script Bash, puedes hacerlo aquí
echo "<pre>$output</pre>";
?>

El gemelo malvado

También haremos otro script muy parecido  ejecutar_script_sudo.php pero este lo usaremos para ejecutar el script con permisos de superusuario

nano ejecutar_script_sudo.php

el contenido del archivo es el siguiente:

<?php
// Ruta al script Bash
$scriptPath = "/var/www/html/scripts/script1.sh";

// Ejecuta el script Bash
$output = shell_exec("sudo bash $scriptPath");

// Si deseas imprimir la salida del script Bash, puedes hacerlo aquí
echo "<pre>$output</pre>";
?>

Primera prueba

  • Hasta el momento si abrimos el navegador y escribimos la dirección http://<ip_cubieboard>/boton.html vamos a  ver lo siguiente:

Si damos clic en el primer botón todo funcionará correctamente y nos aparecerá la siguiente leyenda:

Sin embargo, si usamos el segundo botón, que intenta ejecutar el script con permisos de superusuario, nos generará un error, es necesario agregar algo más para que los permisos de superusuario funcionen.

Si damos clic een el tercer botón, se lanzará el script pero de fondo y no sabemos si se ejecutó o no. Para esto abre la consola de desarrollador de tu navegador y al presionar le botón deberás ver una salida como esta:

Donde nos indica que el código javascript efectivamente lanzó la ejecución del script bash pero no vemos la salida en la pantalla.

Permisos de root

  • Para agregar los permisos de super usuario será necesario que escribamos realicemos el siguiente procedimiento:

Abrir la tabla de sudoers con el comando que valida la sintaxis:

sudo visudo

Agregar al final del archivo la siguiente línea:

www-data ALL=(ALL) NOPASSWD: /bin/bash /var/www/html/scripts/script1.sh

Guardar y salir del archivo. Si todo ha salido bien, ahora el segundo botón funcionará y el script bash se habrá ejecutado como root o superusuario.

Happy coding!

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!

PorLeón Ramos

Worldcoin, Importaciones indias, discos duros HAMR

León Ramos, Alina Poulain y el Ingeniero Bruxo nos traen un nuevo episodio de la nueva temporada de Creadores Digitales en el que hablan de:

India restringe importación de electrónicos
¿Qué son los discos HAMR?
Worldcoin: ¿Vale la pena regalar tus biométricos por entrarle a las criptos?
#Cripto #Ethereum #India #Nearshoring #Mexico #HardDrive #Tecnologia
#Podcast #CreadoresDigitales #Importacion #HD

Image by storyset on Freepik

PorLeón Ramos

Adiós a los discos duros mecánicos dice Windows

Pues se ha filtrado desde el portal de Tom’s Hardware, que lo fabricantes de laptops o equipos nuevos han sido notificados o sugeridos por Microsoft que incorporen únicamente discos duros de estado sólido en lugar de los discos duros mecánicos tradicionales para que corra correctamente el sistema operativo.

La solicitud no oficial, que por cierto no aparece aún en la lista de requerimientos oficiales del sistema operativo Windows 11, está proyectada para ser efectiva para el 2023. Los fabricantes de hardware no tomaron de muy buena gana esta solicitud por dos cuestiones:

  1. Fallas en las cadenas de suministro
  2. Mayor costo para los segmentos de entrada

Fallas en las cadenas de suministro

Como todos saben, las condiciones actuales del mundo colocan a los fabricantes en un lugar muy incómodo para la fabricación de productos. ¿Han preguntado cuánto tiempo de espera hay en los automóviles nuevos? Es por ello que los fabricantes han solicitado una extensión en el tiempo límite o un periodo de gracia para la implementación de este requerimiento. Es posible que varios de ellos ya cuenten con stock de discos mecánicos que quieren colocar en el mercado y que no están dispuestos a simplemente descartar.

Mayor costo para los segmentos de entrada

Actualmente la proporción de costo de un disco de almacenamiento mecánico vs el costo de almacenamiento de estado sólido es de 1 a 3, es decir, el SSD cuesta tres veces más que un disco mecánico. Esto, para los segmentos altos de mercado no es importante, pero si es una diferencia sustancial para los segmentos de entrada.

¿Qué opinan? ¿Es una solicitud bien intencionada de Microsoft para mejorar la experiencia de usuario en los equipos? ¿Es el momento justo para ser rígidos en este requerimiento? ¿Ya te estás animando a instalar Linux en los equipos que todavía tienen discos mecánicos?

¡Escucho sus propuestas!

 
Foto de Vincent Botta en Unsplash

PorLeón Ramos

Un único cargador para gobernarlos a todos

Esta noticia la hemos estado siguiendo en CreadoresDigitales desde hace tiempo y ¿Qué creen? ¡Que ya es una realidad! El pasado martes 7 de junio fue aprobado por la comisión ejecutiva de la unión europea la iniciativa de un sólo cargador para todos los dispositivos de consumo.

El tipo de conector elegido es el USB-C, así que le podemos ir diciendo adiós al mini-USB, al micro-USB y al lightning de apple para los iphones.

La legislación que ha tardado 10 años en convertirse en una realidad, tras ser publicada, podría entrar en vigor para el año 2024. Así que si vives en la Unión Europea, podrás tirar todo tu masacote de cables a la basura y quedarte con un único cargador y un único cable de carga para todos tus dispositivos.

Ojo, no será exclusivo de los celulares, casi todos los dispositivos serán suceptibles de esta regulación, así que prepárte para audífonos, cámaras, bocinas y hasta laptops que cargan únicamente con USB-C. (Claro, las laptops podrían salir un poco más tarde por ahí de finales del 2024 para darles chance a los fabricantes de hacer las cosas.)

Desde CreadoresDigitales nos preguntamos si Apple tendrá una postura oficial al respecto o si emitirá algún comunicado, así mismo, espero que ésta regulación, aunque es meramente europea, fuerce a los fabricantes mundiales homologar los productos de forma mundial, claro entendemos que hay diferentes clavijas y voltajes (en europa las clavijas son redondas y usan voltaje 220V y en México usamos los estándares americanos de clavijas planas y voltaje de 110-120V), pero aún así ¿No será más barato homologar todos los equipos con los mismos conectores?

Sólo me queda decir, ¡Gracias unión Europea!

Foto de Solen Feyissa en Unsplash

PorLeón Ramos

Home office en la arquitectura con Fernanda Soriano

Esta es una plática deliciosa con la arquitecta Fernanda Soriano en donde conocemos la iniciativa de ciudadesEnCuarentena de la cual es partícipe. La sorpresa nos llega por las formas tan creativas que las personas confinadas tienen para reclamar espacios y convertirlos para poder realizar actividades que antes se realizaban en el exterior.

¿Cambiarán los diseños de las casas? ¿Cambiarán las ciudades que nos rodean? Son algunas de las preguntas que intentamos contestar en esta entrevista que recomendamos sin lugar a dudas a todos.

Tengan salud,

Escucha a Alina Poulain, Hiram Camarillo y a León Ramos en el podcast de Creadores Digitales en vivo todos los jueves 8:30pm.

Photo by Austin Distel on Unsplash

Nuestras Redes

@creadoresdigita CreadoresDigitales

Sigue a León, Hiram y Alina en Twitter

Hiram @hiramcoop
León @fulvous
Alina @alinapoulain

¡Escúchanos!

En Ivoox En Spotify
ApplePodcast En Youtube
Google podcast
PorLeón Ramos

Ley de software libre en Sonora

El día de hoy nos acompañan el Prof. Iván R. Chenoweth y Manuel Haro. para platicar sobre la nueva ley de software libre, ¿Cómo llego ahí?, ¿Qué pasó?.

Las leyes de software libre que se encuentran actualmente en vigencia en Zacatecas y Oaxaca, otorgan un marco legal de preferencia para la compra gubernamental de software libre sobre el software privativo. Además de brindar las facilidades de vinculación entre las instituciones de educación superior y la iniciativa privada. El objetivo es tener grupos de egresados que, lidereados por profesores o expertos en diseño de software, desarrollan las plataformas informáticas que el estado necesita.

En el caso de la ley de software libre de Sonora en el momento de la entrevista se encuentra en discusión en la cámara de diputados estatal y tiene una alta probabilidad de ser aceptada. Desde creadores digitales les deseamos mucha suerte y esperamos que esta ley se traduzca en un bien para la sociedad sonorense.

Que tengan salud,

Escucha a Alina Poulain, Hiram Camarillo y a León Ramos en el podcast de Creadores Digitales en vivo todos los jueves 8:30pm.

Photo by Austin Distel on Unsplash

Nuestras Redes

@creadoresdigita CreadoresDigitales

Sigue a León, Hiram y Alina en Twitter

Hiram @hiramcoop
León @fulvous
Alina @alinapoulain

¡Escúchanos!

En Ivoox En Spotify
ApplePodcast En Youtube
Google podcast
PorLeón Ramos

CFE y la producción privada de energía, con David Rosales

¿Qué podemos hacer para no quedarnos sin energía eléctrica con estos cortes?

En esta riquísima plática con David Rosales nos enteramos de las causas de los cortes de electricidad. Lo que la nueva ley impactará en las subastas eléctricas y un poco de lo que nos espera en el futuro.

David Rosales es actuario y maestro en finanzas, cuenta con 20 años de experiencia en los sectores financiero y energético, tanto en los sectores público y privado pues ha trabajado en la Secretaría de Energía, Banobras, Pemex, IEnova y otras empresas de energía.

Es consultor para el desarrollo de proyectos de inversión, principalmente energéticos (electricidad e hidrocarburos) y
David es principalmente ávido jugador de juegos de mesa, dungeon master y jugador empedernido de Magic, tanto online como en su mesa de juegos. Pero también es intenso seguidor de las noticias internacionales económicas, financieras y de políticas públicas.

@DavidRosalesH y @wetweetenergymx

No les voy a arruinar el podcast pero las energías limpias como la solar son una muy buena opción para disminuir el consumo y tener mejor suministro. Por otro lado, si nuestra preocupación es mantener la continuidad del negocio o de la organización, una planta a base de combustible es nuestra opción. Recuerden que se necesitan baterías o UPS para soportar el corte transitorio.

De verdad no se pierdan esta entrevista y apuesten por las energías verdes para el futuro.

Tengan salud,

Escucha a Alina Poulain, Hiram Camarillo y a León Ramos en el podcast de Creadores Digitales en vivo todos los jueves 8:30pm.

Photo by Austin Distel on Unsplash

Nuestras Redes

@creadoresdigita CreadoresDigitales

Sigue a León, Hiram y Alina en Twitter

Hiram @hiramcoop
León @fulvous
Alina @alinapoulain

¡Escúchanos!

En Ivoox En Spotify
ApplePodcast En Youtube
Google podcast
PorLeón Ramos

Bitcoin está imparable

—No importa que tengas 1 millón en bitcoins, no puedes comprar nada. No puedes ir a la agencia y comprarte un coche —me dijo hace 2 semanas un amigo defendiendo que no iba a invertir en bitcoins nunca.

Pues el pasado 1° de febrero de este año, Elon Musk, anunció que Tesla tendrá 1,500 millones de dólares ahorrados en bitcoins. Además también promete aceptar los bitcoins para que compres tu Tesla.

Entre paréntesis, Elon, quiere apoyar el crecimiento del dogecoin, está crypto que tiene un perrito como su logotipo. Sin embargo, aunque creció mucho, no tuvo el mismo efecto que tuvo con el bitcoin.

Pero no sólo eso, ayer 10 de febrero el blog de noticias de mastercard, compartió que aceptará pagos con criptomonedas. No lo hará directamente, se apoyará con dos terceros, Wirex y Bitpay. Y, aquí viene lo interesante, no lo hará directamente con criptomonedas sino los cambiará primero a la moneda fiduciaria local y luego hará la transacción con los bancos. Lo mismo pasará para sacar dinero del ATM, se convertirá el bitcoin a moneda fiduciaria local y entonces te será despachada.

Esto quiere decir que la unión entre lo intangible y lo tangible está a punto de suceder, así que guarden los bitcoins un poco más que ya podrán hacer la compraventa de todo tipo de bienes y servicios.

Tengan Salud,

 

Escucha a Alina Poulain, Hiram Camarillo y a León Ramos en el podcast de Creadores Digitales en vivo todos los jueves 8:30pm.

Photo by Clifford Photography on Unsplash

Nuestras Redes

@creadoresdigita CreadoresDigitales

Sigue a León, Hiram y Alina en Twitter

Hiram @hiramcoop
León @fulvous
Alina @alinapoulain

¡Escúchanos!

En Ivoox En Spotify
ApplePodcast En Youtube
Google podcast