Leer Primero

Como se utiliza este blog?

domingo, 18 de junio de 2023

Magisk

Bienvenido a mi blog, hoy hablaremos un poco de Magisk, la cual hoy en día es la única herramienta de root y modificación de Android que sigue activa, después de que el desarrollador Chainfire abandonara SuperSU. El developer de Magisk, John Wu, es originario de China y a diferencia de otras herramientas que sirven para una cosa y ya, Magisk incluye varias herramientas, desde systemless root hasta módulos, control de permisos de superusuario y un instalador que lo mantiene siempre actualizado. Si has oído hablar de Magisk pero no estás seguro de qué es o para qué sirve, aquí aprenderás sobre sus principales funciones.


Qué es Magisk y para qué sirve?


En Android un nombre que aparece pronto al hablar de modificaciones del sistema es Magisk, igual que hace unos años oiríamos más SuperSU, CWM o Xposed Framework. Esto es así pues es básicamente la única herramienta de root que sigue activa. Magisk recibe su nombre de la unión de Magic y Mask, pues uno de sus puntos fuertes es que ocultaba su modificación al sistema con Magisk Hide. Sin embargo, las últimas versiones de Magisk no incluyen Magisk Hide.

La ventaja que tenía Magisk Hide es que, a pesar de que el móvil estaba modificado y rooteado, seguía pasando test's de integridad como los de SafetyNet, el mismo test que impide que funcionen aplicaciones bancarias o juegos como Pokémon Go, cuando detectan que el móvil ha sido modificado. Si bien Magisk no incluye de serie MagiskHide, está abierto a que otros desarrolladores creen una funcionalidad similar mediante módulos.

En Magisk en lugar de hacer cambios en la partición del sistema, el desarrollador ha encontrado métodos de hacer los cambios en otras particiones, y de ahí que sea considerado systemless root, o root sin tocar la partición del sistema. Esto ayuda a que el móvil pase tests de integridad como SafetyNet. Además de permitirte gestionar el root y los permisos de superusuario, Magisk cuenta con módulos con una filosofía similar a la de Xposed Framework. Estos módulos se podían descargar antiguamente desde el propio Magisk, pero las últimas versiones ya no incluyen el repositorio, de modo que se deben descargar por separado.

Magisk se compone por un lado de su núcleo y por otro, de su aplicación de gestión Magisk Manager. Esta aplicación se usa para configurar Magisk, instalar módulos, revisar los permisos de superusuario y mantener actualizado Magisk.




Ha tener en cuenta que a partir de la versión 23 de Magisk, se eliminó la compatibilidad con Android 5 y versiones anteriores, esto significa que actualmente Magisk solo funciona en dispositivos con Marshmallow o Android 6 en adelante (API 23 y superiores).

Como podemos ver, Magisk es una completa herramienta para modificar móviles Android, con la que puedes ganar acceso root en un terminal, descargar e instalar módulos con modificaciones listas para usar y, en muchos casos, sin que salten las alarmas de las detecciones de modificaciones como SafetyNet. 

El repositorio oficial de Magisk se encuentra en GitHub y puedes acceder a él mediante el siguiente hypervinculo:

https://github.com/topjohnwu/Magisk

En el repositorio de GitHub de Magisk, encontrarás el código fuente, las versiones de Magisk para descargar y otra documentación relacionada. Este es el repositorio oficial mantenido por el desarrollador principal de Magisk, topjohnwu.

Un gran detalle a tener en cuenta es que el developer John Wu, fue fichado por Google para unirse a su equipo de seguridad, desde entonces anuncio que dejaba de desarrollar MagiskHide y que eliminaba el repositorio de módulos de Magisk Manager de la aplicación, asegurando no tener tiempo para su moderación. El autor de este blog no tiene conocimiento si aun el developer sigue trabajando para Google, ya que no publica nada sobre esto en sus redes sociales, aunque aun así, la aplicación sigue actualizándose al día de hoy.

Es importante tener en cuenta que el uso de Magisk puede violar los términos y condiciones de uso de algunas aplicaciones, así como la Política del Programa para Desarrolladores de Google Play Store, incluidos los requisitos de divulgación destacada y consentimiento. A día de hoy, la aplicación fue expulsada de la tienda y Google Play Protect la detecta como insegura y dañina. Además, utilizar esta aplicación puede ser ilegal en algunos países. Por lo tanto, es importante utilizarla con precaución y responsabilidad.


Porque el acceso root en android ha perdido tanta fuerza y ya casi nadie lo hace o habla sobre ello?


Inicialmente rooteabamos nuestros móviles porque por medio de ello podíamos intercambiar vía software (con la app link2sd) la memoria del teléfono por la memoria de la microSD, en esa época era común los móviles con solo 8 GB de memoria de almacenamiento interno y ya se encontraban memorias microSD con 16 GB o más, así ganábamos almacenamiento y podíamos instalar más aplicaciones, pero hoy en día es común encontrar móviles con 256 GB de almacenamiento interno o más, de esta forma ya no necesitamos del root, es más, los móviles a día de hoy como ya cuentan con un gran almacenamiento, ya ni siquiera traen socket para insertar una tarjeta microSD.

