Internet das coisas

Roboteador, um robô construído com sucata de roteadores.

Neste artigo vou ensiná-los a construir um robô completo, usando um roteador descartado por falha em portas de rede, que pode ser operado pelo smartphone, sem precisar baixar nenhum aplicativo de loja online.

IMG_20161114_154051682

Um dos princípios que sigo ao implementar uma ideia para algum artigo é fazê-lo da forma mais otimizada possível quanto à complexidade e também quanto ao seu custo total. Por esse motivo, utilizo ao máximo ferramentas comuns mesmo tendo acesso à uma miríade de ferramentas avançadas.

Outro fator importante para o cumprimento desse princípio é a utilização de tecnologias livres, e hoje vamos falar sobre uma tecnologia livre chamada OPEN-WRT, um projeto aberto e livre que possibilita trocar o software que vem instalado de fábrica nos roteadores, chamado de firmware, por um software que pode ser utilizado e modificado pelas pessoas.

openwrt

O OPEN-WRT permite, por exemplo, a existência de grandes revoluções tecnológicas como as REDES LIVRES, onde pessoas instalam uma versão do OPEN-WRT especialmente preparada para libertar as pessoas da opressão das operadoras de telecomunicações.

Vou dedicar um artigo sobre às redes livres futuramente, mas recomendo clicar no link acima e “entrar para a causa rebelde!!!”. Eu mesmo estou montando uma rede mesh aberta e livre aqui no lab, e tenho planos de esticá-la pelo bairro todo, liberando uma parte da minha banda de internet para as pessoas que precisam.redeslivres

 

Premissas

As premissas desta implementação são:

  • Poder ser implementado em qualquer roteador caseiro, ou um roteador sucateado (quando possível) e que permita a instalação do OPEN-WRT. Para saber se teu rotador ou tua sucata roda OPEN-WRT, consulte a lista neste link;
  • O roteador deve ser uma “sandbox”, ou seja, conter tudo aquilo necessário para seu funcionamento e operação. Isto inclui o aplicativo de controle, multi-telas, que deve ser entregue ao usuário sem necessidade de efetuar downloads, ou instalar nada no dispositivo de controle;
  • Utilizar a menor quantidade de componentes eletrônicos possíveis;
  • Não eliminar qualquer função original do equipamento ou do OPEN-WRT, ou seja, o roteador depois de transformado continuará funcionando normalmente para o roteamento de rede;
  • Usar apenas tecnologias livres.

Desafios

Para cumprir a lista de premissas acima, temos que resolver alguns desafios. São eles:

1 – Desafios de Hardware

Para transformar o roteador em um robô, é necessário que dois motores possam ser controlados pelo hardware e software do roteador. Podemos fazer isso de diversas formas, mas a mais simples e com maior compatibilidade entre os diversos tipos e modelos de roteadores suportados é utilizar os leds de indicação do roteador como portas de saída de dados de controle (sim, podemos controlá-los).

19-conexão-placa

Devemos utilizar uma fonte de alimentação embarcada, e para isso usaremos uma bateria 18650, ALTAMENTE disponível em sucatas de notebook. Toda bateria de notebook contém ao menos 3 dessas, e geralmente uma só falha enquanto ao menos duas outras estão boas para uso.

18650

Usei a 18650 porque tenho quilos delas aqui no lab, mas minha recomendação é que você utilize uma bateria de celular, que é essencialmente a mesma célula, mas pode ser carregada diretamente por uma porta USB ou uma fonte de 5V, diferente da 18650 que necessita um carregador especial. A bateria de celular já possui um controlador de carga embutido. Se você tentar carregar a 18650 com 5V ou de forma inadequada, ela VAI EXPLODIR CATASTROFICAMENTE, portanto cuidado.

bateria

Que saudades dos meus Nokias…

Faltam só os motores para resolver o hardware. Utilizei dois servo motores pequenos (9g) transformados em motores contínuos. Esses servomotores são relativamente baratos, cerca de R$20,00 cada (preço de 12/2016). Ao comprar os servos, é necessário um “hacking”, que consiste em remover toda eletrônica de controle, quebrar a trava e puxar dois fios direto do motor. Fazendo isso, removemos a ponte-H interna dos motores e passamos o controle para nossa ponte-H dupla que vamos aprender construir também.

IMG_20161114_154125489

