• En este espacio, encontrarás una amplia gama de contenido relacionado con los campos de la ingeniería electrónica, telecomunicaciones, programación y temas afines.
  • Si eres un estudiante, encontrarás una gran cantidad de recursos educativos para fortalecer tus conocimientos y habilidades.
  • Sigueme en mi redes sociales. ¡Únete a nuestra comunidad de entusiastas de la ingeniería y la tecnología! Estamos emocionados de compartir nuestro conocimiento y experiencia contigo..

miércoles, 19 de junio de 2024

¿Cómo instalar Kali Nethunter en Android?

En este articulo se muestra el paso a paso de la instalación de Kali NetHunter sin necesidad de permisos de root en un dispositivo Android


Si quieres ver el video de instalación de Termux y ver el proceso paso a paso: Da clic aquí

Si quiere ver el video de  instalacion de Kali Nethunter paso a paso: Da clic aquí

Si necesitas las direcciones web para descargar los repositorios y los comandos que debes digitar sigue leyendo el artículo.

1.    Para instalar Kali Nethunter necesitará instalar Termux. Puede obtener Termux en la tienda F-Droid o en su repositorio de GitHub usando uno de los siguientes enlaces (en el video usamos GitHub):

https://f-droid.org/packages/com.termux/

https://github.com/termux/termux-app/releases 

Tenga en cuenta que las páginas oficiales de Termux Wiki y Termux GitHub indican que usted No debe instalar la versión desactualizada alojada en Google Play Store.

 

2.    Descargue la última versión de Termux al momento de escribir este artículo es termuxapp_ v0.118.0+github-debug_arm64-v8a.apk desde el enlace de github de arriba.

 




Cuando se le solicite una acción, presione Y y <Entrar> para instalar los archivos.

 

Luego de terminar la instalación se debe activar el almacenamiento compartido, para esto debe otorgar permiso de acceso al almacenamiento a Termux. Ingrese el siguiente comando: 

         termux-setup-storage

Luego se procede a instalar el paquete wget, mediante el ingreso de este comando:

         apt install wget  y luego presione ENTER

 

 Cuando te pregunten "¿Quieres continuar?", presiona Y y Enter.

 

Descargue el archivo de instalación de NetHunter. Asegúrese de ingresar la dirección correcta:

wget -O install-nethunter-termux https://offs.ec/2MceZWr


Cambie los permisos para que pueda ejecutar el archivo:

         chmod +x install-nethunter-termux

Escriba el siguiente comando para ejecutar el archivo de instalación descargado:

        ./install-nethunter-termux

 

La instalación tardará un poco, cuando se le solicite eliminar rootfs, ingrese N.


 

Para iniciar Kali NetHunter puede utilizar los siguientes comandos:

• Para iniciar la CLI: nethunter

• Para configurar la contraseña de NetHunter KeX :  nethunter kex passwd

• Para iniciar NetHunter KeX (la contraseña se habrá configurado en el primer inicio) nethunter kex

• Para detener la GUI de NetHunter KeX: nethunter kex stop

• Para ejecutar NetHunter como root: nethunter -r

• Reemplazas nethunter con nh en todos estos comandos: nh

 


Una vez que ejecute nh, estará en la CLI de Kali NetHunter.Puede salir de la CLI de NetHunter ingresando el comando exit



Establezca la contraseña para KeX VNC ejecutando nh kex por primera vez. Di no a ingresar una contraseña de solo lectura.



Recuerde el número de puerto. Lo usará mas adelante.

 

Vaya al sitio web de la tienda de aplicaciones Kali NetHunter: https://store.nethunter.com/en/


Presione el botón con las tres lineas en la pagina web del navegador, vaya a descargas e instale NetHunter Store.apk


Presione el botón de búsqueda e ingrese KeX. Presione para descargar NetHunter KeX. Obtendrá una ventana emergente. Hace clic en Configuración y luego alterna Permitir desde esta fuente. Luego presione Instalar.


Presione Permitir para permitir que NetHunter KeX acceda a sus archivos en el dispositivo. Ingrese el número de puerto, el nombre de usuario como kali y su contraseña configurada anteriormente. Presione Conectar.



 
¡Ahora debería tener la GUI Rootless Kali NetHunter en su teléfono Android!


 

 


 

 

 

 

 

 

 

 

miércoles, 5 de junio de 2024

GPIOViewer Librería Arduino para ver en tiempo real los Pines GPIO en placas ESP32