Otra gran causa son los fabricantes, ya que marcas como Huawei por ejemplo, ya no permiten el desbloqueo del bootloader, así que prácticamente es casi imposible poder rootear los modelos nuevos y otros fabricantes no liberan herramientas o firmwares con los cuales tener un respaldo o poder modificarlos.

Aunque por otra parte, hay grandes ventajas que las personas más nuevas desconocen o no les interesa, pero que pudieron y pueden marcar la diferencia aun al día de hoy y están son algunas de ellas:


  • Al rootear tu móvil podrás desinstalar todo el bloatware que viene preinstalado, Bloatware es la combinación de bloat (inflado) y ware, el bloatware no es un tipo de malware, son simplemente apps que vienen con el móvil de las cuales no te puedes librar fácilmente. Teniendo en cuenta lo anterior, la forma en la que afecta a tu móvil el bloatware es acaparando recursos, cuando ni siquiera es una app que te interesa o que vayas a utilizar, además si la app  se ejecuta por si sola, también usará memoria RAM y potencia de la CPU.
  • Al rootear tu móvil puedes instalar aplicaciones como <AdAway> la cual bloquea toda tipo de publicidad molesta y estorbosa, modificando directamente el archivo host del sistema Android.
  • Al rootear tu móvil puedes utilizar aplicaciones como <DiskDiggerPro_v1.0-pro> en su versión 2023-01-09 para recuperar todo tipo de archivos borrados.
  • Al rootear tu móvil puedes utilizar aplicaciones como <Lucky Patcher> que permite eliminar verificación de licencias y emular compras in app dentro de las aplicaciones, es decir, emular una compra dentro de la aplicación sin dinero real, sin colocar tu tarjeta bancaria.
  • Al rootear tu móvil puedes seguir utilizando <YouTube Vanced>, que es como YouTube premium sin publicidad y en 2do plano, aunque el mismo Google acabo con YouTube Vanced, la aplicación sigue funcionando al menos a día de hoy.
  • Al rootear tu móvil puedes acceder a todas las carpetas del sistema operativo y ver por ejemplo las claves del wifi. Te ha pasado que vas a un hotel y el dueño te pide el móvil y te dice: "venga yo le digito la clave", si tu móvil esta rooteado podrás saber fácilmente la clave que se tecleo simplemente verificando un archivo del sistema en una ruta especifica.
  • Al rootear tu móvil puedes utilizar aplicaciones como <ZIPme> que permite crear fácilmente zip flasheables de cualquier aplicación aunque esto ya es para usuarios mas avanzados.

Como ves las posibilidades son muy variadas, pero siempre te encontraras con algo nuevo y de lo cual aprenderás más acerca del mundo Android.


"La palabra 'Android', así como los logotipos oficiales, son marcas comerciales con copyright © de Google LLC. El lenguaje de programación Kotlin es propiedad de JetBrains y su comunidad de desarrolladores, y está sujeto a la Licencia Apache 2.0, una licencia de código abierto. Jetpack Compose, una biblioteca de interfaz de usuario para Android, es desarrollada y mantenida por Google y se rige por la misma Licencia Apache 2.0. Todos los derechos de marca y autor están reservados por sus respectivos propietarios y licencias correspondientes."




Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Finalmente recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


BusyBox

Google Play Store le dirá adiós al formato APK y solo permitirá AAB desde agosto de 2021

Cómo borrar aplicaciones Preinstaladas de fabrica en móviles Android sin Root

Unroot

adAway - Bloqueo de Publicidad en Android

SatFinder

Spirit2 - Radio FM en tu Móvil

sábado, 17 de junio de 2023

BusyBox

Bienvenido a mi blog, hoy hablaremos un poco de BusyBox, el cual es un software que contiene una colección de herramientas UNIX en una sola aplicación. Estas herramientas incluyen comandos básicos de UNIX como cp, mv, ls, cat, etc. BusyBox se utiliza principalmente en sistemas operativos basados en Linux, como Android, para proporcionar una funcionalidad completa de línea de comandos en dispositivos Android rooteados, que no tienen algunos comandos básicos de UNIX preinstalados. Esto es especialmente útil para usuarios avanzados y desarrolladores. Además, algunas aplicaciones de Android también requieren BusyBox para funcionar correctamente. Por ejemplo, algunas aplicaciones que requieren acceso root pueden requerir de BusyBox, como el parche flasheable <ProjectRecovery.zip> que elimina los archivos generados por bloqueo por pin, contraseña, bloqueo facial y patrón, dejando el móvil sin ningún tipo de bloqueo y listo para ser accesado.

Aquí hay algunos ejemplos de aplicaciones y casos de uso que requieren de BusyBox:

  • Sistemas operativos embebidos: BusyBox se utiliza en sistemas operativos embebidos, como OpenWrt (un firmware para enrutadores), DD-WRT, Tomato (sistema operativo embebido de código abierto específicamente para routers domésticos) y Android (en su versión AOSP).
  • Recuperación de dispositivos: BusyBox se utiliza a menudo en sistemas de recuperación de dispositivos, como TWRP (Team Win Recovery Project), que es un recovery personalizado para dispositivos Android. Proporciona una serie de herramientas de línea de comandos necesarias para realizar operaciones de recuperación y mantenimiento en dispositivos Android.
  • Dispositivos de almacenamiento en red (NAS): Muchos dispositivos de almacenamiento en red basados en Linux, como los sistemas NAS (Network Attached Storage), hacen uso de BusyBox para proporcionar una amplia gama de utilidades de línea de comandos en un espacio reducido.
  • Sistemas de vigilancia: Algunos sistemas de vigilancia basados en Linux utilizan BusyBox para ejecutar comandos y tareas relacionadas con el monitoreo de cámaras, el almacenamiento de video y la administración del sistema.
  • Rooting de dispositivos Android: BusyBox a menudo se instala en dispositivos Android con acceso root para proporcionar una serie de herramientas y comandos adicionales. Esto permite a los usuarios realizar modificaciones avanzadas en el sistema operativo y personalizarlo aún más.

BusyBox fue creado originalmente por Bruce Perens en 1995 como una colección de herramientas básicas de Unix empaquetadas en un solo archivo ejecutable pequeño. Desde entonces, ha sido mantenido y mejorado por muchos otros desarrolladores de software libre y de código abierto. En la actualidad, BusyBox es un proyecto de software libre y de código abierto que es mantenido por el desarrollador <Denys Vlasenko> y un equipo de colaboradores. BusyBox se distribuye bajo los términos de la Licencia Pública General GNU (GPL), lo que significa que cualquier persona puede descargar, modificar y distribuir el software libremente siempre que se cumplan ciertas condiciones.

Versión Busybox de Stericsson

Stericsson es una empresa que fabrica y suministra chips y soluciones de software para dispositivos móviles, como smartphones y tablets. En 2005, Stericsson desarrolló una versión personalizada de BusyBox para su uso en dispositivos móviles basados en Linux. La versión personalizada de BusyBox de Stericsson se llamó "Stericsson BusyBox" y se utilizó en muchos dispositivos móviles fabricados por diferentes compañías. Sin embargo, esta versión personalizada de BusyBox no cumplía con los términos de la Licencia Pública General GNU (GPL) que se aplica a BusyBox, como resultado, el desarrollador original de BusyBox, Bruce Perens, presentó una demanda contra Stericsson por violar los términos de la licencia GPL. La demanda se resolvió fuera de los tribunales con un acuerdo en el que Stericsson se comprometió a cumplir con los términos de la licencia GPL y liberar el código fuente de su versión personalizada de BusyBox, cosa que la empresa no cumplió a su cabalidad y muestra de ello es que desde el 18 de julio del 2020 el proyecto fue abandonado y no volvió a recibir actualizaciones por parte de Stericsson.

La página oficial de busybox es https://busybox.net/ donde se puede verificar la última versión liberada y el repositorio oficial de BusyBox se encuentra en GitHub y puedes acceder a él mediante el siguiente hipervínculo: 

https://github.com/mirror/busybox

Este repositorio contiene el código fuente completo de BusyBox, así como la documentación y otros recursos útiles relacionados con el proyecto. También se pueden encontrar diferentes ramas (branches) del proyecto que contienen diferentes versiones de BusyBox.

Cabe destacar que, aunque este repositorio es el oficial, el proyecto BusyBox es mantenido por un equipo de colaboradores y hay otros repositorios en GitHub y en otras plataformas que contienen versiones modificadas o personalizadas de BusyBox.

Si deseas descargar el código fuente de la última versión de BusyBox y generar tu propio apk (Android Package), debes contar con conocimientos avanzados del sistema operativo Android, también conocimientos avanzados de programación y saber utilizar el sistema de compilación NDK (Native Development Kit) para poder compilar BusyBox.


"La palabra 'Android', así como los logotipos oficiales, son marcas comerciales con copyright © de Google LLC. El lenguaje de programación Kotlin es propiedad de JetBrains y su comunidad de desarrolladores, y está sujeto a la Licencia Apache 2.0, una licencia de código abierto. Jetpack Compose, una biblioteca de interfaz de usuario para Android, es desarrollada y mantenida por Google y se rige por la misma Licencia Apache 2.0. Todos los derechos de marca y autor están reservados por sus respectivos propietarios y licencias correspondientes."




Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Finalmente recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último, si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Magisk

Google Play Store le dirá adiós al formato APK y solo permitirá AAB desde agosto de 2021

Cómo borrar aplicaciones Preinstaladas de fabrica en móviles Android sin Root

Unroot

adAway - Bloqueo de Publicidad en Android

SatFinder

Spirit2 - Radio FM en tu Móvil

martes, 14 de marzo de 2023

Bluetooth en la Raspberry Pi Pico W

Bienvenido a mi blog, hoy hablaremos un poco de la utilización de la funcionalidad Bluetooth en la Raspberry Pi Pico W, como habíamos dicho en el último post "Nuevos Microcontroladores Raspberry Pi Pico W, H y WH" el bluetooth venia desactivado por defecto, por cuestiones de licencias, certificados o legislaciones, pero ya se ha lanzado la versión 1.5.1 del SDK para la Pi Pico W, para programar en C++ y la última compilación de MicroPython, ahora su Pico W actual ha adquirido la capacidad de comunicarse con dispositivos Bluetooth y Bluetooth LE. Específicamente, se admite Bluetooth Classic, con la excepción temporal de ACL/SCO, junto con las funciones BLE Central y Peripheral. Las cosas también se pueden configurar para que pueda habilitar Bluetooth Classic y BLE individualmente o tener ambos disponibles al mismo tiempo. Los detalles completos de  los protocolos y perfiles de Bluetooth compatibles  están disponibles en GitHub.

SDK = “Software Development Kit”


Bibliotecas de Bluetooth para la Raspberry Pi Pico W

BTstack proporciona la API de Bluetooth y viene con las siguientes bibliotecas:

  • pico_btstack_ble- Agrega compatibilidad con Bluetooth Low Energy (LE).
  • pico_btstack_classic- Agrega compatibilidad con Bluetooth Classic.
  • pico_btstack_sbc_encoder- Agrega compatibilidad con el codificador de codificación de subbanda (SBC) de Bluetooth.
  • pico_btstack_sbc_decoder- Agrega compatibilidad con el decodificador de codificación de subbanda (SBC) de Bluetooth.
  • pico_btstack_bnep_lwip- Agrega compatibilidad con el protocolo de encapsulación de red Bluetooth (BNEP) mediante LwIP.
  • pico_btstack_bnep_lwip_sys_freertos- Agrega compatibilidad con el protocolo de encapsulación de red Bluetooth (BNEP) mediante LwIP con FreeRTOS para NO_SYS=0

Para obtener más información, consulte las notas del SDK 1.5.1 en el GitHub de Raspberry Pi.

Raspberry Pi Pico W Bluetooth Ejemplos

La biblioteca de ejemplos de Raspberry Pi GitHub se actualizó con algunos programas de muestra que puede ejecutar en el Bluetooth de la Pi Pico W. Incluyen funciones como el uso de Pi Pico W para fines de audio, incluida la transmisión, el control de reproducción y la alternancia de volumen. También hay una variedad de ejemplos de dispositivos de interacción humana que le permitirán imitar un teclado, un mouse o un joystick (algo así como tipo Rubber Ducky).


Primeros pasos con Bluetooth en la Pi Pico W

La forma más rápida de comenzar con Bluetooth en la Pi Pico W es ejecutar uno de los ejemplos usando las instrucciones de inicio rápido de Pi Pico SDK. Luego, en lugar de ejecutar <hello_world.c> como se muestra en el paso 3 de instrucciones, ejecute uno de los ejemplos de Pico Bluetooth en la página de GitHub.

Enrutar el tráfico de Wi-Fi y Bluetooth a través del único bus SPI de tres pines entre RP2040 y CYW43439 ha sido un desafío de ingeniería sustancial. La biblioteca BTstack de BlueKitchen proporciona compatibilidad con Bluetooth Classic y BLE en el SDK.

Ten en cuenta consultar el libro Conexión a Internet con Raspberry Pi Pico W, que lo guiará para comenzar a usar Bluetooth LE usando C++ SDK y con MicroPython.


Interesante opción para Raspberry Pi Pico W con soporte para BASIC y wifi https://geoffg.net/webmite.html


Instalación del SDK v1.5.1 en Windows 11 x64


PREGUNTAS FRECUENTES


¿Puedo utilizar Bluetooth Classic con la Pico W?

Por supuesto, Pico W es compatible con Bluetooth Classic y BLE.

¿Puedo conectar varios dispositivos a la Pico W simultáneamente?

Sí, Pico W puede actuar como dispositivo central y conectarse a varios periféricos Bluetooth simultáneamente. También puede utilizar Bluetooth Classic y BLE simultáneamente. Así que puedes crear sistemas ultracomplejos en los que Pico W se comunique con muchos sensores o controle varios dispositivos a la vez.

¿Cuál es el alcance Bluetooth de la Pico W?

Normalmente, hasta 30 metros en espacios abiertos. Sin embargo, el alcance puede variar en función de factores ambientales como obstáculos, interferencias e intensidad de la señal.

¿Puedo utilizar el Pico W como periférico Bluetooth?

La Pico W puede funcionar como dispositivo central o periférico. Así, permite que otros dispositivos centrales Bluetooth (como smartphones, tabletas u ordenadores) se conecten a ella.

¿Cómo programo la funcionalidad Bluetooth en la Pico W?

Puede programar la funcionalidad Bluetooth en la Pico W utilizando el Raspberry Pi Pico SDK versión 1.5.1. El SDK proporciona bibliotecas y ejemplos específicos para el desarrollo de Bluetooth. Le permite implementar servicios Bluetooth, características y manejar protocolos de comunicación.

¿Cuáles son los requisitos de alimentación para Bluetooth en la Pico W?

Bluetooth está diseñado para ahorrar energía. Por tanto, Pico W consume un mínimo de energía durante los periodos de inactividad y puedes optimizar aún más tu código utilizando técnicas como los modos de suspensión y los estados de bajo consumo. Obviamente, los requisitos específicos de consumo dependen de la aplicación y de los escenarios de uso.


