Sin querer menospreciar el trabajo hecho por los desarrolladores de la IDE de Arduino, ha llegado a un punto en que aprecio cierta ayuda(por ejemplo resaltado de sintaxis, autocompletar, monitoraje del puerto serie por otros programas...) cuando edito o construyo un proyecto de arduino o esp8266.
Después de pasar por platformio, geany, e instalar otras IDE's (no hay muchas), he decidido ir a lo que más uso: vim, qtcreator o kate (kdevelop), y ver que formas tengo para poder editar proyectos de arduino.
La forma más estable y que puede aumentar la productividad es vía GNU-Make, gracias al proyecto Arduino-Makefile podemos subir programas a placas arduino.
Clonamos el repositorio en la carpeta de ficheros de arduino:
cd /usr/share/arduino/
git clone git@github.com:sudar/Arduino-Makefile.git
Para usarlo debemos definir algunas variables de entorno, las podemos poner en ~.bashrc o escribir un ejecutable en /usr/local/bin/arduino.mk-env que llamaremos cuando queramos definir las variables.
Con archlinux las variables son:
export ARDUINO_DIR=/usr/share/arduino
export ARDMK_DIR=/usr/share/arduino/Arduino-Makefile
export AVR_TOOLS_DIR=/usr/share/arduino/hardware/archlinux-arduino/avr
Haciendo esto ya podremos escribir el Makefile en el proyecto que queramos. Si queremos probarlo, podemos ir a los ejemplos que incluye Arduino-Makefile.
cd /usr/share/arduino/Arduino-Makefile
cd examples/Blink
y ahí tirar make.
Hay una estupenda documentación sobre como instalar y usar en el proyecto Arduino-mk. Pero si lo configuras correctamente podrás subir a la placas con un simple
make upload
Esp8266
Que pasa con las placas Esp8266? No, Arduino-mk no tiene soporte para esas placas, pero está el proyecto makeEspArduino , que de forma similar nos permite construir y subir proyectos a la placa.
Hay también documentación. En mi caso he hecho:
cd /usr/share/arduino/
git clone https://github.com/esp8266/Arduino.git esp8266
cd esp8266
git checkout tags/2.4.1
(
See releases
para versión idonea)
cd tools
python get.py
Y podremos probarlo enchufando la placa y tirar
make -f makeEspArduino.mk ESP_ROOT=~/esp8266 DEMO=1 flash
Hasta aquí ya podemos hacer un bypass de la IDE de arduino.
Qtcreator
últimamente con desarrollos en QT me siento cómodo usando qtcreator, ofrece una interficie que ayuda bastante. Si bien se puede importar un proyecto genérico que tenga el Makefile, deberemos definir las variables(puerto, placa, baudrate...) cada vez. Es por eso que una plantilla de proyecto vendría bien, y basándome en el trabajo hecho por https://github.com/cleitonsouza01/qt-creator-arduino (que fallaba en la versión 4.6 de qtcreator), he creado una plantilla https://github.com/aleixq/qtcreator-arduino.mk-template para poder empezar rápidamente un proyecto de arduino,
Lo mismo hice para placas Esp8266, basándome en el proyecto https://github.com/jontio/qt_esp8266_wizard, cambiando algunas restricciones que impedían ejecutarse en gnu-linux.
Eel proyecto de plantilla para arduino está en https://github.com/aleixq/qtcreator-arduino.mk-template.
El proyecto de plantilla de Esp8266 para qtcreator está en https://github.com/aleixq/qtcreator-makeEspArduino-template
Kdevelop
En el caso de kdevelop también lee directamente proyectos con Makefile, pero siqueremos tener un acceso directo a la construcción de cada target del proyecto como se cuenta en el manual de kdevelop, debemos redefinir los targets que usemos, ya que sino no puede leer los targets de un fichero incluido en el Makefile.
include /usr/share/arduino/Arduino-Makefile/Arduino.mk
up:
make upload
Para disfrutar del autocompletado de código, debemos añadir las rutas de las librerías (tal como hacíamos con qtcreator con el fichero nombredeproject.includes) en
[KDEVELOP_PROJECT]/.kdev_include_paths
(más info)
thank you share the article very useful, one for me in completing my task, I will write a reference for this blog. thanks a lot.
Arduino