
Descubre cómo un simple circuito USB transforma la forma en que interactúas con la tecnología. ¡Sigue leyendo y déjate sorprender por cada detalle!
El puerto serie y el puerto paralelo ya quedaron atrás. Con la superpoblación de ordenadores portátiles, el espacio de acción de los enlaces por puerto serie comienza a reducirse. Lo mismo ocurre con las conexiones por puerto paralelo. Ya ni siquiera los ordenadores de mesa traen un puerto de este tipo utilizado antiguamente para las impresoras. Hoy todo trae conectividad USB. El mouse, el teclado, la impresora multifunción, el teléfono móvil, el pen drive, el disco duro portátil, el Blu-ray Player, el módem, el router, todo se conecta a través de un puerto USB. En este artículo veremos la manera más sencilla de realizar un circuito con un microcontrolador, encender y apagar un LED desde nuestro ordenador portátil, en una aplicación hecha por ti mismo a través del puerto USB. Conéctate.
Las antiguas conexiones de puerto serie o paralelo permitían velocidades de transferencia de datos de hasta 115 kbps., mientras que una conexión USB 1.1 alcanza los 1.2 Mbps. y una USB 2.0 logra 480 Mbps. Sin contar con la sencillez que supone utilizar un único tipo de conector para todos los periféricos necesarios, la posibilidad de conectar y desconectar sin tener que reiniciar el ordenador a cada cambio de equipo es una ventaja que ha llevado al trabajo móvil hasta su máximo potencial. Disponer de instrumentos de campo o de equipos portátiles que permitan monitorear el clima en el lugar de los hechos es, gracias al ordenador móvil, un avance que, complementado con la practicidad de los puertos USB, se ha ganado la preferencia de la mayoría de los s. Es hora entonces que comiences a transitar el camino de las aplicaciones basadas en conectividad USB.
El programa Proton Development Suite posee entre sus herramientas más importantes la que conocemos como EasyHID USB Wizard. Esta prestación se encarga de manera automática de generar los programas necesarios para poder utilizar los microcontroladores de la línea PIC 18F2455, 18F2550, 18F4455 y 18F4550, que será el que utilizaremos para nuestro ejemplo. El código para el PIC lo genera tanto para Pic Basic Pro como para Proton, mientras que para el ordenador se encarga de generar el código en Borland Delphi, Visual C++ y Visual Basic. Por supuesto, todos estos parámetros se pueden seleccionar mientras se avanza en la preparación del software. En apenas muy pocos pasos, ya podemos tener una aplicación HID USB lista para comenzar a cargarla de código. Tanto desde el Microcode Studio Plus como desde Proton Development Suite, al iniciar la aplicación, nos encontraremos con pantallas a las que les iremos cargando los datos que el sistema nos vaya pidiendo.


Como a este sistema lo estamos preparando para manejar y operar el receptor multibanda NeoTeo, los datos que le agregaremos estarán en coincidencia con esta aplicación. De allí surgen los nombres que ves en las imágenes. Aquí, en esta pequeña guía, sólo te daremos un ejemplo práctico para que te vayas familiarizando con el sistema y sus pequeños secretos para lograr una conexión exitosa. Las pantallas que comiencen a aparecer son las que ves en imagen; tú les colocarás el nombre de la aplicación que más desees. Lo que NO debes cambiar en la segunda pantalla son los números de Vendor ID y Product ID. Estos números son asignados por el organismo que regula la autenticidad de los productos USB, donde puedes comprar por U$S 4 mil una membresía anual con números otorgados exclusivamente a tu desarrollo. Por lo tanto, nuestro consejo es que utilices los números de muestra que provee la aplicación para los proyectos domésticos que realices.


Luego avanzas a la pantalla que te permite ajustar los valores de tiempo en que el ordenador controlará la existencia de la conexión USB (Polling). Este punto es muy importante porque el ordenador interrogará por el enlace y, si no lo encuentra (Attached), te expulsará la conexión y quedarás inactivo (Detached). Esta acción de comprobación puede ser realizada de forma constante mediante una interrupción con un Timer (TMR1) del microcontrolador o a través de un programa organizado y estructurado de manera apropiada dentro del PIC. El tamaño de los buffers de entrada y salida quedará en 8 bytes. Hasta que no logres tener buena práctica en la realización de esta clase de aplicaciones, te recomendamos utilizar siempre los valores indicados por default. Son más que suficientes para las aplicaciones a nivel inicial, como la que haremos en esta entrega.
En la pantalla siguiente puedes seleccionar el lugar donde guardarás los archivos que se cargarán en dos carpetas individuales: una para el programa base del microcontrolador y otra para el software de aplicación que utilizarás en el ordenador. Siempre trata de buscar una ubicación de nombre corto que se encuentre cercana al árbol raíz del disco duro porque con nombres extensos el compilador puede generar errores al armar los programas. Debajo de la selección del PIC, tienes un casillero para habilitar la generación automática de un programa manejado con interrupciones que mantengan “viva” la conexión USB durante todo el tiempo que estés conectado. Como puedes ver, no tendrás que preocuparte por realizar un programa con los tiempos bien ajustados. Listo, eso es todo. A la siguiente pantalla, el sistema comenzará a organizar y armar el código; tú sólo debes esperar a que termine su trabajo sin errores.

Una vez que hayas realizado estos cinco sencillos pasos, tendrás los programas listos para comenzar a trabajar. Lo primero que debes hacer es definir el tipo de hardware que utilizarás alrededor del microcontrolador seleccionado y, en función de él, organizar todo el resto de la aplicación. Es decir, en este caso, sólo colocaremos un pulsador y un LED como componentes adicionales y un LCD de 16 caracteres y dos líneas. Además de definir el hardware que utilizarás, también aquí se define la idea básica del software que crearás para utilizar y controlar tu aplicación desde el ordenador. Para nosotros es importante poder controlar de manera autónoma el dispositivo que hemos ideado con el PIC y poder hacerlo a través del ordenador, si es que lo deseamos.
El circuito En el circuito podemos ver claramente definidos los sectores más importantes del desarrollo: el PIC 18F4550, al centro de la imagen, el display LCD 16X2, el conector USB, el conector ICSP para poder programar el PIC en forma serial y sin necesidad de extraerlo del proyecto, el cristal de 20Mhz, el pulsador, el LED (en color verde) y, por último, el ingreso de la señal de 5 volts provenientes desde el ordenador a través del conector USB. Muchos desarrollos basan su alimentación en esta tensión que extraen desde el conector. Un ejemplo de esto es el mecanismo de la carga de baterías de muchos MP3, MP4, MP5, etc., o de algún GPS. Los quemadores de PICs suelen extraer alimentación desde este puerto y muchas otras aplicaciones también lo hacen. Debes tener en cuenta que esta salida de tensión tiene un máximo posible de 500 miliamperios; si te excedes de este consumo, puedes dañar la salida del puerto. En muchas oportunidades bastará con reponer un resistor fusible en el motherboard, pero te aconsejamos no jugar con esta suerte.

Además, debes recordar que en la tercera pantalla del EasyHID USB Wizard, por default, esta corriente se limita a 50 mA. Este pequeño valor será suficiente para extraer de allí la información que le daremos al programa del PIC para indicarle que nos estamos conectando al ordenador. Pero antes de escribir siquiera una línea de código de programa, debemos grabar el PIC con el firmware que nos generó el EasyHID (previo a compilarlo y obtener el .HEX). Luego de grabarlo, procederemos a conectarlo al ordenador para que éste lo reconozca como un nuevo dispositivo HID y para estar seguros de que no hayan existido errores en la generación del código, al menos en el correspondiente al microcontrolador.


El nombre del producto seleccionado en la primera imagen deberá aparecer al conectar el dispositivo, avisando que ha encontrado un nuevo hardware. Luego de esto veremos el mensaje que indica que se trata de un dispositivo de interfaz humana USB. Si todo marcha correctamente, finalizará la instalación indicando que el dispositivo se ha instalado con éxito y que funciona correctamente. Si es así, dentro de Configuración > de Control > Sistema > Hardware > de Dispositivos verás una imagen similar a la que se muestra a la derecha. Esto es válido para el SO XP.
Es por esto que, con el simple agregado de una línea de código, puedes esquivar esta atadura y salir del lazo. Para esto vamos a utilizar la tensión de entrada de 5 Volts que trae el puerto USB, ingresándola a través de R6 y R5 a RC0. Si RC0 no detecta tensión de entrada, deberá sacarte del bucle y llevarte hacia otro lugar del programa “que agregaremos nosotros”, donde no sea necesario estar conectado a un puerto USB y donde puedas realizar cualquier función, tal como se hace con cualquier otro microcontrolador. Dentro de ese lazo cerrado que utilizaremos para realizar una actividad autónoma, podremos escribir/leer una memoria EEPROM, interpretar un teclado, manejar un display LCD y cualquier otra cosa a la que ya estemos acostumbrados.

Es por esto que con el simple agregado de una línea de código puedes esquivar esta atadura y salir del lazo. Para esto vamos a utilizar la tensión de entrada de 5 Volts que trae el puerto USB, ingresándola por RC0. Si RC0 no detecta tensión de entrada, se rompen los ciclos de espera y el sistema continúa su ejecución.

De esta forma, cuando encendamos nuestro dispositivo, apenas se verifique la inserción en el puerto USB, saldrá del ciclo y funcionará de manera autónoma. Nosotros hemos decidido mostrar este funcionamiento en el display LCD con un mensaje alusivo correspondiente.
La condición de funcionamiento de este sistema “dual” se basa en la colocación – en la mayor parte que sea posible – de la rutina que detecte que el USB se ha conectado, es decir, que RC0 se vuelve igual a uno. Aquí ocurrirán dos cosas: por un lado, el programa puede seguir siendo operado desde su teclado nativo (en nuestro ejemplo, un solo botón) o no; y por el otro, ya debes ir preparando algunas líneas de programa para el software que hayas seleccionado. Observa: un botón en la aplicación de control, un círculo de color que emula la acción y un mensaje que cambia de “Encendido” a “Apagado”.