"La palabra 'Raspberry Pi' y los logotipos oficiales son marcas comerciales con copyright © de la Raspberry Pi Foundation. El software utilizado en los productos Raspberry Pi es propiedad de sus respectivos autores y está sujeto a diversas licencias de código abierto, como la Licencia Pública General de GNU (GPL) y otras. Todos los derechos están reservados por sus respectivos propietarios y licencias correspondientes."



Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Finalmente recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


domingo, 5 de marzo de 2023

Arduino GIGA R1 Wi-Fi

Bienvenido a mi blog, hoy hablaremos un poco de la placa Arduino GIGA R1 Wi-Fi, Arduino es una plataforma de creación de electrónica de código abierto, la cual está basada en hardware y software libre, flexible y fácil de utilizar para los creadores o desarrolladores, para hacerlo, utiliza el lenguaje de programación Arduino (basado en Wiring) y el Software Arduino IDE (basado en Processing, una herramienta basada en Java). Recordemos que Arduino es un proyecto, un ecosistema y no solo un modelo concreto de placa. Como todas las placas Arduino y compatibles, tiene semejanzas con otras de sus hermanas: es la evolución de Arduino MEGA y Arduino DUE. En este post podrás comprender todo lo que necesitas saber sobre esta placa y comenzar a desarrollar tus propios proyectos DIY con Arduino GIGA R1 Wi-Fi. Antes de iniciar quiero recordar que el nuevo Arduino IDE 2.0 esta ahora basado en el marco Eclipse Theia.

Theia se basa en el mismo código subyacente que el popular y ampliable "Visual Studio Code" de Microsoft, esto permite que Arduino avance a un editor más potente y moderno y no olvidemos que ahora el DARK MODE o Modo Oscuro, ya viene nativo.


En el nuevo Arduino GIGA R1 Wi-Fi encontramos:



Microcontrolador STM32H747XI: este microcontrolador de doble núcleo de 32 bits le permite tener dos cerebros hablando entre sí (un Cortex®-M7 a 480 MHz y un Cortex®-M4 a 240 MHz), incluso puede ejecutar Micropython en un núcleo y Arduino (C, C++) en el otro, simultáneamente.

Comunicación inalámbrica Murata 1DX: ya sea que prefiera Wi-Fi® o Bluetooth®, la GIGA R1 WiFi lo tiene cubierto. Incluso puede conectarse rápidamente a Arduino IoT Cloud y realizar un seguimiento de su proyecto de forma remota. Y si le preocupa la seguridad de la comunicación, la placa tiene un chip coprocesador criptográfico ATECC608A (cortesía de microchip) con el que se pueden establecer distintos protocolos de encriptación y desencriptación para establecer comunicaciones seguras, este chip ya lo habíamos visto anteriormente en el Arduino UNO WiFi Rev2.

Puertos de hardware y comunicación: siguiendo el legado de Arduino Mega y Arduino Due, la GIGA R1 WiFi tiene 4 UART (puertos serie de hardware), 3 puertos I2C (1 más que sus predecesores), 2 puertos SPI (1 más que sus predecesores) ) y 1 FDCAN.

GPIO y pines adicionales: querían mantener el mismo factor de forma de Mega y Due, para que pueda adaptar fácilmente sus shield personalizados a la WiFi GIGA R1 (¡recuerde que esta placa funciona a 3.3V!) y agregaron encabezados adicionales para acceder a pines adicionales, dejando el conteo total en 76 pines GPIO y, lo mejor de todo, puede acceder a ellos desde abajo, así que mantenga su proyecto como está y solo piense en cómo expandirlo. Además, agregaron dos pines nuevos: un VRTC para que pueda conectar una batería para mantener el RTC en funcionamiento mientras la placa está apagada y un pin OFF para que pueda apagar la placa.

Conectores: La GIGA R1 WiFi tiene conectores adicionales integrados que facilitarán la creación de su proyecto sin ningún hardware adicional. Esta placa tiene:
  • Conector USB-A apto para alojar memorias USB, otros dispositivos de almacenamiento masivo y dispositivos HID como teclado o ratón.
  • Jack de entrada-salida de 3,5 mm conectado a DAC0, DAC1 y A7.
  • USB-C® para alimentar y programar la placa, así como para simular un dispositivo HID como un mouse o un teclado.
  • Conector Jtag, 2x5 1.27mm Joint Tag Action Group (Grupo de Acción de Etiqueta Conjunta).
  • Conector de cámara Arducam de 20 pines.

Soporte de mayor voltaje: en comparación con sus predecesores que admiten hasta 12 voltios, la GIGA R1 WiFi puede manejar un rango de 6 a 24 voltios DC de entrada externa.




Pero que se puede hacer con este nueva placa Arduino GIGA R1 WiFi?

  • Manejar 76 pines GPIO
  • Manejar wifi, bluetooth (proyectos IoT)
  • Manejar USB Host
  • Manejar proyectos con Audio
  • Computer Visión
  • Gaming
  • Robotics
  • Machine Learning
  • Music
  • Controllers
  • Interfaces
..................y más


Especificaciones técnicas:


Board     Nombre      Arduino® GIGA R1 Wi-Fi
                          SKU       ABX00063
Microcontrolador    STM32H747XI dual Cortex®-M7+M4 MCU Arm® de baja potencia de 32
                                    bits (hoja de datos)

Módulo de radio Murata 1DX dual WiFi 802.11b/g/n 65 Mbps y Bluetooth® (hoja de datos)

Seguridad         ATECC608A-MAHDA-T (hoja de datos)

USB USB‑C® Puerto de programación / HID
        USB-A         Host (habilitar con PA_15)

Pines Pines de E/S digitales 76
        Pines de entrada
        analógica         12
        DAC         2 (DAC0/DAC1)
        pines PWM         12
        Varios                 pin VRT y OFF

Comunicación UART         Sí, 4x
        I2C                 Si, 3x
        SPI                 Sí, 2x
        CAN         Sí (requiere un transceptor externo)

Conectores Cámara                 I2C + D54-D67
        Display                 D1N, D0N, D1P, D0P, CKN, CKP + D68-D75
        Jack de audio         DAC0, DAC1, A7

Power         Tensión de
        funcionamiento del
        circuito                 3,3 V
        Voltaje de entrada
        (VIN)         6-24V
        Corriente CC por pin
        de E/S                 8mA

Velocidad de         Cortex® M7                        480 MHz
reloj Cortex® M4                       240 MHz         

Memoria STM32H747XI Flash de 2 MB, RAM de 1 MB

Dimensiones Ancho         53 mm
        Longitud         101 mm




Diagrama de distribución de pines:





Si trabajas como yo con Fritzing, recuerda que ya se creo la librería 'Arduino GIGA R1 Wi-Fi' para realizar nuestros esquemáticos.


Preguntas Frecuentes:


¿Necesito una antena externa? ¿Está incluido con el producto?

Sí y sí, esta placa no tiene antena integrada, sin embargo, se proporciona una antena u.FL en la caja.

¿Qué modelos de Arducam son compatibles con el conector de cámara integrado?

El adaptador de cámara (encabezado J6) es un adaptador de 20 pines para cámaras Arducam como OV7675 y OV7670. Para obtener más información sobre cómo usar la cámara, visite la guía de la cámara WiFi GIGA R1. 

La GIGA R1 WiFi utiliza el USB-C® para alimentar y programar la placa, así como para simular un dispositivo HID como un mouse o un teclado.

La GIGA R1 WiFi expone todas las posibilidades de la STM32H7 de una manera accesible utilizando conectores de clavija de 2,54 mm, lo que la convierte en una opción más adecuada para la creación de prototipos. Dado su factor de forma, la GIGA R1 WiFi tiene espacio para proporcionar servicios adicionales, como un conector USB-A, un conector de entrada/salida de 3,5 mm y un conector JTAG integrado.

¿Puedo usar mis shield Arduino UNO, Arduino Mega o Arduino Due anteriores con el GIGA R1 WiFi?

Sí, mecánicamente las shield son compatibles, sin embargo, tenga en cuenta que el GIGA R1 WiFi funciona a 3,3 V, por lo que recomendamos verificar las especificaciones técnicas de la shield para asegurarse de que funciona a este voltaje.

¿Cuál es la diferencia entre los dos conectores USB?

La GIGA R1 WiFi tiene dos conectores USB. El conector USB-C® (USB0), junto al botón de reinicio y el conector de antena u.FL, se utiliza para programación, comunicación serial y alimentación de 5V. El conector USB-A (USB1), junto al conector jack de 3,5 mm, se utiliza como host USB (no como puerto de programación).


"La palabra 'Arduino' y los logotipos oficiales son marcas comerciales con copyright © de Arduino AG. El software Arduino IDE es propiedad de sus respectivos autores. La licencia principal que rige los productos de Arduino es la Licencia Pública General de GNU (GPL) y la Licencia Pública General Menor de GNU (LGPL). Todos los derechos están reservados por sus respectivos propietarios y licencias correspondientes."



Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.



Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:

viernes, 17 de febrero de 2023

Dibujando en Python utilizando la libreria Matplotlib y Numpy

Bienvenido a mi blog, hoy hablaremos un poco de el conjunto de Mandelbrot, que es el más estudiado de los fractales. Se conoce así en honor al matemático Benoît Mandelbrot (1924-2010), que investigó sobre él en los años setenta. Este conjunto se define en el plano complejo fijando un número complejo C cualquiera, a partir de C, se construye una sucesión por recursión. Fractal (del latín fractus, "irregular", "fragmentado") es una palabra que acuñó el propio Mandelbrot para describir la repetición "infinita" de patrones geométricos a diferentes escalas, que muestran versiones cada vez más pequeñas de sí mismos. Las partes pequeñas de un fractal, explicaba Mandelbrot, son semejantes al todo, al conjunto completo. Lo más interesante es que el matemático demostró que la mayoría de las formas de la naturaleza son fractales. Los fractales se han utilizado para explicar fenómenos atmosféricos, para analizar las redes vasculares y las redes neuronales del cuerpo humano, para calcular la longitud de las costas, para explicar el crecimiento de los cerebros de los mamíferos, para estudiar los seísmos... Incluso en telecomunicaciones se han diseñado antenas fractales como las que utilizan los teléfonos celulares actuales.

