miércoles, 21 de diciembre de 2022

Cmd2PC (envía comandos desde Android a la PC)


En esta ocasión traigo este interesante proyecto; se trata de una aplicación para Android hecha en Mit App Inventor que permite ejecutar determinados comandos en la PC.

A través de bluetooth la aplicación envía caracteres que serán recibidos por un Pro Micro con un módulo HC-06 conectado a él.

Pro Micro es una pequeña y completa placa basada en el ATmega32U4, el mismo microcontrolador del Arduino Leonardo.

El microcontrolador entonces interpretará estos caracteres y ejecutará los comandos asociados en la PC. Como se puede observar en el video son comandos correspondientes al sistema operativo Gnu-Linux pero el código es fácilmente adaptable para cualquier otro. Como comenté en esta entrada: “Una de las funcionalidades más interesantes de este microcontrolador es la de poder funcionar como un HID (Human Interface Device), pudiendo emular un teclado o mouse.”

Utilizaremos la librería SoftwareSerial.h para realizar la conexión con el módulo HC-06 y la librería Keyboard.h para emular el teclado.

Para este proyecto elegí los siguientes comandos que el Pro Micro escribirá en la pc:

  • systemctl poweroff (apaga la pc)
  • systemctl reboot (reinicia el sistema)
  • systemctl suspend (pone la pc en estado de suspensión)
  • loginctl lock-session (bloquea el sistema)
  • loginctl unlock-session (desbloquea el sistema)

El Pro Micro envía primero la instrucción ALT+F2 para poder luego ingresar cualquiera de los comandos arriba enumerados.

La conexión del módulo bluetooth hc-06 es muy sencilla:

HC-06 Pro Micro
VCC 5v
GND GND
TX D8
RX D9

La aplicación para Android también es muy sencilla, debajo dejaré los links a la galería de Mit App Inventor para que puedan hacer copia de la App, igualmente en el repositorio de GitHub dejaré también una captura de pantalla de la configuración de los bloques.

El funcionamiento de la app es muy sencilla cada botón tiene asignada una acción que es la de enviar un caracter “L-U-S-P-R” (bloquear, desbloquear, suspender, apagar y reniciar correspondientemente) vía bluetooth al Pro Micro.

Links:

GitHub: https://github.com/mcattani/cmd2pc

Mit App Inventor: https://gallery.appinventor.mit.edu/?galleryid=e26f7e65-c1a8-4855-8d1e-1716ecdd34e2

Espero les haya interesado. Como siempre si este post les resultó de interés no duden en compartirlo en sus redes y comentar!

Saludos.




lunes, 24 de octubre de 2022

RamDrive (v3)


Desde hace un tiempo y por diferentes motivos volví a utilizar unidades creadas con memoria ram o ramdrives (mas que nada para codificar video) utilizando la aplicación que hice hace algún tiempo publicada aquí.

Me pareció que la aplicación podía actualizarse (quiero creer que aprendí algo todo este tiempo XD ) sobre todo en lo que aspecto visual se refiere.

No voy a repetir todo el post respecto a qué son este tipo de unidades. Solo voy a volver a destacar dos aspectos que me parecen importantes:

  1. La unidad solo puede almacenar información durante la sesión en curso. Si se apaga o reinicia el sistema, toda la información de la misma se borrará.
  2. La velocidad de lecto/escritura de la RAM es muchísimo mas alta que la del disco (incluidas unidades USB y discos SSD).

Pueden dárseles varios usos a estas unidades, vuelvo a recomendar que lean la entrada original -> RamDrive

Para esta versión (v3) se volvió a diseñar toda la interfaz gráfica. No más pantallazos tipo wizard. Como pueden ver en el video todo está en el mismo cuerpo del programa. Con el uso de contenedores (de a poco le estoy tomando la mano) ya debería no haber problemas al redimensionar la pantalla principal. Debería verse bien tanto en Gtk3 como en Qt.
Se agregó también la búsqueda para nuevas versiones en caso de que haya futuras modificaciones.

Espero les sirva.

Si esta entada les gustó / interesó no duden en compartir y comentar debajo.

Link al repositorio de GitHub: https://github.com/mcattani/ramdrive

Saludos!

miércoles, 5 de octubre de 2022

MyNotesDB


Durante la pandemia de Covid-19 muchas clases se dictaron de manera virtual. Posiblemente esta modalidad ha llegado para quedarse.

Este programa (escrito en Gambas3) nació de la necesidad de tener un lugar donde almacenar de manera ordenada las notas tomadas en dichas clases.

El programa utiliza una base de datos Sqlite3 para almacenar la información.

Como se ve en la imagen esta información se compone de varios campos: id (que se genera automáticamente y no se puede modificar), fecha, autor, clase, lugar, tags (palabras clave) y contenido.

