Publicado em Arduino, Hardware, Open Source, Tecnologia

Arduino: Conhecendo o Microcontrolador

O Arduino é uma plataforma de prototipagem para o que foi chamado de sistemas embarcados. Nada a ver com a Veneza nem a Marinha. Sistemas embarcados, ou embebidos, ou embutidos (nada a ver com a mortadela), são sistemas de processamento para fins específicos, tipo, sistemas de monitoramento industrial, automação residencial, ou veículos de condução autônoma, por exemplo. Diferenciam-se de outros sistemas de processamento de uso geral, como o PC, em que estes últimos são concebidos com a suficiente flexibilidade e potência como para realizar tarefas não predefinidas, adaptando-se ao uso que o usuário quiser dar para eles.

O coração da plaquinha Arduino UNO é um ATmega328 da Atmel. Ele é um microcontrolador. Microcontroladores são pequenos chips (circuitos integrados) que integram CPU, memória volátil e não volátil, e portas programáveis de entrada e saída, I/O, as quais leem informação de sensores ou interfaces seriais, e podem interatuar com os atuadores (motores, luzes, relés, telas LCD, leds, etc).

Microcontroladores e Microprocessadores

A CPU dos microcontroladores, a diferencia dos microprocessadores (que é o tipo de CPU que você tem na placa mãe do seu PC), tem capacidade de memória e processamento reduzida, mas, por outro lado, é muito barata. No mercado local, na hora de escrever essa postagem, você comprar um por R$ 10. Na China, até 20% desse valor. Vamos dizer, você pode fabricar, com um deles e uns poucos componentes a mais, um pequeno computador de 3 a 5 dólares. Isso que é um Arduino.

Esse tipo de microcontroladores possui uma arquitetura diferente de outros microcontroladores e, claro, dos microprocessadores aos quais estamos mais acostumados. Ela é conhecida como AVR 8-bit e é baseada numa outra chamada de RISC. Outras arquiteturas conhecidas são: x86, x86_64, ARM, PIC, etc.

A velocidade de relógio é de 20MHz, são 20 milhões de ciclos por segundo, não é pouco; mas, ainda assim, fica muito longe dos Giga Hertz (bilhões de ciclos) dos microprocessadores.

Memória

A memória do ATmega328, como o nome sugere, é de 32KB. É uma memória flash, (a tecnologia empregada para produzir pendrives, cartões micro-SD e HD de estado sólido), e faz as vezes de HD, armazenando o código que nós escrevemos para ele (aproximadamente 30 milhões de vezes menor do que um HD padrão de 1TB). Como você pode perceber, ela é muito reduzida, e o código deverá ser otimizado ao máximo para aproveitá-la, mas, geralmente, é o suficiente.

Ela não é a única memória que o ATmega328 traz, ele possui mais duas, uma EEPROM de 1KB, e uma outra SRAM, de 2KB. Essa última, faz as vezes de memória RAM (na verdade, ela é uma memória RAM), e vai armazenar o conteúdo das variáveis. Ela é 2 milhões de vezes menor do que uma memória RAM padrão de 4GB em uma PC, outro motivo para ser muito cuidadoso na hora de programar o nosso código.

Programação

Para programar eles (os microcontroladores), o processo normalmente envolve 3 etapas: escritura, compilação e upload. Escrevemos o código na linguagem C, compilamos para código máquina e salvamos esse código na memória flash, não volátil. O IDE do Arduino traz todas as ferramentas necessárias para essas tarefas. E o hardware da plaquinha, faz o que resta. Se quisermos fazer de forma independente (sem o Arduino), precisaríamos de um editor de texto (gedit, notepad++, etc), um compilador (gcc-avr), um software (avrdude) e um hardware (ISP programmer) para o upload.

Pinout

O ATmega328 tem 32 patinhas, cada uma delas com funções específicas, como alimentação, I/O, interface, reset, etc. 23 delas são para entrada e saída. A plaquinha do Arduino aproveita 14 para entradas e saídas digitais, e 6 para entradas analógicas.

Dos 14 pinos digitais, 6 deles podem ser programados para emular um saída analógica, fazendo uso de uma técnica chamada de PWM (pulse-width modulation). Isso nos permite passar dos dois valores da lógica digital (0 e 1) a 256 valores (0-255), e assim, controlar a luminosidade de um led ou a velocidade de rotação de um motor, por exemplo.

O ATmega328 também conta com 3 tipos de interface serial (comunicação bit a bit usando apenas um ou dois fios): USART, SPI e I2C. Cada uma delas adequada para um conjunto de tarefas; por exemplo, I2C, permitindo conectar até 127 sensores em forma paralela.

Outras funcionalidades que oferece, são: regulador de voltagem, RTC (relógio de tempo real), Counter, Timers, conversor analógico digital, etc.

Em fim, o ATmega328, de forma autônoma ou integrado com o Arduino (placa, IDE, ecossistema e comunidade), resulta ser uma ótima e econômica ferramenta para o aprendizado (programação, robótica, Internet das Coisas, automação, eletrônica, etc), prototipagem e construção de pequenos projetos.

Documentação:

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s