GPIOViewer es una innovadora librería Arduino de código abierto diseñada para monitorizar en tiempo real los pines GPIO de las placas ESP32 a través de un navegador web. Proporciona una representación dinámica y gráfica del estado de los pines GPIO de la placa, mejorando la resolución de problemas y el desarrollo del proyecto.


 Principales características de la biblioteca:

➡️ Muestra el estado en tiempo real de las señales digitales, analógicas y PWM en los pines GPIO de ESP32.
➡️ Realiza un seguimiento del estado real del hardware, diferenciándolo de las herramientas de simulación como el simulador Wokwi ESP32.
➡️ Utiliza las bibliotecas ESPAsyncWebServer y AsyncTCP, esta última disponible a través del administrador de bibliotecas del IDE de Arduino.
➡️ Añade sólo unos 50 KB a los proyectos.
➡️ Se recomienda su uso con conexiones Wi-Fi fuertes para una latencia más baja y un muestreo de datos más rápido.
➡️ Soporta una variedad de placas ESP32, incluyendo ESP32-VROOM-32, Olimex ESP32-EVB, y más.

Esta capacidad de monitorización GPIO en tiempo real no sólo es una gran ayuda para la depuración, sino que también mejora la experiencia general del usuario en el desarrollo y prueba de proyectos basados en ESP32.

Instalación de la librería en el IDE de Arduino

En el library manager de la IDE de  Arduino se ingresa en el cuadro de búsqueda el termino gpioviewer, y se procede a instalar. Esto se muestra en la siguiente figura.


Luego de la instalación se deben agregar cuatro líneas de código a tu programa. La línea #1 corresponde al comando que permite incluir la librería. La línea #2 corresponde a la variable global que usa la librería gpio_viewer.h. La línea #3 corresponde a la configuración de la red Wifi (nombre de red y contraseña) a la que se conectara la tarjeta ESP32, para enviar el estado de los diferentes puertos a la aplicación web. La última línea, la #4, corresponde al llamado para obtener la dirección URL asignada a la tarjeta luego de conectarse a la red Wifi.

Luego de cargar el programa en la tarjeta, en el monitor serial muestra el mensaje que la tarjeta está conectada a la red wifi y también muestra la dirección para copiar y pegar en el navegador web.

Placas ESP32 compatibles

Esta es la lista de dispositivos compatible, aunque si tu placa de desarrollo no se encuentra en la lista, se puede utilizar una imagen genérica que también muestra toda la actividad de los GPIO

➡️AZ Delivery NodeMCU ESP32

➡️ESP32 VROOM 32D (38 pins)

➡️ESP32 VROOM 32D (30 pins)

➡️ESP32 D1 R32

➡️ESP32-CAM

➡️ESP32-C3 Super Mini

➡️ESP32 C3 Wroom-02

➡️ESP32-C6 DevKitM

➡️ESP32 Wroom-32UE

➡️ESP32 EVB

➡️ESP32 S3 Wroom-1

➡️Esp32 S2 Mini V1.0.0

➡️ESP32 POE

➡️ESP32 C3 Mini

➡️ESP32 C3 Zero

➡️ESP32 Pico Kit v4.1

➡️Leaf S3

➡️Lilygo T-SIM A7670x

➡️Lilygo T7 Mini32 v1.5

➡️Lolin D32

➡️Freenove ESP32-S3

➡️ Freenove ESP32-Wroom

➡️Nano ESP32

➡️Sailor Hat ESP32

➡️SparkleIoT ESP32-C3F

➡️StickLite-V3-ESP32S3

➡️T-Display S3 AMOLED

➡️TinyPICO Nano

➡️TinyPico V3

➡️TTGO Display V1.1

➡️Wemos Lolin32 Lite V1

➡️Wemos Lolin S3 Mini

➡️Wemos D1 Mini ESP32

➡️Wemos D1 Mini ESP8266

➡️WT32-S1-ETH01

➡️NodeMcu ESP8266

➡️XIAO ESP32 C3

➡️XIAO ESP32 S3

Más información de la librería: https://github.com/thelastoutpostworkshop/gpio_viewer

jueves, 25 de enero de 2024

¿Cómo es un resistor de película de carbón por dentro?

Las resistencias son dispositivos que restringen o limitan el flujo de electricidad. Se utilizan siempre que se necesita una cantidad controlada de corriente en un circuito. Las resistencias de película de carbón como estas se utilizan todos los días en productos electrónicos como electrodomésticos y juguetes, donde el costo es más importante que la precisión o el tamaño.


