Microcontrolador

### **Controle de bordo: O microcontrolador**

O robô têm motores, eventualmente sensores e toda uma parte de comunicação e troca de mensagens com o computador que precisam ser controlados e gerenciados internamente e para isso é preciso alguma capacidade de processamento. Existe uma variedade enorme de microcontroladores de baixo custo que são perfeitamente capazes de assumir essa tarefa. PIC e ATmega (Arduíno) são os mais conhecidos, mas existem muitos outros, como o Wixel, escolhido para ser o microcontrolador principal da versão anterior do robô. É verdade que existem diferenças de velocidade, capacidade de memória e recursos adicionais entre os vários microcontroladores, mas para o robô descrito aqui todos eles dão conta do recado e tem um custo muito parecido. A tabela abaixo compara algumas especificações dos três microcontroladores citados.

(\*) Total de pinos de IO, inclui os pinos analógicos que também podem ser usados como pinos digitais.

Apesar das diferenças, todos são opções viáveis para o projeto e foram produzidos protótipos usando todos eles. Abaixo um resumo dos resultados.

**PICstamp:** Usa um micro-controlador com recursos comparáveis aos do arduino. O clock de 20 Mhz torna-o mais rápido. Tem bons recursos internos fornecidos pelo microcontrolador, por exemplo tem 1 timer de 8 bits e 3 de 16 bits. O primeiro protótipo feito para este projeto utilizou esta plaquinha. Talvez isso tenha sido resolvido agora, mas na época, o maior problema encontrado foi a falta de acesso a bibliotecas, detalhes de sua programação e programas de exemplo. Por fim o Wixel acabou ganhando a preferência para o protótipo seguinte, mas por outros motivos.

**Wixel:** O recurso que mais pesou a favor do Wixel não está na tabela: a comunicação wireless. O Wixel tem uma antena de RF "onboard" capaz de transmitir e receber sinais na frequência dos 2.4 GHz a uma distância máxima de 15 metros. Além disso o suporte à comunicação RF é nativo no microcontrolador, ele foi feito para isso. Um par de Wixels pode trocar mensagens usando o sistema de RF interno muito facilmente. Em uma aplicação típica, um wixel fica conectado ao computador transmitindo/recebendo as mensagens de outro(s) wixel(s) via RF. Teoricamente é possível montar uma rede wireless com até 256 wixels. E quanto ao custo é equivalente ao do Arduíno Nano e mais barato que o PICStamp. O uso do Wixel permite criar uma versão simples e econômica do sistema robótico incluindo todas as funcionalidades pretendidas, mas com restrições relacionadas a alcance, capacidade ou quantidade.

**Arduino Nano:** No protótipo seguinte, me rendi aos encantos do arduino, e eles não são poucos. Uma IDE feita especialmente pra ele, uma versão facilitada de C++ para programação, um acervo imenso de bibliotecas que não para de crescer, muito suporte em sites, blogs, foruns, livros, etc, shields feitos especialmente para arduino, e muito mais. Tudo isso acaba compensando alguns limites de suas versões mais básicas como o UNO e o Nano. Falando em Nano, é uma versão extremamente versátil, compacta e barata, é um dos arduinos mais baratos da família. Ele não vem com conectores prontos para espetar jumpers como a maioria das outras versões, mas pode facilmente ser colocado em uma protoboard para fazer os testes e depois pode ser instalado definitivamente na aplicação. Seu custo e tamanho reduzido facilitam muito. Além disso existe um grande número de placas com soquetes próprios para o Nano destinadas às mais diversas finalidades. Quer fazer uma impressora 3d? Tem uma placa para nano própria pra isso. E que tal comunicação wireless? Também tem. Quer controlar uma grande quantidade de servos e sensores? Também tem placa pra isso. Tem até placa que trona o Nano compatível com os shields para o UNO. E tudo isso com um conector mini-USB que facilita imensamente a programação e os testes. Sem dúvida é uma ótima opção para entrar no mundo do arduino.

**Arduino UNO:** O UNO é o clássico dos arduinos. Usa o mesmo microcontrolador que o Nano, portanto a diferença entre o UNO e o Nano é só na embalagem. A imensa maioria dos shields para arduino, é feita para o UNO, e porque é tão comum assim acaba sendo produzido em grandes quantidades o que barateia seu custo. O único problema do UNO é seu tamanho. É meio grande demais para ser instalado na aplicação. Mas esse mesmo tamanho grande demais facilita sua manipulação e testes do projeto.

**Arduino Mega:** O programa ficou grande demais para a memória do Nano ou Uno? Estão faltando pinos para o seu projeto? Aqui está a solução. No lugar dos 32KB de memória flash para armazenar os programas no UNO/Nano, este arduino bombado oferece 256KB, é um belo salto. E no lugar dos 20 pinos oferecidos pelos seus irmãos menores ele mais que triplica a oferta e vai logo pra 70 pinos. Sem falar na memória RAM que pula de 2KB pra 8KB. E não é só isso, são mais timers, mais pinos analógicos, mais pinos PWM, mais de tudo, só a velocidade que continua igual. Ainda mantém os parcos 16 MHz.

Está é a placa que o protótipo atual do robô usa. Afinal ele controla dois motores de passo, 10 sensores de distância, usa um display de leds e ainda tem a comunicação wireless usando o NRF24L01. E vai ter mais, já tenho outros dispositivos prontos pra serem instalados. Então tive partir pra um opção com mais pinos e o Arduino Mega está resolvendo tudo lindamente. Eu não aconselharia esta placa para começar a brincar com o arduino, mas para fazer um robô mais sério, ela é necessária sim.