Brincando com eLua + MBed

 +  

Há algumas semanas atrás, ganhei de presente uma placa de desenvolvimendo MBed LPC1768, doada pelo Mauro Baraldi. Uma doação muito bem recebida, que vai gerar outro post aqui logo logo!🙂

Bom, fiquei olhando pra ela uns dias até que o Dado Sutter, meu jedi preferido e amigo, resolveu me ajudar a colocar eLua neste briquedo e fazer uns leds piscarem. O processo é tão simples que eu não acreditei muito quando vi a coisa funcionado. Vou tentar explicar da forma mais fácil, usando o eLua Builder. Crie sua conta lá e à partir dai, podemos começar! O processo é simples… Assim que estiver conectado, verá uma tela e o botão “New Project”. Clique nele e isto o levará à página onde as definições do build serão definidas.

Nesta nova página, há um campo “Project Name” onde você pode definir o nome do projeto, pois ele ficará guardado na sua conta caso queira reutiliza-lo. Logo abaixo há “Target Platform”, uma lista com as placas alvo que eLua pode ser compilada. Escolha “MBED”. Há outras opções mais avançadas, como colocar os scripts dentro da imagem binária que será gerada, etc, mas isso fica pra outro post. :p

Após este processo, na parte de baixo da página, existe o botão “Save and Generate”. Clique-o e uma janela vai aparecer, oferecendo a imagem binária e o conteúdo todo da imagem, como um arquivo zip. Clique sobre “Download binary image”. Agora é hora de colocar a imagem na placa, escrever um pequeno script para piscar leds e acessar a placa via screen para ver os resultados.

Assim que a MBed é conectada à USB do seu computador, ela é montada como um dispositivo de armazenamento (pelo menos no Mac OS/X e Linux). Algumas distros Linux não montam automaticamente, mas ficam com o ícone ou algo similar para que o dispositivo seja montado. Após montado, copie a imagem binária que foi baixada para dentro da placa. Pronto, agora é só apertar o botão em cima da MBed para reinicializa-la e voilà, eLua já está instalada na sua placa! Ai você me pergunta – “Mas… a placa não faz nada ainda, porque?” – E eu respondo – “Pois ainda vamos escrever o script para rodar nela”. Copie o código abaixo para um aquivo “piscaled.lua”.

-- eLua blinking led example, the Hello World of embedded🙂

local uartid, invert, ledpin = 0, false
if pd.board() == "SAM7-EX256" then
  ledpin = pio.PB_20
elseif pd.board() == "EK-LM3S8962" or pd.board() == "EK-LM3S6965" then
  ledpin = pio.PF_0
elseif pd.board() == "EAGLE-100" then
  ledpin = pio.PE_1
elseif pd.board() == "STR9-COMSTICK" then
  ledpin = pio.P9_0
elseif pd.board() == "LPC-H2888" then
  ledpin = pio.P2_1
elseif pd.board() == "MOD711" then
  ledpin = pio.P1_7
  uartid = 1
elseif pd.board() == "ATEVK1100" then
  ledpin = pio.PB_27
  invert = true
elseif pd.board() == "STR-E912" then
  ledpin = pio.P6_4
elseif pd.board() == "ELUA-PUC" then
  ledpin = pio.P1_20
elseif pd.board() == "ET-STM32" then
  ledpin = pio.PA_5
elseif pd.board() == "STM32F4DSCY" then
  ledpin = pio.PD_13
elseif pd.board() == "MBED" then
  ledpin = mbed.pio.LED1
  mbed.pio.configpin( ledpin, 0, 0, 0 )
elseif pd.board() == "MIZAR32" then
  ledpin = pio.PB_29
  invert = true
else
  print( "\nError: Unknown board " .. pd.board() .. " !" )
  return
end

function cycle()
  if not invert then
    pio.pin.sethigh( ledpin )
  else
    pio.pin.setlow( ledpin )
  end
  tmr.delay( 0, 500000 )
  if not invert then
    pio.pin.setlow( ledpin )
  else
    pio.pin.sethigh( ledpin )
  end
  tmr.delay( 0, 500000 )
end

pio.pin.setdir( pio.OUTPUT, ledpin )
print( "Hello from eLua on " .. pd.board() )
print "Watch your LED blinking..."
print "Enjoy eLua !"
print "Press any key to end this demo.\n"

while uart.getchar( uartid, 0 ) == "" do
  cycle()
end

Este código serve para todas as placas que o builder suporta. Poderia dar uma limpada nele para só servir para MBed, mas decidi deixar assim, mais genérico. Copie este arquivo para dentro da placa da mesma forma que fez com a imagem binária de eLua. Novamente, reinicie sua placa. Agora acessaremos a placa usando screen. Caso não tenha o screen instalado no Mac, pode instalar via HomeBrew. No Linux, isto dependerá do seu gerenciador de pacotes. Deixo a instalação do screen por sua conta :p. No momento, estou no Mac OS/X e para acessar minha placa, usei o seguinte comando:

sudo screen /dev/tty.usbmodem622 115200 8n1

OBS: O dispositivo /dev/tty.usbmodem662 pode mudar, então cheque caso não seja o mesmo. No Linux, com certeza o dispositivo será diferente, algo como  /dev/ttyUSB0, então olhe antes de acessar via screen.

Pressione enter e normalmente você estará dentro do shell eLua. Digite “lua /semi/piscalua.led”. Isto chamará o script que colocamos na placa e o led da MBed deverá comecar a piscar. Para sair do programa, a sequência de teclas Ctrl+z funciona. Comentários são bem-vindos🙂 Espero que você possa fazer muito mais com sua MBed à partir daqui. Até!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s