quarta-feira, novembro 08, 2017

Raspberry Pi Zero W como Controlador - Parte 1

Fechando este giro rápido sobre usos para o Raspberry Pi Zero W, vou falar um pouco no seu uso como controlador. A parte prática se mostrou mais complicada do que eu esperava e acabei dividindo o post em duas partes (e mais um adendo).


Raspberry Pi x Arduino x ESP-8266

Quando falamos de controle, a plataforma mais usada pela "comunidade maker" é o Arduino. O hardware do Arduino consiste em um ATmega328, um conversor serial USB e um regulador de tensão. Quando você desenvolve uma aplicação de controle com o Arduino, está tipicamente escrevendo um código em C ou C++ que será linkado às bibliotecas do Arduino para rodar direto sobre o microcontrolador. As bibliotecas são, na maioria das vezes, uma camada fina; é bastante fácil pular esta camada e interagir direto com os registradores do ATmega. O resultado é um controle bastante preciso e rápido das interfaces, com temporizações críticas podendo ser atendidas usando interrupções (ou contando ciclos das instruções). A desvantagem é a dificuldade em implementar coisas mais complexas, não apenas pela limitação de processador e memória mas também pelos limites da arquitetura setup / loop das aplicações Arduino.

Estas limitações do Arduino ficam claras quando queremos conectá-lo à internet. A opção de baixo custo de conectar um hardware que trate apenas as camadas físicas e implementar um subconjunto do protocolo TCP/IP diretamente no Arduino é extremamente limitada. O mais comum é ligar serialmente (via UART ou SPI) um processador ou sistema com capacidade para rodar a pilha TCP/IP, o que acarreta em várias limitações (além de aumento do custo e complexidade).

No outro extremo, o Raspberry Pi é um computador rodando Linux que possui algumas interfaces de microcontrolador. Você tem várias opções de linguagem para desenvolver o seu software e conta com uma pilha TCP/IP completa, mas o acesso direto ao hardware é complicado. A existência de um escalador preemptivo e camadas adicionais de software reduz a velocidade de resposta e controle (mesmo tendo um processador dezenas de vezes mais rápido). Existem também algumas limitações das interfaces de hardware disponíveis (a mais evidente é a falta de entradas analógicas).

Só para completar esta visão geral, o ESP8266 fica em algum lugar entre estes dois extremos. Ele possui um escalador preemptivo e um bom stack TCP/IP, mas ainda permite interagir de forma eficiente com os dispositivos de E/S.

O Meu Projeto Teste: Dispensador de Doces

A ideia de adaptar o meu Dispensador de Doces para usar um Raspberry Pi surgiu simplesmente por ver ele jogado na minha biblioteca/escritório/laboratório. Para minha surpresa, apesar de simples, este projeto acabou ilustrando pontos importantes (e deu mais trabalho do que eu esperava).

Para quem ficou com preguiça de seguir o link acima, o Dispensador de Doces (na última versão, feita com um ESP-8266)  envolve três elementos básicos:
  • Acesso a email: a liberação dos doces é controlada pelo assunto de emails enviados a uma conta.
  • Controle de um servomotor: um servomotor abre e fecha a saída da garrafa onde estão os doces.
  • Display LCD alfanumérico: apresenta informações sobre o funcionamento. O display usado tem interface I2C.
No próximo post vamos ver como cada um destes elementos foi resolvido no Raspberry Pi Zero W.

Nenhum comentário: