Qtcreator o Kdevelop en lugar de IDE Arduino

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,

wizard de qtcreator

qt build 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)

Comments

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


Add new comment

The content of this field is kept private and will not be shown publicly.

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.