Conexiones Radio CD Smart for two


Con el paso de los años, es muy frecuente que el sonido del radio-cd del smart for two empiece a dar problemas (chasquidos, ruidos extraños, poca fidelidad ,etc. ) , por lo que si queremos identificar el problema, debemos dilucidar si el problema es por el propio radio-cd o es por los propios altavoces.

Para poder determinar la causa de un sonido malo antes de cambiar los altavoces directamente en primer lugar deberemos decidir si la causa es el propio radio cd por lo que debemos proceder a sacarlo de su encastre para probarlo externamente con otros altavoces que sepamos que no tienen problemas.

Actualmente casi todos los autorradios traen un conector estándar ISO 10487 (International Organization for Standardization). La radio cd del Smart for two , no es una excepción por lo que en primer lugar deberemos sacarla del encastre , para lo cual, primero quitaremos con cuidado la botonera inferior que va a presión ( donde va el interruptor de las luces de emergencia) y quitaremos el tornillo central inferior de la radio(torx de 25). Acto seguido quitaremos el embellecedor superior ( va a a presión por lo que nos podemos ayudar de desmontadores de plástico). Finalmente quitaremos los cuatro tornillos torx de 25 de ambos lados y ya podremos sacar el radio cd, que no es es ni mas ni menos que una radio cd en formato 2 din.

Si damos la vuelta al autoradio veremos tres conectores : dos de 8 pines y uno en la parte superior de 20 pines divida en tres secciones.

conector ISO 10487

El cuerpo A se utiliza para la alimentación, el B para los altavoces y el C para diferentes dispositivos externos asociados al autorradio.

Algunos autorradios más avanzados pueden traer el cuerpo D, que se utiliza para la conexión de sistemas de navegación GPS. En este caso el Smart en modelos superiores a 2010 , la radio-CD si que cuenta con este aunque no este conectado nada .

Estos son las descripciones del Conector A (Alimentación):

  • Pin 1. SVC (Speed Controlled Volume) – rojo/amarillo :  Entrada de señal de velocidad del vehículo para controlar el volumen. La señal se toma del sistema de control de crucero o del sensor de velocidad del vehículo.
  • Pin 2. Silenciado (mute) – marrón: Elimina el sonido al poner este terminal a masa. Se conecta al manos libres
  • Pin 3. NC (no conectado): Algunos fabricantes lo utilizan para funciones extra.
  • Pin 4. Entrada 12V permanentes – amarillo: Conexión directa, a través de fusible, a la batería para mantener los ajustes de la memoria del autorradio
  • Pin 5. Salida 12V (150 mA máx) conmutados (remote) – azul o azul/blanco: Cuando se enciende el autorradio, alimenta la antena electrónica o  activa el relé de alimentación de la etapa de potencia.
  • Pin 6. Entrada 12V de iluminación – naranja/blanco o amarillo/negro: Para iluminar la pantalla al encender las luces del vehículo
  • Pin 7. Entrada 12V conmutados – rojo: Alimentación tomada después de la llave de contacto.
  • Pin 8. Masa – negro o marrón: Se conecta al negativo de la batería (chasis del vehículo).

NOTAS:

  • Los pines 1 y 3 pueden estar intercambiados en algunas marcas de vehículos
  • Los pines 4 y 7 pueden estar intercambiados en algunas marcas de vehículos
  • Algunos vehículos  Volkswagen usan el pin 5 como 12 V permanentes (pin 4), por lo que hay que hacer la modificación para conectarlo al pin 4 del autorradio

Estos son las descripciones del Conector B (Altavoces)

  • Pin 1. – azul : trasero derecho  ( + )
  • Pin 2. – azul/negro:  trasero derecho ( – )
  • Pin 3. – gris: delantero derecho  ( + )
  • Pin 4. – gris/negro: delantero derecho( – )
  • Pin 5.  verde : delantero izquierdo  ( + )
  • Pin 6. – verde/negro:  delantero izquierdo ( – )
  • Pin 7. – marrón: trasero izquierdo  ( + )
  • Pin 8. – marrón/negro:  trasero izquierdo( – )
altavoces en ISO B
Figura 3: Altavoces en conector ISO B
Estos son las descripciones del Conector C1 ( salidas a amplificador o ecualizador )
  • Pin 1. – salida de línea izquierda trasera
  • Pin 2. – salida de línea derecha trasera
  • Pin 3. – masa de salidas de línea
  • Pin 4. – salida de línea izquierda delantera
  • Pin 5. – salida de línea derecha delantera
  • Pin 6. – salida 12 V conmutados (máx. 150 mA)
Estos son las descripciones del Conector C2 ( control remoto )
  • Pin 7. – recepción de datos
  • Pin 8. – transmisión de datos
  • Pin 9. – masa (chasis)
  • Pin 10. – salida 12 V conmutados (máx. 150 mA)
  • Pin 11. – entrada de control remoto
  • Pin 12. – masa de entrada de control remoto
Estos son las descripciones del Conector C3 ( cargador de CD )
  • Pin 13. – entrada de datos del bus
  • Pin 14. – salida de datos del bus
  • Pin 15. – salida de 12 V permanentes hacia el cargador de CD
  • Pin 16. – salida de 12 V conmutados hacia el cargador de CD (máx. 300 mA)
  • Pin 17. – masa de la señal de datos
  • Pin 18. – masa de la señal de audio de cargador de CD
  • Pin 19. – entrada de línea izquierda del cargador de CD
  • Pin 20. – entrada de línea derecha del cargador de CD

NOTAS:

  • Los pines 1 al 5 siempre tienen estas funciones asignadas
  • El pin 6 puede usarse como salida de subwoofer en algunos autorradios
  • Los demás pines pueden cambiar según el fabricante.
Conector D ( sistemas de navegación)

Este conector sólo está presente en los equipos con sistemas de navegación por GPS, los pines son asignados por el fabricante, por lo que habria que mirar obligatoriamente el manual del equipo.

Siguientes pasos a seguir

Una vez que saquemos la radio-cd podemos alimentarla externamente a través del pin4 (+12V) y pin 8 ( GND) para comprobar que arranca el aparato.

Ahora podemos conectar dos altavoces de buena calidad en el conector B

Pin 3. – gris: delantero derecho  ( + ).
Pin 4. – gris/negro: delantero derecho( – ).
Pin 5.  verde : delantero izquierdo  ( + ).
Pin 6. – verde/negro:  delantero izquierdo ( – ).

Si el sonido es malo , ya sabemos que el problema es del propio radio cd, por lo que podemos plantearnos en sustituir el radio cd por otro por ejemplo mas avanzado que sea de formato 2DIN.

Mejora de añadir bluetooth

Si hemos desmontado el Radio-cd , y este funciona correctamente un modo interesante de añadirle mucha funcionalidad es conectarle un receptor bluetooth, lo cual lo haremos a través de la sección C1

Estas son las características del equipo :

– Plug & Play
– Bluetooth: 5.0
– Rango: 5 ~ 10 m
– Nombre de Bluetooth: Jierui-BT 5908
– Función a través de dispositivos habilitados para Bluetooth
– No hay limitaciones funcionales de la radio del automóvil.
– Le permite conectar una fuente de audio externa y combine su teléfono con nuestro módulo Bluetooth y elija AUX desde su radio.
– Puede disfrutar de la música de tu teléfono a través de los altavoces del automóvil.

La versión Bluetooth 5.0, también es compatible con 3.0 /2.0, se ajusta a WMA, WAV, FLAC. Esta version Adecuado para Smart Fortwo 450, CrossBlade y Smart Roadster.

Inserte este elemento en la radio posterior y luego conecte el cable rojo a 12V +, el cable negro al suelo.

Haga coincidir su teléfono o almohadilla al módulo Bluetooth y elija AUX desde su radio, puede usar su teléfono para reproducir música a través de los altavoces del automóvil.

Cambio de altavoces

En caso de que el sonido sea correcto , es evidente que el problema es de envejecimiento de los propios altavoces , por lo podemos volver a colocar el radio cd en el coche y sustituir los altavoces por otros de mejor calidad.

Un ejemplo de altavoz cumple estas características;

  • Coaxial de 2 vías con pico 300 W/potencia RMS de 30 W
  • Respuesta de frecuencia: 35 – 22.000 Hz
  • Tweeter compensado de poliéster imídico
  • Imán de ferrita para woofer y imán de neodimio tweeter

Unos altavoces compatibles con el orificio con las especificaciones anteriores y que incluye la rejillas, y de muy buena calidad , pueden ser los altavoces de la marca JVC modelo CD-J620, altavoces de 2 vías de 16cm.

Es cierto que para desmontar los viejos altavoces originales , lo correcto seria desmontar la puerta al completo, pero afortunadamente hay una manera fácil de hacerlo sin desmontar nada sacando el altavoz averiado por la parte delantera como podemos ver en el siguiente video.

Anuncio publicitario

Acceso desde windows a Openstack con ssh


La mayor parte de la autenticación en entornos de Windows se realiza con un par de nombre de usuario y contraseña. Esta funciona bien en los sistemas que comparten un dominio común. Al trabajar con varios dominios (por ejemplo, entre sistemas locales y hospedados en la nube), se expone más a intrusiones de fuerza bruta.

En comparación, los entornos de Linux, normalmente, usan pares de clave pública y privada para controlar la autenticación, lo que no requiere el uso de contraseñas que se puedan adivinar. OpenSSH incluye herramientas que ayudan a admitir esta opción, en concreto:

  • ssh-keygen para generar claves seguras.
  • ssh-agent y ssh-add para almacenar claves privadas de forma segura.
  • scp y sftp para copiar archivos de claves públicas de forma segura durante el uso inicial de un servidor.

En este documento se proporciona información general sobre cómo usar estas herramientas en Windows para empezar a usar la autenticación de claves con SSH. Si no estás familiarizado con la administración de claves SSH, se recomienda que revises el informe interno de NIST 7966 titulado «Seguridad de la administración de acceso interactiva y automatizada con Secure Shell (SSH)».

Acerca de los pares de claves

Los pares de claves hacen referencia a los archivos de clave pública y privada que utilizan determinados protocolos de autenticación.

La autenticación de clave pública SSH usa algoritmos criptográficos asimétricos para generar dos archivos de clave: uno «privado» y otro «público». Los archivos de clave privada son el equivalente de una contraseña y deben estar protegidos en todo momento. Si alguien adquiere tu clave privada, esa persona puede iniciar sesión en cualquier servidor SSH al que tengas acceso. La clave pública es la que se coloca en el servidor SSH y puede compartirse sin poner en peligro la clave privada.

Al usar la autenticación de claves con un servidor SSH, el servidor SSH y el cliente comparan las claves públicas del nombre de usuario proporcionado con la clave privada. Si la clave pública del lado servidor no se puede validar con la clave privada del lado cliente, se produce un error de autenticación.

Para implementar la autenticación multifactor con pares de claves, debes solicitar que se proporcione una frase de contraseña cuando se genera el par de claves (consulta Generación de claves a continuación). Durante la autenticación, se solicita al usuario la frase de contraseña, que se usa junto con la presencia de la clave privada en el cliente SSH para autenticar al usuario.

Generación de claves de host

Las claves públicas tienen requisitos de ACL específicos que, en Windows, equivalen a permitir el acceso únicamente a los administradores y al sistema. Para facilitar esta tarea,

  • El módulo de PowerShell de OpenSSHUtils se creó para establecer las ACL de claves correctamente y debe instalarse en el servidor.
  • Al usar sshd por primera vez, se generará automáticamente el par de claves para el host. Si el ssh-agent se está ejecutando, las claves se agregarán automáticamente al almacén local.

Para facilitar la autenticación de claves con un servidor SSH, ejecuta los siguientes comandos desde un símbolo del sistema de PowerShell con privilegios elevados: PowerShell

# Install the OpenSSHUtils module to the server. This will be valuable when deploying user keys.
Install-Module -Force OpenSSHUtils -Scope AllUsers

# By default the ssh-agent service is disabled. Allow it to be manually started for the next step to work.
Get-Service -Name ssh-agent | Set-Service -StartupType Manual

# Start the ssh-agent service to preserve the server keys
Start-Service ssh-agent

# Now start the sshd service
Start-Service sshd

Dado que no hay ningún usuario asociado al servicio sshd, las claves de host se almacenan en \ProgramData\ssh.

Generación de claves de usuario

Para usar la autenticación basada en claves, primero debes generar algunos pares de claves públicas o privadas para el cliente. Desde PowerShell o cmd, usa ssh-keygen para generar algunos archivos de clave. PowerShell

cd ~\.ssh\
ssh-keygen

Esta operación debería mostrar algo similar a lo siguiente (donde «username» se reemplaza por tu nombre de usuario)

Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\username\.ssh\id_ed25519):

Puede presionar Entrar para aceptar el valor predeterminado o puedes especificar una ruta de acceso en la que quieres que se generen las claves. Llegados a este punto, se te pedirá que uses una frase de contraseña para cifrar los archivos de clave privada. La frase de contraseña funciona con el archivo de clave para proporcionar una autenticación en dos fases. En este ejemplo, vamos a dejar la frase de contraseña vacía.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\username\.ssh\id_ed25519.
Your public key has been saved in C:\Users\username\.ssh\id_ed25519.pub.
The key fingerprint is:
SHA256:OIzc1yE7joL2Bzy8!gS0j8eGK7bYaH1FmF3sDuMeSj8 [email protected]@LOCAL-HOSTNAME

The key's randomart image is:
+--[ED25519 256]--+
|        .        |
|         o       |
|    . + + .      |
|   o B * = .     |
|   o= B S .      |
|   .=B O o       |
|  + =+% o        |
| *oo.O.E         |
|+.o+=o. .        |
+----[SHA256]-----+

Ahora tienes un par de claves ED25519 pública y privada (los archivos .pub son claves públicas y los demás son claves privadas):

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/28/2018  11:09 AM           1679 id_ed25519
-a----        9/28/2018  11:09 AM            414 id_ed25519.pub

Recuerde que los archivos de clave privada son el equivalente de una contraseña, por lo que se deben proteger de la misma manera que las contraseñas. Para que sea más fácil, usa ssh-agent para almacenar de forma segura las claves privadas en un contexto de seguridad de Windows y asócialas con tu inicio de sesión de Windows. Para ello, inicia el servicio de ssh-agent como administrador y usa ssh-add para almacenar la clave privada. PowerShell

# Make sure you're running as an Administrator
Start-Service ssh-agent

# This should return a status of Running
Get-Service ssh-agent

# Now load your key files into ssh-agent
ssh-add ~\.ssh\id_ed25519


Después de completar estos pasos, cada vez que se necesite una clave privada para la autenticación desde este cliente, ssh-agent recuperará automáticamente la clave privada local y la pasará al cliente SSH.

Nota

Se recomienda realizar una copia de seguridad de la clave privada en una ubicación segura y, a continuación, eliminarla del sistema local después de agregarla al agente SSH. No se puede recuperar la clave privada del agente. Si pierdes el acceso a la clave privada, tendrás que crear un nuevo par de claves y actualizar la clave pública en todos los sistemas con los que interactúes.

Implementación de la clave pública

Para usar la clave de usuario que se creó anteriormente, la clave pública debe colocarse en el servidor en un archivo de texto denominado authorized_keys en users\nombre de usuario\.ssh\. Las herramientas de OpenSSH incluyen scp (una utilidad de transferencia de archivos segura) para ayudarte con esta operación.

Para trasladar el contenido de la clave pública (~.ssh\id_ed25519.pub) a un archivo de texto denominado authorized_keys en ~.ssh\ en el servidor o host.

En este ejemplo se usa la función Repair-AuthorizedKeyPermissions en el módulo OpenSSHUtils que se instaló anteriormente en el host de las instrucciones anteriores. PowerShell

# Make sure that the .ssh directory exists in your server's home folder
ssh [email protected]@contoso.com mkdir C:\users\user1\.ssh\

# Use scp to copy the public key file generated previously to authorized_keys on your server
scp C:\Users\user1\.ssh\id_ed25519.pub [email protected]@contoso.com:C:\Users\user1\.ssh\authorized_keys

# Appropriately ACL the authorized_keys file on your server
ssh --% [email protected]@contoso.com powershell -c $ConfirmPreference = 'None'; Repair-AuthorizedKeyPermission C:\Users\user1\.ssh\authorized_keys

Estos pasos completan la configuración necesaria para usar la autenticación con SSH basada en claves en Windows. Después de esto, el usuario puede conectarse al host de sshd desde cualquier cliente que tenga la clave privada.

Fuentes sin transformador ( parte 2 de 2)


 Actualización a la fuente de alimentación sin transformador estabilizada por voltaje

En un post anterior vimos como es posible  construir una fuente  sin  el voluminoso transformador con un sencillo circuito formado por un puente de diodos , una red RC   y un diodo zenner (opcional ) junto con un pequeño condensador electrolitico  .  Ahora veamos cómo una fuente de alimentación capacitiva ordinaria puede transformarse en una fuente de alimentación estabilizada de voltaje libre de sobretensiones o una fuente de alimentación sin transformador de voltaje variable aplicable para casi todas las cargas y circuitos electrónicos estándar. 

El diseño

La función de los diversos componentes utilizados a través de las diversas etapas del circuito controlado por voltaje mostrado anteriormente puede entenderse desde los siguientes puntos: La tensión de red es rectificada por los cuatro diodos 1N4007 en una tipica confoguracion en puente de  Graetz  y filtrada por el condensador eelctrolitico  de  10uF/400V. La salida a través de la 10uF/400V ahora alcanza alrededor de 310V que es el voltaje máximo rectificado alcanzado desde la red eléctrica. La red divisoria de voltaje configurada en la base del TIP122 se asegura de que esta tensión se reduzca al nivel esperado o según sea necesario a través de la salida de la fuente de alimentación (también puede utilizar MJE13005 en lugar de TIP122 para una mejor seguridad) . Si se requiere un 12V, ajustando la resistencia variable de 10K se puede configurar para lograr esto a través del emisor/tierra del TIP122. El condensador de 220uF/50V garantiza que durante el interruptor ON la base se convierte en una tensión cero momentánea para mantenerlo apagado y a salvo de la oleada inicial. La inductancia  formada por 100 vueltas de hilo de 1mm ,  asegura además que durante el período de encendido del transistor  la bobina ofrece una alta resistencia y detiene cualquier corriente de entrada para entrar en el circuito, evitando un posible daño al circuito. Para lograr un voltaje de reducción de 5V o cualquier otro conectado, un regulador de voltaje como el 7805 IC mostrado se puede utilizar para lograr el mismo  cometido , teniendo por tanto a la salida del 7805  los 5v DC  no aislados de la red eléctrica .

Uso del control MOSFET El circuito anterior usando el seguidor del emisor se puede mejorar aún más mediante la aplicación de una fuente MOSFET fuente de alimentación de seguidor,junto con una etapa de control de corriente suplementaria utilizando transistor BC547. El diagrama completo del circuito se puede ver abajo:

3) Circuito de fuente de alimentación sin transformador de cruce cero

El tercer interesante explica la importancia de una detección de cruce cero en fuentes de alimentación capacitivas sin transformador con el fin de hacerlo completamente seguro de las corrientes de sobretensión de entrada del interruptor de red. La idea fue propuesta por el Sr. Francis.

Especificaciones técnicas

He estado leyendo sobre el transformador menos artículos de fuente de alimentación en su sitio con gran interés y si estoy entendiendo correctamente el problema principal es la posible corriente de entrada en el circuito al encender, y esto es causado porque el encendido hace no siempre ocurre cuando el ciclo está a cero voltios (cruce cero). Soy un novato en electrónica y mis conocimientos y experiencia práctica son muy limitados, pero si el problema se puede resolver si se implementa el cruce cero por qué no utilizar un componente de cruce cero para controlarlo como un Optotriac con cruce cero. El lado de entrada del Optotriac es de baja potencia, por lo tanto, se puede utilizar una resistencia de baja potencia para reducir la tensión de red para el funcionamiento de Optotiac. Por lo tanto, no se utiliza ningún condensador a la entrada del Optotriac. El condensador está conectado en el lado de salida que será encendido por el TRIAC que se enciende en el cruce cero. Si esto es aplicable también resolverá problemas de alta corriente, ya que el Optotriac a su vez puede operar otra corriente más alta y / o voltaje TRIAC sin ninguna dificultad. El circuito de CC conectado al condensador ya no debería tener el problema de corriente de entrada. Sería bueno conocer su opinión práctica y gracias por leer mi correo. Saludos, Francis

El diseño

Como se señaló con razón en la sugerencia anterior, una entrada de CA sin un control de cruce cero puede ser una causa importante de una corriente de sobretensión en fuentes de alimentación capacitivas sin transformador.
zero crossing controlled transformerless power supply circuit
Hoy en día, con la llegada de sofisticados opto-isóladores de conductor triac, cambiar una red de CA con control de cruce cero ya no es un asunto complejo, y se puede implementar simplemente utilizando estas unidades.

Acerca de MOCxxxx Opto-couplers

Los controladores triac de la serie MOC vienen en forma de optoacopladores y son especialistas en este sentido y se pueden utilizar con cualquier triac para controlar la red de CA a través de una detección y control de cruce cero. Los controladores triac de la serie MOC incluyen MOC3041, MOC3042, MOC3043 etc, todos estos son casi idénticos con sus características de rendimiento con sólo pequeñas diferencias con sus espces de voltaje, y cualquiera de estos se puede utilizar para la aplicación de control de sobretensiones propuesta en fuentes de alimentación capacitivas. La detección y ejecución del cruce cero se procesan internamente en estas unidades de conductor opto y sólo hay que configurar el triac de potencia con él para presenciar la cocción controlada de cruce cero prevista del circuito triac integrado. Antes de investigar el circuito de fuente de alimentación sin transformador triac sin sobretensiones usando un concepto de control de cruce cero vamos a entender brevemente lo que es un cruce cero y sus características involucradas.

Qué es Zero Crossing en AC Mains

Sabemos que un potencial de red de CA se compone de ciclos de voltaje que suben y bajan con la polaridad cambiante de cero a máximo y viceversa a través de la escala dada. Por ejemplo en nuestra red de 220V AC, los interruptores de voltaje de 0 a +310V pico) y de nuevo a cero, luego el reenvío hacia abajo de 0 a -310V, y de vuelta a cero, esto continúa continuamente 50 veces por segundo constituyendo un ciclo de 50 Hz AC. Cuando la tensión de red está cerca de su pico instantáneo del ciclo, es decir, cerca de 220V (para una entrada de red de 220V), se encuentra en la zona más fuerte en términos de voltaje y corriente, y si una fuente de alimentación capacitiva pasa a ser encendida durante este instante , se puede esperar que todo el 220V se rompa a través de la fuente de alimentación y la carga de CC vulnerable asociada. El resultado podría ser lo que normalmente presenciamos en tales unidades de suministro de energía…. que es la quema instantánea de la carga conectada. La consecuencia anterior se puede ver comúnmente sólo en fuentes de alimentación capacitivas sin transformador porque, los capacitores tienen las características de comportarse como un corto por una fracción de segundo cuando se somete a una tensión de alimentación, después de lo cual se carga y se ajusta a su nivel de salida especificado correcto Volviendo a la cuestión de la cruz cero de la red, en una situación inversa mientras la red eléctrica se acerca o cruza la línea cero de su ciclo de fase, se puede considerar que está en su zona más débil en términos de corriente y voltaje, y cualquier gadget encendido en este instante puede ser ex pectado para ser totalmente seguro y libre de una oleada de oleada. Por lo tanto, si una fuente de alimentación capacitiva se enciende en situaciones en las que la entrada de CA está pasando a través de su fase cero, podemos esperar que la salida de la fuente de alimentación sea segura y nula de una corriente de sobretensión.

Cómo funciona

El circuito mostrado arriba utiliza un controlador de optoisolator triac MOC3041, y se configura de tal manera que cada vez que se enciende la alimentación, dispara e inicia el triac conectado sólo durante el primer cruce cero de la fase de CA, y luego mantiene el AC encendido normalmente durante el resto del período hasta que la alimentación se apague y se vuelva a encender. Refiriéndose a la figura podemos ver cómo el pequeño IC MOC 3041 de 6 pines está conectado con un triac para ejecutar los procedimientos. La entrada al triac se aplica a través de un condensador limitador de corriente de alta tensión 105/400V, la carga se puede ver unida al otro extremo de la fuente a través de una configuración rectificadora de puente para lograr un CC puro a la carga prevista que podría un LED.

Cómo se controla la corriente de sobretensión

Siempre que se enciende la alimentación, inicialmente el triac permanece apagado (debido a una ausencia de la unidad de compuerta) y también lo hace la carga conectada a la red de puente. Una tensión de alimentación derivada de la salida del condensador 105/400V llega al LED IR interno a través del pin1/2 del OPto IC. Esta entrada se supervisa y procesa internamente con referencia a la respuesta de luz LED IR…. y tan pronto como se detecta el ciclo de CA alimentado alcanzando el punto de cruce cero, un interruptor interno alterna y activa instantáneamente el triac y mantiene el sistema encendido durante el resto del período hasta que la unidad se apague y vuelva a encender. Con la configuración anterior, cada vez que se enciende la alimentación, el triac opto isolator MOC se asegura de que el triac se inicie sólo durante ese período cuando la red de CA está cruzando la línea cero de su fase, lo que a su vez mantiene la carga perfectamente segura y libre de lo peligroso oleada de prisa.

Mejorar el diseño anterior

