Introduzindo a Beaglebone

- por Sergio Prado

Categorias: Beaglebone, Hardware Tags: , , ,

Sou fã confesso da Beagleboard. Na minha opinião, é hoje a melhor plataforma para se aprender Linux embarcado e trabalhar com software livre. Muitos projetos, boa documentação e custo acessível.

Já escrevi aqui alguns artigos sobre esta plataforma, e já trabalhei também em alguns projetos comerciais baseados nela. E quando fiquei sabendo do lançamento da Beaglebone, não pensei duas vezes em comprar. Um mês e meio depois (sim, ela ficou um bom tempo presa na alfândega!), cá estou eu e o Arthur com nosso novo brinquedinho!

A Beaglebone, assim como a Beagleboard, também é um projeto de hardware aberto, porém com um design um pouco mais simples, e consequentemente mais barato. É uma plataforma de prototipação, e nesse sentido tem objetivos bem parecidos com o Arduino, já que usa o conceito de shields (no caso da Beaglebone veremos que estas placas de expansão chamam-se capes). Mas ela não veio para substituir ou competir com o Arduino, muito menos com a Beagleboard ou com a Raspberry Pi – falaremos sobre isso mais adiante. Por hora, que tal darmos olhada no hardware?

HARDWARE

A Beaglebone é baseada no processador AM3359, um ARM Cortex-A8 da Texas Instruments que roda em até 720MHz, e possui 32K de cache L1, 256K de cache L2, 176K de ROM e 64K de RAM interna. Além disso, possui acelerador gráfico 3D, controlador LCD de 24 bits e controlador para a interface touchscreen.

A placa vem com 256MB de SDRAM, e assim como a Beagleboard-xM, não possui memória flash. Você precisa usar o cartão SD como unidade de armazenamento. Pode ser alimentada tanto por uma fonte externa quanto pela porta USB device. Esta mesma porta USB serve também de conexão serial (console), graças ao adaptador USB->Serial/JTAG incluido no design do hardware. Possui uma E2PROM de 32KB ligada ao barramento I2C, além das interfaces USB host, Ethernet, cartão SD/MMC e 4 leds que podem ser controlados pelo usuário.

O restante das interfaces de I/O estão disponíveis em 2 conectores de expansão de 46 pinos que podem fornecer diferentes conexões e barramentos como SPI, I2C, GPIO, LCD, HDMI, VGA, MMC, RS232, CAN, A/D, carregador de bateria, etc!

São nesses conectores que você pode plugar as placas de expansão, chamadas de capes. Cada beaglebone aceita até 4 capes, e cada cape deve ter uma E2PROM endereçável ligada ao barramento I2C, que vai ajudar o sistema operacional a identificá-la e configurar os I/Os de acordo. A imagem abaixo é uma cape com saídas de áudio e vídeo:

No momento em que escrevo este artigo, o preço da Beaglebone varia de $79 a $89 (FOB), dependendo do distribuidor e se você quer adquirir apenas a placa ou o kit completo. Convertendo para nossa moeda, e incluindo frete e impostos, deve sair em torno de R$350,00. A lista oficial de distribuidores encontra-se em http://beagleboard.org/buy.

O kit completo vem com a placa, um cabo USB e um cartão SD de 4G com a documentação e uma imagem do Angstrom pré-instalada.

E por falar em imagem, que tal colocar esta plaquinha pra funcionar?

SOFTWARE

Alimente a Beaglebone diretamente com o cabo USB, ou ligue uma fonte externa de 5V. O led de Power irá acender, e os leds USER0 e USER1 começarão a piscar. A Beaglebone será identificada na sua máquina de desenvolvimento como um dispositivo de armazenamento (como se fosse um pendrive). Você verá um dispositivo chamado BEAGLE_BONE com um monte de arquivos, incluindo as imagens do bootloader e do kernel, documentação e drivers para sistemas operacionais menos evoluidos :)

O primeiro passo é abrir o arquivo README.htm no seu navegador e dar uma lida. Este arquivo contém algumas orientações gerais sobre o funcionamento da Beaglebone.

Neste momento, a distribuição Angstrom que vem com a placa já esta rodando. E você pode acessá-la de algumas formas.

ACESSANDO VIA CONSOLE

Para acessar via console no Linux, você vai precisar inserir o modulo ftdi_sio, conforme abaixo:

$ sudo modprobe ftdi_sio vendor=0x0403 product=0xa6d0

Serão criados dois dispositivos tty (no meu caso foram criados o ttyUSB0 e o ttyUSB1). O segundo (ttyUSB1) é a console. Configure sua aplicação de terminal favorita com 115200 8N1 e teste o acesso à console:

U-Boot SPL 2011.09-00000-gf63b270-dirty (Nov 14 2011 - 10:37:14)
Texas Instruments Revision detection unimplemented
OMAP SD/MMC: 0
reading u-boot.img
reading u-boot.img
 
U-Boot 2011.09-00000-gf63b270-dirty (Nov 14 2011 - 10:37:14)
 
...
 
.---O---.                                           
|       |                  .-.           o o        
|   |   |-----.-----.-----.| |   .----..-----.-----.
|       |     | __  |  ---'| '--.|  .-'|     |     |
|   |   |  |  |     |---  ||  --'|  |  |  '  | | | |
'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'
                -'  |
                '---'
 
The Angstrom Distribution beaglebone ttyO0
 
Angstrom v2011.10-core - Kernel 3.1.0+
 
beaglebone login:

O usuário é root e a senha vazia.

Se você tiver problemas, ou estiver usando outro sistema operacional, o arquivo README.htm mencionado mais acima possui algumas instruções adicionais que podem ajudá-lo.

