Hace poco decidí probar el entorno de desarrollo PlatformIO como nuevo entorno de desarrollo para los proyectos con micro-controladores, y en esta oportunidad aproveché para documentar la configuración de este entorno para utilizar las librerías de Bosch BSEC Software Library, ya que (al igual que en caso del IDE de Arduino), su instalación y configuración presenta diferencias con la manera en la cual habitualmente instalamos librerías para sensores de Arduino.

Si bien este entorno permite instalar dentro de cada proyecto todas las librerías utilizadas, en este caso voy a instalar la librería de manera global, para que pueda ser utilizada por todos los proyectos. Las modificaciones para instalarla en un proyecto en particular son simples, y las voy a comentar al final del post.

Lo primero que debemos hacer es ir a “PIO Home” y en la sección “Libraries” buscar BSEC.

Una vez listada, la seleccionamos, y le damos instalar. De esa manera instalaremos la librería de manera Global.

NOTA: La placa de desarrollo que voy a utilizar para compilar el ejemplo es la NodeMCU V2, basada en el Espressif ESP8266, y para que compile correctamente, debemos realizar unas modificaciones al Script del “Linker”.

Debemos modificar el archivo “eagle.app.v6.common.ld.h” que se encuentra en el directorio donde está instalado el paquete esp8266. En Mac OS X, la ruta es la siguiente:

"/Users/[usuario]/.platformio/packages/framework-arduinoespressif8266/tools/sdk/ld"

Siguiendo las indicaciones del instructivo de BOSCH, agregamos la siguiente línea:

*libalgobsec.a:(.literal. .text.*)

Finalmente, debemos agregarle un “flag” para que la librería compile. Esto lo hacemos agregando la siguiente línea en el archivo “platformio.ini” del proyecto:

build_flags = -L /Users/[usuario]/.platformio/lib/BSEC\ Software\ Library/src/esp8266 -lalgobsec

NOTA: Las barras invertidas son para escapar los espacios del nombre de la librería BSEC.

Ahora podemos cargar alguno de los ejemplos provistos por Bosch para el sensor, y el proyecto debería compilar sin errores. Debajo se muestra cómo “basic.ino” compila exitosamente.

Proyecto “basic.ino” provisto por Bosch compilado exitosamente con la Librería BSEC para ESP8266.

Por último, si queremos almacenar la librería BSEC dentro del proyecto, podemos descargarla desde el repositorio GitHub, y guardarla en el directorio que PlatformIO crea para tal efecto (/lib). Luego, sólo deberemos actualizar la ruta que incluimos para el flag de compilación en el archivo “platform.io”.