Programar para arduino y otros microcontroladores desde la línea de comandos

Cuando llega a tus manos una placa arduino o compatible, terminas siempre bajando el arduino IDE, un editor de código ‘visual’ para programar, depurar, compilar y enviar a la placa; que está muy bien. Pero el pequeño ‘problema’ es que necesita de java.

Para los que se la cascan con la terminal, hay una manera de hacer lo que se hace con arduino IDE, desde ella.

Platformio

Platformio está escrito en python, por un ucraniano que toca el piano. Las personas que tocan el piano, suelen ser siempre de fiar. Porque se sientan sobre unas teclas, las pulsan y suenan cosas bonitas.

Platformio, no sólo soporta microcontroladores AVR, típicos en arduino sino otros muchos

Además es compatible con arquitecturas ARM, lo que permite que podamos programar para arduino desde la raspberry pi, por ssh, conectando la placa al usb de la pi. Puede ser un buen arquetipo usar la raspberry pi para guardar datos que provengan de sensores de arduino, y poder reprogramar sin armar mucha fiesta y sin necesidad de tener un reactor nuclear funcionando todo el día recolectando datos.

Instalación

# apt-get install curl
# python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"

Hecho esto ya tenemos instalado el tema, y el comando ‘platformio’ disponible desde el intérprete de comandos.

Viendo placas compatibles

# platformio boards

Devuelve el listado de todos los microcontroladores/placas que soporta, detecta el tuyo y copia tu tipo, en el caso que atañe aquí es ‘leonardo’.

Creando el primer proyecto

# mkdir proyecto1
# cd proyecto1
# platformio init --board=leonardo

Respondemos yes yes yes a todo con cuidado de que no te la metan doblada, y ya tenemos una estructura básica generada.

Programando hola led parpadeante y enviando a la placa

Haciendo un ls, veremos el directorio src/ . Ahí la meteremos.

# cd src
# nano hola.ino

Aquí ya escribimos código, por ejemplo unos parpadeos para los LEDs integrados de una olimexino basada en leonardo, con MCU de atmel, atmega32u4.

int led1 = 7; 
int led2 = 9;

void setup() {  
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);  
}

void loop() { 
digitalWrite(led1, HIGH);  
delay(200);  
digitalWrite(led1, LOW);
delay(200);
digitalWrite(led2, HIGH);
delay(200);
digitalWrite(led2, LOW);  
}

Guardamos.

Compilando y subiendo a placa

Sobre la raiz del proyecto

# cd ..
# platformio run

El primer run instalará la paquetería faltante que se requiere, yes yes yes, el run, compilará, depurará y enviará a la placa

Llevo unos meses empajillado y se me ha desactualizado

# platformio upgrade

Actualiza platformio

nadie Written by:

2 Comments

  1. petate
    Julio 14
    Reply

    que bueno moreno

  2. anonima
    Julio 14
    Reply

    no te copies petate jiji

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax