Autor Tema: Error con ENC28J60 en Proteus (SOLUCIONADO)  (Leído 648 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pixipi92

  • PIC10
  • *
  • Mensajes: 3
Error con ENC28J60 en Proteus (SOLUCIONADO)
« en: 18 de Abril de 2020, 05:38:44 »
Muy buenas a todos!
Mi nombre es Ricardo y soy nuevo por aquí. Os he leido mucho y más de una vez me ha sacado de algún problemilla, gracias!. Esta vez me toca exponer a los sabios mi problema porque llevo dias tratando de encontrar la solución y no lo localizo, sin más os expongo el problema.

Estoy haciendo un proyecto de IoT con Home Assitant+MQTT+sensores conectados a Arduino.
Cuando hago un proyecto de esta envergadura voy dando pasitos de hormiga, y según voy teniendo avances lo voy juntando con mi proyecto y ya lo adapto para encajarlo.
Actualmente ya tengo el servidor MQTT funcionando y el Home Assistant. Mi siguiente objetivo es integrar un sensor para que envíe por el MQTT la señal. La solución fácil? Dejarme de simuladores y montarlo sobre un Arduino real con su shield ethernet(sin duda, me muero de ganas de que llegue este momento!), el problema es que me encuentro estudiando por unos meses en el otro lado del mundo y no tengo aquí mis juguetes para llevarlo acabo, y como imagino os pasará igual, durante la cuarentena por el coronavirus me ha picado el gusanillo, en mi caso estoy descubriendo la domótica "low cost". No puedo comprar nada porque están todas las tiendas cerradas y con todo el tiempo libre estoy tratando de ir avanzando un poquito. (Todo esto no es relevante pero lo cuento para poneros en situación, disculpad.)

Mi actual objetivo es tratar de hacer la simulación de un pulsador conectado al arduino que envía al servidor MQTT una señal de HIGH al ser pulsado.
El Arduino lo estoy conectando a la red con el módulo ENC28J60.
He realizado varias pruebas y he podido hacer funcionar un servidor web en local mediante la libreria EtherCard.h de Arduino, pero el problemilla es que esta librería no es compatible con la del MQTT (PubSubClient.h).
Después de investigar he descubierto que se puede usar la libreria de Arduino de PubSubClient.h con EtherCard.h, asique me he puesto manos a la obra a trabajar con esta librería y ahora viene lo divertido!!
En mi caso trabajo con Proteus 8.8 SP1 y para conocer el código he abierto el ejemplo (file->Open Sample Proyect) "Arduino with ENC28J60 Ethernet Shield". En mi equipo tengo instalado WINPCAP, VMware, VirtualBox... e inicialmente no me funcionaba. Revise la configuración de las tarjetas de red, y dado que la IP que da por defecto (192.168.95.6) no estaba en mi rango (192.168.0.X), agregue manualmente una segunda IP al adaptador. Shit... seguia sin funcionar. Después de pelearme un montón descubrí que solo me funciona si deshabilito la tarjeta de red del WIFI al momento de lanzar la simulación. Primera batalla superada!
Y ahora si que sí viene lo más divertido!! He conseguido lanzar el ejemplo y funciona! Mi siguiente objetivo es cambiar la IP una del rango 192.168.0.X y al cambiarla resulta que ya no consigo llegar haciendo PING. Mi siguiente idea es hacer un cambio menor por si el problema esta en la red y decido hacer un cambio muy sencillo a 192.168.95.7. Al cambiarla veo que sigo sin llegar asique ya empiezo a sospechar que esto no iba a ser tan fácil... En el "source code" que se carga al Arduino viene inicialmente un texto simplemente describiendo que hacen los pines y decido borrar un carácter para hacer la prueba y... tachán!! sigue fallando!
En este punto me doy cuenta que el fallo viene cuando modifico cualquier cosa del archivo. Cuando lo abres por primera vez coge una compilación del archivo que ya tiene guardado Proteus, pero si modificas algo necesita compilar nuevamente y es ahí cuando ya no me funciona.

Buscando por Internet localice un BLOG  que justo hace el ejemplo que estoy tratando de probar https://anibalismo.wordpress.com/2016/05/19/arduino-y-enc28j60-en-proteus-isis-con-foticos/ y leo que le funciona perfectamente! Decido descargarme la prueba que el ha compartido y como esperábamos, funciona! Afortunadamente nos ha incluido el .ino, así que decido hacer la prueba de modificarlo y compilarlo con compilador de Arduino para cargar el archivo .hex que genera en mi equipo y nuevamente vuelve a fallar :shock:
En este punto ya no entiendo nada. He probado a programar las placas de arduino haciendo otro tipo de pruebas de encender pines, servidor web, mover motores etc y todas funcionan perfecto, por lo que el compilador funciona correctamente y la configuración de la placa para la que se programa tambien funciona...

Con todo esto ya si que estoy atascado...

Pido disculpas por la "chapa" que os he pegado, pero como veis es un tema un poco complejo de exponer.
Mil gracias a todos!!
« Última modificación: 25 de Abril de 2020, 23:20:58 por pixipi92 »
Si lo vas a hacer más de dos veces, automatiza

Desconectado pixipi92

  • PIC10
  • *
  • Mensajes: 3
Re:Error con ENC28J60 en Proteus
« Respuesta #1 en: 25 de Abril de 2020, 02:53:41 »
Buenas, gracias a todos,

Finalmente localicé el problema hace unos días.
El problema estaba eN que cuando se compila de nuevo, proteus utiliza las librerías que tienes de arduino. En mi caso la librería que me había bajado estaba ma y aunque no daba ningún error al compilar, luego no funcionaba correctamente.

Descargue la librería EtherCard.h nuevamente, se la instalé a arduino y ahora si funciona al compilar, tanto desde arduino como desde proteus.

Gracias por vuestra ayuda!
Si lo vas a hacer más de dos veces, automatiza

Desconectado Francisco IoT

  • PIC10
  • *
  • Mensajes: 1
Re:Error con ENC28J60 en Proteus (SOLUCIONADO)
« Respuesta #2 en: 03 de Junio de 2020, 01:12:15 »
Que tal

Como es que lograste solucionarlo? tambien estoy trabajando con el ejemplo de https://anibalismo.wordpress.com/2016/05/19/arduino-y-enc28j60-en-proteus-isis-con-foticos/.

Comentas que hay que descargar la la librería EtherCard.h de nuevo, pero la libreria que se utiliza es la UIPEthernet.h, ya cambie la version con el gestor de librerias sin embargo no me genera un archivo .hex que funcione.

Te agradezco mucho la ayuda que me puedas brindar.

Saludos !

Desconectado pixipi92

  • PIC10
  • *
  • Mensajes: 3
Re:Error con ENC28J60 en Proteus (SOLUCIONADO)
« Respuesta #3 en: 28 de Julio de 2020, 02:06:43 »
Que tal

Como es que lograste solucionarlo? tambien estoy trabajando con el ejemplo de https://anibalismo.wordpress.com/2016/05/19/arduino-y-enc28j60-en-proteus-isis-con-foticos/.

Comentas que hay que descargar la la librería EtherCard.h de nuevo, pero la libreria que se utiliza es la UIPEthernet.h, ya cambie la version con el gestor de librerias sin embargo no me genera un archivo .hex que funcione.

Te agradezco mucho la ayuda que me puedas brindar.

Saludos !

Buenas Francisco!

Perdona he estado un tiempo sin conectarme por aqui.

Yo lo consegui solucionar descargando la libreria desde otra fuente diferente. Pruebalo y me dices sino para ver como mas te podemos ayudar
Si lo vas a hacer más de dos veces, automatiza