CONECTANDO VIA REDE

A Beaglebone tem um cliente DHCP rodando, então quando você ligá-la na sua rede (supondo-se que sua rede tenha um servidor DHCP), ela irá pegar um IP automaticamente.

Você pode consultar o IP atribuído à Beaglebone acessando-a via console, verificando o arquivo info.txt ou listando os logs do seu servidor DHCP.

Com a conexão de rede funcionando, você consegue acessar a Beaglebone por SSH (usuário root e sem senha):

$ ssh root@192.168.1.107
The authenticity of host '192.168.1.107 (192.168.1.107)' can't be established.
RSA key fingerprint is d6:67:cf:08:d0:87:12:d9:12:c9:37:d9:81:bd:aa:db.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.107' (RSA) to the list of known hosts.
root@192.168.1.107's password:
root@beaglebone:~#

A Beaglebone tem um servidor rodando na porta 80 que disponibiliza uma apresentação do projeto. Supondo que o IP da Beaglebone seja “192.168.0.7”, você consegue acessar este servidor simplesmente digitando no seu navegador “http:/192.168.0.7/”:


A Beaglebone tem também um outro servidor na porta 443 provendo acesso à console do equipamento via SSH de dentro do seu navegador! Supondo novamente que o IP da Beaglebone seja “192.168.0.7”, você consegue acessar este servidor digitando no seu navegador “https:/192.168.0.7/”. Obs: a Beaglebone usa o GateOne, um terminal e cliente SSH desenvolvido em HTML5. Portanto, você precisa de um navegador com suporte à HTML5.

Mas o mais legal mesmo é a IDE embarcada no dispositivo e que pode ser acessada pelo navegador na porta 3000. Supondo mais uma vez que o IP da Beaglebone seja “192.168.0.7”, você consegue acessar esta IDE digitando no seu navegador “http:/192.168.0.7:3000”


Esta IDE embarcada na Beaglebone é a Cloud9 IDE, uma interface que roda no seu navegador, e que possibilita escrever, executar e debugar aplicações escritas em JavaScript e baseadas em um framework chamado node.js.

O conceito é bem parecido com o do projeto mbed que recebeu um artigo um tempo atrás. Em ambos os projetos, a IDE roda no navegador. No caso do mbed, a IDE roda em um servidor na Internet. E no caso da Beaglebone, a IDE roda dentro dela mesmo!

E o que é esse tal de node.js? Segundo a página do projeto, o node.js é uma plataforma que roda em cima do V8 (engine de JavaScript do Google) desenvolvida para se construir aplicações de rede rápidas e escaláveis. Na prática, você escreve programas em JavaScript que são interpretados e executados dentro da Beaglebone por uma aplicação chamada “node”. Ou seja, você trabalha com uma linguagem de script, mais amigável e com bibliotecas prontas para interfacear com o hardware e com o sistema operacional.

Por exemplo, esta é uma aplicação escrita em node.js que faz o led USER3 da Beaglebone piscar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var bb = require('./bonescript');
 
var ledPin = bone.P8_3;
var ledPin2 = bone.USR3;
 
setup = function() {
    pinMode(ledPin, OUTPUT);
    pinMode(ledPin2, OUTPUT);
};
 
loop = function() {
    digitalWrite(ledPin, HIGH);
    digitalWrite(ledPin2, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    digitalWrite(ledPin2, LOW);
    delay(1000);
};
 
bb.run();

BEAGLEBONE X ARDUINO

A Beaglebone veio para preencher uma lacuna existente em desenvolvimento rápido e prototipagem para soluções high-end com Linux. Por esse motivo, não tem como deixar de fazer uma comparação com o Arduino. Ambos foram projetados com o conceito de expansão para facilitar a prototipagem: o Arduino com seus shields e a Beaglebone com seus capes. Ambos também possuem um ambiente de desenvolvimento que roda em qualquer SO, linguagem mais user-friendly, bibliotecas prontas, etc.

Mas não creio que seja uma questão de concorrência. O Arduino continuará sendo usado para acender leds, controlar motores e fazer seu robô andar. Agora, se você precisar de um sistema de reconhecimento facial dentro do seu robô, é aí que pode entrar a Beaglebone.

BEAGLEBONE X BEAGLEBOARD-XM

De forma alguma a Beaglebone é uma evolução da Beagleboard-xM. Muito pelo contrário, o hardware da Beagleboard-xM é melhor. Eles apenas são projetos com conceitos diferentes. Se você quer mais processamento, memória, portas USB e conexão de vídeo, vai de Beagleboard-xM. Já se o que você quer é um hardware fácil de expandir e de baixo custo, vai de Beaglebone.

BEAGLEBOARD X RASPBERRY PI

Também não faz sentido a comparação. O objetivo do projeto Raspberry Pi é o de ser um PC de baixo custo. Tá certo que, devido ao seu baixíssimo custo ($25 na versão normal e $35 na versão com Ethernet), muita gente vai querer tirar uma casquinha e até usar em algum projeto. Ou seja, se o que você precisa é de algo próximo à um computador pessoal (porta USB, saídas de áudio e vídeo) e de baixissimo custo, você pode pensar em usar a Raspberry Pi. Se você quer algo com mais capacidade de processamento, com diferentes interfaces de I/O e capacidade de expansão, pode pensar em usar a Beaglebone.

O negócio agora é esperar a evolução do projeto, as placas de expansão que serão lançadas (ainda não me acostumei com o nome “capes”), e se o uso do framework node.js em Linux embarcado vai se popularizar.

Enquanto isso, diz aí: o que você achou da Beaglebone? Tem intenção de comprá-la para usar em algum projeto?

Um abraço,

Sergio Prado

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.