11 julio, 2015

Alarma GSM con USB programable (1)






Búsqueda personalizada

 Como siempre: No es tan difícil como parece.


Alarma GSM con USB programable
(1.- El usb Pic-PC con XP)

     Empezar es lo más complicado. Lo primero es ver como funciona el usb en el microcontrolador. Conectar al PC un microcontrolador y que windows lo reconozca. En esta ocasión se utiliza un 18F4455. Para usar otro Pic simplemente hay que cambiar el micro en el esquema y en el programa.
Aunque cambiará se empieza por lo más básico: El Mplab y Proteus Isis.
     Con Mpalb creamos un proyecto y en main.c colocamos el siguiente código:
     Ahora compilamos, indicará unos avisos y al final el tan esperado BUILD SUCCEEDED. Con esto ya tenemos, de momento, terminado el programa del microcontrolador. Ahora vamos al esquema anterior del circuito y realizamos doble clic sobre el microcontrolador. Se abre el editor de componentes y en Program File colocamos la dirección del archivo que se ha generado al compilar el programa en proteus: main.hex
     Guardamos con clic OK y salvamos el esquema (Ctrl + S). Instalamos los drivers del VIRTUAL USB de Proteus. Suele estar en la carpeta de instalación\Virtual USB\Install USB Drivers.
     Con esto ya podemos, no es verdad de momento, simular el microcontrolador sin usar nada de electrónica. Ningún componente electrónico físico va a participar.
Vamos a Proteus isis y simulamos:
     Abre correctamente el analizador de USB y ahora conectamos nuestro dispositivo al ordenador. Para ello hacemos clic en el conector de USB.
     Windows detecta que hay algo conectado. Seleccionamos No por el momento y Siguiente
     Ahora seleccionamos Instalar desde una lista o ubicación especifica.
     Ahora solo queda asignar el camino donde hemos descomprimido el archivo que hemos o vamos a bajar con el nombre de mchpcdc.inf que uno se puede descargar desde:
     Hay ocasiones, sobretodo cuando se han realizado unas cuantas pruebas, en que ya no informa del nuevo hadware conectado. Nos dirigimos al Administrador de dispositivos y allí está lo que hemos conectado.
     Si le pedimos que instale los drivers que se han descargado, seguramente no los reconocerá. y pedirá que busquemos otros. Probemos los que probemos no va a funcionar ninguno. Hay que realizar unas pequeñas modificaciones y también personalizaremos nuestro dispositivo.
     Abrimos  el archivo usb_desc_cdc.h que se ha cargado a nuestro proyecto al compilar
     Y nos vamos al final del archivo. Aquí es donde lo personalizamos.
     La longitud de la cadena tiene que ser exacta. Si el número de la cadena es mayor saldrán caracteres que no tienen que ver con nuestro dispositivo. Se suprimirán caracteres si el número de la cadena es inferior, para ello hay una fórmula muy sencilla que es:
(Número de letras + 1)*2 = longitud a poner

Ejemplo en string1 queremos poner JVMA, esta tiene 4 caracteres por tanto:

longitud a poner = ( 4 + 1 ) x 2 = 5 x 2 = 10
     Lo mismo ocurre con el string2. En este caso no cambia el valor del tamaño de la cadena al coincidir la longitud que había.
     Volvemos a guardar y compilamos de nuevo (Built All). Cargamos otra vez el main.hex en el 18F4455 (con detener la ejecución del simulador y reanudarla es suficiente)
Ahora le toca al Driver. Abriremos con el archivo mchpcdc.inf, que una vez descargado se ha de descompilar, y nos dirigimos al final del archivo.
     Cambiamos el DRIVERFILENAME y lo personalizamos cambiando DESCRIPTION. Una vez reconocido del dispositivo se verá que se ha personalizado el dispositivo. Lo aceptaremos naturalmente. ¿Cómo no va a pasar la firma si lo estamos haciendo nosotros?
     Es posible que quede una última cosa por hacer y no cuesta nada revisarlo. Si el dispositivo no es reconocido es que no coinciden unos datos que ahora mismo vamos a ver.
Abrimos el archivo usb_desc_cdc.h y buscamos este trozo de programa.
         0x61,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??)  ==8,9
Se intercambian los valores en el archivo mchpcdc.inf (0x0461)
         0x33,0x00, //product id   ==10,11
Se intercambian los valores en el archivo mchpcdc.inf (0x0033)
Mucho cuidado con eso. Abrimos el archivo mchpcdc.inf y al principio tiene que estar el dispositivo.
     Si no está hay que añadirla. De otra manera: EL DRIVER NO NOS SERVIRÁ. Windows no lo reconocerá como válido.
     Notese que los valores se han puesto acorde con el archivo usb_desc_cdc.h
     Los otros valores que aparecen indicando el cambio (no los he quitado para que se vea que pueden cambiar) son los que tenía el driver en un principio. Dependiendo del archivo cargaremos SIEMPRE los valores que nos marque usb_desc_cdc.h
     Una vez terminado de cargar ha de salir la ventana de Finalización del asistente
     Ya se puede ver recompensado el esfuerzo con la personalización de nuestro prototipo.
     Ahora ya podemos disfrutar de una simulación completa sin el uso de componentes electrónicos ni cables. Si enviamos el 1 nos devuelve el texto perteneciente al uno y si mandamos 2 nos devuelve el texto perteneciente al dos.
     Para configurar el puerto a nuestro gusto (en mi pc solo dispongo de un puerto COM y algunas veces, dependiendo del dispositivo que conecto, me cambia el puerto, se puede personalizar. Es decir: podemos asignar el puerto de comunicaciones que queramos. Para ello ir a:
Inicio -> Panel de Control -> Sistema -> Hardware -> Administrador de dispositivos
      y expandimos el puerto de comunicaciones Puertos (COM & LPT) Y doble clic sobre nuestro dispositivo.
      Nos vamos a la pestaña configuración de Puerto \ Opciones avanzadas
      y se puede cambiar el puerto COM en la pestaña: Número de puerto COM.
 La configuración del HyperTerminal, que es lo que puede dar problemas, está explicada en otro post.
 (próximamente)
CONFIGURAR EL HIPERTERMINAL PARA RECIBIR DATOS Y ENVIAR UN SOLO BIT


 Como siempre: No es tan difícil como parece.

          Gracias por visitar mi blog personal. Si te ha gustado: haz el favor de hacer clic en los anuncios de google que aparecen al principio de cada entrada y date una vuelta por por ellos. Son céntimos lo que aporta pero me ayudas a seguir subiendo cosas. Gracias.

No hay comentarios:

Publicar un comentario