sábado, 20 de noviembre de 2021

Agregando conectividad Bluetooth a un parlante (Mod.)

Este proyecto es bastante diferente a los que venía publicando anteriormente.

Desde hace bastante tiempo tenía unos parlantes AIWA de un equipo de audio estropeado que finalmente fue descartado. Hace poco se me ocurrió la idea de ver si podía transformar/adaptar uno de los parlantes (el otro tiene roto el bafle) en un parlante Bluetooth de buena potencia/calidad.

Empecé probando el parlante en un equipo existente para comprobar que funcionase y por suerte así lo hizo. No tengo manera de evaluar objetivamente al mismo pero la calidad del audio me pareció excelente.

El próximo paso fue investigar qué componentes necesitaría, en principio requeriría:

  • Un módulo amplificador mono. El modelo que indicaba el parlante no me brindó mucha información, más que la de afirmar que era de 80W.
  • Un módulo receptor de audio bluetooth.

En cada caso fui probando los componentes, cada uno con su propia fuente de energía. Las fotos que ven son el producto final.


Con respecto al amplificador me decidí por un Módulo Amplificador de Audio Mono 60w Clase D Tpa3118

Características:
Circuito Integrado: TPA3118
Rango de tensión: DC8-24V
Potencia de salida: 60 W máx.
Número de canales: 1 (MONO)  

Como fuente para el amplificador utilicé una fuente de una vieja netbook que según sus especificaciones proveía 19.5v / 2.4 amperios.


Con estas características me pareció que la fuente iba a ser suficiente.
Corté el conector y soldé los cables al amplificador. Con ayuda de un multímetro identifiqué los polos +/-.

Con respecto al módulo receptor de audio BT me decidí por el siguiente: Módulo Placa Receptor Bluetooth Sin Pérdidas Estéreo 5v Mp3 .

Características:
Fuente de alimentación: 3.7 - 5v
Distancia de transmisión: 15 metros
Bluetooth version: 4.1
Voltaje de operación: Soporte de alimentación de 5 voltios
Distancia de transmisión: 15 mts.

Para probar el módulo lo alimenté utilizando un cargador común de celular (creo que era de un antiguo Motorola que tenía por ahí guardado). Le corté la terminal USB y soldé los cables a la placa (como se ve en la imagen el módulo puede ser alimentado con un USB pero el conector que tenía no era el mismo).

Me aseguré que el cargador no sea de los de carga rápida, dado que esos entregan 9v y no 5v como requiere el módulo.

Aclaración: Las características arriba mencionadas corresponden a los datos proporcionados por el vendedor. En mi caso adquirí los módulos a través de Mercado Libre.

Del receptor BT saqué tres cables:

  • El GND conectado al “-“ del amplificador
  • Y los canales derecho/izquierdo (left/right) los uní y los conecté a la terminal positiva (“+”)

El primer intento fue más o menos un éxito. Tuve que desoldar y volver a soldar los cables entre los módulos, por alguna razón el volumen era muy bajo y el audio tenía mucho ruido. Pero tras solucionar este problema el resultado fue excelente, la potencia del audio y la claridad del mismo no dejaron nada que desear.

Una vez que me aseguré que todo funcionara bien empezó la tarea de ver como seguir, necesitaba poder:

  • Buscar una nueva fuente para el receptor BT, ya que hasta el momento venía utilizando una fuente para cada módulo.
  • Agregar al parlante algún interruptor de encendido/apagado.

Respecto de la nueva fuente, conseguí en el sitio antes mencionado una Fuente Switching Ac 220v Salida Dc 5v 700ma Step Down Ac/Dc.

Características:
Voltaje de entrada: 50-270V AC
Voltaje de salida: 5V DC (± 0.3V)
Corriente de salida: 700 ma
Potencia de salida: 3.5W
Protecciones: Corto circuito / Sobretensión / Sobre corriente / Temperatura

Reemplacé el cargador que alimentaba el módulo receptor BT con la fuente switching step down.

A partir de acá fue ir cableando todo con cuidado. Utilicé una bornera para unir la entrada de 220v con las salidas. Unifiqué la entrada de ambas fuentes en una sola terminal de la bornera y en el otro extremo armé un cable común y corriente con su respectivo conector macho (pueden pedirlo en cualquier casa de iluminación por ejemplo, con el largo que quieran).