O servo motor possui todo um sistema de engrenagens e um eixo que pode ser facilmente acoplado à rodas impressas em 3D, como ilustrado acima, mas também permite a utilização de qualquer roda disponível, até CDs velhos. Veja aqui no blog do Paulo Trentim.

Para adaptar teu servo motor, você pode remover TODA a eletrônica do servo e realizar as modificações mecânicas deste lindo tutorial.

Temos agora o seguinte diagrama que ilustra como o hardware foi concebido e implementado.

esquema-roboteador

Então, com os desafios de hardware resolvidos, vamos aos desafios de software.

2 – Desafios de Software

Para cumprir as premissas de software, precisamos instalar o OPEN-WRT. A instalação do OPEN-WRT não é foco deste artigo, então separei um tutorial bacana para vocês lerem.

O grande truque de usar os leds para o controle dos motores é uma característica de todo sistema GNU/LINUX: todo hardware no GNU/LINUX é abstraído em um “arquivo”. Os leds do roteador pode ser controlado escrevendo o valor “1” ou “0” no arquivo que representa esse led. No exemplo abaixo, ligamos o led indicativo da porta LAN1 do roteador.

# echo “1” > /sys/devices/platform/leds-gpio/leds/tp-link:green:lan1/brightness

Para desligar o led, usamos o comando abaixo:

echo “0” > /sys/devices/platform/leds-gpio/leds/tp-link:green:lan1/brightness

Simples, né?

Agora vamos resolver outra premissa do projeto: O APLICATIVO.

Como o roboteador precisa entregar um aplicativo para QUALQUER device, usaremos o tão famoso padrão HTML5. Para tal, adicionaremos uma página HTML com a interface de controle, dentro da ferramenta de administração do OPEN-WRT, e achar uma forma de chamar o comando acima através de uma chamada assíncrona (AJAX).

Depois de muita pesquisa, descobri que um comando do shell é exposto para acesso externo ao colocar esse comando na forma de um script (sh) na pasta /cgi-bin da interface de administração HTML, e pode ser chamado através de uma URL.

Podemos fazer assim então: Criar o arquivo acende-led.do dentro do roteador na pasta /www/cgi-bin

#!/bin/sh
echo “Content-type: text/html”
cd /sys/devices/platform/leds-gpio/leds/tp-link:green:wlan
echo “1” > brightness
echo “LED aceso”

e ao conectar no roboteador e acessar a URL abaixo, o LED será aceso:

http://192.168.1.1/cgi-bin/acende-led.do

Agora conseguimos controlar o led através de uma chamada usando QUALQUER NAVEGADOR… Premissa cumprida… o aplicativo que o roboteador entrega é um arquivo html que realiza chamadas assíncronas nas URL correspondentes à cada comando do robô. Mais adiante você pode baixar o código fonte completo desta solução e ver como fiz.

Desafios vencidos, vamos á montagem!

Montagem

A montagem do robô é relativamente simples. A sequencia de todos abaixo demonstra passo á passo as partes mais importantes da montagem.

Usaremos um roteador TP-Link 740ND.

1-roteador cobaia

 

Neste caso, usaremos um roteador sucateado, pois duas das suas portas LAN estão queimadas.

2-portas-queimadas

Para desmontar o roteador, precisamos expor os parafusos de fechamento da tampa. Para tal, removemos os pezinhos de borracha e desaparafusamos os dois lados da tampa

3-expondo parafusos b

Depois de tirar os parafusos, temos que usar uma chave de fenda e destravar a tampa, forçando pra cima a sua retirada

4-desencaixando a tampa

Agora temos o roteador desmontado e pronto para as nossas implementações.

5-roteador aberto

Primeiro vamos fixar o suporte de bateria e soldar os fios de alimentação na placa do roteador.

6-18650-e-suporte

Nesta hora, a cola ou fita dupla-face é muito bem vinda.

7-bateria-posicionada

A ligação de dois fios é feita diretamente na placa, mas se você não possuir habilidade para achar os pontos corretos no teu roteador, use um conector que encaixe no mesmo ponto da fonte original do roteador. Veja abaixo, as soldas são realizadas no “pé” do conector original.

8-solda-alimentacao

 

A sequencia de fotos abaixo demonstra a instalação do interruptor e sua fixação na carcaça do roteador.