El programa permite realizar búsquedas en cualquiera de estos campos (excepto ID que no tiene mucho sentido). Tras realizar la búsqueda la lista de entradas se reduce a los resultados de la misma, luego se puede refrescar la lista para volver a mostrar todas las entradas.

El programa permite también realizar una limpieza de la base de datos a través del comando vacuum de sqlite. Para más información sobre el mismo sugiero visitar este link,

También se pueden exportar las entradas a una variedad de formatos:

  • Texto plano .txt
  • Texto plano .md
  • Word (docx)
  • HTML

Se utiliza el formato markdown como referencia. Formato que suelo utilizar para tomar apuntes.

Para exportar las entradas es necesario tener instalada la aplicación pandoc, que es la realiza la conversión entre los formatos (excepto para exportar en formato de texto plano)

sudo apt install pandoc

Dejo en las carpetas Archlinux y Debian los instaladores correspondientes. De producirse fallas con los mismos recomiendo bajar Gambas3 en su totalidad.

sudo apt install gambas3*

Como siempre el programa está ampliamente comentado y lo pueden modificar para que se ajuste a sus necesidades.

Link al proyecto en GitHub: https://github.com/mcattani/mynotesdb

Si te gustó / interesó esta entrada no dudes en dejar un mensaje y compartir.

Saludos!

lunes, 15 de agosto de 2022

Probando una Matriz Led 8x8 c/ chip MAX7219


Hace poco recibí un módulo de matriz led 8x8 que utiliza el chip MAX7219.

Este módulo integra una matriz de leds de 8x8 y un chip MAX7219, lo que permite trabajar rápidamente con matrices led y utilizando solo 4 cables para la comunicación. Estos módulos se pueden conectar en cascada utilizando un solo bus SPI y mostrar textos o gráficos más grandes. (Fuente)

Con respecto al chip:

El chip MAX7219 puede controlar 64 leds de forma independiente (u 8 dígitos de 7-segmentos), incluye un decoder BCD, posee una memoria RAM estática interna de 8x8. Permite el control del brillo de forma digital y analógica. (Fuente)

Como se ve en el video en esta serie de proyectos vamos a probar la funcionalidad de este módulo. Cabe aclarar que se pueden conectar varios de estos en cascada (para mostrar texto por ejemplo) en este caso utilizaremos solamente uno.

Un excelente tutorial sobre desplazamiento lateral de mensajes utilizando una serie de estos módulos pueden encontrarse en este enlace.

Para el primer proyecto utilizaremos dos sensores tilt (KY-017) que mostrarán la imagen de una flecha según el lado en el que se incline la protoboard; en el segundo proyecto utilizaremos un potenciómetro para modificar el progreso de una barra; en el tercer y cuarto proyecto utilizaremos un pulsador para mostrar números y símbolos.

La conexión del módulo es muy sencilla:

Señal Pin
VCC 5V
GND GND
DIN D11
CS D10
CLK 13

En estos proyectos utilizaremos la librería LedControl.h que se puede encontrar en el IDE de Arduino. 

Como se ve en los sketch (ampliamente comentados, como siempre) esta librería es bastante sencilla de usar; existen otras un poco más complejas y bastante útiles si vamos a utilizar más módulos y queremos por ejemplo, mostrar texto.

MD_MAX72XX es una librería que sirve para tal fin y viene con varios ejemplos. Se puede descargar desde el IDE de Arduino o desde este link.

Recomiendo mucho la siguiente web: https://xantorohara.github.io/led-matrix-editor/ en esta vamos a poder crear de manera sencilla todo tipo de imágenes y caracteres que se nos ocurra. Fue la que utilicé para crear las flechas y los gráficos de barra para los primeros dos proyectos y de donde saqué los símbolos y números para los siguientes.

Para ir finalizando les dejo un par de links útiles:

El datasheet correspondiente al chip MAX7219:  

https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf

El datasheet correspondiente a la matriz de led utilizada:  

https://cdn-shop.adafruit.com/datasheets/KWM-30881XVB.pdf

Finalmente les dejo el link al proyecto en GitHub donde se encuentran los 4 sketch utilizados y los diagramas de conexión:
https://github.com/mcattani/matrixLed_MAX7219

Si les gustó / interesó este proyecto por favor no olviden comentar y difundir.

Saludos!

lunes, 30 de mayo de 2022

Rfid Login - Pro Micro (Arduino)

Hace poco adquirí un Arduino Pro Micro; hace tiempo que tenía ganas de conseguir uno y ver que proyectos podían realizarse.

El Arduino Pro Micro es una pequeña y completa placa basada en el ATmega32U4, el mismo microcontrolador del Arduino Leonardo.

Una de las funcionalidades más interesantes de este microcontrolador es la de poder funcionar como un HID (Human Interface Device), pudiendo emular un teclado o mouse.

Esta funcionalidad de emulación HID (Human Interface Device) está disponible de forma nativa en placas que incorporan los procesadores ATMEGA 32u4 (Micro, Leonardo) (Fuente)

Para este proyecto vamos a utilizar esta capacidad del Pro Micro para emular un teclado (utilizando la librería keyboard.h ya presente en el IDE de Arduino) para ingresar nuestra contraseña e iniciar sesión en el sistema.


Podríamos usar un pulsador para realizar esta tarea pero me pareció más interesante usar un lector RFID RC522 (que hasta ahora nunca había utilizado). De manera que cuando le acercamos el TAG autorizado se ejecuten las instrucciones necesarias para realizar el login.

También incluí dos LEDS (rojo y verde) que se enciendan según utilicemos el TAG autorizado o no correspondientemente.

Detallo las conexiones a continuación:

Led Rojo Led Verde
Pin D3 Pin D4
Señal RC522 Pin Pro Micro Pin
RST/Reset RST 9
SPI SS SDA(SS) 10
SPI MOSI MOSI 16
SPI MISO MISO 14
SPI SCK SCK 15

GND GND

3.3v 3.3v

En el video verán que estoy usando un pulsador. El mismo no tiene ninguna relevancia para el proyecto; estaba teniendo problemas para subir los sketch al Pro Micro y encontré que pulsando reset previo a enviar el sketch el mismo se subía sin ningún problema.

Un problema que sí me surgió fue el de cómo darle energía al lecor RFID dado que utiliza 3.3v y el Pro Micro provee solo una salida de 5v. Para solucionar este problema utilicé una fuente para protoboard que me permite elegir entre 5v y 3.3v para las diferentes líneas.


 

Si se utiliza una fuente para la protoboard es imporante unificar la tierra (GND) de la propia fuente y de la del Pro Micro.

Pueden buscar otras soluciones en internet si es que no tienen una fuente disponible; se pueden utilizar resistencias en serie para bajar el voltaje.

Verán que cada paso del sketch está comentado para su mayor comprensión. Los pasos a seguir son bastante sencillos: tras comparar el UID del TAG utilizado vemos si este es el autorizado o no. En caso de serlo el microcontrolador "imprime" el password, envía la señal de enter/entrar y enciende el led verde por medio segundo; en caso de utilizar un tag no autorizado simplemente enciende el led rojo y el loop continúa ejecutándose hasta que se acerque nuevamente un tag.

Dejo el link al sketch:  

https://gist.github.com/mcattani/92f0fb8e9959ef4fec0a3327f9e4a690

Si este u otro de los proyectos publicados en este blog te pareció interesante por favor no dudes en dejar un comentario, darle like y compartir.

Saludos!

jueves, 7 de abril de 2022

Binance2Arduino

 

Ya en otra ocasión publiqué un proyecto que conectaba una aplicación hecha en Gambas3 con un Arduino (Temp2LCD). 

Como pueden ver en la captura de pantalla Binance2Arduino es una aplicación que busca la cotización de hasta dos criptomonedas mediante la web de Binance y la envía a un Arduino UNO para ser desplegada en un display LCD (16x2). El display que estoy utilizando cuenta con una interfaz I2C por lo que las conexiones son bastante sencillas.

Hay un LED conectado en el pin 13 que se enciende cuando el Arduino recibe información desde la pc.

Recuerden que en el Arduino UNO el pin digital 13 ya cuenta con una resistencia integrada, si van a utilizar otro pin deben conectar una para evitar quemar el LED.

La función del LED es puramente estética. Me sirvió al momento de escribir el sketch como ayuda visual para ver cuando se estaba recibiendo información en el Arduino.

El programa busca la cotización de dos criptomonedas (o una si se desea), recibe la información en formato json, la decodifica y la envía como una sola línea al Arduino. Previamente al envío recorta a 16 caracteres la información recibida que es el máximo de caracteres por línea que pueden mostrarse en el lcd (esto recorta algunos valores cuando la cotización posee muchos decimales). Luego el Arduino divide la cadena recibida en dos y la despliega en cada línea del display.

Como ven el programa es bastante simple. Podría complejizarse agregando, por ejemplo, un gridview para buscar mas cotizaciones e ir desplegándolas alternativamente en el Arduino. Si alguien quiere hacerlo, como en todos los proyectos que publico, el código fuente de la aplicación y el sketch de Arduino estará disponible en github. Puede ser un buen ejercicio para los que estén aprendiendo. También puede reemplazarse la conexión USB por una bluetooth por ejemplo utilizando un módulo HC-06. En este link pueden ver un proyecto donde utilizo dicho módulo. Las modificacione necesarias en el sketch pueden copiarlas de ahí, son muy simples.

Me gustaría volver a repetir este proyecto utilizando un esp8266 (que hasta ahora nunca usé) y un display OLED para mostrar más información.

Link del proyecto en GitHub: https://github.com/mcattani/binance2arduino

Espero que este proyecto les haya resultado útil, o por lo menos entretenido. De ser así los invito a dejar un comentario y compartir.

Saludos!.