También agregué un switch que conecté a la línea que va directamente a los 220V, lo que permite el encendido/apagado de todo el conjunto.

El último paso consistió en ir ubicando todos los componentes; utilicé pegamento térmico para asegurarlos detrás del parlante. Con el pegamento aseguré también la bornera y todos los cables (para evitar que tirones estropearan alguna conexión).

Es convenientes encontrar alguna manera de proteger los módulos.

Recordar que la fuente que alimenta al receptor BT recibe 220V AC por lo cual es conveniente que encentren alguna forma de aislar los componentes por seguridad.

En mi caso tenía una cajita de acrílico con bordes de madera que utilicé para contener todos los módulos. También utilicé el pegamento sobre todas las conexiones para asegurarlas y sobre la bornera para aislar bien las líneas de 220v.


Sé que el resultado podría ser mucho más prolijo y estéticamente agradable pero fue así como salió ¯_(ツ)_/¯ de frente el parlante se ve impecable por lo menos :).

Lamentablemente ni la potencia ni la claridad del audio se aprecian bien en el video.

Debo decir que lo vengo utilizando desde hace un tiempo, y a riesgo de repetirme el resultado superó por mucho mis expectativas. Lo vuelvo a repetir, la calidad de audio es excelente, tanto los agudos como los bajos se escuchan perfecto. Y la potencia de sonido es más que suficiente para cualquier ocasión, pienso que un amplificador de más potencia podría estropear el parlante. Me hubiera gustado que el otro parlante no hubiera estado estropeado para hacer una versión estéreo (que era mi idea original).

Espero les haya interesado este proyecto, también espero haber sido claro relatando todos los pasos que fui realizando para que cualquiera pueda hacerlo. Si tienen algún parlante tirado por ahí les recomiendo probarlo. Los componentes (módulos) no son caros y todo el resto puede conseguirse en cualquier casa de iluminación.

Cualquier duda, consejo o comentario, por favor no duden en escribir abajo.

Saludos!

lunes, 11 de octubre de 2021

Control Swap/zRAM

 

Esta sencilla aplicación cumple diversos propósitos.

El primero es el de poder ajustar el valor de la swappiness.

El parámetro del kernel que gestiona el uso de la memoria virtual es el anteriormente mencionado swappiness, y básicamente podemos decir que se encarga de definir que tan seguido accedemos a la partición de intercambio y que tanto contenido copiamos en ella, mediante un argumento que varía entre 0 y 100.
Citado de: ubunlog.com

Si están utilizando Ubuntu por ejemplo y no han modificado este valor, seguramente sea de 60. En mx-Linux (que utilizo en una notebook de bajo recursos) el valor por defecto es de 15.

Volviendo a citar la web antes mencionada:

Cuando se lo deja por defecto en 60 lo que se le dice al kernel es que vaya y utilice la memoria virtual cuando nuestra memoria RAM tenga el 40 por ciento o menos de su capacidad libre.

La aplicación permite cambiar este valor (podemos ir probando diferentes valores para ver cuál es el que más nos conviene).

Cabe aclarar que los cambios no son permanentes, al reiniciar le ordenador el valor volverá a ser el que había por defecto. Podemos volver a cambiarlo con la aplicación o cambiarlo de manera permanente, para tal fin recomiendo visitar el blog arriba mencionado para ver las instrucciones.

La segunda función que tiene el programa es la de activar/desactivar completamente la swap.

En lugar de utilizar espacio en la memoria RAM, el swap utiliza el disco duro para almacenar datos temporales, así se reduce el uso de la RAM. El uso combinado de memoria RAM y swap crean una memoria virtual de mayor capacidad a la que trae el ordenador por defecto. Citado de: Wikipedia

En ocasiones desactivo la swap para hacer uso de la memoria RAM en su totalidad. Aunque si uno se dedica bien a ajustar el valor de la swappiness no sería esto necesario.

La tercera función permite activar/desactivar el uso de la zRAM.

zRAM es un módulo para el kernel Linux que crea un dispositivo de bloque comprimido en RAM. Dicho con otras palabras, crea un disco de RAM con compresión on-the-fly (sobre la marcha). Este dispositivo de bloque creado con zRAM suele ser usado como swap, de ahí que haya entrado en competición con las particiones de área de intercambio usadas en Linux desde hace décadas. Citado de: muylinux.com

