Como gestionar un LCD con Arduino


Tradicionalmente para visualizar información con microcontroladores se han usado leds, displays de leds de 7segmentos, «tubos nixie!,LCD , pantallas OLED, etc

Hay varias ventajas para usar pantallas LCD frente a otros medios:

  1. Fácil visualización de datos: La pantalla LCD permite una fácil visualización de los datos generados o recibidos por el Arduino, lo que simplifica la tarea de monitoreo y análisis.
  2. Interfaz de usuario: Las pantallas LCD pueden ser utilizadas para crear interfaces de usuario amigables para proyectos con Arduino, lo que hace más fácil para los usuarios interactuar con el sistema.
  3. Versatilidad: Las pantallas LCD pueden ser utilizadas en una amplia variedad de proyectos, desde monitoreo de sensores hasta juegos y aplicaciones de tiempo real.
  4. Ahorro de espacio: Las pantallas LCD son más compactas y requieren menos espacio que otras opciones de visualización, lo que las hace ideales para proyectos con restricciones de espacio.
  5. Fácil conexión: La conexión de una pantalla LCD con una placa Arduino es generalmente sencilla y requiere pocos componentes adicionales.
  6. Bajo consumo de energía: Las pantallas LCD utilizan poca energía y son adecuadas para proyectos con restricciones de energía o con requisitos de larga duración.

El principio detrás de las pantallas LCD para Arduino es el uso de la tecnología de cristal líquido para desplegar información en una pantalla. Una pantalla LCD para Arduino funciona mediante la aplicación de una tensión a los cristales líquidos en la pantalla, lo que los hace inclinarse y permitir o bloquear la luz detrás de ellos. De esta manera, se pueden crear diferentes patrones de luz y oscuridad en la pantalla para formar caracteres o gráficos.

Una placa Arduino (o cualquier variante) controla la tensión aplicada a los cristales líquidos a través de un controlador LCD específico, que envía señales a los pines de la pantalla LCD. El controlador recibe y procesa los datos enviados por el Arduino y los convierte en una señal que controla la tensión aplicada a los cristales líquidos. De esta manera, se puede desplegar información en tiempo real en la pantalla LCD.

Una pantalla LCD con una placa Arduino puede ser utilizada para desplegar información o datos en tiempo real que sean generados o recibidos por el Arduino. Esto permite una visualización más clara y accesible de los datos y puede ser utilizado en una amplia variedad de proyectos, como monitoreo de sensores, interfaces de usuario, juegos, entre otros.

La placa GeekPi ( LCD1602)

Para que sirva de ejemplo, vamos a estudiar la placa GeekPi que puede comprarse en Amazon por unos 5€/unidad aqui. Esta placa utiliza el protocolo I2C para reducir la ocupación de los puertos de E / S , lo que facilita la adición al proyecto y menos cableado lo cual es fantástico ya que tradicionalmente se usaban en función del bus de 4 o 8 bits al menos 7 pines de E/S. Esta placa es comúnmente utilizado en IoT, proyectos de bricolaje, animación doméstica, construcción inteligente, proyecto de bricolaje del fabricante, etc.

Asimismo esta placa es compatible con todas las placas de desarrollo actuales, como Arduino (y todas sus variantes incluyendo ESP32, ESP8266, ECT ) , Raspberry pi, Tinkerboard, Nano pi, Banana pi, stm32, etc.

Respecto a ajustes, tan solo necesita un potenciómetro que hay detrás del lcd donde podemos ajustar la retroiluminación (color: azul) y el contraste.

La alimentación: 5v y la dirección I2C es: 0x27 y sus dimensiones son : 80 mm x 35 mm x 11 mm

En caso de conectar este lcd a una placa Arduino (o similares como ESP32, ESP8266, etc. ), las conexiones son las siguientes

Para otras placas como la Raspberry, como vemos en la imagen la conexión es similar:

Como vemos el LCD1602 usa I²C utilizando sólo dos líneas bidireccionales open-drain, Serial Data Line (SDA) y Serial Clock Line (SCL),con resistencias. Los voltajes típicos utilizados son +5 V o +3,3 V, aunque se permiten sistemas con otros voltajes. Puede funcionar siempre que sea compatible con la placa de desarrollo I2C como ya se ha comentado (las comunes Arduino, Raspberry pi, Stm32, etc.).

Este es un resumen de sus características:

  • Ocupa menos puertos de E/S.
  • Soporta el protocolo IIC.
  • La biblioteca I2C LCD1602 es fácil de conseguir
  • Con un potenciómetro para ajustar la retroiluminación y el contraste
  • Retroiluminación azul
  • uente de alimentación 5v
  • La dirección I2C es: la nueva versión es 0x3F, la versión antigua es 0x27

Cómo conectarlo a Arduino


Conecte el módulo LCD1602 a la placa Arduino Uno como se muestra en la siguiente imagen:
I2C LCD1602 placa Arduino Uno
GND GND
VCC 5V
SDA A4 /pin 20 mega2560
SCL A5 /pin 21 mega2560

Cómo programarlo en Arduino


