Esta librería de Arduino no funciona en ESP. ¿Como la hago funcionar?

Introducción

Te gustaría usar una librería de Arduino con ESP8266 y no funciona. No aparece en la lista de las bibliotecas verificadas para trabajar con ESP8266. No puedes encontrar ninguna evidencia en internet de que sea compatible.

¿Cuáles son las probabilidades de hacerla funcionar?

Identifica los problemas

Comienza buscando todos los síntomas de que no es compatible con ESP8266. Lo ideal sería utilizar sketch de ejemplo proporcionados con la librería. Luego enumera todos los problemas que puedas identificar.

Es probable que veas uno o más de los siguientes:

  • La compilación arroja errores.
  • No hay problemas con la compilación, pero la aplicación se reinicia debido a una excepción o watchdog (WDT).
  • La aplicación parece funcionar pero no funciona como se esperaba. p.ej los resultados del cálculo son incorrectos.

Armado con la lista de problemas, contacta con el autor de la librería solicitando comentarios. Si los problemas son legítimos, solicita su ayuda para implementarlo en ESP8266. Siendo específico tienes mayores posibilidades de convencer al autor para que te ayude, ya sea actualizando la biblioteca o guiándote para resolver los problemas.

Repáralo tú mismo

Si el autor de la librería no puede brindarte soporte, evalúa las posibilidades de solucionarlo tú mismo.

Errores de compilación

Problema: El compilador se queja sobre el uso de registros AVR (PORTx, PINx, TCR1A, etc.).

Solución: Comprueba si el uso de los registros está bien localizado en algunas funciones, intenta reemplazar el uso de registros GPIO con digitalRead / digitalWrite, el temporizador registra el uso con funciones timerX_. Si el uso de los registros AVR ocurre en todo el código, es posible que esta librería no valga la pena. También puede valer la pena verificar si alguien consiguió que la biblioteca trabaje en ARM (Due / STM), PIC, etc. Si este es el caso, tal vez ya exista una versión de la biblioteca que use API de Arduino en lugar de registros sin formato.

Problema: El compilador se queja de <avr/pgmspace.h>..

Solución: modifica la librería agregando inclusión condicional a «pgmspace.h» de ESP.

#ifdef ESP8266
  #include <pgmspace.h>
#else
  #include <avr/pgmspace.h>
#endif

Excepciones / Reset por Watchdog

Para solucionar los reinicios, ve a la sección de la FAQ: «Mi ESP se bloquea al correr el programa. ¿Como lo resuelvo?».

Problemas de funcionalidad

Problema: La aplicación funciona pero devuelve valores numéricos extraños.

Solución:: Comprueba el uso del tipo int en la librería. En AVR, los enteros son de 16 bits y en ESP, son de 32 bits (como en ARM).

Problema: Algunos dispositivos con control de tiempo crítico como un servo controlador o una tira de LEDs tienen problemas y tienden a cambiar aleatoriamente la posición o el patrón mostrado.

Solución:: Comprueba el uso de interrupciones que puedan entrar en conflicto con la actividad WiFi de ESP8266. Puede desactivar temporalmente la comunicación WiFi WiFi.mode(WIFI_OFF); para comprobar si ayuda.

Conclusión

Identifica problemas de compatibilidad y pide ayuda al autor de la librería. Si lo intentas solo, verifica el uso de la funcionalidad de acceso a bajo nivel del controlador. Utiliza ESP Exception Decoder si se enfrenta con excepciones / reset watchdog.

La buena noticia es que la cantidad de librerías no compatibles con el ESP8266 se está reduciendo. La comunidad de entusiastas de ESP8266 está creciendo. Si no puedes resolver los problemas por tu cuenta, existen muchas probabilidades de que puedas encontrar a alguien más que te ayude.

FAQ :back: