Carambola, que board legal!

Carambola
Carambola

É, essa semana resolvi abrir o baú dos tesouros que ainda nunca havia utilizado e saiu além do UNO32, essa Carambola, da 8devices.

Overview

Essa plaquinha diminuta tem 35mm X 45mm e um custo relativamente baixo pelo que faz. É um hardware que usa WRT portanto, trabalha com o open-source, rodando Linux em seu interior. A placa foi criada com o propósito de entrar na internet das coisas há alguns anos já pelo tempo que foi criada, é impressionante vê-la hoje, com recursos realmente agradáveis. Tudo que envolve a board está disponível para download e o SDK dá total acesso a todos os recursos que ela oferece. Opcionalmente, você pode ter também a board de desenvolvimento, que lhe dará a flexibilidade inicial necessária para desenvolver seus projetos.

Especificações

specs
specs

A tabela mostra exatamente as características desse hardware. Não dá pra comparar com ARM, tratando-se de uma arquitetura MIPS, portanto não considere pouco 8MB de flash e 32MB de RAM e 350MHz. Esse processador opera com a tensão de 3.3v e wireless com banda b,n,g.

Essa board possui 2 interfaces fast ethernet nativas, 1 barramento SPI, 2 interface serial RS232, 1 USB e alguns LEDs integrados. A antena é onboard. Por fim, a parte que a todos mais interessa – um barramento de pinos para acesso I²C,SPI,GPIO,I²S e portas serial e um outro barramento de pinos para acesso à serial DB9.




Board de desenvolvimento

A board de desenvolvimento tem um slot para colocar a Carambola e oferece conexão para os recursos disponíveis na placa como porta serial, USB e as duas portas LAN. Uma das portas LAN tem PoE (Power over Ethernet) 9v-24v. A board tem também uma área de prototipagem e conector jack para alimentação entre 9v e 24v.

Preparando o SDK

E agora a parte legal! Essa board utiliza Linux, compilado pelo SDK OpenWrt. O projeto com as implementações da Carambola são mantidas aqui no GitHub. Para geração do firmware, alguns pacotes serão necessários devido ao cross-compiling. Adianto que você não é obrigado a fazer a compilação, tem firmware pronto, mas de qualquer modo, você pode incluir suas próprias características no sistema e essa board não tem entrada pra cartão, é tudo no firmware mesmo.

Se quer compilar seu próprio firmware mas não tem a menor noção do caminho das pedras, recomendo alguns posts que escrevi sobre o assunto:
Introdução a sistemas embarcados
Toolchains
Boot mínimo
desmonte de imagens de sistema
Remontando o rootfs a partir de binários
Apresentação do Wayland rodando sobre meu sistema de 64MB pra x86
Emulação de ARM para compilação nativa
Trocando o sistema operacional do roteador wireless

Sigamos agora? Baixe então o pacote no git supracitado e instale os seguintes pacotes (para distribuições que utilizam apt):

Talvez alguma dependência mais seja necessária em seu sistema, mas não se preocupe. Se estiver faltando algo, você saberá. Instaladas as dependências, descomprima o pacote baixado no github e entre no diretório gerado para digitar mais alguns comandos:

O SDK baixado do git já tem o .config devidamente configurado para a board Carambola, não sendo necessário nenhum ajuste. Eu adicionei algumas coisas relacionadas ao Netfilter e à manipulação dos LEDs via GPIO, mas não lhe fará falta, se desejar, não modifique nada.

Se gosta de café, vá ao mercado a pé. Escolha um bom café, coador, ajude a senhorinha pegar o pacote de farinha na prateleira de baixo, bata um papo com o caixa do mercado, volte pra casa e prepare pelo menos 1/2 litro de café, mas deixe compilando antes de sair de casa.




Unable to connect to a repository at URL ‘http://svn.nomi.cz/svn/isteve/hotplug2

A URL do hotplug2 mudou, então edite o arquivo packages/hotplug2/Makefile e faça as seguintes alterações:

O processo baixará todos os fontes, construirá o toolchain para cross-compiling, kernel e aplicações escolhidas. Se você optou por compilar o SDK, tenha em mente que esse procedimento varia de máquina pra máquina, sistema pra sistema, instalação pra instalação. No meu caso, tive alguns erros na compilação (que não convém entrar em detalhes) e resolvi desmarcando as partes relacionadas ao erro, uma vez que não tenho interesse nessa parte do sistema. Mas pode acontecer de dar erro em partes importantes e ai mon ami, como diria a “Sandy Jr.”, vai ter que rebolar.

Quando o processo estiver finalizado, a imagem estará disponível no diretório carambola-master/bin/ramips com o nome openwrt-ramips-rt305x-carambola-squashfs-sysupgrade.bin. O nome indica o SDK, arquitetura, modelo, board, filesystem da imagem e sysupgrade indica que essa é a imagem de update do sistema. Todas as partes que compõe o sistema ficam disponíveis nesse diretório. Ao final da compilação esse diretório foi populado assim:

ramips

No video mostro onde fazer o upload, mas eu não quis fazer porque ainda preciso entender como funciona o sistema que vem na board para o caso de a minha compilação ter algum problema, saberei de que se trata.

Conectar-se à Carambola

Particularmente eu não acho que tenha sido uma boa ideia colocar uma porta DB9 nessa board de desenvolvimento porque é feia demais e não me lembro de ter visto notebooks novos saindo com essa porta. De qualquer modo, a conexão pode ser feita por TTL removendo os jumpers J9 (RX input) e J10 (TX output), então conectando um FTDI à 3.3v. Farei desse modo, mas quero aproveitar pra um lembrete – não se esqueça de conectar o terra também para não ter flutuação. Na primeira conexão a tela exibida é essa com uma bela receita de bebida alcoólica:

Carambola TTL
Carambola TTL

Utilizei o GTKTerm, mas poderia ser qualquer um para Linux ou Windows. A conexão é 115200-8-N-1; apenas ajuste a velocidade, os outros parâmetros já estão no padrão. No video mostro um pouco dos recursos disponíveis pela interface web, inclusive o lugar onde você faz o upload da imagem.




A configuração de rede foi basicamente a mudança do IP da interface br-lan, default gateway e nameserver. No meu ultrabook configurei algumas regras de firewall para que a Carambola pudesse se conectar à interface pela interface LAN, cuja interface utilizei para interconexão com a board. Se quiser as regras de firewall para servir de gateway nessa ou em outras implementações, veja nesse post.

Como usar o GPIO da Carambola

Carambola pinouts
Carambola pinouts

Se você já utilizou GPIO no RPi, não deve sentir estranheza ao utilizar os GPIO na Carambola, mas veja que flexibilidade; você pode utilizar o aplicativo gpioctl, ou controlar diretamente através de /sys. Realmente prefiro utilizar via /sys porque facilita criar scripts shell e em um minutinho ter GPIO manipulável. Para testar o GPIO, obviamente vou fazer o tradicional ‘hello world’ da eletrônica, que é acender um LED. Utilizei um LED de 3mm verde, aplicando uma tensão de 2v@15mA no GPIO7. No video você pode ver isso funcionando. É mais ou menos assim:

Isso cria um diretório virtual “gpio7” em /sys/class/gpio. Dentro desse diretório virtual se encontram 2 controladores – direction e value. Vamos colocar o GPIO7 em OUTPUT e aterramos o LED nesse pino. O LED será alimentado em 3.3v e utilizando um resistor de 100ohms. Quando o estado é colocado em LOW, o LED acende e opostamente quando colocado em HIGH.

Se você colocar como INPUT, não será possível escrever em value, ele passará a ser leitura.

Agora para acender o LED, basta mudar o estado em LOW:

Há interrupção também para ser utilizada, como se pode perceber ao listar os arquivos do diretório de GPIO:

Diretório GPIO
Diretório GPIO

Considerações

Essa board é um produto realmente interessante devido aos recursos disponiveis que fazem dela um substituto perfeito para seu roteador wireless. Ela tem uma porta RJ45 WAN, 1 porta RJ45 LAN e WiFi. Sua interface web oferece recursos realmente poderosos e mais implementações podem ser feitas pois o SDK está disponível publicamente. Por fim, a board tem uma série de pinos de I/O, portanto é fácil colocar sua casa na nuvem sem mais dispositivos fazendo conexões de rede, mas se necessário, aí está seu novo roteador wireless para servir de concentrador dos dispositivos da sua casa. Ele possui client MQTT, mas não vi bem a respeito de transformá-lo em um broker. Quando tiver mais experiências com ela, volto a escrever novos tutoriais. Para finalizar, um tour pela interface e a manipulaçao do GPIO pela TTL. Espero que tenha lhe agradado!

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “Carambola, que board legal!

Deixe uma resposta