Una resistencia de película de carbono está hecha de una varilla de cerámica recubierta con una fina capa de película de carbono que conduce la electricidad con cierta resistencia. Se corta una ranura helicoidal a través de la película, dejando un camino largo y estrecho de carbono que se mueve en forma de sacacorchos de un extremo de la varilla al otro. Se engarzan tapas de metal en los dos extremos y se agregan cables. Luego, la resistencia se sumerge en una capa protectora y se pinta con franjas codificadas por colores para indicar su valor de resistencia.

Las resistencias de esta forma se llaman resistencias de orificio pasante axial, lo que significa que tienen conductores de alambre (destinados a pasar a través de orificios en una placa de circuito) dispuestos a lo largo del eje de simetría de la resistencia.

Video relacionado: 



¿Cómo funciona un cristal de cuarzo?

En lo profundo de un reloj de pulsera de cuarzo se encuentra un pequeño diapasón, tallado en cristal de cuarzo reluciente, que mantiene el reloj funcionando a tiempo. El diapasón está recubierto con electrodos similares a espejos en sus superficies y protegido dentro de un tubo de metal resistente. 


La frecuencia de resonancia de este diapasón de cuarzo, sin embargo, está más allá del alcance del oído humano y está sintonizada con precisión en 32.768 Hz. (Divida 32,768 Hz por 2 y eventualmente obtendrá 1 Hz). El cuarzo es piezoeléctrico: se flexiona ligeramente cuando se le aplica un voltaje y también produce un voltaje cuando se flexiona. El circuito del reloj aplica un pequeño voltaje a los electrodos, lo que hace que el cuarzo se flexione y suene a su frecuencia de resonancia. Al hacerlo, produce un voltaje oscilante. Cada segundo, un circuito digital cuenta 32.768 oscilaciones y luego hace avanzar el segundero un solo tic.

 

domingo, 14 de enero de 2024

¿Cuál es la diferencia entre Proceso(Process) e Hilo(Thread)?

 Pregunta popular en las entrevistas: ¿Cuál es la diferencia entre Proceso e Hilo?

Para entender mejor esta pregunta, veamos primero qué es un Programa. Un Programa es un archivo ejecutable que contiene un conjunto de instrucciones y se almacena pasivamente en el disco. Un programa puede tener múltiples procesos. Por ejemplo, el navegador Chrome crea un proceso diferente para cada pestaña.

Un Proceso significa que un programa está en ejecución. Cuando un programa se carga en la memoria y se activa, el programa se convierte en un proceso. El proceso requiere algunos recursos esenciales como registros, contador de programa y pila.

Un hiloes la unidad más pequeña de ejecución dentro de un proceso. Los siguientes ítems explican la relación entre programa, proceso e hilo.

1. El programa contiene un conjunto de instrucciones.
2. El programa se carga en memoria. Se convierte en uno o más procesos en ejecución.
3. Cuando se inicia un proceso, se le asignan memoria y recursos. Un proceso puede tener uno o varios subprocesos. Por ejemplo, en la aplicación Microsoft Word, un hilo puede encargarse de revisar la ortografía y otro de insertar el texto en el documento.

Figura 1. Programa, Proceso e hilo


Principales diferencias entre proceso e hilo:

  • Los procesos suelen ser independientes, mientras que los hilos existen como subconjuntos de un proceso.
  • Cada proceso tiene su propio espacio de memoria. Los hilos que pertenecen a un mismo proceso comparten la misma memoria.
  • Un proceso es una operación pesada. Tarda más tiempo en crearse y terminarse. 
  • El cambio de contexto es más caro entre procesos.
  • La comunicación entre hilos es más rápida para los hilos.



miércoles, 11 de octubre de 2023

RESISTENCIAS PULL-UP Y PULL-DOWN

Al observar cualquier circuito electrónico digital, encontrará principalmente resistencias en dos tipos de configuraciones: pull-up y pull-down en ellos. Este tipo de configuración se utilizan para polarizar correctamente las entradas de las puertas digitales y evitar que floten aleatoriamente cuando no hay ninguna condición de entrada. Para cualquier microcontrolador en un sistema integrado como Arduino, las resistencias pull-up y pull-down se utilizan tanto en las señales de entrada y de salida para la comunicación con otros dispositivos de hardware externos, principalmente en las Entradas y Salidas de Propósito General (GPIO). La implementación de resistencias pull-up y pull-down en el circuito le permitirá alcanzar estados "altos" o "bajos". Si no lo implementa y no hay nada conectado a sus pines GPIO, su programa leerá un estado de impedancia "flotante".  

Figura 1. Configuraciones de resistencias Pull-Up y Pull-Down
 

RESISTENCIAS PULL-UP

Se utiliza una resistencia pull-up para establecer un control adicional sobre los componentes críticos y al mismo tiempo garantizar que el voltaje esté bien definido incluso cuando el interruptor está abierto. Se utiliza para garantizar que la entrada de voltaje se tire a un nivel lógico alto en ausencia de una señal de entrada.  No es un tipo especial de resistencia. Son resistencias simples de valor fijo conectadas entre el suministro de voltaje y el pin apropiado que define el voltaje de entrada o salida en ausencia de una señal de conducción. Cuando el interruptor está abierto, el voltaje de la entrada de la puerta aumenta al nivel del voltaje de entrada. Cuando el interruptor está cerrado, el voltaje de entrada en la puerta va directamente a un nivel bajo (generalmente GND). Debe usar una resistencia pull-up cuando tiene un estado de impedancia predeterminado bajo y desea llevar la señal a "alto".

En la figura 1, se usa una resistencia pull-up con un valor fijo para conectar el suministro de voltaje y un pin particular en el circuito lógico digital. La resistencia pull-up está emparejada con un interruptor para garantizar que el voltaje entre Tierra y VCC se controle activamente cuando el interruptor está abierto. Al mismo tiempo, no afectará al estado del circuito. Si no utilizamos una resistencia pull-up, se producirá un cortocircuito. Esto se debe a que el pin no puede cortocircuitarse directamente a tierra o VCC, ya que esto eventualmente dañará el circuito. Siguiendo el principio de la ley de Ohm, si hay una resistencia pull-up, una pequeña cantidad de corriente fluirá desde la fuente a las resistencias y al interruptor antes de llegar al pin o a la tierra del circuito.

RESISTENCIAS Pull down

Por otro lado, una resistencia pull down se utiliza para garantizar que las entradas a los sistemas lógicos se establezcan en los niveles lógicos esperados siempre que los dispositivos externos estén desconectados o sean de alta impedancia. Garantiza que el pin del circuito integrado esté en un nivel lógico bajo definido incluso cuando no hay conexiones activas con otros dispositivos. La resistencia de pull down mantiene la señal lógica cerca de cero voltios (0V) cuando no hay ningún otro dispositivo activo conectado. Baja el voltaje de entrada a tierra para evitar un estado indefinido en la entrada. El valor de esta resistencia debería ser mayor que la impedancia del circuito lógico. De lo contrario, el voltaje de entrada en el pin tendrá un valor bajo lógico constante sin importar la posición del interruptor. Cuando el interruptor está cerrado, el voltaje de entrada en la puerta pasa a un voltaje alto (generalmente el valor de fuente de alimentación). 

 

VALORES DE RESISTENCIA IDEALES PARA RESISTENCIAS PULL-UP Y PULL-DOWN

El valor de la resistencia controla cuánta corriente desea que fluya desde VCC a través del botón y luego a tierra. Una corriente alta fluirá a través de la resistencia pull-up si el valor de resistencia es demasiado bajo. 

Para las resistencias pull-up , se debe usar una resistencia que sea al menos 10 veces más pequeña que el valor de la impedancia del pin de entrada del circuito lógico (información del datasheet del circuito integrado). Para dispositivos lógicos que funcionan a 5 V, el valor típico de la resistencia pull-up debe estar entre 1 y 5 kΩ. Por otro lado, para aplicaciones de interruptores y sensores resistivos, el valor típico de la resistencia pull-up debe estar entre 1 y 10 kΩ.

Para las resistencias Pull down , siempre debe tener una resistencia mayor que la impedancia del circuito lógico. De lo contrario, reducirá demasiado el voltaje y el voltaje de entrada en el pin permanecerá en un valor bajo lógico constante, independientemente de si el interruptor está encendido o apagado. 


 

sábado, 1 de julio de 2023

50 Desafios de Python para principiantes Parte 4

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

50 Desafios de Python para principiantes Parte 3

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

50 Desafios de Python para principiantes Parte 2

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 

Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

viernes, 30 de junio de 2023

50 Desafios de Python para principiantes Parte 1

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 

Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.