1.Descarga la librería LiquidCrystal_I2C
2.Abre el IDE de Arduino,Selecciona Sketch -> Include Library -> Add ZIP Library
3.Encuentra el archivo LiquidCrystal_I2C que acabas de descargar.
4.Haga clic en abrir y, a continuación, se le pedirá por «Biblioteca añadido a sus bibliotecas.
5.Marque ‘Importar bibliotecas'».
6.Abra el archivo ->Sketch->Include Library->LiquidCrystal_I2C.
7.Copia el siguiente código en el IDE de Arduino, haz click en el icono upload para subir el código a la placa de control:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27, if new version please use 0x3F instead.

void setup()
{
  lcd.init();  //initialize the lcd
  lcd.backlight();  //open the backlight
}

void loop()
{
  lcd.setCursor(3, 0); // set the cursor to column 3, line 0
  lcd.print("Hello GeeekPi");  // Print a message to the LCD
  
  lcd.setCursor(2, 1); // set the cursor to column 2, line 1
  lcd.print("hello world");  // Print a message to the LCD.
}

POSICIONAR EL TEXTO
La función mylcd.lcd_display_string() imprime texto en la pantalla y también permite elegir dónde posicionarlo.
La función se usa como mylcd.lcd_display_string(«TEXTO A IMPRIMIR», FILA, COLUMNA).
El siguiente código imprime «¡Hola Mundo!» en la fila 2, columna 3:
En un LCD de 16×2, las filas están numeradas del 1 al 2, mientras que las columnas están numeradas del 0 al 15. Por lo tanto, para imprimir «¡Hola Mundo!
Así que para imprimir «¡Hola Mundo!» en la primera columna de la fila superior, usted usaría

mylcd.lcd_display_string(“Hello World!”, 1, 0)

BORRAR LA PANTALLA
La función mylcd.lcd_clear() borra la pantalla

import I2C_LCD_driver
from time import *
mylcd = I2C_LCD_driver.lcd()
mylcd.lcd_display_string("This is how you", 1)
sleep(1)
mylcd.lcd_clear()
mylcd.lcd_display_string("clear the screen", 1)
sleep(1)
mylcd.lcd_clear()

TEXTO PARPADEANTE
Podemos utilizar un simple bucle while con las funciones mylcd.lcd_display_string() y mylcd.lcd_clear() para crear un efecto de texto parpadeante continuo:

import time
import I2C_LCD_driver
mylcd = I2C_LCD_driver.lcd()

while True:
    mylcd.lcd_display_string(u"Hello world!")
    time.sleep(1)
    mylcd.lcd_clear()
    time.sleep(1)


Puede usar la función time.sleep() en la línea 7 para cambiar el tiempo (en segundos) que el texto permanece encendido.
El tiempo que el texto permanece apagado se puede cambiar en la función time.sleep() en la línea 9.
Para finalizar el programa, pulse Ctrl-C.

IMPRIMIR LA FECHA Y LA HORA
El siguiente programa imprime la fecha y hora actual en la pantalla LCD:

import I2C_LCD_driver
import time
mylcd = I2C_LCD_driver.lcd()


while True:
    mylcd.lcd_display_string("Time: %s" %time.strftime("%H:%M:%S"), 1)
    
    mylcd.lcd_display_string("Date: %s" %time.strftime("%m/%d/%Y"), 2)

IMPRIME TU DIRECCIÓN IP
Este código imprime la dirección IP de tu conexión ethernet (eth0).
Para imprimir la IP de tu conexión WiFi, cambia eth0 por wlan0 en la línea 18:

import I2C_LCD_driver
import socket
import fcntl
import struct

mylcd = I2C_LCD_driver.lcd()

def get_ip_address(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        0x8915, 
        struct.pack('256s', ifname[:15])
    )[20:24])

mylcd.lcd_display_string("IP Address:", 1) 

mylcd.lcd_display_string(get_ip_address('eth0'), 2)

DESPLAZAR TEXTO DE DERECHA A IZQUIERDA CONTINUAMENTE
Este programa desplazará una cadena de texto desde el lado derecho de la pantalla LCD hacia el lado izquierdo y hará un bucle continuo:

import I2C_LCD_driver
from time import *

mylcd = I2C_LCD_driver.lcd()

str_pad = " " * 16
my_long_string = "This is a string that needs to scroll"
my_long_string = str_pad + my_long_string

while True:
    for i in range (0, len(my_long_string)):
        lcd_text = my_long_string[i:(i+16)]
        mylcd.lcd_display_string(lcd_text,1)
        sleep(0.4)
        mylcd.lcd_display_string(str_pad,1)

DESPLAZAR TEXTO DE DERECHA A IZQUIERDA UNA VEZ


El siguiente código desliza texto en la pantalla de derecha a izquierda una vez, luego se detiene y deja una pantalla limpia.

import I2C_LCD_driver
from time import *

mylcd = I2C_LCD_driver.lcd()

str_pad = " " * 16
my_long_string = "This is a string that needs to scroll"
my_long_string = str_pad + my_long_string

for i in range (0, len(my_long_string)):
    lcd_text = my_long_string[i:(i+16)]
    mylcd.lcd_display_string(lcd_text,1)
    sleep(0.4)
    mylcd.lcd_display_string(str_pad,1)

DESPLAZAR TEXTO DE IZQUIERDA A DERECHA UNA VEZ
Este programa desliza texto en la pantalla de izquierda a derecha una vez, luego se detiene y deja los primeros 16 caracteres de la cadena de texto en la pantalla.

import I2C_LCD_driver
from time import *

mylcd = I2C_LCD_driver.lcd()

padding = " " * 16
my_long_string = "This is a string that needs to scroll"
padded_string = my_long_string + padding

for i in range (0, len(my_long_string)):
   lcd_text = padded_string[((len(my_long_string)-1)-i):-i]
   mylcd.lcd_display_string(lcd_text,1)
   sleep(0.4)
   mylcd.lcd_display_string(padding[(15+i):i], 1)

CARACTERES PERSONALIZADOS
Puede crear cualquier patrón que desee e imprimirlo en la pantalla como un carácter personalizado.
Cada carácter es una matriz de 5 x 8 píxeles.
Hasta 8 caracteres personalizados pueden ser definidos y almacenados en la memoria del LCD.
Este generador de caracteres personalizados le ayudará a crear la matriz de bits necesaria para definir los caracteres en la memoria de la LCD.
enlace: [ https://omerk.github.io/lcdchargen/ |generador de caracteres personalizados ]


IMPRIMIENDO UN CARACTER PERSONALIZADO
El siguiente código genera un caracter «<«:

import I2C_LCD_driver
from time import *

mylcd = I2C_LCD_driver.lcd()

fontdata1 = [      
        [ 0b00010, 
          0b00100, 
          0b01000, 
          0b10000, 
          0b01000, 
          0b00100, 
          0b00010, 
          0b00000 ],
]

mylcd.lcd_load_custom_chars(fontdata1)
mylcd.lcd_write(0x80)
mylcd.lcd_write_char(0)

IMPRIMIR VARIOS CARACTERES PERSONALIZADOS
Este programa imprime una flecha grande hacia la derecha (→) en la pantalla:

import I2C_LCD_driver
from time import *

mylcd = I2C_LCD_driver.lcd()

fontdata1 = [
        # char(0) - Upper-left character
        [ 0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b11111, 
          0b11111 ],

        # char(1) - Upper-middle character
        [ 0b00000, 
          0b00000, 
          0b00100, 
          0b00110, 
          0b00111, 
          0b00111, 
          0b11111, 
          0b11111 ],
        
        # char(2) - Upper-right character
        [ 0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b10000, 
          0b11000 ],
        
        # char(3) - Lower-left character
        [ 0b11111, 
          0b11111, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000 ],
       
        # char(4) - Lower-middle character
        [ 0b11111, 
          0b11111, 
          0b00111, 
          0b00111, 
          0b00110, 
          0b00100, 
          0b00000, 
          0b00000 ],
        
        # char(5) - Lower-right character
        [ 0b11000, 
          0b10000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000, 
          0b00000 ],
]

mylcd.lcd_load_custom_chars(fontdata1)

mylcd.lcd_write(0x80)
mylcd.lcd_write_char(0)
mylcd.lcd_write_char(1)
mylcd.lcd_write_char(2)

mylcd.lcd_write(0xC0)
mylcd.lcd_write_char(3)
mylcd.lcd_write_char(4)
mylcd.lcd_write_char(5)

Fuente https://wiki.52pi.com/index.php?title=Z-0234

Anuncio publicitario

Solucionar problema diskpart Clean Error del servicio de disco virtual


Usando Windows 11 (o versiones anteriores), en ocasiones puede que conectemos una unidad de memoria USB y su contenido no aparezca en el explorador de archivos. A veces, el dispositivo aparece en la Administración de discos con una casilla vacía, pero no aparece en el Explorador de archivos. Además, el «dispositivo» es diverso porque puede obtener «No hay medios en el dispositivo» en HP USB Flash, tarjeta SanDisk SD, Transcend StoreJet, DVD/CD, Pen Drive, Tarjeta de Memoria, incluso SSD/HDD bajo diferentes situaciones. En estos casos, aunque la memoria perfectamente puede estar dañada ( y esto debemos entender que pueda suceder), podemos hacer uso del administrador de discos o lo mas normal el comando diskpart para intentar solucionar el problema.

Dependiendo del estado del pendrive es posible que nos encontremos con algún error durante el proceso de intentar restaurar una unidad usb dañada utilizando el comando diskpart (ejecutados en la herramienta Símbolo como Administrador) y tras ejecutar todos estos comandos en el orden que aquí vemos mas abajo, formateará por completo nuestra memoria USB o lo que es lo mismo, lo mas normal es que solucionemos el problema (consejo: No escriba ningún dato nuevo en el dispositivo que tiene el problema de «no media» hasta que lo resuelva).

 -DISKPART> list disk //(Discos encontrados en el PC)
- DISKPART> select disk Nº del disco //(Seleccionar el disco/Pendrive deseado. Ejemplo: select disk 2)
- DISKPART> attributes disk clear readonly// (Para borrar el atributo de sólo lectura para el disco seleccionado)
- DISKPART> clean //(Borrar todo el disco)
- DISKPART> convert mbr o gpt// (Convierte al tipo de particiones mbr o gpt)
- DISKPART> create partition primary //(crear una partición primaria)
- DISKPART> select part Nº de partición //(Seleccionar la partición deseada. En caso de querer seleccionar la partición primaria: select part 1)
- DISKPART> active //(Para activar la partición seleccionada)
- DISKPART> format fs=Fat32 o Format fs=NTFS //(Formatear la USB en formato Fat32 o NTFS)
- DISKPART> assign letter Letra //(asignación de una letra en la memoria USB. Ejemplo: assign letter H)
- DISKPART> list volume //(ver como ha quedado la memoria USB tras el formateado: Volúmenes, letras, formato, etc.)

No obstante, en ocasiones, la ejecución de estos comandos no puede llevarse a cabo, debido a diversos errores que se pueden producir durante la ejecución de alguno de estos comandos citados anteriormente, lo cual hará que nos quedemos atascados en uno de los pasos a llevar a cabo, impidiéndonos continuar con el siguiente comando y por lo tanto terminar el proceso.

Ahora intentaremos recoger todos esos problemas comunes que nos puede dar el usb de la utilidad Diskpart, describiendo los errores mas habituales, junto a su posible solución.

Empecemos comentando segun la gravedad de mayor a menor los errores mas habituales:

ERROR 1:»Error del servicio de disco virtual»

Dentro de los fallos de error del servicio de disco virtual podemos encontrar unas cuantas variantes:

  • «Error del Servicio de disco virtual: No hay medios en el dispositivo«. Este fallo significa que el sistema no es capaz de comunicarse con la memoria USB. Para el PC es una unidad vacía. Como consecuencia, no puede acceder a los datos almacenados en la unidad (este es el error más grave y por ello lo trataremos al final de este post dado que muchas veces es achacable a un problema fisico).
  • «Error del Servicio de disco virtual: Se agotó el tiempo de espera para la operación«. Este mensaje lo que nos dice es que se ha intentado contactar con la unidad, pero ésta no responde.
  • «Error diskpart ha encontrado un error: no se puede realizar la solicitud por un error del dispositivo de E/S«. Al igual que en los casos anteriores, estamos ante un error de comunicación entre la memoria USB y el ordenador.
  • «DiskPart ha encontrado un error: El dispositivo no está listo«. Una vez más, este error nos indica que el sistema de Windows no puede ponerse en contacto con la unidad USB.

Estos 4 errores relacionados con el disco virtual muchas veces significan que el pendrive tiene una avería de hardware:

  • Si el USB se ha mojado podemos intentar ponerlo en una bolsita de arroz durante un par de días. Dejamos que absorba bien la humedad y volvemos a intentar conectarlo.
  • Si el caso es que se ha dado un golpe o simplemente hace mucho tiempo que no lo utilizamos, es posible que se haya deteriorado o estropeado para siempre.

Ante esta situación, poco podemos hacer, la verdad. Queda la posibilidad de que todo esto venga de un error a la hora de asignar una letra a la unidad, aunque es poco probable. Es un fallo que surge cuando conectamos un USB con una letra que ya está asignada a otro disco en el PC (otro pendrive, el propio disco duro del equipo, etc.). Podemos intentar solucionarlo cambiando la letra asignada al pendrive:

  • Abrimos el panel de «Administración de discos» (desde el panel de control o desde Cortana).
  • Seleccionamos nuestro pendrive y haciendo clic derecho pulsamos sobre «Cambiar la letra y rutas de acceso de la unidad«. Asignamos una nueva letra (que esté libre y sin usar) y guardamos los cambios.

ERROR 2 :»Error de servicio de disco virtual: El medio está protegido contra escritura. Consulte el registro de eventos del sistema para obtener más información o Acceso Denegado«

Este error nos indica que el pendrive o memoria USB solo tiene permisos de lectura. Normalmente podemos solucionarlo moviendo la pestaña de bloqueo contra escritura que suelen incorporar la mayoría de USBs del mercado.

En caso de no disponer de ninguna pestaña también podemos obtener permisos de escritura ejecutando el comando «attributes disk clear readonly» (sin comillas) en MS-DOS, justo antes de borrar el USB mediante el comando Clean. Una vez que haya eliminado la protección contra escritura, ya podrá llevar a cabo el formateado.

ERROR 3 :»Error del servicio de disco virtual: el volumen es demasiado pequeño»

Este error ocurre cuando ejecutamos el comando DISKPART> format fs=Fat32. Es otro fallo con el disco virtual, pero que esta vez podemos solucionar sin demasiados dramas. Lo único que tenemos que hacer es formatear el USB en formato NTFS en lugar de FAT32.

En este caso pues lo que tendremos que hacer será formatear nuestra memoria USB en el formato NTFS, para lo cual, cuando estemos realizando el formateo mediante comandos, en lugar de utilizar el comando «format fs=FAT32» utilizaremos «format fs=NTFS«.

Si esto no funciona, realizaremos la siguiente serie de comandos:

  • diskpart
  • clean
  • convert gpt
  • format fs=NTFS

ERROR 4 :»Error del servicio de disco virtual:«El volumen es demasiado grande»

Seguimos con otro fallo del disco virtual al intentar formatear nuestro pendrive. En este caso el problema está en que Windows no es capaz de formatear ningún disco a FAT32 con un tamaño superior a 32GB. Un dato bastante curioso teniendo en cuenta que el sistema sí que es capaz de montar y leer unidades de mayor tamaño.

En cualquier caso, para poder formatear una unidad USB que tenga un tamaño de 1TB, 500GB o similar, tendremos que utilizar una aplicación de terceros que sí esté habilitada para formatear este tipo de discos. Una buena herramienta gratuita para llevar a cabo este proceso es FAT32 Format (disponible AQUÍ).

ERROR 5 :»chkdsk no está disponible para archivos RAW»

Este error nos saltará al intentar reparar los fallos en disco con el comando chkdsk. Cuando una unidad está en formato RAW significa que ha perdido su formato de archivos. Por tanto, para poder ejecutar la herramienta de chequeo de disco primero tendremos que darle formato (tal y como explicamos en los métodos #2 y #3).

ERROR 6 : «Acceso denegado porque no tiene privilegios suficientes»

Si no ejecutamos la ventana de MS-DOS con permisos de administrador el comando diskpart, obtendremos este error. Lo podemos solucionar simplemente haciendo esto:

  • Si utilizamos Cortana: Escribimos «cmd«, y cuando aparezca el icono del símbolo del sistema, en lugar de pulsar sobre él hacemos clic derecho y seleccionamos «Ejecutar como administrador«.
  • En versiones anteriores a Windows 10: Nos desplazamos hasta la carpeta C:\Windows\System32 y buscamos el ejecutable «cmd.exe». Hacemos clic derecho sobre el archivo mientras presionamos la tecla «shift» y seleccionamos «Ejecutar como administrador«.

Error del Servicio de disco virtual:No hay medios en el dispositivo.

ERROR 7: «Error del Servicio de disco virtual: No se puede convertir el disco especificado. Los CDs y DVDs son ejemplos de discos no convertibles».

Este error ocurre tras ejecutar el comando: DISKPART> convert mbr . Si ha recibido este mensaje de error, se debe a que su memoria USB contiene archivos almacenados en su interior, por lo que deberemos borrar todo su contenido antes de convertir las particiones.

Esto podrá hacerlo gracias al comando: DISKPART> clean. Tras este comando ya puede realizar la conversión

ERROR 8 :» No se encontró ninguna extensión disponible utilizable. Es posible que no haya suficiente espacio disponible para crear una partición con el tamaño y desplazamiento especificados. Especifique valores de tamaño y desplazamiento distintos o no especifique ninguno de estos valores para crear la partición con el tamaño máximo. Es posible que las particiones del disco se crearán con el formato de particiones de disco MBR y que el disco contenga cuatro particiones principales (ya no pueden crearse más particiones) o tres particiones principales y una extendida (solo pueden crearse unidades lógicas)

Este error ocurre tras haber ejecutado el comando DISKPART> create partition primary

En este caso tendrás que ejecutar el comando: DISKPART> clean para justo despues volver a ejecutar el comando DISKPART> convert gpt. Una vez que halla ejecutado los comandos anteriores, ya podrá ejecutar el comando DISKPART> create partition primary para continuar con el proceso.

ERROR 9: Error del Servicio de disco virtual: El volumen no está en línea.

Este error ocurre cuando ejecutamos el comando DISKPART> format fs=Fat32.

En este caso si recibimos este error tendremos que ejecutar los siguientes comandos antes de realizar el formateado en el orden especificado: DISKPART> online diskDISKPART>create partition primaryDISKPART> convert mbr.

ERROR 10: « Error del Servicio de disco virtual:No hay medios en el dispositivo«

Por qué aparece el error «No hay medios en el dispositivo»? Cuando se obtiene el error, se sugiere desconectar la unidad USB y volver a conectarlo a otra máquina para ver si es el problema con su unidad flash. Si lo es, los siguientes factores pueden explicar el error:

  • La unidad USB está fallando o ha fallado. Al igual que un disco duro, una unidad flash tiene una vida útil. Si la memoria USB nos puede servir para un par de años, puede llegar al final y fallar gradualmente. Los daños físicos como estampidas, caídas de altura o golpes frecuentes también pueden dañar la unidad USB.
  • El MBR o PBR del dispositivo está dañado. MBR es la abreviatura de Master Boot Record, que también se conoce como sector de arranque maestro. Es el primer sector que debe leerse cuando se enciende el PC para acceder al disco duro.El MBR recoge el tamaño y la ubicación de cada partición en el disco duro.El MBR consta de tres partes  El código de arranque maestro (ocupa 466Bytes), la tabla de particiones del disco (ocupa 648Bytes) y la firma de arranque. El uso inadecuado de la unidad, como desenchufar la unidad flash mientras está en funcionamiento, es probable que dañe las tablas de búsqueda internas de la unidad e invocar la corrupción en Master Boot Record (MBR) o Partition Boot Record (PBR).
  • El error también puede ser causado por otras razones desconocidas que no se han encontrado hasta ahora. Sin embargo, lo que cuenta a continuación es encontrar soluciones que resuelvan el problema de «No hay medios en el dispositivo».

Por tanto para reparar el error «No hay medios en el dispositivo», primero puede cambiar el puerto USB o desenchufar y enchufar la unidad varias veces, o conectar la unidad a otros ordenadores, tal vez con diferentes sistemas operativos como Linux, para probar si funciona. Si el problema persiste, AOMEI Partition Assistant Professional puede INTENTAR realizar la recuperación de particiones de unidades USB, tarjetas SD, discos duros y SSD ( por cierto no siempre con éxito). Este software viene con una versión Demo para una prueba gratuita.

  1. Conecte el dispositivo a un ordenador. 2. Inicie AOMEI Partition Assistant y haga clic en Partition Recovery Wizard en el lado izquierdo.
  2. Seleccione el dispositivo. Puede distinguirlo por la capacidad del disco y la marca.
  3. Elija el modo de búsqueda, Búsqueda rápida o Búsqueda completa. Seleccione la partición que desea recuperar y haga clic en Continuar para empezar. 5. Espere a que finalice el proceso.

Nota: si los datos de ese dispositivo son muy vitales para usted, y el método anterior no funciona, se sugiere recurrir a un software profesional de recuperación de datos.

Herramientas gratuitas para detectar una unidad USB falsa


Comprar una unidad USB falsa no es una pérdida total porque una buena parte es espacio de almacenamiento real. Digamos que el fabricante sólo ha tergiversado su verdadero espacio para atraerle a comprarlo, así que a pesar de que puede que nos podamos encontrar estafados, aun es posible recuperar al menos una parte de su valor .

En un post anterior usamos para detectar cual es la capacidad real de un pen-drive los programas aida64 o h2testw, pero en esta ocasión hablaremos de otros interesantes programas gratuitos como fakeflashtest, winsetupfromusb.

Otra forma de saber si un pendrive USB es falso es verificando que tenga la interfaz a la que realmente opera. Muchas unidades prometen ser 3.0 y al final se quedan en 2.0 o ni siquiera llegan a las velocidades prometidas. Con el software ChipGenius ya deberíamos de saber qué versión tiene nuestra unidad, ya que es una información que se lista en esta aplicación. Tambien la aplicación crystaldiskmark también nos ofrece de un modo muy rápido la velocidad de transferencia de esa unidad.

Además de los programas aida64 o h2testw, o los ya comentados, que usaremos para averiguar cual es la capacidad real del la unidad usb de almacenamiento externo, necesitaremos nuevamente usar algunos comandos de la utilidad de Windows diskpart para formatear dicha unidad con su capacidad real:

  • diskpart
  • list disk
  • select disk {number}
  • clean
  • create partition primary size={number of megabytes}
  • select partition 1
  • active
  • format fs=fat32 quick
  • assign
  • exit

FakeFlashTest

FakeFlashTest es una herramienta de detección de unidades flash falsificadas. Esta herramienta se utiliza para detectar unidades flash USB o tarjetas de memoria que han sido engañosamente etiquetadas con un tamaño de almacenamiento mayor al que realmente tienen. Por ejemplo es común que los fabricantes falsificados etiqueten una unidad flash de X GB como si tuviera 2XGB de almacenamiento, y esto puede causar problemas al intentar guardar archivos en la unidad.

FakeFlashTest verifica el tamaño real de almacenamiento de la unidad flash o la tarjeta de memoria y le informa al usuario si hay una diferencia entre el tamaño etiquetado y el tamaño real.

Este programa en efecto es de los más usados para comprobar los sectores de memoria de un dispositivo de almacenamiento como una microSD o un pendrive, pues verifica la capacidad real escribiendo bloques de datos de un tamaño correspondiente a la capacidad que dice tener el dispositivo, de este modo, si luego al leerlo de nuevo da fallos, entonces es que la unidad de almacenamiento esta formateado con una capacidad distinta a la real.

Si el programa ha dado error em algun sector, probablemente se pregunte como calcular cual es la verdadera capacidad del disco, pues afortunadamente existen conversores de sectores a GB, que nos pueden orientar a saber cual es la capacidad real del disco.

Es obvio advertir que antes de usar esta aplicación es importante hacer una copia de los archivos que tengamos en esa unidad, porque toda la información de la memoria o tarjeta queda sobreescrita y por tanto eliminada.

Ojo porque si la capacidad anunciada de la unidad USB es alta, este programa por sus características del método usado, tardara un buen rato ( o incluso en determinadas ocasiones puede que incluso pierda el control).

WinSetupFromUSB

WinSetupFromUSB es una herramienta gratuita que permite crear una unidad USB bootable para instalar diferentes versiones de Windows, así como otras distribuciones de Linux. Permite crear una unidad USB multiboot con varias versiones de Windows y también sistemas operativos Linux siendo ideal para crear una unidad USB de arranque para la instalación de sistemas operativos en varios equipos, ya que permite seleccionar varios sistemas operativos y llevarlos en una sola unidad USB.

Tras la descarga y descompresión, ejecutaremos la versión de 64 bits .Una vez la ejecutemos, descubriremos que realmente se trata de una aplicación que cuenta con otras tres implementadas. Y nosotros la que utilizaremos para saber si un pendrive USB es falso es la de RMPrepUSB, cuya utilidad real es la de crear un USB booteable.

Por tanto en la pantalla principal elegimos la opción RMPrepUSB para abrir esta aplicación que nos abrirá nueva ventana parecida a la siguiente de mas abajo donde en settings deberemos elegir que tome dispositivos de mas de 1GB y en drive seleccionar la unidad que queremos probar:

winsetupfromusb  funcionando

Una vez seleccionada la unidad extraible y pulsaremos «Quick Size Test» y con ello empezaremos la prueba de capacidad real de la unidad.

ChipGenius

ChipGenius es una sencilla aplicación creada para ayudar a los usuarios a extraer información sobre sus dispositivos USB, averiguando los detalles que necesitan para reparar unidades flash averiadas. Aunque puede utilizarse en cualquier situación, resulta especialmente útil cuando un dispositivo flash no está visible en el Explorador de archivos, sino sólo en la sección dedicada a «Dispositivos» del Panel de control.

Esta utilidad es menos atractiva visualmente pero igualmente competente no requiriendo instalación, por lo que la app puede iniciarse con un simple doble clic. Centrándose en la funcionalidad más que en la apariencia se mantiene todo al mínimo: su interfaz consiste en sólo dos áreas, una que muestra una lista completa de todos los dispositivos USB y controladores, y la otra que muestra detalles sobre el dispositivo seleccionado. No hay botones que pulsar, ni menús a los que acceder, ni otras opciones con las que lidiar.

Una vez iniciado la app recopila información sobre todas las unidades flash USB y otros dispositivos conectados a través de un cable USB, junto con el número de puertos abiertos. Al seleccionar cualquiera de los dispositivos descubiertos (pinchando sobre el signo mas), aparece un nuevo informe en el área «Información detallada». Puede comprobar el tipo de dispositivo y su descripción original, la versión del protocolo y la velocidad de procesamiento actual, los datos de identificación del dispositivo (VID – vendor ID, PID – product ID) y su número de serie. Además, muestra el modelo, el fabricante y el proveedor del dispositivo. Quizá la información que más le interese sea el proveedor del chip, el número de pieza (chip de la CPU) y el código de identificación de la memoria flash (el chip Flash que hay dentro de la unidad USB).

En la siguiente imagen podemos ver como nos da información sobre la unidad D donde tenemos un pen-drive que queremos testear:

chipsgenius funcionando


Una unidad USB defectuosa no sólo es imposible de usar para transferir archivos, sino que puede causar la pérdida de información importante. Y si el Explorador de Windows no puede detectarla, tiene otras opciones para extraer los detalles de hardware que necesita para buscar una solución al problema, sea cual sea. ChipGenius muestra información sobre cada equipo conectado por USB, ya sea una unidad flash, una tarjeta, un teclado, un ratón o un dispositivo de almacenamiento externo. Además, con un solo clic con el botón derecho, todos los detalles se copian en el portapapeles, lo que facilita enormemente la creación de informes. Lamentablemente, por el momento no hay ninguna opción de exportación disponible.

NOTA: Algunas soluciones antivirus pueden identificar este software como malicioso. Se trata de falsas alertas positivas activadas por análisis heurísticos debido al comportamiento del programa (acceso a información de hardware). El archivo original proporcionado por el desarrollador está cifrado y requiere una contraseña para extraerlo. Esto sirve para evitar que los motores antivirus lo marquen como malicioso, pero los ficheros del archivo extraído seguirán siendo detectados y potencialmente puestos en cuarentena por su antivirus. Estamos alojando un archivo no cifrado de una versión ligeramente más antigua de ChipGenius que es marcada por menos motores antivirus y tiene una mejor oportunidad de ser utilizable sin tener que desactivar su antivirus o añadir excepciones.

Utilizando USB Device Tree Viewer

Pero si queremos estar aún mas seguros de ello, entonces vamos a utilizar USB Device Tree Viewer, la cual podremos descargar desde su página oficial. Este software muestra muchísima más información que el anterior, y está específicamente dedicado a mostrar las características nuestros puertos y dispositivos que hay conectados a él.

Pues bien, de entrada, el programa es un poco denso, pero fácilmente encontraremos el lugar a donde está conectada nuestra unidad USB si en la zona superior desplegamos Drive y buscamos nuestro USB.

Tras ser marcado en el árbol de puertos, pulsaremos sobre él y a la derecha se mostrará toda la información acerca de su interfaz. Nos fijaremos en la sección “USB Device” y dentro de esta, en las subsección “Connection Information V2”.

Aquí veremos una lista de protocolos soportados, los cuales irán marcándose en “yes” desde el más antiguo hasta el más reciente. En nuestro caso, la unidad soporta solamente USB 1.1 y USB 2.0.

Si efectuamos la misma prueba con una unidad que dice ser USB 3.0, pues tal y como se muestra, debería de aparecer un “yes” en dicha casilla.

CrystalDiskMark

CrystalDiskMark es un software de referencia gratuito que mide la velocidad de transferencia de los medios de almacenamiento de datos como HD, SSD, memoria USB, tarjeta SD y NAS. Tambien es una herramienta de benchmarking de disco duro y unidad de estado sólido (SSD) para medir el rendimiento de lectura y escritura de un disco.

Al ejecutar CrystalDiskMark, se realizan varios test de lectura y escritura en el disco seleccionado, y se genera un informe que muestra el rendimiento en términos de velocidad de lectura y escritura en MB/s. Esta herramienta es útil para medir el rendimiento de un disco y compararlo con otro, o para determinar si un disco está fallando o si hay algún problema de rendimiento.

Nada más abrir el programa podemos ver que tenemos cuatro opciones principales:

  • El primero número que va de 1 hasta 9 corresponde con el número de pasadas que va a realizar el programa. Si tiene prisa puedes seleccionar 1, pero tenga en cuenta que sus resultados pueden ser menos exactos. Un número adecuado suele ser 5.
  • El segundo parámetro hace referencia al tamaño de archivo de la prueba. Lo suyo es utilizar un tamaño de archivo parecido a los que manerajará en la realidad. 1 GiB está bien, pero si quiere reducir las posibilidades de que la caché esté alterando los resultados deberías elegir un tamaño mayor (32 GiB, por ejemplo)
  • El tercer parámetro es la letra de la unidad en la que se va a realizar el test
  • El último parámetro son las unidades de medida en las que queremos ver los resultados. Este parámetro se puede modificar antes y después de hacer el test. El resto de los parámetros hay que modificarlos antes de hacerlo.

Y una vez configurados los parámetros, solo tenemos que darle al botón All para que comience el test y esperar un poco. Ahora solo nos falta analizar los resultados. Lo primero que tenemos que entender es el significado de los parámetros de la izquierda:

  • SEQ o sequential: secuencial, acceso a datos ordenados, por ejemplo 1, 2, 3, 4, 5…
  • RDN o random: o aleatorio, acceso a datos no ordenador, por ejemplo 5, 1, 3, 6…
  • Q o queue: cola o cuántas peticiones tiene la unidad que procesar. Con un uso normal podemos tener un valor entre 1 y 4. Ordenadores con mucho uso del almacenamiento como servidores pueden tener una cola de entre 16 y 20.
  • T o threads: número de procesos que están intentando acceder a la unidad a la vez. Si tenemos cola grande y más procesos a la vez podemos aumentar la velocidad.

Por lo tanto:

  • SEQ1M Q8T1 hace referencia a muchas operaciones largas y secuenciales (copias de archivos, instalaciones, backups…).
  • SEQ1M Q1T1 ofrece el rendimiento de pocas secuenciales.
  • RND4K Q32T1 sirve para probar operaciones pequeñas aleatorias, pero muchas a la vez
  • RND4K Q1T1 sirve para probar operaciones pequeñas aleatorias de 1 en 1

Resultados

  • En general, en el caso de los discos duros magnéticos (HDD), las operaciones secuenciales suelen ser entre 10 y 100 veces más rápidas que en las operaciones aleatorias.
  • Para las unidades de estado sólido (SSD), la diferencia entre las operaciones secuenciales y aleatorias es bastante menor, aunque las secuenciales pueden ser entre 2 y 3 veces mayores. Si no hay diferencia, es probable que el SSD sea más rápido que el método de conexión (SATA I, SATA II, etc.).
  • Tenga en cuenta que la velocidad que suelen citar los proveedores son límites teóricos, y en la práctica, será cerca de un 5-10% inferior debido al rendimiento gastado en la gestión de los datos.
crystaldiskmark funcionado

DISKPART

Diskpart es una herramienta de línea de comandos de Microsoft que se utiliza para administrar discos duros y unidades de almacenamiento en un sistema operativo Windows. Con Diskpart, puede crear, eliminar y formatear particiones en un disco duro, así como asignar y quitar letras de unidad a las particiones. También se puede utilizar para establecer una partición como activa, limpiar un disco duro y cambiar el tamaño de las particiones.


Usando diskpart, ahora dividiremos el USB en su espacio real, para ello, en primer lugar, tenemos que identificar la unidad USB y seleccionarla. Asegúrese de verlo seleccionado en la lista de discos y que es el correcto (el asterisco indica que está seleccionado).

Microsoft DiskPart versión 10.0.22000.653

Copyright (C) Microsoft Corporation.
En el equipo: DESKTOP-NA97NGE

DISKPART> list disk

  Núm Disco  Estado      Tamaño   Disp     Din  Gpt
  ---------- ----------  -------  -------  ---  ---
  Disco 0    En línea        476 GB  2048 KB        *
  Disco 1    En línea       1943 GB      0 B

DISKPART>

Es muy importante asegurarse que disco vamos a gestionar , pues una vez limpiado, se eliminan todos los archivos y particiones. En el ejemplo el disco falso es el disco 1, así que lo seleccionaremos y lo listaremos para asegurarnos que esta activo.


DISKPART> select disk 1

El disco 1 es ahora el disco seleccionado.

DISKPART> list disk

  Núm Disco  Estado      Tamaño   Disp     Din  Gpt
  ---------- ----------  -------  -------  ---  ---
  Disco 0    En línea        476 GB  2048 KB        *
* Disco 1    En línea       1943 GB      0 B

Como el disco falso esta activo, podemos proceder a limpiarlo con el comando clean.

DISKPART> clean

DiskPart ha limpiado el disco satisfactoriamente.

Ahora crearemos una partición basada en el resultado del escaneo que teníamos. En nuestro caso en el ejemplo nos daba 61GB , que en MB es 61*1024=62.464Mb, que es el tamaño que elegiremos.


DISKPART> create partition primary size=62464

DiskPart ha creado satisfactoriamente la partición especificada.

En lugar de los falsos 2TB en el ejemplo , ahora tenemos 61 Gigabytes de verdadero espacio escribible. Esto asegurará que todos los archivos escritos en el USB no estén corruptos.

DISKPART> list partition

  Núm Partición  Tipo              Tamaño   Desplazamiento
  -------------  ----------------  -------  ---------------
* Partición 1    Principal           61 GB  1024 KB

DISKPART>

Active la nueva partición pues de ese modo podremos formatearla normalmente.

DISKPART> select partition 1

La partición 1 es ahora la partición seleccionada.


Ahora el USB falso vuelve a ser auténtico.

DISKPART> active

DiskPart marca la partición actual como activa.

DISKPART>

En este momento Windows lo reconocerá como disco , y nos pedirá que procedamos a formatearlo

Es interesante destacar que podemos formatear ya en NTFS y no en FAT extendida como suelen venir. Tras unos instantes veremos que el disco es correctamente formateado a su capacidad real.