Un circuito de fuente de alimentación capacitiva integral que tiene un detector de cruce cero, un supresor de sobretensiones y regulador de voltaje se discute aquí, la idea fue presentada por el Sr. Chamy Diseño de un circuito de fuente de alimentación capacitiva mejorado con detección de cruce cero Esta es una propuesta de  cruce cero, diseño de fuente de alimentación capacitiva protegida contra sobretensiones con estabilizador de voltaje, voy a tratar de enumerar todas mis dudas. (Sé que esto será caro para los capacitores, pero esto es sólo para fines de prueba)
1- El BT136 tiene que ser cambiado por un BTA06 para acomodar más corriente. 2-El Q1 (TIP31C) puede manejar solamente 100V Max. Tal vez debería cambiarse para un transistor 200V 2-3A?, como el 2SC4381.)TIP31 debe reemplazarse con un transistor Darlington como TIP142, etc. de lo contrario podría no funcionar correctamente. Además cuando se utiliza un Darlington la resistencia base podría ser de alto valor, puede ser una resistencia de 1K /2 vatios estaría bastante bien. Sin embargo, el diseño por sí mismo parece un exceso, una versión mucho más simple se puede ver a continuación https://homemade-circuits.com/2016/07/scr-shunt-for-protecting-capacitive-led.html Regards 3-R6 (200R 5W), es bastante pequeña 4-Algunas resistencias han sido cambiadas siguiendo  recomendaciones para que sea 110V capaz. ¿Tal vez el 10K uno necesita ser más pequeño? Circuito de cruce cero

4) Cambio de fuente de alimentación sin transformador con IC 555

Esta solución 4rth simple pero inteligente se implementa aquí usando IC 555 en su modo monoestable para controlar el aumento de prisa en una fuente de alimentación sin transfomadors a través de un concepto de circuito de conmutación de cruce cero, en el que la potencia de entrada de la red eléctrica se permite entrar en el circuito sólo durante los cruces cero de la señal de CA, eliminando así la posibilidad de corrientes de sobretensión. L

Algunas dudas

¿Funcionaría un circuito sin transformador cruzado cero para evitar la corriente de entrada inicial al no permitir que se encienda hasta el punto 0 en el ciclo de 60/50 hercios? Muchos relés de estado sólido que son baratos, menos que INR 10.00 y tienen esta capacidad incorporada en ellos. También me gustaría conducir 20vatios leds con este diseño, pero no estoy seguro de cuánta corriente o cuánto condensadores calientes obtendrá supongo que depende de cómo los leds son serie de cables o paralelo, pero digamos que el condensador tiene el tamaño de 5 amperios o 125uf el condensador se calienta y soplará??? ¿Cómo se leen las especificaciones del condensador para determinar cuánta energía pueden disiparse? La solicitud anterior nos llevó a buscar un diseño relacionado que incorpora un concepto de conmutación de cruce cero basado en IC 555, y se encontró con una fuente de alimentación sin transformador que podría ser utilizado para eliminar convincentemente todo lo posible posibilidades de aumento de la inrush.

Qué es un Cambio de Cruce Cero:

Es importante aprender este concepto primero antes de investigar el circuito sin transformador sin sobretensiones propuesto. Todos sabemos cómo se ve una onda sinusoidal de una señal de red de CA. Sabemos que esta señal sinusova comienza a partir de una marca potencial cero, y exponencial o gradualmente sube hasta el punto de tensión pico (220 o 120), y a partir de ahí revierte exponencialmente a la marca potencial cero. Después de este ciclo positivo, la forma de onda se sumerge y repite el ciclo anterior, pero en la dirección negativa hasta que vuelve una vez más a la marca cero. La operación anterior ocurre alrededor de 50 a 60 veces por segundo dependiendo de las especificaciones de la utilidad de red. Puesto que esta forma de onda es lo que entra en el circuito, cualquier punto en la forma de onda que no sea el cero, presenta un peligro potencial de una sobretensión de encendido del interruptor debido a la alta corriente implicada en la forma de onda. Sin embargo, la situación anterior se puede evitar si la carga se enfrenta al interruptor ON durante el cruce cero, después de lo cual el aumento de ser exponencial no representa ninguna amenaza para la carga. Esto es exactamente lo que hemos tratado de implementar en el circuito propuesto.

Operación del circuito

Refiriéndose al diagrama de circuito según abajo, los diodos 4 1N4007 forman la configuración estándar de los rectificadores de puente, la unión de cátodo produce una ondulación de 100 Hz a través de la línea. La frecuencia anterior 100Hz se cae usando un divisor potencial (47k/20K) y se aplica al carril positivo del IC555. A través de esta línea, el potencial se regula y filtra adecuadamente mediante D1 y C1. El potencial anterior también se aplica a la base Q1 a través de la resistencia 100k. El IC 555 se configura como un MV monoestable que significa que su salida irá alta cada vez que su pin 2 esté conectado a tierra. Para los períodos durante los cuales la red de CA está por encima (+)0.6V, Q1 permanece apagado, pero tan pronto como la forma de onda de CA toca la marca cero, que se llega por debajo de la (+)0.6 V, Q1 cambia ON el pin de puesta a tierra 2 del IC y la representación de una salida positiva del pin IC 3. La salida del IC conmuta el SCR y la carga y la mantiene encendida hasta que transcurre la sincronización MMV, para comenzar un nuevo ciclo. El tiempo de encendido del monoestable se puede ajustar variando el ajuste preestablecido de 1M. Un mayor tiempo de encendido garantiza una mayor corriente a la carga, lo que la hace más brillante si se trata de un LED, y viceversa. Las condiciones del interruptor ON de este circuito de fuente de alimentación sin transformador basado en IC 555 se restringen solo cuando el CA está cerca de cero, lo que a su vez garantiza que no haya tensión de sobretensión cada vez que se encienda la carga o el circuito.

Diagrama de circuito

Transformerless Power Supply using IC 555

Para la aplicación del controlador LED

Si usted está buscando una fuente de alimentación sin transformador para la aplicación de controlador LED a nivel comercial, entonces probablemente se puede probar los conceptos explicados aquí.

Como cambiar la esfera del Amazfit Verge lite


Amazfit nos sorprendio en 2020 con un reloj «economico»( unos 50€ en Amazon) con pantalla AMOLED de 1.3″ con Corning Gorilla de cristal y anti recubrimiento de huellas dactilares, grado de impermeabilización IP68 (hasta 1.5 m de profundidad durante media hora),batería de polímero de litio de 390mAh (más de 20 días en un escenario de uso típico para viajar sin cargador y no preocuparse nunca por la batería).

El reloj permite track 7 deportes diferentes( correr al aire libre / de interior, caminar, ciclismo exterior / interior, elíptico entrenador y ejercicio) e incluye sensor óptico y monitor de frecuencia cardíaca las 24 horas

Además el reloj inteligente amazfit verge lite utiliza una nueva generación de sensores y algoritmos ópticos de alta precisión para un monitoreo más preciso y un menor consumo de energía.

Tambien es muy util la función de registro de la frecuencia cardíaca de todo el día le permite ver los cambios de la frecuencia cardíaca a lo largo del día y descubrir anomalías en el tiempo

Si bien es un reloj inteligente con una relación calidad/precio muy adecuada nos topamos con un sw limitado genérico (usa el sw mi fit) , se ve claramente limitado para su potencial como lo demuestra el numero ínfimo de esferas proporcionado( unas 4 )

Aunque por el momento, no existe demasiado desarrollo acerca del reloj Amazfit Verge Lite (ya que trae un nuevo sistema operativo propietario), afortunadamente al menos, por el momento podemos disfrutar de esferas totalmente personalizados, y así poder darle un toque mucho más exclusivo a nuestro reloj, los cuales están disponibles, como no podía ser de otra manera, en la página Amazfitwachtfaces.com.

Si bien es factible instalar las esferas personalizadas desde la memoria del smartphone copiando manualmente los binarios en la carpeta wachfaces y luego sincronizando perimero desde mi fit y luego desde el propio reloj, esta tarea puede ser mucho mas fácil desde la aplicación Notify & Fitness for AmazFit, aplicación que se encuentra disponible en el Play Store, tanto en formato de pago, como gratuito (para este caso, con la versión gratuita, es más que suficiente).

Esta aplicación ofrece un numero de funcionalidades enorme, entre ellas una mejor colección de esferas disponible en 10 idiomas diferentes para los siguientes modelos:

  • Amazfit GTR 47 mm y 42 mm, GTR 2 / 2e
  • Amazfit GTS, GTS 2 / 2e, GTS 2 mini
  • Amazfit T-Rex, T-Rex Pro
  • Amazfit Pace
  • Amazfit Stratos, Stratos 3
  • Amazfit Verge, Verge lite
  • Banda inteligente Amazfit X
  • Amazfit Verge Lite
  • etc

Después de instalar la aplicación, será necesario actualizarla desde el propio menú de la aplicación, para tener disponibles las opciones para el AmazFit Verge Lite.

La aplicación no solo proporciona esferas de reloj para descargar sino que permite hacer el seguimiento de actividad de una manera muy potente y graficamente atractiva

Es muy importante destacar para que funcione esta aplicación el reloj debe estar conectado a la aplicación Zepp / MIFit mientras se sincroniza la esfera del reloj y debemos aceptar por tanto todos los permisos que se nos soliciten.


En realidad es fácil de personalizar su reloj inteligente como lo reflejan las amplias opciones que nos muestra en el menú principal.


Entre las opciones posibles destacan el cambio de idioma, personalización del tiempo o el bloqueo de la pantalla con el reloj.

Otras opciones interesantes son la de ocultar sugerencias, reiniciar pasos o personalizar el botón del menú del corazón.

Asimismo podemos cambiar el interfaz de la propia aplicación:

Una vez personalizado el reloj, podemos ir a la vista las opciones de carátula de reloj, que también tiene acceso directo a la página amazfitwatchfaces.com ( y por si fuera poco, también podemos instalar manualmente una esfera de reloj descargada previamente)

Su funcionamiento no puede ser más sencillo :

  • Vamos al menú superior de la derecha (icono de los cuatro cubos ).
  • Pinchamos en watchfaces
  • Simplemente seleccionamos la esfera deseada (ojo con el idioma) y luego pulsamos en Instalar, y automáticamente el watchface se sincronizará con el reloj, aunque no será un proceso rápido ya que la transferencia es bastante lenta ( no debe desesperarse). Este proceso, podemos repetirlo cuantas veces deseemos, aunque en el reloj siempre quedará el último watchface personalizado sincronizado, ya que tan sólo es capaz de almacenar uno. 
  • No olvidar que el reloj debe estar conectado a la aplicación Zepp / MIFit mientras se sincroniza la esfera del reloj.

También puede instalar la esfera del reloj usando la opción de menú Compartir, compartiendo la esfera del reloj con aplicaciones compatibles. Dicha aplicación trae infinidad de opciones como hemos podido degranar . Sin duda es un gran complemento al software original muy mejorado no solo su usabilidad sino lpor la gran facilidad para personalizar el reloj no solo en l a esfera sino en un sinfín de opciones

Por cierto , si le interesa comprar este interesante reloj (Verge Lite) se puede comprar en Amazon por unos 50€ en blanco

Keras


El aprendizaje profundo es uno de los principales subcampos del marco de aprendizaje automático. El aprendizaje automático es el estudio del diseño de algoritmos, inspirado en el modelo del cerebro humano. El aprendizaje profundo se está volviendo más popular en los campos de la ciencia de datos como la robótica, la inteligencia artificial (IA), el reconocimiento de audio y video y el reconocimiento de imágenes. La red neuronal artificial es el núcleo de las metodologías de aprendizaje profundo. El aprendizaje profundo es compatible con varias bibliotecas como Theano, TensorFlow, Caffe, Mxnet, etc., Keras es una de las bibliotecas de Python más potentes y fáciles de usar, que se basa en bibliotecas populares de aprendizaje profundo como TensorFlow, Theano, etc. , para crear modelos de aprendizaje profundo.

Descripción general de Keras

Keras se ejecuta sobre bibliotecas de máquinas de código abierto como TensorFlow, Theano o Cognitive Toolkit (CNTK). Theano es una biblioteca de Python que se utiliza para tareas de cálculo numérico rápido. TensorFlow es la biblioteca matemática simbólica más famosa que se utiliza para crear redes neuronales y modelos de aprendizaje profundo. TensorFlow es muy flexible y el beneficio principal es la computación distribuida. CNTK es un marco de aprendizaje profundo desarrollado por Microsoft. Utiliza bibliotecas como Python, C #, C ++ o kits de herramientas de aprendizaje automático independientes. Theano y TensorFlow son bibliotecas muy poderosas pero difíciles de entender para crear redes neuronales.

Keras se basa en una estructura mínima que proporciona una forma limpia y sencilla de crear modelos de aprendizaje profundo basados ​​en TensorFlow o Theano. Keras está diseñado para definir rápidamente modelos de aprendizaje profundo. Bueno, Keras es una opción óptima para aplicaciones de aprendizaje profundo.

Características

Keras aprovecha varias técnicas de optimización para hacer que la API de red neuronal de alto nivel sea más fácil y más eficiente. Es compatible con las siguientes funciones:

  • API consistente, simple y extensible.
  • Estructura mínima: fácil de lograr el resultado sin lujos.
  • Es compatible con múltiples plataformas y backends.
  • Es un marco fácil de usar que se ejecuta tanto en CPU como en GPU.
  • Gran escalabilidad de la computación.

Beneficios

Keras es un marco muy potente y dinámico y ofrece las siguientes ventajas:

  • Mayor apoyo de la comunidad.
  • Fácil de probar.
  • Las redes neuronales de Keras están escritas en Python, lo que simplifica las cosas.
  • Keras admite redes convolucionales y recurrentes.
  • Los modelos de aprendizaje profundo son componentes discretos, por lo que puede combinarlos de muchas formas.