9-interruptor 10-fixando-interruptor 11-interruptor-fixado

Suporte preso, fios de alimentação instalados

13-negativo

Agora vamos construir a ponte-h. Se você quiser saber como funciona a ponte-h, visite depois esse nosso outro artigo

Vamos fazer uma ponte-H com o integrado L293D, ele é barato e facilmente encontrado nas interwebs.

O esquema elétrico desta ponte segue abaixo:

ponte-h

Começamos com uma placa padrão.

14-Ponte-h

18-circuito ponte-h

15-ponte-h-montada

Depois de montar a placa seguindo o diagrama esquemático, soldamos o fio de alimentação positivo no interruptor.

17-ligação ponteh

Então, posicionamos nossa ponte-h na lateral do roteador. Cuidado para não deixar a parte de baixo da placa encostar em algum parafuso de fixação.

16-ponte-h-instalada

Então os 4 sinais de controle devem ser ligados aos leds, conforme mostramos abaixo. Eu escolhi as portas Wan, lan1, lan2, e lan3.

19-conexão-placa

Note na imagem acima que liguei o sinal de controle no catodo dos leds e cortei o terminal do ânodo. Se você não cortar esse terminal, a queda de tensão no led é incapaz de acionar o pino da ponte-H e o motor não vai girar.

Então, falta só fazer a parte mecânica. Usei umas chapinhas de titânio para prender o servo na carcaça do roteador. Você não precisa usar titânio, pode ser lata, aluminio, acrilico, etc. Já fiz até com cartão de plástico, tipo os bancários. Eu ganhei uma chapa de titânio de um amigo que a retirou de alguma parte de um avião de caça sucateado e me deu. :-)

20-montagem-servo

Na parte de trás, podemos colocar uma roda boba, ou apenas um apoio… Eu usei um mecanismo que já tinha aqui no lab, refugo de um outro robô que fiz.

O resultado final é esse aqui:

IMG_20161114_154051682

Agora vamos para a configuração do software.

Configuração do Software

Bom, como já comentei acima, a instalação do OPEN-WRT não é foco deste artigo, portanto vou pular essa parte. Você precisa instalar o OPEN-WRT padrão, mas confira se sua instalação contém o LUCI, que é a interface gráfica escrita em linguagem LUA.

Antes de mais nada, vamos configurar o roteador para ser um Acces Point.

 

Depois, conectamos o roteador pelo cabo, na porta WAN, a fim de instalar alguns pacotes que precisaremos. Isso é realizado de maneira facil através do gerenciador de pacotes ou através de uma conexão SSH. Vamos fazer via SSH.

Horta Urbana Vertical Livre – Parte 1

Muita gente que vive em uma grande cidade sabe como é bom viver no sossego do interior. Uma das coisas mais legais de morar no interior é que os terrenos das casas são maiores e neles invariavelmente existem hortas plantadas pelos residentes.

Depois de viver anos em Rio Claro – SP, voltei para a Capital e passei a cultivar cada pedaço de terra possível em casa. Infelizmente o espaço no chão acabou, então resolvi plantar nas paredes!

Foto_horta

A idéia deu certo, então decidi automatizar a brincadeira para fazer as plantas crescerem de verdade. Nasceu o projeto Horta Urbana Vertical Livre.

Nesta série de artigos, vou compartilhar o projeto completo com os queridos leitores para que todos que moram na cidade ou no campo possam usufruir da beleza de uma horta.

Vamos nessa!!

1 – Horta Urbana Vertical

Horta Vertical - Olha que linda pimeiteira

Nascedouro da Horta Vertical – Olha que linda pimenteira

Na grande cidade, a não ser que você seja milionário (não é o meu caso kkk) o espaço para plantas acaba logo.

A grande sacada desta horta é que ela pode ser pendurada. Desenvolvi um processo para reciclar garrafas PET e conectá-las facilmente usando apenas um parafuso M3 de 10mm com arruela e porca. Abordaremos com detalhes no próximo artigo da série, mas seguem umas fotos com a idéia:

Detalhe do conector

Detalhe do conector

Esse simples encadeamento resolve os seguintes problemas:

  • Recicla garrafas PET
  • Estabelece um suporte físico que precisa de um ponto de fixação apenas
  • Estabelece um circuito fechado para a água
  • Economiza espaço

Na próxima página vamos abordar a arquitetura da solução.