domingo, 18 de maio de 2014

Embedded Systems - Shape the World!

Em janeiro desse ano descobri que iria haver uma turma de um curso online sobre Embedded Systems (traduzam como queiram: sistemas embarcados, sistemas embutidos, etc...) utilizando como base uma Launchpad da família Tiva-C. Foi a chance que eu tive para poder realmente começar a utilizar uma das placas que eu tinha comprado mas que nunca havia parado de fato para utilizar a fazer algo já que eu havia priorizado começar a aprender MSP430.
Hoje eu consegui concluir o curso.

Missão cumprida!

Esse foi o primeiro curso online que eu fiz e posso dizer que a experiência foi muito boa! Achei um belo pontapé inicial para quem está querendo aprender algo relacionado a esse pequeno universo. 

sábado, 11 de janeiro de 2014

BBB - Primeiros passos

Atualização do linux

Existem diversas distribuições disponíveis para rodar nessa placa, contudo eu preferi continuar com o Ängstrom, não estudei as demais ainda para ver se vale a pena a mudança ou não.
O processo de atualização é bem simples e está bem descrito na página oficial da comunidade. Na primeira vez em que fiz o processo de atualização eu achei meio esquisito pois você não sabe exatamente o que está acontecendo. Segurando o "User/Boot Button" ao energizar a placa, o boot é desviado para o SdCard que está no slot da placa. Se você estiver com um monitor plugado na saída HDMI você vai ter acesso ao shell do sistema operacional que está no cartão e poderá utilizar normalmente enquanto a cópia da imagem é feita em background do cartão SD para a memória eMMC da placa.
Você só tem o feedback de que algo está acontecendo por conta dos LEDs piscando indicando que estão acontecendo leituras no cartão SD e na memória eMMC da placa. Ao fim de quase minutos todo o processo é finalizado e indicado através de acionamento simultâneo dos 4 "Users LEDs". Daí basta remover o cartão e reiniciar a placa que o sistema operacional já estará atualizado. 

Acesso internet via USB

Essa imagem do Ängstrom que é utilizada pela placa automaticamente configura uma conexão de rede sobre USB. Isso é uma mão na roda pois abre a possibilidade de utilizar a internet do computador ao qual a placa estiver conectada, sem necessidade de utilizar cabo ethernet para prover acesso à internet.
Eu utilizo Windows 7 no notebook e ao plugar a placa na USB é automaticamente criada uma conexão de rede nova na lista de conexões.

Nova conexão ao plugar a placa na USB do computador.
 O que deve ser feito aqui é fazer com que a conexão que é utilizada para prover acesso à internet compartilhe o acesso com essa nova conexão criada pela Beaglebone. Clique com o botão direito sobre o ícone da conexão de internet e vá em "Propriedades". Vá na aba "Compartilhamento" e marque a permissão para que outros usuários de rede utilizem a conexão para internet e logo abaixo escolha a conexão criada pela Beaglebone.

Compartilhamento de conexão internet no Windows 7.
Na primeira vez que eu fiz o Windows redefiniu o IP da conexão que criou para o Beaglebone, não lembro o motivo. Como eu já tinha feito roteamento no Beaglebone para um IP que eu tinha escolhido (passo que falo a seguir), eu alterei o IP da conexão do Beaglebone para coincidir com a que eu já tinha feito (192.168.7.1).

Mudança de IP da conexão de Beaglebone.
Do lado da Beaglebone certifique-se de que a mesma está "enxergando" a conexão com o computador mandando um ping para o IP definido (192.168.7.1, no meu caso).

Ping para conexão com Windows.
Adicione na tabela de roteamentdo do kernel esse IP como gateway digitando no shell:

route add default gw 192.168.7.1 (para o meu caso)

Adicione um servidor DNS (utilizarei o do google), para poder navegar internet digitando no shell:

echo "nameserver 8.8.8.8" >> /etc/resolv.conf

Configuração finalizada, se tudo estiver correto a placa já está com acesso a internet funcionando.

Setando data e hora

O hardware da Beaglebone não possui um RTC (Real Time Clock), por conta disso é necessário que o sistema atualize esses dados de outra forma. A melhor maneira é usar um servidor NTP para isso. Aqui nesse link há informações bem detalhadas de como fazer isso.


Acesso Remoto via VNC

Existem várias maneiras de de conectar ao sistema (console via porta serial, USB, SSH, etc), mas eu particularmente gosto da opção de utilizar VNC. 
Como cliente no Windows 7, eu utilizo o Real VNC e ele tem me atendido bem por enquanto.  Para ativar o servidor no lado da Beaglebone primeiro atualize a base de pacotes no shell:

opkg update

Em seguida instale o servidor VNC digitando no shell:

opkg install angstrom-x11vnc-xinit

Basta reiniciar ao sistema que o processo do servidor já irá ser executado automaticamente sempre que o sistema for carregado. No seu cliente, basta fazer a conexão para o IP padrão da conexão USB do Beaglebone 192.168.7.2, caso você não tenha alterado.

Acesso via VNC ao Beaglebone.

quarta-feira, 1 de janeiro de 2014

BBB - Acessórios

Acessórios

Bom, a primeira coisa que eu tentei fazer foi procurar algo para servir como fonte. Encontrei nas minhas tralhas uma fonte de um conversor SATA/IDE para USB que utilizava para ligar meus velhos HDs IDEs na USB do notebook para utilizá-los como HDs portáteis. Como hoje estão aposentados, resolvi utilizar a fonte para alimentar a placa do Beaglebone. A partir dela consigo tirar até 2A da linha de 5V, o que é mais do que suficiente.

Fonte utilizada para alimentação.
A dificuldade foi para adaptar o plugue que faz a interligação com a placa. Encontrei uma fonte que estava queimada, removi o seu cabo e ví que o plugue dele era o que servia na entrada de 5V da placa do Beaglebone. Fiz uma adaptação na fonte e o resultado não foi lá muito elegante, mas completamente funcional (que é o que importa no fim das contas!).

Adaptação do plugue.

Resultado final: quilômetros de cabos!

No final fiquei com quilômetros de cabo para levar alimentação à placa. Eu queria na verdade era ter aberto a fonte e colocado no lugar do cabo original já o cabo final com o plugue que vai na placa. Mas levando em conta a experiência de se abrir esse tipo de fonte (veja aqui), eu acabei desistindo da ideia e, pelo menos por enquanto, ficar utilizando do jeito que está mesmo.

Para utilizar a saída de vídeo tive que bater muita perna para encontrar um cabo com conector do tipo micro-hdmi. Não consegui achar fácil nas lojas de informática comerciais daqui de Recife. Por sorte resolvi entrar numa loja de conveniência (MultiCoisas) e encontrei um adaptador micro-hdmi para hdmi.

Adaptador micro-hdmi.

Como a placa só disponibiliza uma porta USB (na verdade são duas, mas uma delas fica reservada para interface de desenvolvimento), resolvi comprar um conjunto de mouse/teclado sem fio para testar com a placa. O conjunto que comprei foi o "Wireless 800", da Microsoft.

Teclado + mouse.

Teste

Bom, com os acessórios em mãos fiz o teste de "sanidade" (ver se dispositivo está ligando) ligando a placa numa das entradas HDMI da TV utilizando o conjunto teclado/mouse e sendo alimentado pela fonte que adaptei. Na primeira vez que liguei nenhuma imagem apareceu apesar de os LEDs da placa ficarem acesos indicando atividade. Desliguei a placa, dei um reaperto no cabo HDMI e liguei novamente o conjunto. Dessa vez funcionou!
O conjunto teclado/mouse funcionou perfeitamente, não tive nenhum problema. É satisfatório ver a placa funcionando e tudo acontecendo...

Sucesso!
Bom, não fucei muito ainda. Ainda não sei bem por onde começar... Bom, na verdade sei sim, vou começar a ler este livro, me parece ser um bom ponto de partida (sem falar que ele vem com um capítulo só com python, meu principal interesse aqui...). A distribuição Ängstron que acompanha a placa já vem o versão 2.7.3 pré instalada.

Python 2.7.3 pré-instalado