mo instalar Keras en su máquina. Antes de pasar a la instalación, repasemos los requisitos básicos de Keras.

Prerrequisitos

Debe cumplir los siguientes requisitos:

  • Cualquier tipo de sistema operativo (Windows, Linux o Mac)
  • Python versión 3.5 o superior.

Python

Keras es una biblioteca de redes neuronales basada en Python, por lo que Python debe estar instalado en su máquina. Si python está instalado correctamente en su máquina, abra su terminal y escriba python, podría ver la respuesta similar a la que se especifica a continuación,

Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) 
[MSC v.1900 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>>

A partir de ahora, la última versión es ‘3.7.2’. Si Python no está instalado, visite el enlace oficial de Python – www.python.org y descargue la última versión basada en su sistema operativo e instálela inmediatamente en su sistema.

Pasos de instalación de Keras

La instalación de Keras es bastante sencilla. Siga los pasos a continuación para instalar correctamente Keras en su sistema.

Paso 1: Crear un entorno virtual

Virtualenv se utiliza para administrar paquetes de Python para diferentes proyectos. Esto será útil para evitar romper los paquetes instalados en los otros entornos. Por lo tanto, siempre se recomienda utilizar un entorno virtual al desarrollar aplicaciones Python.

Linux / Mac OS

Usuarios de Linux o Mac OS, vaya al directorio raíz de su proyecto y escriba el siguiente comando para crear un entorno virtual,

python3 -m venv kerasenv

Después de ejecutar el comando anterior, se crea el directorio «kerasenv» con bin, lib e incluye carpetas en su ubicación de instalación.

Ventanas

El usuario de Windows puede usar el siguiente comando,

py -m venv keras

Paso 2: Activa el medio

Este paso configurará los ejecutables de python y pip en su ruta de shell.

Linux / Mac OS

Ahora hemos creado un entorno virtual llamado «kerasvenv». Vaya a la carpeta y escriba el siguiente comando,

$ cd kerasvenv kerasvenv $ source bin/activate

Ventanas

Los usuarios de Windows se mueven dentro de la carpeta «kerasenv» y escriben el siguiente comando,

.\env\Scripts\activate

Paso 3: Bibliotecas de Python

Keras depende de las siguientes bibliotecas de Python.

  • Numpy
  • Pandas
  • Scikit-aprender
  • Matplotlib
  • Scipy
  • Seaborn

Con suerte, ha instalado todas las bibliotecas anteriores en su sistema. Si estas bibliotecas no están instaladas, utilice el siguiente comando para instalarlas una por una.

numpy

pip install numpy

podrías ver la siguiente respuesta,

Collecting numpy 
   Downloading 
https://files.pythonhosted.org/packages/cf/a4/d5387a74204542a60ad1baa84cd2d3353c330e59be8cf2d47c0b11d3cde8/ 
   numpy-3.1.1-cp36-cp36m-macosx_10_6_intel.
macosx_10_9_intel.macosx_10_9_x86_64. 
   macosx_10_10_intel.macosx_10_10_x86_64.whl (14.4MB) 
      |████████████████████████████████| 14.4MB 2.8MB/s

pandas

pip install pandas

Pudimos ver la siguiente respuesta,

Collecting pandas 
   Downloading 
https://files.pythonhosted.org/packages/cf/a4/d5387a74204542a60ad1baa84cd2d3353c330e59be8cf2d47c0b11d3cde8/ 
pandas-3.1.1-cp36-cp36m-macosx_10_6_intel.
macosx_10_9_intel.macosx_10_9_x86_64. 
   macosx_10_10_intel.macosx_10_10_x86_64.whl (14.4MB) 
      |████████████████████████████████| 14.4MB 2.8MB/s

matplotlib

pip install matplotlib

Pudimos ver la siguiente respuesta,

Collecting matplotlib 
   Downloading 
https://files.pythonhosted.org/packages/cf/a4/d5387a74204542a60ad1baa84cd2d3353c330e59be8cf2d47c0b11d3cde8/ 
matplotlib-3.1.1-cp36-cp36m-macosx_10_6_intel.
macosx_10_9_intel.macosx_10_9_x86_64. 
   macosx_10_10_intel.macosx_10_10_x86_64.whl (14.4MB) 
      |████████████████████████████████| 14.4MB 2.8MB/s

scipy

pip install scipy

Pudimos ver la siguiente respuesta,

Collecting scipy 
   Downloading 
https://files.pythonhosted.org/packages/cf/a4/d5387a74204542a60ad1baa84cd2d3353c330e59be8cf2d47c0b11d3cde8 
/scipy-3.1.1-cp36-cp36m-macosx_10_6_intel.
macosx_10_9_intel.macosx_10_9_x86_64. 
   macosx_10_10_intel.macosx_10_10_x86_64.whl (14.4MB) 
      |████████████████████████████████| 14.4MB 2.8MB/s

scikit-learn

Es una biblioteca de aprendizaje automático de código abierto. Se utiliza para algoritmos de clasificación, regresión y agrupamiento. Antes de pasar a la instalación, se requiere lo siguiente:

  • Python versión 3.5 o superior
  • NumPy versión 1.11.0 o superior
  • SciPy versión 0.17.0 o superior
  • joblib 0.11 o superior.

Ahora, instalamos scikit-learn usando el siguiente comando:

pip install -U scikit-learn

Seaborn

Seaborn es una biblioteca increíble que le permite visualizar fácilmente sus datos. Utilice el siguiente comando para instalar:

pip install seaborn

Puede ver un mensaje similar al que se especifica a continuación:

Collecting seaborn 
   Downloading 
https://files.pythonhosted.org/packages/a8/76/220ba4420459d9c4c9c9587c6ce607bf56c25b3d3d2de62056efe482dadc 
/seaborn-0.9.0-py3-none-any.whl (208kB) 100% 
   |████████████████████████████████| 215kB 4.0MB/s 
Requirement already satisfied: numpy> = 1.9.3 in 
./lib/python3.7/site-packages (from seaborn) (1.17.0) 
Collecting pandas> = 0.15.2 (from seaborn) 
   Downloading 
https://files.pythonhosted.org/packages/39/b7/441375a152f3f9929ff8bc2915218ff1a063a59d7137ae0546db616749f9/ 
pandas-0.25.0-cp37-cp37m-macosx_10_9_x86_64.
macosx_10_10_x86_64.whl (10.1MB) 100% 
   |████████████████████████████████| 10.1MB 1.8MB/s 
Requirement already satisfied: scipy>=0.14.0 in 
./lib/python3.7/site-packages (from seaborn) (1.3.0) 
Collecting matplotlib> = 1.4.3 (from seaborn) 
   Downloading 
https://files.pythonhosted.org/packages/c3/8b/af9e0984f
5c0df06d3fab0bf396eb09cbf05f8452de4e9502b182f59c33b/ 
matplotlib-3.1.1-cp37-cp37m-macosx_10_6_intel.
macosx_10_9_intel.macosx_10_9_x86_64 
.macosx_10_10_intel.macosx_10_10_x86_64.whl (14.4MB) 100% 
   |████████████████████████████████| 14.4MB 1.4MB/s 
...................................... 
...................................... 
Successfully installed cycler-0.10.0 kiwisolver-1.1.0 
matplotlib-3.1.1 pandas-0.25.0 pyparsing-2.4.2 
python-dateutil-2.8.0 pytz-2019.2 seaborn-0.9.0

Instalación de Keras usando Python

A partir de ahora, hemos completado los requisitos básicos para la instalación de Kera. Ahora, instale Keras usando el mismo procedimiento que se especifica a continuación:

pip install keras

Salir del entorno virtual

Después de finalizar todos los cambios en su proyecto, simplemente ejecute el siguiente comando para salir del entorno:

deactivate

Nube Anaconda

Creemos que ha instalado anaconda cloud en su máquina. Si anaconda no está instalado, visite el enlace oficial, www.anaconda.com/distribution y elija descargar según su sistema operativo.

Crear un nuevo entorno de conda

Inicie el indicador de anaconda, esto abrirá el entorno base de Anaconda. Creemos un nuevo entorno de conda. Este proceso es similar al virtualenv. Escriba el siguiente comando en su terminal conda –

conda create --name PythonCPU

Si lo desea, también puede crear e instalar módulos utilizando GPU. En este tutorial, seguimos las instrucciones de la CPU.

Activar entorno conda

Para activar el entorno, use el siguiente comando:

activate PythonCPU

Instalar spyder

Spyder es un IDE para ejecutar aplicaciones de Python. Instalemos este IDE en nuestro entorno conda usando el siguiente comando:

conda install spyder

Instalar bibliotecas de Python

Ya conocemos las bibliotecas de python numpy, pandas, etc., necesarias para keras. Puede instalar todos los módulos utilizando la siguiente sintaxis:

Sintaxis

conda install -c anaconda <module-name>

Por ejemplo, desea instalar pandas:

conda install -c anaconda pandas

Como el mismo método, pruébelo usted mismo para instalar los módulos restantes.

Instalar Keras

Ahora, todo se ve bien, por lo que puede iniciar la instalación de keras usando el siguiente comando:

conda install -c anaconda keras

Lanzar spyder

Finalmente, inicie spyder en su terminal conda usando el siguiente comando:

spyder

Para asegurarse de que todo se instaló correctamente, importe todos los módulos, agregará todo y, si algo salió mal, obtendrá un mensaje de error de módulo no encontrado .

TensorFlow

TensorFlow es una biblioteca de aprendizaje automático de código abierto que se utiliza para tareas computacionales numéricas desarrolladas por Google. Keras es una API de alto nivel construida sobre TensorFlow o Theano. Ya sabemos cómo instalar TensorFlow usando pip.

Si no está instalado, puede instalar usando el siguiente comando:

pip install TensorFlow

Una vez que ejecutamos keras, podríamos ver que el archivo de configuración está ubicado en su directorio de inicio dentro y vamos a .keras / keras.json.

keras.json

{ 
   "image_data_format": "channels_last", 
   "epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow" 
}

Aquí,

  • image_data_format representan el formato de datos.
  • épsilon representa una constante numérica. Se utiliza para evitar el error DivideByZero .
  • float x representa el tipo de datos predeterminado float32 . También puede cambiarlo a float16 o float64 usando el método set_floatx () .
  • image_data_format representan el formato de datos.

Supongamos que, si el archivo no se crea, muévase a la ubicación y cree siguiendo los pasos a continuación:

> cd home 
> mkdir .keras 
> vi keras.json

Recuerde, debe especificar .keras como su nombre de carpeta y agregar la configuración anterior dentro del archivo keras.json. Podemos realizar algunas operaciones predefinidas para conocer las funciones de backend.

Theano

Theano es una biblioteca de aprendizaje profundo de código abierto que le permite evaluar matrices multidimensionales de manera efectiva. Podemos instalar fácilmente usando el siguiente comando:

pip install theano

De forma predeterminada, keras usa el backend de TensorFlow. Si desea cambiar la configuración de backend de TensorFlow a Theano, simplemente cambie backend = theano en el archivo keras.json. Se describe a continuación:

keras.json

{ 
   "image_data_format": "channels_last", 
   "epsilon": 1e-07, 
   "floatx": "float32", 
   "backend": "theano" 
}

Ahora guarde su archivo, reinicie su terminal e inicie keras, se cambiará su backend.

>>> import keras as k 
using theano backend.

El aprendizaje profundo es un subcampo en evolución del aprendizaje automático. El aprendizaje profundo implica analizar la entrada capa por capa, donde cada capa extrae progresivamente información de nivel superior sobre la entrada.

Tomemos un escenario simple de analizar una imagen. Supongamos que su imagen de entrada está dividida en una cuadrícula rectangular de píxeles. Ahora, la primera capa abstrae los píxeles. La segunda capa comprende los bordes de la imagen. La siguiente capa construye nodos a partir de los bordes. Luego, el siguiente encontraría ramas de los nodos. Finalmente, la capa de salida detectará el objeto completo. Aquí, el proceso de extracción de características va desde la salida de una capa hasta la entrada de la siguiente capa subsiguiente.

Al utilizar este enfoque, podemos procesar una gran cantidad de funciones, lo que hace que el aprendizaje profundo sea una herramienta muy poderosa. Los algoritmos de aprendizaje profundo también son útiles para el análisis de datos no estructurados. Repasemos los conceptos básicos del aprendizaje profundo en este capítulo.

Redes neuronales artificiales

El enfoque más popular y principal del aprendizaje profundo es el uso de una «red neuronal artificial» (ANN). Están inspirados en el modelo del cerebro humano, que es el órgano más complejo de nuestro cuerpo. El cerebro humano está formado por más de 90 mil millones de células diminutas llamadas «neuronas». Las neuronas están interconectadas a través de fibras nerviosas llamadas «axones» y «dendritas». La función principal del axón es transmitir información de una neurona a otra a la que está conectada.

Del mismo modo, la función principal de las dendritas es recibir la información que transmiten los axones de otra neurona a la que están conectadas. Cada neurona procesa una pequeña información y luego pasa el resultado a otra neurona y este proceso continúa. Este es el método básico utilizado por nuestro cerebro humano para procesar una gran cantidad de información como el habla, visual, etc., y extraer información útil de ella.

Basado en este modelo, la primera Red Neural Artificial (ANN) fue inventada por el psicólogo Frank Rosenblatt , en el año de 1958. Las ANN están formadas por múltiples nodos que son similares a las neuronas. Los nodos están estrechamente interconectados y organizados en diferentes capas ocultas. La capa de entrada recibe los datos de entrada y los datos pasan por una o más capas ocultas secuencialmente y finalmente la capa de salida predice algo útil sobre los datos de entrada. Por ejemplo, la entrada puede ser una imagen y la salida puede ser la cosa identificada en la imagen, digamos un «gato».

Una sola neurona (llamada perceptrón en ANN) se puede representar como se muestra a continuación:

Redes neuronales artificiales

Aquí,

  • La entrada múltiple junto con el peso representan dendritas.
  • La suma de la entrada junto con la función de activación representa las neuronas. En realidad, la suma significa que el valor calculado de todas las entradas y la función de activación representan una función, que modifica el valor de la suma en 0, 1 o 0 a 1.
  • La salida real representa el axón y la salida será recibida por la neurona en la siguiente capa.

Entendamos los diferentes tipos de redes neuronales artificiales en esta sección.

Perceptrón multicapa

El perceptrón multicapa es la forma más simple de ANN. Consiste en una sola capa de entrada, una o más capas ocultas y finalmente una capa de salida. Una capa consta de una colección de perceptrón. La capa de entrada es básicamente una o más características de los datos de entrada. Cada capa oculta consta de una o más neuronas y procesa cierto aspecto de la característica y envía la información procesada a la siguiente capa oculta. El proceso de la capa de salida recibe los datos de la última capa oculta y finalmente genera el resultado.

Perceptrón multicapa

Red neuronal convolucional (CNN)

La red neuronal convolucional es una de las ANN más populares. Es ampliamente utilizado en los campos del reconocimiento de imágenes y video. Se basa en el concepto de convolución, un concepto matemático. Es casi similar al perceptrón multicapa, excepto que contiene una serie de capas de convolución y una capa de agrupación antes de la capa de neuronas ocultas completamente conectadas. Tiene tres capas importantes:

  • Capa de convolución : es el bloque de construcción principal y realiza tareas computacionales basadas en la función de convolución.
  • Capa de agrupación : se organiza junto a la capa de convolución y se utiliza para reducir el tamaño de las entradas eliminando información innecesaria para que el cálculo se pueda realizar más rápido.
  • Capa completamente conectada : se organiza junto a una serie de capas de convolución y agrupación y clasifica la entrada en varias categorías.

Una CNN simple se puede representar de la siguiente manera:

CNN

Aquí,

  • Se utilizan 2 series de capas de convolución y agrupación, que reciben y procesan la entrada (por ejemplo, la imagen).
  • Se utiliza una única capa completamente conectada y se utiliza para generar los datos (por ejemplo, clasificación de la imagen)

Red neuronal recurrente (RNN)

Las redes neuronales recurrentes (RNN) son útiles para abordar la falla en otros modelos de ANN. Bueno, la mayoría de la RNA no recuerda los pasos de situaciones anteriores y aprendió a tomar decisiones basadas en el contexto en el entrenamiento. Mientras tanto, RNN almacena la información pasada y todas sus decisiones se toman de lo que ha aprendido del pasado.

Este enfoque es principalmente útil en la clasificación de imágenes. A veces, es posible que necesitemos mirar hacia el futuro para arreglar el pasado. En este caso, la RNN bidireccional es útil para aprender del pasado y predecir el futuro. Por ejemplo, tenemos muestras escritas a mano en múltiples entradas. Supongamos que tenemos confusión en una entrada y luego tenemos que volver a comprobar otras entradas para reconocer el contexto correcto que toma la decisión del pasado.

Flujo de trabajo de ANN

Primero entendamos las diferentes fases del aprendizaje profundo y luego, aprendamos cómo Keras ayuda en el proceso de aprendizaje profundo.

Recopile los datos requeridos

El aprendizaje profundo requiere una gran cantidad de datos de entrada para aprender y predecir con éxito el resultado. Por lo tanto, primero recopile la mayor cantidad de datos posible.

Analizar datos

Analice los datos y adquiera una buena comprensión de los datos. Se requiere una mejor comprensión de los datos para seleccionar el algoritmo ANN correcto.

Elija un algoritmo (modelo)

Elija un algoritmo que se adapte mejor al tipo de proceso de aprendizaje (por ejemplo, clasificación de imágenes, procesamiento de texto, etc.) y los datos de entrada disponibles. El algoritmo está representado por Model en Keras. El algoritmo incluye una o más capas. Cada capa en ANN puede ser representada por Keras Layer en Keras.

  • Preparar datos : procese, filtre y seleccione solo la información requerida de los datos.
  • Dividir datos : divida los datos en conjuntos de datos de entrenamiento y de prueba. Los datos de prueba se utilizarán para evaluar la predicción del algoritmo / modelo (una vez que la máquina aprenda) y para verificar la eficiencia del proceso de aprendizaje.
  • Compile el modelo : compile el algoritmo / modelo, de modo que se pueda usar más para aprender mediante el entrenamiento y finalmente hacer la predicción. Este paso nos obliga a elegir la función de pérdida y el Optimizador. La función de pérdida y el Optimizador se utilizan en la fase de aprendizaje para encontrar el error (desviación de la salida real) y realizar la optimización para minimizar el error.
  • Ajustar el modelo : el proceso de aprendizaje real se realizará en esta fase utilizando el conjunto de datos de entrenamiento.
  • Predecir el resultado para el valor desconocido : predice la salida para los datos de entrada desconocidos (que no sean los datos de prueba y entrenamiento existentes)
  • Evaluar modelo : evalúe el modelo mediante la predicción de la salida de los datos de prueba y la comparación cruzada de la predicción con el resultado real de los datos de prueba.
  • Congelar, modificar o elegir un nuevo algoritmo : compruebe si la evaluación del modelo es correcta. En caso afirmativo, guarde el algoritmo para fines de predicción futura. Si no es así, modifique o elija un nuevo algoritmo / modelo y, finalmente, entrene, prediga y evalúe nuevamente el modelo. Repita el proceso hasta encontrar el mejor algoritmo (modelo).


Los pasos anteriores se pueden representar utilizando el siguiente diagrama de flujo:

ANA

Arquitectura de Keras

La API de Keras se puede dividir en tres categorías principales:

  • Modelo
  • Capa
  • Módulos centrales

En Keras, cada RNA está representada por Keras Models . A su vez, cada modelo de Keras es una composición de capas de Keras y representa capas de ANN como entrada, capa oculta, capas de salida, capa de convolución, capa de agrupación, etc., el modelo de Keras y la capa de acceso a los módulos de Keras para función de activación, función de pérdida, función de regularización, etc., utilizando el modelo de Keras, la capa de Keras y los módulos de Keras, cualquier algoritmo ANN (CNN, RNN, etc.) se puede representar de una manera simple y eficiente.

El siguiente diagrama muestra la relación entre el modelo, la capa y los módulos centrales:

Arquitectura de Keras

Veamos la descripción general de los modelos de Keras, las capas de Keras y los módulos de Keras.

Modelo

Los modelos Keras son de dos tipos, como se menciona a continuación:

Modelo secuencial: el modelo secuencial es básicamente una composición lineal de capas de Keras. El modelo secuencial es sencillo, mínimo y tiene la capacidad de representar casi todas las redes neuronales disponibles.

Un modelo secuencial simple es el siguiente:

from keras.models import Sequential 
from keras.layers import Dense, Activation 

model = Sequential()  
model.add(Dense(512, activation = 'relu', input_shape = (784,)))

Dónde,

  • La línea 1 importa el modelo secuencial de los modelos de Keras

  • La línea 2 importa la capa densa y el módulo de activación

  • Line 4 crea un nuevo modelo secuencial usando API secuencial

  • La línea 5 agrega una capa densa (API densa) con la función de activación relu (usando el módulo de activación).

El modelo secuencial expone la clase Model para crear modelos personalizados también. Podemos utilizar el concepto de subclasificación para crear nuestro propio modelo complejo.

API funcional: la API funcional se utiliza básicamente para crear modelos complejos.

Capa

Cada capa de Keras en el modelo de Keras representa la capa correspondiente (capa de entrada, capa oculta y capa de salida) en el modelo de red neuronal propuesto. Keras proporciona muchas capas preconstruidas para que cualquier red neuronal compleja se pueda crear fácilmente. Algunas de las capas importantes de Keras se especifican a continuación,

  • Capas centrales
  • Capas de convolución
  • Capas de agrupación
  • Capas recurrentes

Un código Python simple para representar un modelo de red neuronal usando un modelo secuencial es el siguiente:

from keras.models import Sequential 
from keras.layers import Dense, Activation, Dropout model = Sequential() 

model.add(Dense(512, activation = 'relu', input_shape = (784,))) 
model.add(Dropout(0.2)) 
model.add(Dense(512, activation = 'relu')) model.add(Dropout(0.2)) 
model.add(Dense(num_classes, activation = 'softmax'))

Dónde,

  • La línea 1 importa el modelo secuencial de los modelos de Keras

  • La línea 2 importa la capa densa y el módulo de activación

  • Line 4 crea un nuevo modelo secuencial usando API secuencial

  • La línea 5 agrega una capa densa (API densa) con la función de activación relu (usando el módulo de activación).

  • La línea 6 agrega una capa de abandono (API de abandono) para manejar el sobreajuste.

  • La línea 7 agrega otra capa densa (API densa) con la función de activación relu (usando el módulo de activación).

  • La línea 8 agrega otra capa de abandono (API de abandono) para manejar el sobreajuste.

  • La línea 9 agrega una capa densa final (API densa) con la función de activación softmax (usando el módulo de activación).

Keras también ofrece opciones para crear nuestras propias capas personalizadas. La capa personalizada se puede crear subclasificando la clase Keras.Layer y es similar a la subclasificación de modelos Keras.

Módulos centrales

Keras también proporciona muchas funciones integradas relacionadas con la red neuronal para crear correctamente el modelo de Keras y las capas de Keras. Algunas de las funciones son las siguientes:

  • Módulo de activaciones: la función de activación es un concepto importante en ANN y los módulos de activación proporcionan muchas funciones de activación como softmax, relu, etc.

  • Módulo de pérdida: el módulo de pérdida proporciona funciones de pérdida como mean_squared_error, mean_absolute_error, poisson, etc.

  • Módulo optimizador: el módulo optimizador proporciona una función de optimización como adam, sgd, etc.

  • Regularizadores : el módulo Regularizador proporciona funciones como regularizador L1, regularizador L2, etc.

Mas información en https://www.tutorialspoint.com/keras/

¿Que es h5py?


HDF5 es un formato de datos jerárquico que se usar en el NILMTK como fuente datos basado en HDF4 y NetCDF (otros dos formatos de datos jerárquicos).El formato de datos jerárquico, versión 5 (HDF5), es un formato de archivo de código abierto que admite datos grandes, complejos y heterogéneos. HDF5 utiliza una estructura similar a un «directorio de archivos» que le permite organizar los datos dentro del archivo de muchas formas estructuradas diferentes, como lo haría con los archivos en su computadora. El formato HDF5 también permite la incrustación de metadatos, lo que lo hace autodescriptivo .

Las organizaciones utilizan HDF5 para diversas necesidades de datos, acceso, informática y redes.

Estructura jerárquica: un directorio de archivos dentro de un archivo

El formato HDF5 se puede considerar como un sistema de archivos contenido y descrito en un solo archivo. Piense en los archivos y carpetas almacenados en su computadora. Es posible que tenga un directorio de datos con algunos datos de temperatura para varios sitios de campo. Estos datos de temperatura se recopilan cada minuto y se resumen cada hora, día y semana. Dentro de un archivo HDF5, puede almacenar un conjunto de datos similar organizado de la misma manera que podría organizar archivos y carpetas en su computadora. Sin embargo, en un archivo HDF5, lo que llamamos «directorios» o «carpetas» en nuestras computadoras, se llaman groupsy lo que llamamos archivos en nuestra computadora datasets.

2 Términos importantes de HDF5

  • Grupo: un elemento similar a una carpeta dentro de un archivo HDF5 que puede contener otros grupos O conjuntos de datos dentro de él.
  • Conjunto de datos: los datos reales contenidos en el archivo HDF5. Los conjuntos de datos se almacenan a menudo (pero no es necesario) dentro de grupos en el archivo.
Una ilustración de una estructura de archivo HDF5 que contiene grupos, conjuntos de datos y metadatos asociados
Un ejemplo de estructura de archivo HDF5 que contiene grupos, conjuntos de datos y metadatos asociados.

Un archivo HDF5 que contiene conjuntos de datos podría estructurarse así:

La ilustración HDF5 de arriba, pero los grupos son sitios NEON y los tipos de sensores y conjuntos de datos se incluyen en los tipos de sensores.
Un ejemplo de estructura de archivo HDF5 que contiene datos para varios sitios de campo y también contiene varios conjuntos de datos (promediados en diferentes intervalos de tiempo).

HDF5 es un formato autodescriptivo

El formato HDF5 es autodescriptivo. Esto significa que cada archivo, grupo y conjunto de datos puede tener metadatos asociados que describen exactamente cuáles son los datos. Siguiendo el ejemplo anterior, podemos incrustar información sobre cada sitio en el archivo, como por ejemplo:

  • El nombre completo y la ubicación X, Y del sitio.
  • Descripción del sitio.
  • Cualquier documentación de interés.

De manera similar, podríamos agregar información sobre cómo se recopilaron los datos en el conjunto de datos, como descripciones del sensor utilizado para recopilar los datos de temperatura. También podemos adjuntar información, a cada conjunto de datos dentro del grupo de sitios, sobre cómo se realizó el promedio y durante qué período de tiempo están disponibles los datos.

Un beneficio clave de tener metadatos adjuntos a cada archivo, grupo y conjunto de datos es que esto facilita la automatización sin la necesidad de un documento de metadatos separado (y adicional). Usando un lenguaje de programación, como R o Python, podemos obtener información de los metadatos que ya están asociados con el conjunto de datos y que podríamos necesitar para procesar el conjunto de datos.

Una ilustración de una estructura de archivos HDF5 con un grupo que contiene dos conjuntos de datos y todos los metadatos asociados
Los archivos HDF5 son autodescriptivos, lo que significa que todos los elementos (el archivo en sí, los grupos y los conjuntos de datos) pueden tener metadatos asociados que describen la información contenida en el elemento.

Subconjunto comprimido y eficiente

El formato HDF5 es un formato comprimido. El tamaño de todos los datos contenidos en HDF5 está optimizado, lo que reduce el tamaño general del archivo. Sin embargo, incluso cuando están comprimidos, los archivos HDF5 a menudo contienen grandes volúmenes de datos y, por lo tanto, pueden ser bastante grandes. Un atributo poderoso de HDF5 es data slicingmediante el cual se puede extraer un subconjunto particular de un conjunto de datos para su procesamiento. Esto significa que no es necesario leer el conjunto de datos completo en la memoria (RAM); muy útil para permitirnos trabajar de manera más eficiente con conjuntos de datos muy grandes (gigabytes o más).

Almacenamiento de datos heterogéneos

Los archivos HDF5 pueden almacenar muchos tipos diferentes de datos dentro del mismo archivo. Por ejemplo, un grupo puede contener un conjunto de conjuntos de datos para contener datos enteros (numéricos) y de texto (cadenas). O bien, un conjunto de datos puede contener tipos de datos heterogéneos (por ejemplo, tanto texto como datos numéricos en un conjunto de datos). Esto significa que HDF5 puede almacenar cualquiera de los siguientes (y más) en un archivo:

  • Datos de temperatura, precipitación y PAR (radiación fotosintética activa) para un sitio o para muchos sitios
  • Un conjunto de imágenes que cubren una o más áreas (cada imagen puede tener asociada información espacial específica, todo en el mismo archivo)
  • Un conjunto de datos espaciales multi o hiperespectral que contiene cientos de bandas.
  • Datos de campo para varios sitios que caracterizan insectos, mamíferos, vegetación y clima.
  • Un conjunto de imágenes que cubren una o más áreas (cada imagen puede tener asociada información espacial única)
  • ¡Y mucho más!

Formato abierto

El formato HDF5 es abierto y de uso gratuito. Las bibliotecas de apoyo (y un visor gratuito) se pueden descargar desde el sitio web de HDF Group . Como tal, HDF5 es ampliamente compatible con una gran cantidad de programas, incluidos lenguajes de programación de código abierto como R y Python, y herramientas de programación comerciales como MatlabIDL. Los datos espaciales que se almacenan en formato HDF5 se pueden utilizar en los programas de SIG y de imagen que incluyen QGISArcGISENVI.

Beneficios de HDF5

  • Autodescripción Los conjuntos de datos con un archivo HDF5 son autodescriptivos. Esto nos permite extraer metadatos de manera eficiente sin necesidad de un documento de metadatos adicional.
  • Admite datos heterogéneos : un archivo HDF5 puede contener diferentes tipos de conjuntos de datos.
  • Admite datos grandes y complejos : HDF5 es un formato comprimido que está diseñado para admitir conjuntos de datos grandes, heterogéneos y complejos.
  • Admite la división de datos: la «división de datos», o la extracción de partes del conjunto de datos según sea necesario para el análisis, significa que los archivos grandes no necesitan leerse por completo en la memoria o RAM de la computadora.
  • Formato abierto: soporte amplio en las muchas herramientas : debido a que el formato HDF5 es abierto, es compatible con una gran cantidad de lenguajes y herramientas de programación, incluidos lenguajes de código abierto como R y Pythonherramientas SIG abiertas como QGIS.E

Instalación

Un archivo HDF5 es un contenedor para dos tipos de objetos: conjuntos de datos , que son colecciones de datos en forma de matriz, y grupos , que son contenedores en forma de carpeta que contienen conjuntos de datos y otros grupos. Lo más fundamental que debe recordar al usar h5py es que los grupos funcionan como diccionarios y los conjuntos de datos funcionan como matrices NumPy

Supongamos que alguien le ha enviado un archivo HDF5, mytestfile.hdf5. Lo primero que debe hacer es abrir el archivo para leerlo:

>>> import h5py

>>> f = h5py.File(‘mytestfile.hdf5’, ‘r’)

Lógicamente para usar este modulo h5py ,primero debemos instalarlos en el pc:

  • Con Anaconda o Miniconda : conda install h5py
  • Si puede instalarlo con pip para su plataforma (mac, linux, windows en x86) y no necesita MPI, puede instalar h5py a través de pip:pip install h5py
  • Con Enthought Canopy , use el administrador de paquetes GUI o: enpkg h5py

El objeto Archivo es su punto de partida. ¿Qué se almacena en este archivo? Recuerde que h5py.File actúa como un diccionario de Python, por lo que podemos verificar las claves,

>>> list(f.keys())
['mydataset']

Según nuestra observación, hay un conjunto de datos mydataseten el archivo. Examinemos el conjunto de datos como un objeto de conjunto de datos

>>> dset = f['mydataset']

El objeto que obtuvimos no es una matriz, sino un conjunto de datos HDF5 . Al igual que las matrices NumPy, los conjuntos de datos tienen una forma y un tipo de datos:

>>> dset.shape
(100,)
>>> dset.dtype
dtype('int32')

También admiten el corte en forma de matriz. Así es como lee y escribe datos de un conjunto de datos en el archivo:

>>> dset[...] = np.arange(100)
>>> dset[0]
0
>>> dset[10]
10
>>> dset[0:100:10]
array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])