Hablar sobre las características y la complejidad de la zRAM excede a la entrada de este blog, para saber más y ver los distintos parámetros que pueden configurarse les recomiendo visitar el link recién citado.

En estos momentos me encuentro probando diferente configuraciones de la zRAM para ver cuál es el más apropiado para mi ordenador y evaluar cuál es el impacto total sobre el sistema. De ahí que me pareció una buena idea incluir en la aplicación la capacidad de activar/desactivar la zRAM. Además como pueden ver en las capturas de la aplicación ésta da información respecto del algoritmo que se está utilizando, el tamaño de la zRAM, etc.

Tal como se aclara en el programa es necesario tener instalado el paquete zram-tools para poder utilizar esta función del programa.

Como siempre dejo el link al proyecto en GitHub donde pueden descargar tanto el código fuente como los paquetes deb para su instalación.

Link: https://github.com/mcattani/Control_Swap_zRam

Espero les sea de alguna utilidad!

Saludos!

sábado, 4 de septiembre de 2021

Juego "Simon Dice" (Simon Says) hecho en Arduino

Después de tanta prueba y error pude crear mi versión del juego “Simón dice” (Simon Says).

Sé que hay varios ejemplos en internet del juego pero quería crear una versión propia. Vi varios ejemplos (y probé otros tantos), la mayoría no los pude hacer funcionar a pesar de copiar y pegar el código directamente en el IDE, otros que sí funcionaban me parecía que el código era muy rebuscado.
Igualmente me había propuesto crear mi propia versión como un desafío que fuese más sobre el código que sobre las conexiones o la parte técnica.

El resultado lo pueden ver en el video, que aún tiene algún que otro bug a corregir, pero funciona bastante bien.
Creo recordar que la versión original aumentaba la velocidad de la secuencia que mostraba lo que iba ingresando el jugador. No incluí esa función en el código, me pareció que así era más amigable al jugador (además de que tengo pésima memoria _(ツ)_/ ).

Foto muestra
El código está bastante comentado. Para que quien lo descargue pueda seguir paso a paso para qué es cada parte del código y, con suerte, no tenga que luchar tanto como yo para entender los ejemplos que tanto abundan.
Creo que el resultado es bastante bueno y para aquellos que estén aprendiendo, como yo, les pueda ser de bastante utilidad.

La única parte del código que debo aclarar no es de mi autoría es la melodía que se reproduce cuando el jugador pierde la partida. La misma la copié del siguiente link: https://forum.arduino.cc/t/piezo-buzzer-win-and-fail-sound/133792/2, así que los créditos van al autor. Puede que otras partes del código estén basados en ejemplos que se encuentren en internet, no recuerdo haber copiado otra cosa; pero como ví tantos ejemplos cuando me estancaba puede que algo se me haya quedado. Aseguro que salvo lo mencionado recién, el resto fué escrito por mí.

Las conexiones son bastante sencillas. Recuerden conectar los leds con sus correspondientes resistencias de 220 ohms y los pulsadores con sus resistencias de 100 ohms a tierra (ground/GND).

Conexiones
 Conexiones:

Elementos PIN
Led 1 D6
Led 2 D7
Led 3 D8
Led 4 D9
Pulsador 1 D5
Pulsador 2 D4
Pulsador 3 D3
Pulsador 4 D2
Buzzer D11

Usé leds de diferentes colores porque me parecía más atractivo visualmente, pero es indistinto que leds utilicen.

Es importante (si modifican las conexiones) dejar sin conectar el pin A0, ya que como se verá en el código se utilizará como semilla para generar la secuencia aleatoria. De usarse ese pin recuerden cambiar randomSeed(analogRead(0)) a algún pin que no estén utilizando.

Una segunda versión del juego podría incluir:

  • Sonidos al presionar los pulsadores y reproducir dichos sonidos al repetirse la secuencia.
  • Algún tipo de display para mostrar el nivel alcanzado por el jugador.

Bueno, espero les haya interesado / servido este proyecto. Creo que el resultado es bastante divertido.

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

Espero sus comentario debajo! :)

Saludos.

miércoles, 30 de junio de 2021

App Inventor + Arduino (Control de Leds y Relé)


 Para los que no conocen Mit App Inventor:

MIT App Inventor es un entorno de programación visual e intuitivo que permite a todos, incluso a los niños, crear aplicaciones completamente funcionales para teléfonos inteligentes y tabletas con Android e iOS.

Citado de su web: https://appinventor.mit.edu/about-us

En este proyecto vamos a controlar un Arduino (en este caso usé un Arduino Nano por comodidad) a través de una aplicación hecha con el App Inventor.


 La aplicación permite controlar un relé (que enciende/apaga un velador) y 3 leds (encendiendo y apagando dos y variando el brillo del tercero), todo a través de una conexión bluetooth (utilizando un módulo HC-05).

Las conexiones son muy sencillas:

Leds:

Led Arduino
Rojo Pin D5
Azul Pin D4
Blanco Pin D3*

Vale aclarar que cada led debe ir conectado con su correspondiente resistencia de 220 ohms.
En el caso del led blanco (al que conectaremos para variar el brillo) es importante que esté conectado en un pin PWM.

En Arduino Uno, Mini y Nano, disponemos de 6 salidas PWM de 8bits en los pines 3, 5, 6, 9, 10 y 11. En Arduino Mega disponemos de 15 salidas PWM de 8bis en los pines 2 a 13 y 44 a 46.

El Relé:

Pin Arduino
+ 5V
- GND
S Pin D10

El módulo BT (HC-05):

Pin Arduino
VCC 5V
GND GND
TXD Pin D8
RXD Pin D9

Tal como hice en proyectos anteriores vamos a utilizar la librería SoftwareSerial para permitir la comunicación serie utilizando los pines D8 y D9 en vez de los pines 0 y 1. Así los dejamos liberados para no tener problemas (útil cuando se están haciendo pruebas) con la conexión al pc. Más información al respecto en: https://www.arduino.cc/en/Reference/SoftwareSerial

El funcionamiento de la aplicación es muy sencilla, desde la app creada para nuestro dispositivo enviaremos comandos vía BT que el Arduino recibirá y realizará las acciones correspondientes.

Todo el código está extensamente comentado para su mejor comprensión.

Desde el repositorio de GitHub pueden descargarse el código fuente para el Arduino y el archivo APK para instalar la aplicación en el celular. Igualmente dejo el link a la página del proyecto del App Inventor. Para que vean el armado de la aplicación y la modifiquen a gusto.

Recuerden que para poder instalar archivos APK en su dispositivo deben tener habilitada la opción de instalación de programas de Orígenes Desconocidos. Más información en: https://www.xatakandroid.com/tutoriales/como-instalar-aplicaciones-en-apk-en-un-movil-android

Links:

GitHub: https://github.com/mcattani/Arduino-AppInventor-Leds_Rele

Link del proyecto en App Inventor: http://ai2.appinventor.mit.edu/?ng=6ae11cc2-d5c1-4a47-a926-f922b0c94769

Si te interesó este posteo por favor compartilo y dejá algún comentario! :)

Hasta la próxima.

jueves, 15 de abril de 2021

HashRat - GUI Nueva Version!

¡Actualización para HashRat GUI!
 

Recomiendo leer el post anterior: https://thenerdyapprentice.blogspot.com/2020/06/gui-para-hashrat.html

Captura de pantalla
“HashRat es una app utilizada para generar “hashes” utilizando diferentes algoritmos: md5, sha1, sha256, sha512, etc..”

Hashrat is a hash-generation utility that supports the md5, sha1, sha256, sha512, whirlpool, jh-224, jh256, jh-384 and jh-512 hash functions. Hashes can be output in octal, decimal, hexadecimal, uppercase hexadecimal or base64.

“Para utilizar esta interfaz gráfica es necesario tener instalado hashrat en nuestro SO. En Ubuntu y derivados se instala desde apt:”

sudo apt install hashrat

En esta actualización se han realizado muchos cambios:

  • Se ha optimizado bastante el código y el manejo de procesos.
  • Se han corregidos errores que fueron reportados.
  • Se agregaron funciones para copiar al portapapeles la salida del hash.
  • Se agregaron funciones para guardar en archivos de texto plano la salida del programa.
  • Se agrego función para buscar futuras actualizaciones del programa.

Dejo el link del proyecto en GitHub donde pueden descargar el código y los instaladores para Debian y derivados:
https://github.com/mcattani/hashratgui

Si te gustó este proyecto, por favor, compartí y dejá un comentario!

Saludos!