O Energia é um software open-source feito para protótipos rápidos com as Launchpads da Texas Instruments. As Launchpads são placas de avaliação de baixo custo dos microcontroladores da Texas, que disponibilizam barras de pinos para experiências rápidas, testes, protótipos ou para hobbistas. Atualmente, pode-se comprar uma Launchpad direto no site da Texas Instruments e ela entrega no Brasil, sem cobrar frete ou impostos – a própria Texas paga esses impostos. Existe um limite de gastos por CPF e apenas pessoas físicas dispõem dessas regalias.
Abaixo é apresentado de forma simples o que a Launchpad mais barata possui. O nome dela é MSP-EXP430G2 (ilustração: glckr.com).
Claro que o Energia foi inspirado no sucesso do Arduino… Ele é um software muito novo, de 2012, usa o mspgcc como compilador dos firmwares criados e seu IDE é basedo no Processing. Esse software, diferente do que se pode inferir, não é mantido pela Texas Instruments. Com o Energia, o desenvolvimento fica bem simples e nem parece que estamos programando um microcontrolador. As inicializações são transparentes e, para tarefas bem simples de acionamento e sensoriamento, o energia é ótimo. Algumas placas que podem ser encaixadas nas launchpads já podem ser controladas utilizando os drivers disponíveis no energia como, por exemplo, o CC3000 Wifi Booster Pack.
Diferente do mbed, o Energia é um software offline – o desenvolvimento não é feito no site do energia e sim no computador do usuário. Talvez esse fato de ser online afaste alguns profissionais do desenvolvimento na nuvem – em muitas ocasiões o sigilo é necessário, claro. Não é possível debug, ou seja, apenas é aconselhável para firmwares pequenos e “pouco perigosos”.
É possível fazer o download para uso em Linux, Windows ou MAC neste link. O último release do Energia é o 0101E0010 e foi esse que testei para esse artigo. Essa versão suporta as Launchpads MSP-EXP430G2, MSP-EXP430FR5739 e Stellaris EK-LM4F120XL. Veja na figura abaixo todos os dispositivos que ela suporta – o mais veloz e com mais recursos deles, sem dúvidas é o ARM® Cortex™-M4F . Ainda não é possível utilizar o energia com a Launchpad do C2000, LAUNCHXL-F28027, mas esse será o próximo port, conforme o site anuncia. O Energia não é instalável e apenas basta executá-lo para que funcione.
O primeiro guia rápido de uso do energia é disponibilizado nesse link. Foi baseado nele que comecei a utilizar a ferramenta. O Forum é bem extenso e possui uma vasta base de conhecimento atualmente. Não encontrei vídeos com explicações detalhadas sobre o energia, apenas de alguns curiosos.
Caso o Code Composer Studio 5 ou 6 não estiverem instalados no PC, é necessária a instalação de uma série de drivers para as launchpads funcionarem adequadamente. O zip dos drivers pode ser baixado aqui.
Utilizando o Energia – Primeira experiência
Escolhi a Launchpad mais básica – MSP-EXP430G2, com um microcontrolador MSP430G2231 para o primeiro programa. A figura abaixo mostra como é o IDE do Energia. Possui duas funções. A setup() é chamada quando o sketch inicia e só é executada uma única vez, depois do start ou reset da placa Launchpad. A usamos para inicializar variáveis, modos como os pinos vão funcionar, iniciar periféricos ou libs de periféricos. A função loop() controla a launchpad e é executada consecutivamente, em loop infinito.
Os botões em vermelho do IDE são, em sequência: Verify, que confere e compila o programa; Upload, que atualiza a placa; New, open e save para os arquivos de projeto e, a direita, existe um serial monitor, uma espécie de terminal serial simples.
Para primeira experiência com a placa e ambiente, plugue a placa na USB, abra o energia e clique como na figura a seguir:
E, então, pressione verify e depois upload. Provavelmente, se tudo correr bem, o LED1 vermelho vai piscar.
Explore os exemplos, leia bastante os códigos. Verá que são intuitivos e o aprendizado é rápido por esse motivo.
Surgiu uma dúvida quando abri o exemplo DigitalReadSerial: De onde vem a informação que o botão é o pino digital 5?
// digital pin 5 has a pushbutton attached to it. Give it a name: int pushButton = 5;
E então descobri que os pinos são mapeados conforme a figura abaixo, conforme a versão de minha placa 1.4, que segue o mesmo que o MSP430G2454 (Se preferir, confira o código). Veja na figura que PUSH2 é o 5.
Utilizando o Energia – Segundo Programa
Compilei diversos exemplos e criei um pequeno programa que verifica um botão, imprime e lê da porta serial e controla leds. Veja abaixo:
/*
Este exemplo foi baseado em uma compilação de exemplos do energia.
Este código pode ser reutilizado, modificado, distribuído.
Descrição:
Inicia os três leds - RED_LED=P1.0, LED1=P1.4, LED2=P1.5. Inicia o pushbutton. Inicializa a serial a 4800 bps.
Se o botão for pressionado, imprime "EMBARCADOS" no terminal.
Se não, o led vermelho pisca.
Se chegar um caracter pela serial e ele for '1', liga o led 1. Se for '2', liga o led 2. Qualquer outro caracter, desliga os leds.
Primeira versão : Thiago Lima - 10/15/2013
*/
#define PUSHBUTTON 5
#define LED1 6
#define LED2 7
// todos os setups iniciais
void setup() {
pinMode(RED_LED, OUTPUT); // Inicializa o pino de led vermelho como saída.
pinMode(LED1, OUTPUT); // Inicializa o pino do led 1 como saída. Deve ser soldado no pino 1.4.
pinMode(LED2, OUTPUT); // Inicializa o pino do led 2 como saída. Deve ser soldado no pino 1.5.
pinMode(PUSHBUTTON, INPUT); // Inicializa o pino pushbutton como entrada
// inicializa a com serial a 4800 bps
Serial.begin(4800);
}
// infinite loop
void loop() {
int buttonState = digitalRead(PUSHBUTTON);
if ( buttonState == 0 )
{
Serial.println("Embarcados"); // Imprime "Embarcados" na serial e pula uma linha
delay(1000); // Espera 1000 milissegundos
}
else
{
digitalWrite(RED_LED, HIGH); // Liga o led vermelho
delay(1000); // Espera 1000 milissegundos
digitalWrite(RED_LED, LOW); // Desliga o led vermelho
delay(1000); // Espera 1000 milissegundos
}
if (Serial.available() > 0) {
int inByte = Serial.read();
switch (inByte) { // Se recebeu algum caracter, verifique
case '1': // Se recebeu '1', Liga o LED1
digitalWrite(LED1, HIGH);
break;
case '2': // Se recebeu '2', Liga o LED2
digitalWrite(LED2, HIGH);
break;
default: // Se recebeu um caracter diferente de '1' ou '2', Desliga os LEDs 1 e 2
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
break;
}
}
}
Compile, grave e teste. É um bom começo para entender como o Energia funciona.












Caro Thiago. Qto ao tamanho do código compilado, fica muito maior que de outros compiladores. Isso é uma das reclamações do compilador do Arduino.
mmm. Bom saber – Vou investigar!
Obrigado pelo comentário e pela dica.
Vou rodar esse mesmo código com o code composer studio v5…
Obrigado Carlos! Obrigado também pelo link do livro que me enviou por e-mail sobre o energia – deixo o link aqui pro pessoal vê-lo também! https://www.amazon.com/Getting-Started-MSP430-Launchpad-Fernandez/dp/0124115888
ótimo artigo