Creación de un archivo

En este punto, es posible que se pregunte cómo mytestdata.hdf5se crea. Podemos crear un archivo configurando el modewcuando se inicializa el objeto Archivo. Algunos otros modos son a(para acceso de lectura / escritura / creación) y r+(para acceso de lectura / escritura). 

>>> import h5py
>>> import numpy as np
>>> f = h5py.File("mytestfile.hdf5", "w")

El objeto File tiene un par de métodos que parecen interesantes. Uno de ellos es create_dataset, que como su nombre indica, crea un conjunto de datos de forma y tipo dados

>>> dset = f.create_dataset("mydataset", (100,), dtype='i')

El objeto Archivo es un administrador de contexto; entonces el siguiente código también funciona

>>> import h5py
>>> import numpy as np
>>> with h5py.File("mytestfile.hdf5", "w") as f:
>>>     dset = f.create_dataset("mydataset", (100,), dtype='i')

Grupos y organización jerárquica

«HDF» significa «Formato de datos jerárquico». Todos los objetos de un archivo HDF5 tienen un nombre y están organizados en una jerarquía de estilo POSIX con /-separadores:

>>> dset.name
'/mydataset'

Las «carpetas» de este sistema se denominan grupos . El Fileobjeto que creamos es en sí mismo un grupo, en este caso el grupo raíz , llamado /:

>>> f.name
'/'

La creación de un subgrupo se logra a través del nombre apropiado create_group. Pero primero tenemos que abrir el archivo en el modo «agregar» (leer / escribir si existe, crear de lo contrario)

>>> f = h5py.File('mydataset.hdf5', 'a')
>>> grp = f.create_group("subgroup")

Todos los Groupobjetos también tienen create_*métodos como Archivo:

>>> dset2 = grp.create_dataset("another_dataset", (50,), dtype='f')
>>> dset2.name
'/subgroup/another_dataset'

Por cierto, no es necesario que cree todos los grupos intermedios manualmente. Especificar una ruta completa funciona bien:

>>> dset3 = f.create_dataset('subgroup2/dataset_three', (10,), dtype='i')
>>> dset3.name
'/subgroup2/dataset_three'

Los grupos admiten la mayor parte de la interfaz de estilo de diccionario de Python. Recupera objetos en el archivo usando la sintaxis de recuperación de elementos:

>>> dataset_three = f['subgroup2/dataset_three']

La iteración sobre un grupo proporciona los nombres de sus miembros:

>>> for name in f:
...     print(name)
mydataset
subgroup
subgroup2

La prueba de membresía también usa nombres:

>>> "mydataset" in f
True
>>> "somethingelse" in f
False

Incluso puede usar nombres de ruta completos:

>>> "subgroup/another_dataset" in f
True

También están los familiares keys()values()items()iter()métodos, así como get().

Dado que la iteración sobre un grupo solo produce sus miembros adjuntos directamente, la iteración sobre un archivo completo se logra con los Groupmétodos visit()visititems(), que toman un invocable:

>>> def printname(name):
...     print(name)
>>> f.visit(printname)
mydataset
subgroup
subgroup/another_dataset
subgroup2
subgroup2/dataset_three

Atributos

Una de las mejores características de HDF5 es que puede almacenar metadatos junto a los datos que describe. Todos los grupos y conjuntos de datos admiten bits de datos adjuntos denominados atributos .

Se accede a los atributos a través del attrsobjeto proxy, que nuevamente implementa la interfaz del diccionario:

>>> dset.attrs['temperature'] = 99.5
>>> dset.attrs['temperature']
99.5
>>> 'temperature' in dset.attrs
True

Mas información en https://docs.h5py.org/en/latest/build.html

Como usar un zumbador con un ESP8266,ESP32 o un Arduino


Vamos a hablar de la librería Easybuzeer que nos va a ayudar a gestionar cualquier zumbador pasivo con casi todas las variantes de Arduino ,pues de hecho esta biblioteca se ha probado en los siguientes dispositivos: Arduino UNO,Arduino MEGA 2560 ,ESP32 y ESP8266

Como mejoras a esperar en las próximas actualizaciones su creador promete soporte para múltiples instancias de EasyBuzzerClass, lo que hace posible tener más de un Buzzer asi como funciones de acceso directo a sonidos predefinidos como; éxito, error y advertencia.

Para empezar a usar esta librería, necesitaremos incluir la biblioteca en el boceto mediante la opción Herramientas->Administrar Bibliotecas->Buscar «EasyBuzzer»


Empezando

Incluir la biblioteca en el skectch

#include <EasyBuzzer.h>

Establecer el pin donde está conectado el zumbador

De forma predeterminada, la biblioteca está configurada para utilizar el número de pin 4. Puede cambiar el número de pin predeterminado, modificando el valor de DEFAULT_PIN en el archivo Config.h . Para establecer el número de pin en el boceto, llame a la función EasyBuzzer.setPin(pin)en la configuración.

int pin = 2 ;
configuración vacía  () {
  EasyBuzzer. setPin (pin);
};  

Ejecutar la biblioteca

void  loop () {
   / * Llame siempre a esta función en el ciclo para que EasyBuzzer funcione. * / 
  EasyBuzzer. actualizar ();
};

Usos

Bip regular

Bip continuamente a una frecuencia determinada.

/ * Bip continuamente a una frecuencia determinada. * /
EasyBuzzer.beep (
  frecuencia	 // Frecuencia en Hertz (HZ). 
);

Emite un pitido a una frecuencia determinada un número específico de veces.

/ * 
 	Emite un pitido a una frecuencia determinada un número específico de veces. 
	Los valores predeterminados onDuration y offDuration se establecen en el archivo Config.h. 
* /
EasyBuzzer.beep (
  frecuencia,	 // Frecuencia en Hertz (HZ). 
  pitidos		 // El número de pitidos. 
);

Emite un pitido a una frecuencia determinada un número específico de veces, con función de devolución de llamada.

/ * 
 	Emite un pitido a una frecuencia determinada un número específico de veces, con funcionalidad de devolución de llamada. 
	Los valores predeterminados onDuration y offDuration se establecen en el archivo Config.h. 
* /
EasyBuzzer.beep (
  frecuencia,	 // Frecuencia en Hertz (HZ). 
  pitidos,	 // El número de pitidos. 
  callback	 // [Opcional] Función para llamar cuando termine. 
);

Secuencia de pitidos

Cree una secuencia de pitidos con una frecuencia determinada.

/ * Crea una secuencia de pitidos con una frecuencia determinada. * /
EasyBuzzer.beep (
  frecuencia,		 // Frecuencia en hercios (HZ). 
  onDuration, 		 // On Duración en milisegundos (ms). 
  offDuration, 		 // Off Duración en milisegundos (ms). 
  pitidos, 		 // El número de pitidos por ciclo. 
  pauseDuration, 	 // Duración de la pausa. 
  ciclos, 		 // El número de ciclo. 
  callback		 // [Opcional] Función para llamar cuando termine. 
);	

Bip único para una duración

Bip único a una frecuencia determinada, durante un período específico.

/ * Un solo pitido. * /
EasyBuzzer.singleBeep (
  frecuencia,	 // Frecuencia en hercios (HZ). 
  duración	 // Duración del pitido en milisegundos (ms). 
);

Bip único a una frecuencia determinada, durante un período específico, con función de devolución de llamada.

/ * Un solo pitido a una frecuencia determinada, durante un período específico, con funcionalidad de devolución de llamada. * /
EasyBuzzer.singleBeep (
  frecuencia, 	 // Frecuencia en hercios (HZ). 
  duración, 	 // Duración del pitido en milisegundos (ms). 
  callback	 // [Opcional] Función para llamar cuando termine. 
);

Dejar de pitar

Utilice esta función para detener el pitido. Puede llamar a esta función en todo momento, en cualquier lugar del código.

EasyBuzzer.stopBeep ();

Modificar los valores de duración predeterminados

Los valores de duración predeterminados se definen en el archivo Config.h . Puede cambiar esos valores en el archivo Config.h o usar la función provista para cambiarlos.

EasyBuzzer.setOnDuration (duración);	// Establecer en duración. 
EasyBuzzer.setOffDuration (duración);	// Establecer la duración de Off. 
EasyBuzzer.setPauseDuration (duración);	// Establecer la duración de la pausa.

Ejemplo

A continuación vamos a usar un sensor de sonido para Arduino mediante su salida digital D0 que conectaremos al pin D6 del ESP8266 que correspondel al GPIO16

El circuito se alimentara con 5V DC desde Vin y GND del ESP8266

Finalmente conectaremos un zumbador piezoelectrico pasivo entre D1(GPIO 5) y GND

Este es el código de ejemplo para probar el circuito comentado anteriormente del sensor de sonido para Arduino mediante su salida digital D0 que conectaremos al pin D6(GPIO16) del ESP8266 ,alimentado con 5V DC desde Vin y GND del ESP8266 y conectando un zumbador piezoeléctrico pasivo entre D1(GPIO 5) y GND .

#include <EasyBuzzer.h>


int sensor = 16 ;
bool estado = false ;


void sonidoTerminado(){
  Serial.println("Sonido terminado");
}


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
  
  pinMode(5, OUTPUT);
   // Configuración del pin
  EasyBuzzer.setPin(5);
  
  Serial.begin(2000000);    // Iniciamos la puerta serie
 

  pinMode( sensor , INPUT_PULLUP) ;
 // digitalWrite(LED_BUILTIN , LOW) ; // Apagamos el LED al empezar
 
  // Configuración del beep
 // EasyBuzzer.beep(
 //   2000,          // Frecuencia en herzios
 //   100,           // Duración beep en ms
//    100,           // Duración silencio en ms
//    2,             // Números de beeps por ciclos
//    300,           // Duración de la pausa
//    1,             // Número de ciclos
 //   sonidoTerminado// Función callback que es llamada cuando termina
//  );
  
  
  int init=0;
  Serial.println("Empezamos");
//pausa
for (int n=0 ;n<200 ; n++)
        {     
        delay (100);
        }
}


void loop() {
//EasyBuzzer.update();

 bool  valor ;
for (int n=0 ;n<10 ; n++)
{ valor=  digitalRead(sensor) *digitalRead(sensor ); //leemos el estado del sensor
 }

 if ( valor == true ) //Si está activada la salida D0
 

  {    estado = ! estado ;                       // cambiamos el estado del LED
    digitalWrite(LED_BUILTIN, false) ;            // escribimos el nuevo valor
    digitalWrite(5, 1) ;            // escribimos el nuevo valor
    Serial.println("TRUE");
    for (int n=0 ;n<10 ; n++)
        {   EasyBuzzer.beep(3000, 100,100, 2, 300, 3, sonidoTerminado);   
        delay (100);
        }
  }
  else
  {
   // Serial.println( "FALSE");
      delay (10);
      digitalWrite(LED_BUILTIN, true) ;
      digitalWrite(5, 0) ;            // escribimos el nuevo valor
  ;
  }

  
}

Como fácilmente se puede ver estamos leyendo el puerto al que esta conectado el sensor de sonido, circunstancia que se detectara con la condición valor=true , lo que provocara que se active el zumbador

Para minimizar los rebotes, por cierto, ejecutamos un pequeño ciclo de 10 lecturas

Además, para evitar disparos involuntarios al inicio también un bucle de 200x100ms

Construccion de un altavoz casero con Alexa


Con Alexa Voice Service puede disfrutar de las funciones de Alexa sin necesidad de tener un dispositivo Amazon, integrando el asistente de voz en su propio dispositivo. La popular Raspberry Pi y Alexa han demostrado ser especialmente compatibles, ya que la Raspberry Pi no solo podría ser más económica en comparación con Amazon Echo y otros dispositivos similares, sino que también se puede adaptar y personalizar a gusto del usuario por ejemplo usando potentes altavoces HIFI , un display personalizado o cualquier cosa que se nos ocurra.

Configurar Alexa en la Raspberry Pi: requisitos para AlexaPi

No todas las versiones de la Raspberry cumplen con los requisitos para incorporar Alexa sobre todo si hablamos de versiones antiguas. En caso de la Raspberry Pi 2 (modelo B) es una de las recomendadas para poder utilizar el asistente de control de voz de manera óptima pues es algo antigua y de este modo le podemos dar una segunda vida .Si optamos por una Raspberry Pi 3 o 4, nos ahorraremos complicaciones, porque estos modelos ya vienen con adaptadores WLAN de serie, pero lógicamente no tiene demasiado sentido comprar una RPi4 cuando podemos adquirir un altavoz Amazon echo por unos 50€

Por cierto no olvide que excepto que use un hub de puertos USB el modelo económico la Raspberry Pi 3 de un puerto USB no nos servirá , ya que necesitaremos al menos dos puertos USB ( para el micrófono y la salida de audio), como mas adelante explicaremos.

Además, necesitaremos los siguientes accesorios para utilizar Alexa en la Raspberry Pi:

  • Tarjeta microSD de al menos 8 GB (idealmente 16 GB o más)
  • Cargador USB de al menos 2000 mAh
  • Microfono y altavoz(*)

Convertir la Raspberry Pi en altavoz de Alexa

Antes de configurar el asistente de control de voz, primero, en caso de no tenerlo ya instalado debe instalar un sistema operativo en la Raspberry en la tarjeta SD que vayas a utilizar. Se recomienda Raspbian, que cuenta con el respaldo oficial de Raspberry Pi Foundation y que puede descargarse como un archivo de imagen . Realmente no es demasiado difícil , pues solo necesitamos descargar la imagen correspondiente a nuestro modelo de Raspberry Pi directamente desde la página web de la fundación ,descomprimir el archivo en la tarjeta SD y abrirlo para iniciar la instalación de raspbian en la sd

Después de instalar Raspbian en la SD, ya puede colocarla en la RPi y poner Alexa en marcha siguiendo unos sencillos pasos.

0- Conexiones del micrófono y la salida de audio

Aunque incluya una tarjeta de sonido la RPi , esta es de una calidad muy pobre ,por lo ante todo es imprescindible contar con los siguientes elementos:

Para mejorar el sonido, también tiene la opción de conectar una tarjeta de sonido USB a la Raspberry. Además, si no desea realizar la instalación y la configuración del sistema operativo y de Alexa de forma totalmente remota desde el ordenador (con el llamado modo headless), es importante conectar la pantalla, el teclado y el ratón al miniordenador.

1- Crear una cuenta de desarrollador de Amazon

Para acceder a Amazon Voice Service, necesita una cuenta de desarrollador de Amazon, que puede crear accediendo a la página Amazon Developer. Haga clic en “Identificarseˮ y, luego, seleccione “Crea tu cuenta deˮ. También puede iniciar sesión con su cuenta normal de Amazon si ya tiene una.

Servicios para desarrolladores de Amazon: página de inicio
Con una cuenta de Amazon Developer puedes utilizar los diversos servicios para desarrolladores de Amazon.

Introduzca sus datos de registro (nombre, dirección de correo electrónico y contraseña) y vuelva a hacer clic en “Crea tu cuenta deˮ.

Amazon Developer: creación de cuenta
Si ya tiene una cuenta normal de Amazon, le servirá para utilizar las herramientas para desarrolladores.

Después, iniciee sesión automáticamente en la zona de desarrolladores. Sin embargo, antes de poder utilizar las herramientas, como Alexa Voice Server, necesitará añadir más datos personales. Para ello, haz clic en “Finalizar registroˮ en la barra de menú superior.

2-Registrar la Raspberry Pi en Alexa Voice Service

Una vez haya proporcionado los datos requeridos y aceptado los términos y condiciones de uso, podrá acceder al panel de desarrolladores, que le permitirá ver y administrar tus diversos proyectos de Amazon. Bajo la categoría amazon alexa se encuentra el botón “Alexa Voice Serviceˮ, donde puede iniciar la activación de la Raspberry para utilizar el asistente de control de voz:

Dashboard de Amazon Developer
En el panel de control puede consultar informes del estado de tus proyectos de Amazon Developer y anuncios sobre nuevas funciones, entre otros datos.

En el siguiente menú, haga clic en el botón “GET STARTEDˮ. Amazon le solicitará algunos datos sobre el proyecto planificado.

Amazon Developer: datos sobre el producto
A diferencia del nombre del producto, la ID del producto no puede contener espacios.

En los campos de “Product nameˮ y “Product IDˮ, por ejemplo, puede introducir “AlexaPiˮ o «RaspberryPiAlexa».

Como tipo de producto, seleccione la opción “Device with Alexa built-inˮ (dispositivo con Alexa incorporado). Responda que no a la pregunta de “Will your device use a companion app?ˮ.

En la lista desplegable de “Product categoryˮ, seleccione la opción de “Wireless Speakersˮ. En la descripción del producto, no es necesario extenderse mucho: basta con una breve descripción como “Raspberry Pi Alexa Speakerˮ.

Como nuestra intención es configurar la Raspberry Pi para Alexa como altavoz clásico, exclusivamente por control de voz, marca las opciones de “Hands-freeˮ (control de voz desde cerca) y “Far-fieldˮ (control de voz desde lejos) como tipos de interacción deseada.

Marque la casilla de “noˮ en las preguntas finales sobre el uso comercial, “Alexa for Businessˮ y “Alexa Mobile Accessory Protocolˮ, así como en la pregunta de si el proyecto está específicamente diseñado para niños.

3- Crear un perfil de seguridad LWA

En el siguiente paso, debe crear un perfil de seguridad LWA (Login with Amazon, o iniciar sesión con Amazon) para la Raspberry Pi, con el fin de que Amazon pueda verificarlo. Para ello, haga clic en “CREATE NEW PROFILEˮ y, a continuación, escriba un nombre adecuado y una breve descripción del perfil:

Menú de Amazon Developer: LWA Security Profile
El perfil de seguridad obligatorio LWA vincule los datos de usuario y las credenciales de seguridad a uno o más productos.

Después de hacer clic en “NEXTˮ, aparecera otro menú en el que tiene que especificar las direcciones URL para la autenticación LWS. Introduzca aquí las siguientes direcciones (y guárdalas pulsando en “ADDˮ):

  • Allowed origins: localhost
  • Allowed return URLs: localhost/authresponse

Después, revise las condiciones de Amazon y Alexa Voice Service, marque la casilla de consentimiento y finalize el proceso de creación del perfil pulsando el botón “FINISHˮ:

Especificación de las URL de autenticación LWA durante el proceso de registro
Tiene la opción de añadir varias URL, así como de eliminarlas en cualquier momento pulsando el icono de equis.

Si la configuración se llevó a cabo correctamente, verá una notificación de Amazon en una ventana emergente que lo confirmará.

4- Registrar la información del producto y del cliente

A partir de ahora, el perfil que acaba de crear para tu AlexaPi estará siempre disponible en “Productsˮ. Sin embargo, en este punto, antes de pasar a instalar Alexa, debe echar un vistazo a los datos del producto y del cliente necesarios para configurar el asistente de control de voz.

Para ello, haga clic en el perfil de la Raspberry en la descripción general del producto y tome nota de los datos que figuran bajo “Client IDˮ y “Client secretˮ. La información más importante en relación con el producto es el “Product IDˮ, que equivale al nombre asignado al producto (en este tutorial, “AlexaPiˮ).

LWA: Lista de identificadores y claves de verificación
En el perfil del producto no solo puede consultar los datos de verificación, sino también habilitar funciones como las de Bluetooth o recordatorio.

5- Instalar la app Alexa en la Raspberry Pi

La forma más fácil de instalar Alexa en la Raspberry Pi es a través de la plataforma de desarrollo GitHub. Allí encontrará, entre otras cosas, la aplicación de ejemplo Alexa AVS Sample App, que permite instalar el software de control de voz en el miniordenador.

El requisito previo es disponer de un cliente Git, que se puede descargar inmediatamente después de efectuar una actualización rápida del sistema, si no está ya instalado de forma predeterminada. Para actualizar el software del sistema, introduzca, en primer lugar, los siguientes comandos en la terminal de Raspbian:

sudo apt-get update
sudo apt-get upgrade -y

A continuación, es el turno del cliente git:

sudo apt-get install git

Con ayuda del cliente, descargue la aplicación de ejemplo AVS Sample App o clona el repositorio GitHub:

sudo git clone https://github.com/alexa/alexa-avs-sample-app.git

Después de transferir el repositorio de GitHub a la Raspberry Pi, transfiera los datos guardados durante el cuarto paso al archivo de instalación automatic_install.sh. Puede abrirlo con el editor de texto que prefieras como, por ejemplo, GNU nano.

Fragmento del archivo AVS-Sample-App “automatic_install.shˮ
Sustituya los marcadores de posición con tus datos individuales justo después del signo de igual (en la línea correspondiente).

Guarde los cambios e inicia la instalación de Alexa en la Raspberry Pi con el siguiente comando:

. automated_install.sh

6- Configuración durante la instalación

Ya durante la instalación del software de control de voz, debe realizar las primeras configuraciones y responder a algunas preguntas. Por ejemplo, al principio tiene que aceptar los términos y condiciones y el uso de aplicaciones de terceros (si procede).

En la siguiente pregunta, declara que ya tiene una cuenta de desarrollador de Amazon, mientras que en la tercera confirma los datos sobre el “Product IDˮ, el “Client IDˮ y el “Client secretˮ. En los tres casos, escriba «y» y, después, pulsa la tecla [Enter].

A continuación, aparece una de las opciones de configuración más importantes: la elección de la salida de voz deseada. Elija la opción es-ES para establecer el español como el idioma en el que se comunicará con Alexa.

Además, durante la instalación, debe determinar si la salida de sonido del altavoz Raspberry Pi de Alexa debe ser a través de un conector de clavija (3,5 mm) o del conector HDMI. Finalmente, debe especificar si deseas mantener la palabra de activación predeterminada (Alexa) o utilizar otro comando de voz para iniciar el asistente.

7-Autenticar el altavoz Raspberry-Pi de Alexa

Para autenticar la Raspberry, ahora necesita el Alexa Companion Service, una especie de interfaz o puerta de enlace para establecer la conexión entre el miniordenador y los servidores de AVS. Para utilizar este servicio, cambie al directorio adecuado mediante la terminal y, después, inicie la aplicación con el servicio de paquetes npm. Para ello, introduzca los siguientes comandos uno tras otro:

cd ~/alexa-avs-sample-app/samples/companionService
npm start

Si se ha iniciado correctamente, la terminal muestra el mensaje “Listening on Port 3000ˮ. Minimize la ventana de la terminal y abre una nueva instancia del símbolo del sistema. 

Es importante minimizar y no cerrar la ventana de la terminal en la que se ha iniciado Alexa Companion Service. El servicio debe ejecutarse en segundo plano para que la Raspberry Pi pueda comunicarse con los servidores de Alexa Voice.

El siguiente paso es abrir el directorio del cliente de Companion. Como está programado en Java, puedes utilizar Maven, la herramienta de gestión de proyectos Java (mvn):

cd ~/alexa-avs-sample-app/samples/javaclient
mvn exec:exec

Unos segundos después de introducir el comando, se abre una ventana de diálogo emergente que le pide que acceda a una URL específica con un navegador para registrar la Raspberry. Acepte la solicitud haciendo clic en “Aceptarˮ. El enlace se abrirá automáticamente en el navegador predeterminado

Después de hacer clic en “Aceptar, se abre otra ventana de diálogo en el cliente Java, a la que no debe prestar atención en este momento.

En el navegador, verá la página de inicio de sesión de Amazon o, en algunos casos, el mensaje de que el sitio web no está disponible. Esto último, sin embargo, no supone ningún problema: no tiene más que hacer clic en “Advancedˮ (avanzado) en la esquina inferior izquierda y, después, en “Proceed to localhostˮ (continuar a localhost) para acceder a la ventana de inicio de sesión. Inicie sesión con tu cuenta de desarrollador de Amazon y confirme que su altavoz Raspberry Pi de Alexa puede obtener acceso a la cuenta de Amazon.

Si la autenticación se lleva a cabo con éxito, el navegador genera el mensaje de “device tokens readyˮ. Ahora pueds pulsar “OKˮ en la ventana del cliente Java que ignoraste previamente para finalizar la autenticación.

8-Activar la detección de la palabra de activación

Alexa ya está lista para usar, por lo que puede interactuar con el software de voz en cualquier momento a través del cliente AVS: para ello, haga clic en el icono del micrófono y formula la pregunta que desees. Sin embargo, para que Alexa también se active cuando diga la palabra de activación, como Alexa, necesitas iniciar el llamado Wake Word Agent. Para ello, en una nueva ventana de la terminal, accede al directorio del agente (KITT AI) y, luego, inícialo:

cd ~/alexa-avs-sample-app/samples/wakeWordAgent/src
./wakeWordAgent -e kitt_ai

Si la terminal muestre el mensaje “Connected to AVS clientˮ, puede utilizar Alexa con normalidad mediante el control por voz.

9- Ultimo paso :crear un script de inicio automático para Alexa en la Raspberry Pi

Para evitar tener que iniciar Alexa manualmente cada vez que encienda la Raspberry Pi, también deberá crear un script de inicio que se ejecute automáticamente cada vez que se encienda la RPi.

Para hacerlo, en primer lugar, cree el archivo de script con el siguiente comando de terminal:

sudo nano alexa.sh

En el script, introduzca las siguientes líneas de código:

#!/bin/bash
lxterminal -l -e "cd ~/alexa-avs-sample-app/samples/companionService && npm start;" &

sleep 10s

lxterminal -l -e "cd ~/alexa-avs-sample-app/samples/javaclient && mvn exec:exec;" &

sleep 30s

lxterminal -l -e "cd ~/alexa-avs-sample-app/samples/wakeWordAgent/src && ./wakeWordAgent -e kitt_ai;" &

Esta secuencia de comandos automatiza el proceso de autenticación descrito en el séptimo paso, iniciando primero el Alexa Companion Service y, después, el cliente Java. Posteriormente, inicia el Wake Word Agent descrito en el octavo paso.

Guarde el script y conceda al sistema los derechos de acceso necesarios mediante chmod:

sudo chmod +x alexa.sh

Para el script, cree un archivo de inicio automático:

sudo nano /home/pi/.config/autostart

Complete este archivo con el siguiente contenido, de modo que el script generado se ejecute automáticamente cada vez que inicies la Raspberry Pi como altavoz de Alexa:

[Desktop Entry]
Comment=Comment
Exec=/home/pi/alexa.sh
Name=alexa.sh
Path=/home/pi/alexa.sh
Type=Shell

Po

Reciclaje de un hub usb en un hub de alimentación


Cuando tenemos un número limitado de puertos USB, nos acordamos del fabricante y de quién tomo la decisión de poner tan pocos ( sobre todo si tenemos en cuenta que un hub USB cuesta apenas unos pocos euros y obviamente integrarlo en el equipo aun podria ser mucho menor su coste).

Realmente el funcionamiento de estos dispositivos es muy sencillo, y nos puede salvar de problemas si tenemos conectados muchos dispositivos a nuestro PC, como teclado, ratón, impresora, auriculares, etc.

Los hub normalmente suelen tener entre cuatro u ocho puertos, y suele haber de dos tipos: los que necesitan corriente externa ( por cierto no tan habituales ) y los que son autoalimentados desde el host. Desgraciadamente los autoalimentados suelen están limitados a los 900mA, corriente que es capaz de ofrecer un puerto USB 3.0 ( 500mA en el caso de USB 2.0 ), aunque con los nuevos estándares, la potencia puede ser aún mayor con un cable USB 4 que  puede llegar a gestionar hasta 100W.

La manera en la que estos HUB funcionan es bastante parecida a la que encontramos en el estándar WiFi 4 pues el controlador es el que se encarga de dar permiso a cada dispositivo para poder transmitir la señal hasta el puerto USB, asignando una dirección a cada uno de estos dispositivos conectados al hub. Este controlador va «interrogando» de manera secuencial a cada dispositivo si tiene algo de información que transmitir, donde cada dispositivo recibe todas las señales, pero solo responde a los intercambios que van dirigidos a él. Por ejemplo, primero pregunta al ratón para ver si se ha pulsado algún click. En segundo lugar, pregunta al teclado, y en tercer lugar a la memoria USB que tengamos conectada, y vuelve a iniciar el ciclo.

Actualmente podemos encontrar todo tipo de hub USB en el mercado y con todo tipo de precios, ahora bien, cuando nos disponemos a elegir uno, lo mejor es que nos decidamos siempre por uno de calidad. Podemos encontrar hubs USB desde los 4 o 5 euros y hasta los 100 euros, por lo que hay grandes diferencias entre unos y otros, desde la calidad de los materiales, hasta la controladora que utilizan, el número de conexiones que ofrecen o si cuentan con ciertas características como la tensión adicional.

Por desgracia la vida útil de un hub usb ( especialmente los de calidad media o baja), por lo que tarde o temprano terminaran fallando dejando inservible el dispositivo básicamente porque el controlador USB ( o los controladores en caso de controlar mas de 4 puertos) deja de funcionar quedando inservible el hub .

Pensando precisamente en ofrecerle una segunda a un hub usb averiado que no es reconocido por el host o fallan los dispositivos que se conectan a este, dado que la reparación normalmente será inabordable, una idea interesante, antes de desecharlo, es reusarlo esta vez como hub de alimentación USB , lo cual nos servirá para que en lugar de usar múltiples cargadores para cada dispositivo a cargar o alimentar, usar sólo un único alimentador de 5v usando para ello los conectores disponibles precisamente en un hub USB averiado, dado que físicamente estos seguirán operativos aunque el controlador se haya averiado.

Un conector USB está compuesto por 4 cables:

  1. El que lleva la tensión [+5V]
  2. El negativo del que lleva los datos [D-]
  3. El que lleva los datos [D+]
  4. El negativo de +5V, conectado a chasis o tierra [GND]

Es evidente entender que los cables mas importantes para nuestro cometido son la masa común o GND y los +5V– pues nuestro hub pasara a ser un hub de alimentación , y será por tanto ahí donde pondremos nuestro foco

Para empezar la tarea comenzaremos desmontando la carcasa de hub averiado ( normalmente de aluminio) para lo que utilizaremos para ese cometido alguna herramienta con filo para conseguir desprender el chasis.

Una vez hayamos conseguido desmontar el chasis , quedará expuesto la placa de circuito impreso, donde como se puede apreciar en la imagen ,quedaran claramente visibles los puntos de soldadura de los conectores USB de salida .El de entrada suele ser microUSB o minUSB, por lo solo quedan vsisbles solo los dos puntos de soldadura de la carcasa.

Ahora con un polímetro en modo resistencia debemos localizar la masa común o GND, para lo cual no una buena referencia podría ser los punto de soldadura del conector micro-usb de entrada al hub ( en la foto en la parte derecha los dos puntos blancos a que hay cerca del chasis blanco). Una vez localizada la masa comprobaremos la continuidad de esta con los puntos de soldadura de los conectores USB para localizar el punto – de cada conector USB ( en la foto GND es de los cuatro puntos el de mas de la izquierda y por tanto el de alimentación de +5V seria el la derecha).

Lo normal es que todas las masas (GND) y los +5V de los conectores USB ( incluido el de entrada ) estén interconectados TODOS entre si, lo cual podemos comprobar con el polímetro en modo continuidad, de modo que bastara conectar los 5vDC (y por supuesto GND ) en uno de los conectores para que estén todo los conectores USB alimentados por la alimentación exterior. Una vez nos aseguremos cuales son los pines correctos soldaremos los dos cables procedentes de un cargador de 5V externo cuidando una vez mas que los hilos son los correctos( puede ser cualquier fuente de 5DC reciclada de cualquier dispositivo que no vayamos a usar)

En este punto es crucial no equivocarnos con la polaridad porque podríamos estropear lo que conectemos , así que debemos asegurarnos antes de conectar lo que sea el hub, por lo que antes de conectar algo delicado a este ,conectaremos algo que no temamos perder como por ejemplo un pendrive averiado o un foco usb.

Una vez probado el funcionamiento del «nuevo» HUB con una fuente externa, ya podemos proceder a cerrar el hub, pero antes debemos aislar con cinta aislante la cara de soldaduras donde hemos conectado los cables procedentes de la fuente exterior

Como hemos conectado un cable exterior para encajar la carcasa deberemos practicar un orificio para conducir el cable por ahí.

Otra opción util es usar pegamento para fijar bien el cable y que no se mueva dentro de la carcasa.

Ya solo nos queda introducir la carcasa sobre la base.

Y una vez hayamos terminado de introducir el cuerpo sobre el chasis lo tendremos listo para usarlo

Bajo la opinión del que suscribe esta líneas puede ser útil este nuevo uso del mini-USB incluso mas útil que su uso como un convencional ( dado la gran cantidad de dispositivos existentes actualmente que se alimentan por USB) , pues además ahora ya no tendremos limitaciones a la hora de suministrar alimentación de corriente a todo lo vayamos conectando a el