Tal como se podía ver en el circuito, hemos conectado el LED en PORTC.1 y el botón en PORTC.2. La aplicación es sencilla pero intenta ser didáctica para que comiences a dar tus primeros pasos en el manejo del puerto USB. Debes tener en cuenta que dominar este puerto es la llave de salida para que tus diseños sean exitosos, efectivos y prácticos, especialmente en el mundo de los portátiles.
Volviendo a la programación del microcontrolador, que es la más compleja, debemos seguir aclarando puntos difíciles dentro de la rutina del servicio USB. Entre las cuestiones que suelen traernos dolores de cabeza están los “buffers” y su ubicación o numeración dentro del PIC respecto a la numeración que se llevará en el software del ordenador. En Visual Basic, la posición 0 no se puede emplear ya que se utiliza para el reporte del dispositivo, es decir, BufferIn(0). Por lo tanto, la enumeración debe iniciarse desde el 1 hasta el 8, lo que corresponderá en el PIC con posiciones de buffer que irán del 0 al 7. Es decir, lo que en el PIC sea USBBuffer[2] para transmitir, en VB6 será BufferIn(3). Compara entre los listados de los programas que te entregamos, observa este detalle y expándelo utilizando otros botones, otros LEDs y otros recursos para ampliar las prestaciones del dispositivo remoto desde el ordenador.
Observa que además tienes dos lazos cerrados que, si el programa del PIC cae allí, se “cuelga” y no sale hasta que lo reinicies. Estos puntos son cuando se entrega la información desde el buffer (DoUSBOut) o se solicita la información (DoUSBIn). Si en cualquiera de los casos no se encuentran datos, el sistema quedará esperando para ser reactivado. Por eso te entregamos los programas completos. Ahora depende de tu imaginación y creatividad. Esto recién comienza, amigo. Proton y EasyHID lo han logrado de forma muy sencilla; ahora, la conectividad USB está en tus manos.
Hola Mario:
Este articulo esta mas que espectacular, es muy descrestador, es algo que te abre la imaginacion a crear miles de cosas, es increible. De verdad es genial que estos articulos tengan tanto nivel, muchas gracias por esto Mario.
Bueno, pues creo que sobra decirlo es creo que redundante, pero la version del programa Proton Development Suite y la que posee la aplicacion EasyHID USB Wizard, es la que es necesario comprarla en la pagina de Proton, cierto?, porque las versiones con las que hemos venido trabajando es la que es limitada, creo que es asi, si me equivoco porfavor corrigeme.
Pero bueno muchachos, si queremos hacer algo tan espectacular como lo hizo Mario, y muchas mas cosas mas, es logico y casi que necesario tener una version del Proton Suite, no todo puede ser regalado, es el trabajo de muchas personas, y vale la pena pagar un dinero por ese trabajo, la gente que desarrollo los programas tambien come, se viste, se enferma, asi que bueno es lo minimo.
Por mi parte voy a adquirir esta version de Proton Suite, ya que Mario hizo el esfuerzo, nosotros que lo seguimos, tambien sigamoslo.
Un abrazo desde Colombia, y de nuevo gracias mario y gracias NeoTeo
Jajaja, que bueno que leo el artículo!!! De hecho ésto me va a sacar del apuro que tengo para poder presentar mi proyecto para las Residencias Profesionales!!! Gracias, equipo de NeoTeo!!! Hasta pronto!!! :D
Hola Mario, Muchos aplausos y felicitaciones por este nuevo articulo de electrónica, tengo una pregunta para este caso el voltaje que suministra la fuente no se puede suministrar desde la misma USB,? lo que pienso es que se le podría colocar una batería recargable para trabajar autónomo y que reciba la energía directamente del pc cuando no lo este haciendo autónomo.
Gracias.
Utilizar easyhid es buena idea pero no es lo adecuado, ya que limita a usar ese programa y sus limitaciones, es darle una capa de abstraccion mas a usb, pero es una buena forma de hacer el hola mundo o getting started, pero hasta ahi nomas. uno debe saber la teoria del puerto usb, clase cdc, hid, la calse hid es la mas dura, pero con la que mas se aprende sobre sistemas operativos, diseño de driver, kernel, eventos, etc. Lo fue para mi, con la clase cdc, recomendaria utilizar mpusbapi o si nueva version de microchip, se ha trabajdo bastante eso para los pic, Easyhid abstrae esa capa, que es algo que los informaticos ven en su carrera, ojo los informaticos, no los de ingeneria de sistemas, que saben mas de de otras cosas que de informatica y programacion, en general.
De todas formas es bueno que se divulgen bastante de USB, Mario ultimamente hace bastante laboro, analogica y digital, seria bueno que mande un aritculo sobre como soldar componentes bga, que son los smd mas utilizados en equipos con micros de 200Mhz, el rutado y tambien seria bueno.
Gracias,
Ritos Universidad Nacional de Ingenieria
Excelente maestro
Me encanta esta pagina por estos articulos de electronica ya que estoy estudiando la carrera de ingenieria en electronica y aca aprendo mucho.
Pregunta: Yo no tengo puerto serial en mi computadora y el grabador que hize para mi pic16f84 utiliza el puerto serial por lo que tuve que comprar un adaptador de RS-232 a USB. Mi pregunta es si no hay la posibilidad de diseñar un grabador para este PIC (que sea ojala compatible con pics de mayores prestaciones) pero que sea USB directamente???
De antemano gracias!
hola, muy bueno el articulo, pero si quieren tengo un proyecto armado con pic 18f4550 programado en Con el CCS pic c compiler y sobre windows con .net y winusb y hasta con libusb sobre linux, lo hicimos para una feria de ciencias del cole y esta todo andando, usa el metodo de trasnferencia bulk.
Me inicie con los micros de Freescale y en PC con el lenguaje JAVA
Creo que seria una buena opción crear artículos para este otro Micro, pues el mundo no solo puede ser PIC y no solo Visual BASIC
Genial amigo x esto es por lo que decidi estudiar la Ing en Electronica, y gracias a todos tus aportes me alienta a seguir en esto y poder desarrollarme en esto de la forma que tu lo haces gracias.
Hola mario
tal y como dice almejandro muchos no tenemos puerto rs-232
no abria posibilidad de que hicieras un articulo de un programador
de pics usb
gracias por tu atecion y por conpartir tus conocimientos con todos
saludos!!
ammm.... acabo de enterarme de q es un puerto serial.... quizas es porque soy de la generacion nueva, quizas porque nunca he tenido impresora, pero a esa solo la habia visto en mi ordenador viejo, y no sabia para q servia... XD
Genial, esto lo estaba buscando y como conectar por bluetooth.
Muchas gracias!!!!
por fin, adios maldito puerto serial, maldito puerto paralelo, tuve 4 semestres de electronica, y en su vida, los profesores enseñaron algo util para conectar los PICs y nuestros proyectos de circuitos, Gracias esto es util como el fuego, como la luz, como las drogas, por fin voy a ir a callar unas vocas (a todos esos flojos que no quisieron enseñarme ago como esto)
Saludos. Simplemente Excelente tutorial, ojalá hubiera estado disponible hace unos años cuando comencé a experimentar con USB y PICS, una muy buena aplicación para escribir el firmware, y en C, es MikroC, de mikroelectronica, tienen una version gratuita, que es muy util como apra empezar a curiosear, y también tienen versión en Basic, y Pascal.
Aqui les dejo un video que hice alguna vez, donde enviaba los datos de los tres ejes de un ADXL330, a un PIC18F2550, y por el USB a una aplicación en Visual Basic, donde mostraba la gráfica de los tres ejes.
http://www.youtube.com/watch?v=vUz8NT7enXQ
De nuewvo, excelente artículo. Aprovéchenlo!!!
Mario, sos GROSO, me agrada que hagas parte de los comentarios, para que fluya el conocimiento a través de la retroalimentación y compartir las experiencias que hemos tenido y felicitaciones por tus articulos, cada uno supera el anterior.
Excelente articulo, sobretodo para los que empezamos en el mundo de la electronica. Hace poco hice un cañoncito de aire que disparaba una bolita y variaba el angulo de inclinación, todo controlado por puerto paralelo, porque francamente la utilizacion del puerto USB se me hacia muy dificil. Pero ahora con este ejemplo creo que prodre adaptarlo al puerto USB.
Muchas gracias Mario.
Wow muy buena aplicacion, ojala la hubiera tenido cuando me encontre haciendo mi proyecto para salir del bachillerato un teclado MIDI USB, pero en ese entonces, y aun hay muy poca documentacion en español, me toco lidiar mucho, tanto en el soft, para la conexion usb, como para el midi, ademas de que sierta parte del esquematico me fallaba, pero pude darme cuenta del error gracias a mucho tiempo de analisis y un poco de ayuda de proteus. Si habia tenido la oportunidad de usar HID, pero mejor opte por usar la altisima velocidad del usb 2.0 a 48mbps que nunca lo use, pero a esa velocidad se conecto XD, es todo un show comprender que plls necesitas, hay tengo todavia los fuentes por si alguien se interesa, solo que yo programe en Visual C++ con la MFC, y con el compilador para PICS CCS.
Saludos desde Ecuador,
Felicitaciones por el articulo, bueno de verdad.
Yo tambien he logrado hacer esto hace tiempo, pero tenia una intriga hace tiempo...
Alguien a podido implementar un bluetooth a nivel de circuito??? que permita la transferencia por este protocolo???
Hay muchos articulos de control de circuitos por señales de radio pero ninguno por bluetooth alguien me puede alarar esta duda?
Grande Mario. Como siempre rogaría tener un día de 36 hs. para hacer todos los proyectos que posteas. Sos un capo. En cuanto pueda le meto mano al proyecto de la radio.
Un sincero saludo.
Jukinch
que buen tema, tengo ya algunos meses por aqui viendo los articulos de neo teo pero generalmente no hago comentarios, solo que este articulo no podia dejarlo pasar sin un comentario al respecto...gracias por estos temas tan importantes y me voy a probarlo...
Hola Mario, la verdad, sos un genio!!! muchas gracias por toda la info que posteaste..
como otros que escribieron, yo también estudio ing. electronica, y me vino muy bien este tutorial.. hacia ya un tiempo que con un amigo queríamos mandar datos por usb y no encontramos nada entendible..
como manejo mejor pascal, preferí delphi y no visual basic..
y mirando tu ejemplo, modifique uno nuevo y logré, en el simulador proteus, que todo ande de 10..
el problema es llevar eso a la realidad.. tengo el pic, el programador (upp628), el hex generado y grabado en el pic.. (18f4550)
pero no se bien por que al xp no le gusta nada y no me lo reconoce..
seguire luchando e intentando que ande, porque veo tu ejemplo y quiero sentir esa satisfacción que te da que las cosas anden en la práctica..
bueno, desde ya un abrazo y mil gracias de nuevo por compartir conocimientos!!
Perdòn, Mario, tengo algunas dudas, espero me puedas ayudar. mi correo es [email protected], agregame al messenger o mandame tu correo.
Es acerca de los puertos en el 18f4550. No hayo el RC3. lo que pasa es que quiero conectar no solo uno, sino 4 leds y 2 motorcitos, ya hice las modificaciones en el VB, pero quisiera que me ayudaras un poco.
Gracias y hasta pronto!!! :D
Hola Mario, como estas? Soy bastante novato en la electronica y consulto seguido en Neoteo aunque recién me registré. Tengo un problemón! La imagen donde está el circuito sale un poco borroza y no alcanzo a distinguir qué componentes se usan. Me podrias pasar la lista de componentes por e-mail? Saludos muchas gracias y sigan así!!!
pagina buena
Hola, estube tratando de compilar en proton el codigo y me sale un error. que dice cannotfind USB descriptor file RECEPTOR2DESC.INC, que podra ser esto? por favor. gracias mi correo es [email protected]
Muy bueno el material hermano, pero una pregunta, para el pic no hay que tener una plaqueta programadora para mandarle las intrucciones?
hola Mario
te cuento estoy llevando el curso de arquitectura de computadoras, y me pidieron un proyecto basicamente para usar el puerto serial, pero como los puertos USB tienen muchas mas ventajas... busque acerca del tema y me encontre con este impresionante articulo.
algunas cosas no me quedan claras acerca del funcionamiento y coneccion, me tomare mas tiempo para lograr entender esta aplicacion.. y ojala no tener inconvenientes.. caso contrario desearia q me brindes un poco de ayuda :P
muchas gracias por el aporte... me elimino barreras :P
estudiante ing. sistemas UNMSM - Peru
Mario, me interesó mucho tu artículo, de manera que salí corriendo a Cika a comprar las cosas.
Lllegué a casa y comencé a armar todo.
alimento el protoboard y funciona todo correctamente pero al enchufar el usb la pc no reconoce el dispositivo. Se te ocurre qué podría hacer para que funcione?
Sds, Diego
hola mario...queria dejarte el comentario de tu excelente trabajo la verdad lo iro...dentras de eso hay mucho esfuerzo...dedicacion...lo sabemos loq trabajamos cone lectronica...mucho se dice pero poco se hace y aqui s e ve mucho trabajo y ganas d e compartirlo...FELICITACIONES !!!!!...
mira queria comentarte q estoy trabajando en un intercomunicador bazado en telefonos tdma q ya s e dejarond e husar...tu trabajo me inspiro mucho y la parte de usb me dio muchas ideas,basicamente el pll un ma1015(buscar como uma1015) de philips es una marabilla y encontralo montado enuna placa con todas las cosas y el demodulador fue una bendicion muy poco hay q modificar ademas tambien tien coneccion iic mi idea es husar tambien el lcd del mismo telefono y el teclado tambien,con partes de programas de teclado para pics...bueno mucha s gracias por tu tiempo....
Simplemente excelente, más claro no pudo haber sido.
Se le agradece totalmente.
Espero y lean esto ya que es una publicación del 2009 si pudieran desirme los componentes del proyecto es que no se distinguen y un manual paso a paso se que este esta muy claro pero soy nuevo en esto porfavor de antemano se les agradece
Acabo de encontrar su pagina, y estoy asombrado de la cantidad y la calidad de la información, este proyecto con el puerto USB es lo mejor que he encontrado en toda la red.
muchas gracias, continúen con su esfuerzo que lo están haciendo excelente.
Fernando A.
Hola a todos este articulo sobre usb esta muy bueno pero tengo una pregunta estoy desarrollando una aplicacion en visual utilizando la configuracion usb pero tengo un problema con el metodo publico onRead que es el metodo que permite leer el bufferin o sea los datos de entrada que bienen del micro al pc, resulta que estoy haciendo una validacion dentro del metodo onRead donde hago la siguiente sentencia:
textbox.text = BufferIn(2) //capturo el dato que viene del micro
//Hago la siguiente condicion
if textbox1.text = 1 then
contador = contador + 1
textbox2.text = contador
end if
Entonces la cuestion es la siguiente cada vez que el programa tiene que validar si el valor es uno el tiene que ejecutar una sentencia de conteo ese valor de contador se lo asigno a una caja de texto pero resulta que cada vez que el valor es uno el se queda contando y lo que se quiere es que lea uno y me cuente una vez y ya estoy con ese problemilla entonces pido el favor haber si ustedes me pueden ayudar con eso para saber que tengo que hacer agradezco cualquier ayuda o colaboracion al respecto mil gracias por su atencion
Cordialmente
Fabio Jesus Cortes Ariza
e-mail: [email protected], [email protected]
Colombia
hola quisiera saber cual es la lista de material que utilizaste para hacer esto para poder tener lo basico para poder desarrollar mi proyecto escolar basado con lo que nos mostraste
muy bueno para los que ya nos estamos iniciando en el mundo de los IC...excelentee
Hola soy nuevo en esto de los pics, pero esta idea es realmente inspiradora asi que fui directo a la tienda de electronica y arme el proyecto, tengo puerto serial, pero no se exactamente como conectarlo para poder progrmar el pic, haber si me ayudas porque no se a que se refiere ICSP si es algun cable estandar o si tengo que armar algo adicional. Gracias
Soy novato en este campo de los pics, sin embargo esta pagina me parece super interesante, felicitaciones a los productores.
Queria hacer una observacion, en el diagrama del circuito el cristal es de 20 Mhz, y en el programa del pic esta a 48 Mhz, quiria saber que implicación tiene en cuanto a la programacion, o sí es un simple error de transcripción. gracias de antemano
Hola que tal impresionante tutorial, fijate que trato de desarrollar una aplicacion solamente de prueba y me he encontrado con un obstaculo, no puedo enviar y recibir datos al mismo tiempo, tengo que enviar un dato desde la PC al pic, para que el pic me pueda devolver un dato de lo contrario el pic de forma autonoma no me envia nada al pic, no se si el problema se encuentre en el pic o en la PC, trabajo sobre visual basic 6 y Proton, me seria muy util un concejo o ayuda, saludos excelente proyecto.
Oye una pregunta que elemento es el ICSP es que estuve preguntando pero nadie sabe o donde lo puedo comprar
HOLA, oye...baje el programa: Proton Development Suite y el EasyHID USB Wizard....pero cuando intento configurar el easyHID, en la ultima ventana no me deja poner nada en las opciones de: USB DEVICE COMPILER y en la opción de APPLICATION COMPILER...entonces cuando le doy NEXT...en lugar de salir verde en CHEKING FOR GENERATION ERRORS, sale rojo en la de GENERATION ERRORS....y no me crea el programa de seado...:s....podrías decirme cual es mi error aquí??
Mario, gracias por ilustrarnos de una manera desinteresada, he armado la placa siguiendo tus pasos y despues de algunos tropiezos. viene la alegria, funciona perfectamente, he logrado medir voltajes con el pic y verlos en mi laptop. muchas gracias.
Estimado Mario:
Estoy desarrollando tu ejemplo pero no logro que Windows me reconozca al PIC ni que el micro opere adecuadamente. He tratado de configurar los bits del PIC pero no obtengo buenos resultados. Estoy usando una LCD de 4x16 y la pantalla permanece con dos líneas en obscuro y windows siempre me dice que no se reconoce al dispositivo. Si pudieras pasarte algunas pistas de como resolver esto te lo agradezco infinitamente. Si requieres que te proporcione mi código, te lo puedo enviar sin problema.
Saludos
Amigo Mario:
Gracias por tu ayuda he hecho con exito tu placa para controlar un led
y funciona ok,
He querido utilizar tu proyecto para modificarlo y controlar 6 leds pero ha sido imposible. llevo varias semanas en esto, te pido ayuda para hacerlo. a lo mejor publicas uno que seria de mucha utilidad para nosotros, de antemano gracias por tu ayuda, quedamos a la espera.
erez
Hola Mario
Tu trabajo es muy bueno y en verdad abre la imaginacion para elaborar todo tipo de trabajos. Tengo una duda. Quiero programar un PIC con un programa basado al que hicistes. Pero aparentemente no me lo detecta la PC. Tengo WinXP, uso el VB6, el Proton IDE y pues un programador JDM, creo que esto último puede ser el error. ¿Puedes ayudarme? a ver cual será el motivo del problema. Y tengo una pregunta ¿Cual programador usastes?
Atte: Luis
Excelente articulo hermano gracias, justamente lo que andaba buscando
Hola, interesante proyecto, tengo una duda, como calculaste el valor de 220 ohms, o en que te basaste para este valor de las resistencias que van en las lineas de D+ y D-. Gracias
gracias por el aporte soy nuevo en esto no se nada de eelctronica...pero pues me interesa aprender....estoy aciendo un proyecto.con el cual pueda apagar una television Lg LCD por medio de la pc...el programa lo estoy aciendo en visual basic 2008..no se si me pudieran pasar un idea de como hacer lo...gracias
BUEN APRTE MAN!!! MIRA TENGO UNA PREGUNTA PUEDO UTLIZAR LA PIc 16F84 PARA EL EASYHID??
Hola. Necesito hacer mediante usb que accionando un switch, la pc lo reconozca como que apreté una tecla del teclado o un click de mouse. Si alguien me puede ayudar.
Muchas gracias.
Saludos
hola daniel, pero ya lograstes hacer la coneccion usb entre el pic y la pc?
Primero que todo mil gracias por contestar Carlos. Hice lo que explican arriba. Supongo que logré la conexión (todavía no compré el pic). Ahora lo que no se es qué poner en el buffer del usb para que la PC lo reconozca como si hubiese apretado una tecla o un click de mouse. Capaz es una simple instrucción, pero es la primera vez que programo y no tengo ni idea.
Hice esto. Supongo que me falta únicamente llenar lo de ProgramLoop
'SELECCIONAMOS EL PIC Y LA FRECUENCIA DE TRABAJO (48Mhz PARA USB)
Device = 18F4550
Xtal = 48
'ESTA FILA LA GENERA EL MISMO "EASYHID USB WIZARD" Y LA COLOCA
'JUNTO A ESTE ARCHIVO .BAS DONDE TRABAJAREMOS LA APLICACIÓN
'(EN LA MISMA CARPETA)
USB_Descriptor = "switchludanicDESC.inc"
' Vamos a utilizar una interrupción para mantener viva la conexión
USB
' Entonces deshabilitamos auto polling con los comandos USBIn y
USBOut
USBIN_AUTO_POLL = OFF
USBOUT_AUTO_POLL = OFF
'LOS TAMAÑOS DEL BUFFER USB
Symbol USBBufferSizeMax = 8
Symbol USBBufferSizeTX = 8
Symbol USBBufferSizeRX = 8
Dim USBBuffer[USBBufferSizeMax] As Byte
'VARIABLES AGREGADAS
Symbol LED = PORTC.1 'LED SE VÁ A LLAMAR LA SALIDA DE
PORTC.1
Symbol LED1 = PORTC.2 'LED1 SE VÁ A LLAMAR LA SALIDA DE
PORTC.2
Symbol LED2 = PORTC.3 'LED2 SE VÁ A LLAMAR LA SALIDA DE
PORTC.3
Symbol SW = PORTC.4 'SW SE VÁ A LLAMAR LA SALIDA DE
PORTC.4
Symbol PLUG = PORTC.5 'PLUG SE VÁ A LLAMAR LA SALIDA DE
PORTC.5
Dim SWUSB As Bit 'ESTADO DEL SWITCH (APAGADO O
ENCENDIDO)
Dim A As Word 'VARIABLE MULTIFUNCIÓN
Dim B As Bit 'VARIABLE BIESTADO EN LA QUE RECIBO
EL BOTÓN
'PARA PRENDER Y APAGAR EL SWITCH
'REGISTROS Y BANDERAS
Dim PP0 As Byte System ' REGISTRO DENTRO DEL PIC USBPOLL
STATUS
Symbol CARRY_FLAG = STATUS.0 ' EN ESTADO ALTO SI EL PIC NO TIENE
EL CONTROL SOBRE EL BUFFER
Symbol ATTACHED_STATE = 6 ' SI USB ESTÁ CONECTADO
Symbol TRNIF = UIR.3 ' BAJA SI EL USB ESTÁ OCUPADO
Dim TIMER1 As TMR1L.Word ' access 16 bits of TMR1
A= 0:B = 0 'PONGO LAS VARIABLES A CERO
' Uso una interrupción para mantener la conexión USB viva.
Symbol TimerPreload = $A23F ' aprox 2ms.
On_Hardware_Interrupt GoTo USBServiceInterrupt
GoTo ProgramStart
' ************************************************************
' * the USB interrupt service routine maintains the *
' * connection to the bus - without this routine, a *
' * call to USBPoll, USBIn or USBOut must be made *
' * every couple of milliseconds or so *
' ************************************************************
USBServiceInterrupt:
' no sondear el USB si está ocupado.
btfss TRNIF
bra ExitInterrupt
' Sondear la interface USB.
Call (Check@BusStatus)
Call (Driver@Service)
' Borrar la bandera de interrupción y salir.
ExitInterrupt:
bcf PIR1,0
TIMER1 = TimerPreload
retfie fast
' ************************************************************
' * LAZO PRINCIPAL DEL PROGRAMA *
' ************************************************************
ProgramStart:
GoSub AttachToUSB
Toggle LED1 'CAMBIO EL ESTADO DEL LED1
' Inicializa el timer de interrupción.
TIMER1 = TimerPreload
T1CON = %10000001
PIE1 = %00000001 ' activa la interrupción por
desborde TMR1
INTCON = %11000000 ' activa las interrupciones
globales y periféricas.
ProgramLoop:
USBBuffer[0] = 0 'EL PRIMER BYTE ES DE REPORTE DE
CONEXIÓN
USBBuffer[1] = SW 'EL SEGUNDO BYTE SERÁ EL ESTADO
DEL SWITCH
GoSub DoUSBOut 'TRANSMITO LO ALMACENADO EN EL
BUFFER
DelayMS 1 'DOY UN TIEMPO DE DEMORA
GoTo ProgramLoop 'CIERRO EL LAZO DESPUÉS DE TODO EL
TRABAJO
' ************************************************************
' * RUTINA DE TRANSMISIÓN DE DATOS *
' ************************************************************
DoUSBOut:
If PORTC.0 = 0 Then GoTo PlugMono 'CONTROLO SI SE DESCONECTÓ DE
USB
USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
Return
' ************************************************************
' * ESPERA HASTA QUE EL USB SE CONECTE *
' ************************************************************
AttachToUSB:
If PORTC.0 = 0 Then GoTo PlugMono 'CONTROLO SI SE DESCONECTÓ DE
USB
Repeat
USBPoll
Until PP0 = ATTACHED_STATE
Return
hey amigo cuando lo conecto al usb me lo marca como dispositivo desconocido
me podrias ayudar
hola trabajo en el sector de fabricacion de aparatos terapeuticos y me piden con control de pc,esta interesante tu proyecto,tienes algo listo?
micoreo es [email protected]
amigos soy nuevo en Visual, me descargue visual basic 2008. pero no como abrir el proyecto que trae esta pagina. no se como habrir el form y el codigo... porfavor ayudenme
necesito informacion:
estoy elaborando un proyecto para diseñar una tarjeta electronica que controle varias cargas o motpres pero necesito que me indique en mi lapto las diferentes condiciones de trabajo de cada carga como por ejemplo temperaturas de trabajo,presiones de compresores, consumo en amperios de cada uno es posible hacerlo en visual basic? y como? la placa o tarjeta electronica la estoy diseñando con picaxe.
saludos
german
Hola a todos
me interesa las aplicaciones que se pueden lograr con este compilador "proton" e buscado el instalador y ninguno me funciona correctamente.
si alguno de ustedes me puede ayudar, se lo agradecería mucho.
gracias.
AYUDA...
Tengo el PROTON IDE y estoy compilando esto pero no lo hace a la velocidad adecuada, demora mas de 500ms.
Device 18F2550
XTAL 4
TRISA =0x00
inicio:
PORTA.1=1
DelayMS 500
PORTA.1=0
DelayMS 500
GoTo inicio
hola amigo mario, tengo un problema la pc no me reconoce el dispositivo USB digame que puedo hacer para que me lo reconosca
Está super bueno, pero busco algo mas simple y que se me ha hecho imposible de encontrar, solo quiero prender y apagar el led atravez de mi pc, con el mismo pic y con usb... no quiero que comunique por un display ni nada de eso, quiero solamente un circuito lo mas sencillo posible....si me puedes ayudar te lo agradeceria bastante.
Exelente aporte desde hace ya rato sigo sus publicaciones y siempre me sorprende con algo nuevo no soy un experto en picS pero ya me esta llamando la atencion esto que haces, exito para todos
Saludos a todos :)
Mario solo queria agradecerte ya que hace tiempo queria comunicar mis proyectos con la pc y viceversa, y este post me a ayudado mucho, lastima que ese pic no lo vendan en mi ciudad y tardara en llegar de fabrica solo queda esperar jajaja
disculpa me podrias enviar los archivos que estan el la descarga por que no los puedo descargar me ayudarias mucho con eso
Hola a todos, Antes de nada felicidades por el proyecto.
He estado montando el proyecto, y el led se enciende y apaga si pulso, pero no consigo que la LCD funcione y en el dibujo esquema no se ve claro cual es el pinout.
Alguien podría confirmarme el pinout de la LCD.
LCD ----------------- PIC ( pin)
________________________________
RS ------------------ 36
R/W ----------------- a MASA
E ------------------- 35
Muchísimas gracias
hola compa... esta interesante la comunicacion....
me gustaria hacerla pero manjeo los pic 16f ..si se l puede hacer...
y seria bueno que realies un tuto completo que muestre desde donde se descargan los programas hasta programarlos
esto lo digo por que no he usado visual, y el nuevo programa que dices
se te felicita !!!
amigo una pregunta tengo un proyecto en proteus de una calculadora y lo tengo que acer en fisico como ago para pasarle la infomarcion al PIC18F4520 mocricontroller espero su respuesta que tengo que usar para hacer eso
HOLA AMIGOS, SABEN TRATO DE HACER EL PROYECTO PERO ESTOY USANDO UN PIC 18LF4550 Y NO ME FUNCIONA EL RECONOCIMIENTO A LA PC, TALVEZ SEA POR EL MODELO DE PIC, ?QUE GRABADOR ME RECOMIENDAN PARA ESTA CLASE DE PIC?
mario he cargado el sofware de muestra en mi microcontrolador estoy utilizando el master prog como programador y al cargar el archivo hex me sale un aviso de que faltan los bits de configuracion como puedi solucionar este problema podrias ayudarme
Exelente proyecto, desde aqui Republica Dominicana estoy siguiente los proyectos Neoteo, sobre todo estoy usando este actualmente para conectarlo al proyecto Receptor multibanda.
No se aprecia el circuito y otras imágenes las pueden arreglar por favor
Muy buena información pero no se ven algunas imágenes y no logro encontrar el esquema del circuito, si pudieran arreglarlo creo que hay muchos que lo agradeceríamos. Otra cosa es que al hacer clic a los enlaces que están en el transcurso de todo el texto da error 404.. saludos!!
La liga lleva a una página que propone bajar un .exe seguramente indeseado, no el zip esperado. ¿Cómo baja uno el software propuesto sin meterse en problemas?
Debes iniciar sesión para publicar un comentario.