En el contexto de los fractales, la iteración se refiere a la aplicación repetida de una regla o un procedimiento para generar la forma o estructura compleja del fractal. En la creación del fractal de Mandelbrot, una fórmula matemática se aplica repetidamente a cada punto en un plano complejo, produciendo un patrón auténtico. La cantidad de veces que se aplica la fórmula es conocida como el nivel de iteración. La Autosimilitud es una característica de los fractales que se refiere a su capacidad para mantener un patrón o forma similar a sí mismos a diferentes escalas. En otras palabras, una porción de un fractal se parece a la forma completa del fractal, sin importar la escala a la que se observe. Esta propiedad se conoce como "simetría fractal". Por ejemplo, un árbol fractal tendrá ramas que se parezcan a las ramas más grandes y a la forma general del árbol. La autosimilitud es una de las características que hacen que los fractales sean tan interesantes y únicos en el mundo de las matemáticas.

Para ello haremos uso de Matplotlib, la cuál es una librería completa para crear visualizaciones estáticas, animadas e interactivas en Python, de igual forma también usaremos la librería NumPy, que nos trae el poder computacional de lenguajes como C y Fortran a Python, un lenguaje mucho más fácil de aprender y usar.

Este será un post corto, vamos primero a tratar de explicar el script linea por linea, después veremos el código final limpio y acabaremos generando la grafica respectiva.

import numpy    # importamos la librería NumPy

# NumPy es una biblioteca en Python que proporciona un objeto de matriz N-dimensional

# y funciones matemáticas de alto rendimiento para operar en esas matrices.

import matplotlib.pyplot # importamos la librería Matplotlib que se utiliza para la creación de gráficos y visualizaciones

# comenzamos la definición de una función que calcula el Conjunto de Mandelbrot

def mandelbrot_set(xmin, xmax, ymin, ymax, xn, yn, maxiter, horizon=2.0):    

    X = numpy.linspace(xmin, xmax, xn, dtype=numpy.float32)   # Aquí se está generando un arreglo de números que representan los valores en el eje x. La función linspace de NumPy genera un número especificado de puntos equidistantes entre dos valores dados

    Y = numpy.linspace(ymin, ymax, yn, dtype=numpy.float32)   # Aquí se está generando un arreglo de números que representan los valores en el eje y

    C = X + Y[:, None]*1j   # generamos una matriz de números complejos que representan todos los puntos en el plano complejo. La notación 1j es una forma de representar la unidad imaginaria en Python

    N = numpy.zeros_like(C, dtype=int) # Se crea un array N con la misma forma que C y se inicializa en cero

    Z = numpy.zeros_like(C)    # Se crea un array Z con la misma forma que C e inicializa en cero

    for n in range(maxiter):    # se itera sobre un rango de maxiter elementos

       I = numpy.less(abs(Z), horizon)    # se crea una matriz booleana I que es verdadera en las posiciones donde la magnitud de Z es menor que horizon

        N[I] = n    # asignamos el valor actual de la variable "n" a las posiciones en el array "N" donde la condición "I" es verdadera

        Z[I] = Z[I]**2 + C[I]   # es la fórmula iterativa para calcular el conjunto de Mandelbrot. Esta línea está asignando el resultado de esta fórmula a aquellos elementos en el array "Z" donde la condición "I" es verdadera

    N[N == maxiter-1] = 0   # asignamos el valor 0 a aquellos elementos en el array "N" que tienen un valor igual a "maxiter-1"

    return Z, N # la función "mandelbrot_set" devuelve los arrays "Z" y "N" como resultados

# Si se está ejecutando este archivo, define los parámetros y ejecuta la función mandelbrot_set

if __name__ == '__main__':

    # Se definen los límites para que el gráfico incluya la región rectangular con esquinas opuestas (-2, -1.5) y (1, 1.5)

    xmin, xmax, ymin, ymax = numpy.array([-2, 1, -1.5, 1.5], dtype=numpy.float32)

    # Se definen las dimensiones de la matriz que se va a utilizar para almacenar los valores de iteración para cada punto del conjunto de Mandelbrot

    # Se usarán matrices de 3000x2500 para almacenar los valores de iteración

    xn, yn = numpy.array([3000, 2500], dtype=int)

    # La variable "maxiter" define el número máximo de iteraciones que se realizarán en el cálculo del conjunto de Mandelbrot.

    # En este caso, se han establecido en 200

    maxiter = 200

    # La variable "horizon" se usa para definir el umbral que determina si un punto está dentro del conjunto de Mandelbrot. En este caso, se ha definido

    # como 2 elevado a la 40, lo que significa que se realizarán un máximo de 2 elevado a la 40 iteraciones para determinar si un punto está dentro del conjunto

    horizon = 2.0 ** 40

    log_horizon = numpy.log2(numpy.log(horizon))/2

    # Llamamos a la función "mandelbrot_set" definida previamente para calcular los valores de iteración y la matriz compleja para el conjunto de Mandelbrot

    Z, N = mandelbrot_set(xmin, xmax, ymin, ymax, xn, yn, maxiter, horizon)

    # Se ignora la advertencia de que algunos valores resultantes de las operaciones sean inválidos

    with numpy.errstate(invalid='ignore'):

        # Calculamos los valores de M utilizando los valores de N y Z

        M = numpy.nan_to_num(N + 1 - numpy.log(numpy.log(abs(Z)))/numpy.log(2) + log_horizon)    

    # Graficamos los valores de M con los parámetros especificados

    matplotlib.pyplot.imshow(M, extent=[xmin, xmax, ymin, ymax], cmap='hot', aspect='equal')  # se muestra el conjunto de Mandelbrot como una imagen en una ventana emergente

    matplotlib.pyplot.xlabel("Re(c)") # Se agrega un label o etiqueta para las coordenadas x e y y se establece un título

    matplotlib.pyplot.ylabel("Im(c)")

    matplotlib.pyplot.title("Mandelbrot Set by JorgeChac")

    matplotlib.pyplot.show() # Abrimos una ventana de visualización y mostramos el gráfico generado por el código.


Acá tenemos el código final limpio en Python:

# -----------------------------------------------------------------------
# (| " mandelbrot.py                                                  "|)
# (| "                                                                "|)
# (| " Script que genera el conjunto de Mandelbrot y lo visualiza     "|)
# (| " como una imagen utilizando las librerías NumPy y Matplotlib    "|)
# (| " de Python.                                                     "|)
# (| "                                                                "|)
# (| " El conjunto de Mandelbrot es un conjunto de puntos en el plano "|)
# (| " complejo que se define mediante una regla matemática iterativa."|)
# (| " El programa calcula los valores de los puntos en una cuadrícula"|)
# (| " de coordenadas en el plano complejo utilizando la función      "|)
# (| " mandelbrot_set() que implementa la regla iterativa. Luego, el  "|)
# (| " programa utiliza la librería Matplotlib para representar los   "|)
# (| " resultados como una imagen en una ventana de visualización.    "|)
# (| "                                                                "|)
# (| " Este código de ejemplo es de dominio público.                  "|)
# (| "                                                                "|)
# (| " Developer: jorgechac© - Técnico Laboral en Programación UNAB   "|)
# (| " Visita  https://jorgechac.blogspot.com                         "|)
# (| "                                                                "|)
# (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32   	      "|)
# (| " Whatsapp y Ventas NEQUI +573177295861                          "|)
# (| " Bucaramanga - Colombia                                         "|)
# -----------------------------------------------------------------------
import numpy
import matplotlib.pyplot

def mandelbrot_set(xmin, xmax, ymin, ymax, xn, yn, maxiter, horizon=2.0):
    
    X = numpy.linspace(xmin, xmax, xn, dtype=numpy.float32)
    Y = numpy.linspace(ymin, ymax, yn, dtype=numpy.float32)

    C = X + Y[:, None]*1j

    N = numpy.zeros_like(C, dtype=int)
    Z = numpy.zeros_like(C)

    for n in range(maxiter):

        I = numpy.less(abs(Z), horizon)
        N[I] = n

        Z[I] = Z[I]**2 + C[I]

    N[N == maxiter-1] = 0
    return Z, N

if __name__ == '__main__':

    xmin, xmax, ymin, ymax = numpy.array([-2, 1, -1.5, 1.5], dtype=numpy.float32)

    xn, yn = numpy.array([3000, 2500], dtype=int)

    maxiter = 200

    horizon = 2.0 ** 40

    log_horizon = numpy.log2(numpy.log(horizon))/2

    Z, N = mandelbrot_set(xmin, xmax, ymin, ymax, xn, yn, maxiter, horizon)

    with numpy.errstate(invalid='ignore'):
        
        M = numpy.nan_to_num(N + 1 - numpy.log(numpy.log(abs(Z)))/numpy.log(2) + log_horizon)

    matplotlib.pyplot.imshow(M, extent=[xmin, xmax, ymin, ymax], cmap='hot', aspect='equal')
    matplotlib.pyplot.xlabel("Re(c)")
    matplotlib.pyplot.ylabel("Im(c)")
    matplotlib.pyplot.title("Mandelbrot Set by JorgeChac")
    matplotlib.pyplot.show()


Finalmente después de ejecutar el código, se abrirá una nueva ventana y se comenzará a generar la grafica en Python con matplotlib, así:



Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Dibujando en Python utilizando el módulo Python Turtle

Dibujo del logotipo de Python utilizando el módulo Python Turtle

Simulador Wokwi - Generalidades

UEFI y BIOS - Generalidades

DISCOS SSD - GENERALIDADES

Creación de Particiones desde símbolo del sistema

Nuevos Microcontroladores Raspberry Pi Pico W, H y WH

Cómo Detectar un Arduino Falsificado

HDD Low Level Format Tool v4.40

Activa tu Windows 10/11 fácil