2ª Noite do Mini PC: Dojo com BeagleBone Black

De Garoa Hacker Clube
Revisão de 18h52min de 16 de outubro de 2013 por Haoji (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar
BeagleBone Black com seus 92 pinos para hardware hacking! Para facilitar a experimentação, fizemos uma base com parte de uma caixa de DVD e fixamos o BeagleBone Black com espaçadores de nylon e o breadboard com seu próprio adesivo.
O circuito do dojo: um display de 7 segmentos, um resistor de 1KΩ e um potênciômetro de 10KΩ. Em vez de pinos, o BeagleBone tem furos, facilitando ainda mais a conexão com breadboards.

Para quem curte hardware hacking, o BeagleBone Black é o mais forte concorrente do Raspberry Pi. Não é tão popular, porque é bem mais novo (lançado em abril de 2013), é um pouco mais caro (USD 45 nos EUA) mas tem uma configuração muito melhor, 2 GB de memória flash embutida com GNU/Linux pré-instalado, interface de programação via Web com JavaScript e Node.js, e muito mais pinos GPIO disponíveis.

Nesta 4ª feira no Turing Clube, a partir de 19:30, vamos fazer um Coding Dojo de hardware hacking, na linha do Dojo Arduino, para experimentar coletivamente e interativamente o Beaglebone Black.

Para quem não conhece, um Coding Dojo é uma forma interativa de conhecer uma nova linguagem ou API. Hoje vamos explorar a API de programação dos pinos de E/S genéricos (GPIO) do BeagleBone Black. Faremos algo parecido com o que fizemos no Dojo com pcDuino na Tosconf 2013.

Não tem pré-requisito para participar, é só aparecer no Garoa!


O que rolou

Não rolou um Coding Dojo conforme planejado: ficamos cerca de 2h explorando o ambiente e a API do BeagleBone Black até começar a ter uma idéia de como implementar o código do dojo.

Aprendemos um pouco de BoneScript, a API para programar o BeagleBone em JavaScript.

Com isso conseguimos implementar o código da animação do display de 7 segmentos. O código ficou bem mais complicado que as variantes Arduino (C++) e pcDuino (Python) porque a bonescript obriga a fazer tudo de modo assíncrono com callbacks.

O código está aqui: anima.js

O próximo passo é aprender a fazer o mesmo com Python.


Upgrade do sistema (Angstrom eMMC Flasher)

Para instalar uma versão mais recente do sistema é necessário um cartão microSD com pelo menos 4GB de capacidade. O download da imagem mais recente para a BeagleBoneBlack pode ser feito Angstrom Distribution (BeagleBone Black)

Após o download do arquivo BBB-eMMC-flasher-2013.06.20.img.xz , extraia-o com:

$ unxz BBB-eMMC-flasher-2013.06.20.img.xz

Conecte o seu cartão microSD, e verifique o seu identificador com o comando dmesg. O último dispositivo da lista deve ser ele (nome parecido com sdb, sdc...) Exemplo de output do dmesg:

$ dmesg
...
[41601.458902] scsi 15:0:0:0: Direct-Access              Flash Disk            PQ: 0 ANSI: 2
[41601.459692] sd 15:0:0:0: Attached scsi generic sg4 type 0
[41601.460763] sd 15:0:0:0: [sde] 493568 512-byte logical blocks: (252 MB/241 MiB)
[41601.461254] sd 15:0:0:0: [sde] Write Protect is off
...

Transfira a imagem para o cartão (Atenção, esse comando irá sobreescrever todo o conteúdo do cartão. Certifique-se de indicar o device correto!):

$ sudo dd bs=1M if=BBB-eMMC-flasher-2013.06.20.img of=/dev/sdX ; sync
(sendo sdX o dispositivo verificado com o dmesg).
  • Após isso, com a beaglebone desligada, insira o cartão microSD.
  • Pressione o botão "User Boot" [(é o botão mais próximo ao slot do cartão microSD).
  • Com o botão pressionado, energize a placa (tanto faz se pelo USB ou com uma fonte de alimentação própria).
  • Os quatro LEDs deverão se acender ao mesmo tempo. Quando isso ocorrer, você pode soltar o botão.

O processo de flashing é demorado (pelo menos 30 minutos) e consome muita energia. Não ligue o cabo ethernet ou dispositivos USB.

  • Quando o processo inteiro for concluído, os quatro LEDs ficarão acesos ininterruptamente. Quando isso ocorrer, demova a alimentação, o cartão e então energize a placa novamente.