====== Microcontroladores e Robótica ====== [{{ :images:general:intel_p8048h.jpg?250|O primeiro microcontrolador do mundo: Intel 8048}}] Um microcontrolador é basicamente um computador inserido num chip de circuito integrado. Este consiste em memória, um processador, bem como interfaces de entrada-saída. Os Microcontroladores são programados para executarem uma tarefa específica, ou seja, caso seja necessário modificar ou aperfeiçoar as suas funcionalidades, então é necessário instalar um novo programa no nosso chip. As principais características que distinguem um microcontrolador de outros computadores (PC, computador portátil, servidor, etc.) são: * Todas as funcionalidades do microcontrolador estão contidas num único circuito integrado, numa escala bastante mais compacta. * Este é programado para executar uma única e determinada tarefa, assim, afim de alterar a sua funcionalidade é necessário programá-lo com novo software. * Este consome menos energia, dadas as suas características físicas serem menores e menos exigentes em termos energéticos do que um tradicional PC, computador portátil ou servidor. Os programadores de microcontroladores focam-se bastante em manter o consumo energético das suas aplicações baixo, isto para que aplicações portáteis que utilizem baterias possam funcionar durante mais tempo. * Entradas/Saídas reconfiguráveis. Os microcontroladores possuem aquilo que chamamos periféricos, que permitem estabelecer conexões entre um microcontrolador e outros microcontroladores ou computadores (ex: USB, CAN, UART), permitem ter a percepção de processos no mundo físico e real (ex: ações de comutação, medição de temperatura, etc.) e permitem-nos controlar esses processos (ex: controlo de motores, alertas de disparos, etc.). Os microcontroladores estão presentes numa grande variedade de equipamentos e dispositivos do nosso quotidiano: eletrodomésticos (ex: fornos de microondas, televisores, etc.), brinquedos (ex: Lego NXT, bonecos falantes, etc.), veículos (automóveis, guindastes, etc.). O uso de microcontroladores a uma larga escala tornou-se possível dada as suas facilidades de programação e permitem uma vasta gama de funcionalidades; portanto, torna-se bastante simples adicionar novas características a um produto ou aplicação, bem como aperfeiçoar o nível de inteligência da aplicação em questão. ====== Robótica ====== A Robótica é uma ciência que combina o uso da tecnologia e conhecimento necessários para a construção de robots. Dado o rápido desenvolvimento da tecnologia, o termo robot, como uma máquina automática que permite substituir os humanos, já não tem uma definição tão clara como a inicialmente proposta. Um robot já não é sinónimo apenas de um humanóide, braço robótico numa linha de montagem fabril, piloto automático numa aeronave, inteligência artificial composta por neurónios ou uma simples máquina que executa tarefas de limpeza; hoje em dia um robot representa também um programa de computador que executa tarefas destinadas a humanos (por exemplo, um robot que compila relatórios de operações). É do senso comum que um robot foi originalmente pensado para substituir humanos em determinadas tarefas. Existem várias razões para isto: condições de trabalho perigosas, custos de produção mais baixos, tarefas monótonas e repetitivas que aumentam a probabilidade de erro humano, novos sistemas mais complexos e temporalmente críticos, tudo tipo de tarefas que permitem a um sistema autónomo tomar melhores decisões do que um humano. ====== Microcontroladores na Robótica ====== Dada a extensão da área da robótica, a aplicações robóticas baseadas em microcontroladores, damos tipicamente o nome de robótica amadora; este tipo de sistemas são tipicamente não muito complexos, e são habitualmente de fácil implementação pela maioria dos utilizadores. Os tipos mais comuns de microcontroladores utilizados na área da robótica amadora são: * Microcontroladores Atmel AVR (ATmega, ATtiny, etc.). * Microcontroladores PIC Microchip Technology (PIC16, PIC24, etc.). * Microcontroladores baseados em arquitetura ARM. Frequentemente terceiros têm criado placas e ambientes de desenvolvimento baseados nos tipos de microcontroladores acima mencionados. Por exemplo a plataforma Arduino (baseada na família de microcontroladores Atmel AVR), o BASIC Stamp (baseada nos microcontroladores PIC), Lego NXT (baseado na arquitetura ARM), etc. No caso específico do HomeLab, o projeto que será abordado neste livro, este é baseado no microcontrolador AVR ATmega128 da Atmel. Contudo, uma questão levanta-se dada a vasta oferta de microcontroladores e plataformas de desenvolvimento disponíveis: como escolher o microcontrolador mais apropriado à nossa aplicação? Geralmente podemos classificar os microcontroladores baseando-nos nestas quatro propriedades: - custo, características físicas, ambiente de desenvolvimento e suporte. As características físicas de mais notoriedade são: * frequência do processador - determina a velocidade de operação do microcontrolador * capacidade de memória de programa - determina o tamanho do programa que pode ser instalado no microcontrolador * capacidade de memória de dados - determina a quantidade de dados que podem ser processados por um programa no microcontrolador * número de pinos de entrada/saída e suas funcionalidades - diferentes pinos detêm diferentes funcionalidades * número de temporizadores - importantes em aplicações com características temporais importantes * consumo energético - importante no desenvolvimento de aplicações móveis e portáteis O ambiente de desenvolvimento que iremos aqui utilizar é baseado num programa de computador, que permite a criação, edição e compilação de programas, bem como a programação do microcontrolador e permite fazer a ponte entre o computador e a execução do programa por forma a ser possível a deteção de possíveis erros ou falhas. A facilidade e usabilidade do software no desempenho deste tipo de tarefas torna-se então decisiva porque este torna-se o centro da atenções durante toda a etapa de desenvolvimento do software para o microcontrolador. Tudo isto está intimamente relacionado com a quarta propriedade referida a ter em contra na escolha do microcontrolador, ou seja, o suporte. É importante que tenhamos acesso a ajuda e suporte na resolução de eventuais problemas da maneira mais simples possível. Assim e tendo em conta todas as quatro propriedades referidas a terem em conta num microcontrolador, a tarefa de escolher o dispositivo mais adequado ao nosso projeto torna-se assim bastante mais simples.