Baixe o app para aproveitar ainda mais
Prévia do material em texto
MICROCONTROLADORESMICROCONTROLADORES E IOTE IOT UNIDADE 3 –UNIDADE 3 – MICROCONTROLADORESMICROCONTROLADORES Autor: Eliny dos Santos GomesAutor: Eliny dos Santos Gomes Revisor: Lucas Gonçalves CorreiaRevisor: Lucas Gonçalves Correia INICIAR Introdução Caro(a) estudante, Nesta unidade, iremos inicialmente trabalhar com comunicação e estaremos em uma área que todos conhecem, pois trata-se do que fazemos todo o tempo, mas precisamos conhecer como o microcontrolador se comunica e os tipos de interfaces que utiliza. Iremos focar no conhecimento da interface serial, suas características, modos de operação e reconhecer as necessidades de uso. A partir disso, começaremos a trabalhar com os microcontroladores, conhecendo alguns tipos, arquiteturas e usos dos mesmos e, também, a linguagem de programação que utilizam e depois, especificamente, no Arduino. Será possível identificar dois projetos simples simulados na plataforma Tinkercad, que também conheceremos e que será sua grande aliada para exercitar os 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 1/27 conhecimentos adquiridos. Após o término desta unidade, seremos capazes de começar a imaginar alguns projetos para a prática. Bons estudos! 3.1 Interface de comunicação serial As interfaces de comunicações são responsáveis por conectar a informação entre equipamentos com regras que definem o modo da transmissão, assim são usados em diferentes tipos de conexões. Os formatos de interface utilizados são comunicação serial, que envia e recebe a informação sequencialmente, e comunicação paralela, que envia e recebe por mais de uma via de comunicação.Estudaremos a comunicação serial e, para melhor entendermos, vamos conhecer suas características. Alguns protocolos de comunicação serial são UART (RS232), SPI, I²C, entre outros. 3.1.1 Modos de comunicação A taxa de comunicação significa a velocidade de uma comunicação, tendo como unidade bits por segundo (bps). Dependendo do método de comunicação, essa taxa tem diferentes nomes. Se for síncrona, é chamada de “clock”. Se for assíncrona, é chamada de “baud rate”. Em uma comunicação, é necessário que o tipo e a taxa de comunicação sejam iguais na transmissão e recepção (principalmente nas assíncronas, que não usam referência de clock). » Método de comunicação Síncrono é o método em que um sinal de clock é necessário para que o sistema trafegue, tendo como sua principal vantagem a velocidade. O sinal de clock é enviado por um fio diferente dos dados nessa comunicação, tendo um fio a mais. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 2/27 Figura 1 – Método de TR/RX síncrona. Fonte: Elaborado pela autora, 2020. Assíncrono é o método em que o sinal de transmissão é enviado diretamente à recepção do dispositivo, sendo que, como não tem um sinal para marcar o tempo, é necessário que os dois dispositivos utilizem a mesma taxa de baud rate, sendo esse um parâmetro muito importante nesse método. A transmissão é feita bit a bit e cada bit tem um tempo para ser transmitido, sendo que o primeiro a ser enviado é um “start bit”, indicando o início da transmissão, e o último é um “stop bit”, indicando seu fim. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 3/27 Figura 2 – Método de TR/RX Assíncrona. Fonte: Elaborado pela autora, 2020. » Sentido de transmissão A comunicação entre dispositivos pode ter três sentidos: Simplex: trata-se de uma comunicação unidirecional, que significa que somente um dos dispositivos pode transmitir e o outro só receber. É como uma via de mão única; Half-duplex: é uma comunicação em que os dois dispositivos interligados podem transmitir ou receber, porém, não ao mesmo tempo. Quando um está transmitindo, o outro está recebendo e vice-versa; Full-duplex: é uma comunicação em que os dispositivos interligados podem transmitir e receber simultaneamente. » Protocolos de comunicação Vamos conhecer um pouco de alguns protocolos de comunicação, suas vantagens e funcionamento. Os protocolos de comunicação diferem na quantidade de fios (pinos), que tem a ver com a quantidade de vias de comunicação somada aos fios de alimentação (Vcc) e terra (GND). » UART O protocolo UART ( Universal Asynchronous Receiver/Transmitter ) é uma comunicação assíncrona e full-duplex, utilizado em alguns microcontroladores e que faz a conversão da comunicação paralela para a serial. É um protocolo muito simples em que o pino de transmissão (TX) é ligado no pino de recepção (RX) e é enviado um quadro de bits do TX ao RX, que será interpretado bit a bit. Cada quadro contém um start bit, cinco a nove bits de dados e um ou dois bits de stop bit, mais um bit de paridade par (Even) ou ímpar (Odd), que tem a função detectar eventuais erros na comunicação. » I²C/TWI O protocolo i²C foi um barramento criado com a função de facilitar a integração de componentes padronizados que podem realizar diversas funções. A principal característica é a funcionalidade de um mesmo sistema utilizar tecnologias construtivas diferentes sem que tenha incompatibilidades e nem conflitos em um sistema de dois fios. Para seu funcionamento, utiliza a função de mestre ( master ) e escravo ( slave ), em que 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 4/27 possibilita que mais de um mestre possa controlar os escravos. O protocolo utiliza dois pinos, SDA que é o sinal de dados e SCL, que é o clock, assim, é possível concluir que o sentido de comunicação é half-duplex, pois contém apenas um pino para envio de dados e que, também, é síncrono, pois usa um pino de clock. » RS232 Um protocolo semelhante ao UART em seu funcionamento, porém alcança maiores distâncias e seu sentido é full-duplex. Mas temos mais pinos que podem ser usados para verificar os dados enviados. Existem dois padrões de conexão, o DB-25, com 25 pinos, e o DB-9, com 9 pinos. No caso do DB-9, tem os pinos de TD (Transmitted Data) e RD (Received Data) para troca de dados e outros sete pinos para controle e confiabilidade da comunicação. » SPI A Interface Periférica Serial (SPI) é um protocolo de dados seriais síncronos usado pelos microcontroladores para se comunicar com um ou mais dispositivos periféricos rapidamente em curtas distâncias. Também pode ser usado para comunicação entre dois microcontroladores. Com uma conexão SPI, sempre há um dispositivo mestre (geralmente um microcontrolador) que controla os dispositivos periféricos. Não há limite para o número de escravos e a comunicação é full-duplex. O funcionamento básico é pelos pinos SS, MOSI e MISO, conforme a Figura 3. O mestre gera um clock e indica pelo pino SS para qual dispositivo será enviada a comunicação, os dados são enviados pelo pino MOSI e o dispositivo escravo envia uma resposta, se necessário, pelo pino MISO. Os tipos de ligação são: paralela e cascata. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 5/27 VOCÊ QUER LER? Existem outros tipos de protocolos. O artigo “Um estudo sobre protocolos de comunicação para ambientes de internet das coisas” fala sobre protocolos de comunicação específicos para ambientes de IoT. Disponível em: < https://sol.sbc.org.br/index.php/eradrs/article/view/2984/2946 >. 3.2 Introdução ao microcontrolador Figura 3 – Comunicação do protocolo SPI. Fonte: SACCO, 2020. A comunicação serial é uma parte importante na comunicação dos microcontroladores, servindo para comunicar o microcontrolador com o computador, para fazera comunicação entre dois microcontroladores ou, ainda, um microcontrolador com outros periféricos e, conforme seu uso, será o tipo de protocolo usado. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 6/27 https://sol.sbc.org.br/index.php/eradrs/article/view/2984/2946 Um microcontrolador é um sistema computacional completo, estando integrado em um único componente (chip), sendo a CPU ( Central Processor Unit ), as memórias RAM (dados), flash (programa) e EEPROM, pinos e I/O (input e output) e mais alguns periféricos internos (osciladores, canal USB, interface serial assíncrona UART, módulo de temporização e conversores A/D). A arquitetura de um sistema digital define quem são e como as partes que compõem o sistema estão interligadas. As arquiteturas mais comuns para sistemas computacionais digitais são a arquitetura de Von Neumann e arquitetura Harvard. Na arquitetura Von Neumann, a CPU está interligada à memória por um único barramento (BUS), os dados e instruções são armazenados em uma única memória.Na arquitetura de Harvard, a CPU tem barramento diferentes para interligar a memória de dados (barramentos de dados) e a memória de programas (barramento de endereço). Os microcontroladores têm muitas vantagens, dentre as quais podemos destacar o desempenho equivalente de processamento conforme a necessidade, utiliza menos energia e tem um baixo custo. 3.2.1 Tipos de microcontroladores e arquitetura Há diversos tipos e fabricantes de microcontroladores, cada fabricante determina a sua família de microcontroladores com características definidas. Podemos citar: A fabricante Microchip é responsável pela família PIC (controlador de interface programável), que tem alta velocidade de processamento por sua arquitetura Harvard e conjunto de instruções RISC. Além disso, conta também com recursos de programação por memória flash, E²PROM e OTP; A Holtek Semicondutores desenvolve famílias de microcontroladores focados em determinados segmentos de mercado, por exemplo, controle de teclado, controladores USB, conversores analógico/digital, dentre outros. Esse microcontrolador usa uma arquitetura do tipo Harvard (barramento de dados e programa separados); A Intel família MCS-51 (8051/52, 8031/32, 8751) utiliza arquitetura com multiplexação de dados e endereços (Harvard). A Intel não produz mais os dispositivos originais nessa linha, dedicando-se a dispositivos mais sofisticados; 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 7/27 A ATMEL, desde 2016 denominada Microchip, tem outras famílias, porém a conhecida é a família AVR, integrante do projeto Arduino. O Atmel® ATMEGA328P é um microcontrolador CMOS de oito bits e baixo consumo de energia, baseado na arquitetura RISC aprimorada do AVR® executando instruções poderosas em um único ciclo de clock (ATMEGA328P [DATASHEET]). O projeto Arduino engloba software e hardware em uma placa que contém um microcontrolador. Conforme Monk (2013), existem diversas placas de Arduino e todas utilizam a mesma linguagem para ser programada, mas a versão Uno é a mais utilizada e a maioria usa as mesmas conexões com o ambiente externo, o que permite o uso de qualquer modelo facilmente. O Arduino Uno tem grande relevância e utilização e difere das versões anteriores com a utilização de um controlador USB diferente (Monk, 2013), tem facilidades para se comunicar com um computador, outro Arduino ou outros microcontroladores. Figura 4 – Placa Arduino. Fonte: Elaborada pela autora, 2020. Na Tabela 1, estão descritas as características dessa placa, o que é muito importante conhecer para planejar e construir um projeto. Tabela 1 – Características da placa Arduino Uno 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 8/27 MICROCONTROLADOR ATMEGA328P Tensão de operação 5 V Tensão de entrada (recomendada) 7-12 V Tensão de entrada (limite) 6-20 V Pinos digitais I/O 14 (sendo que seis podem ser usados como saída PWM) Pinos PWM Digital I/O 6 Pinos de entrada analógica 6 Corrente DC dos pinos por I/O 20 mA Corrente DC para pinos 3,3V 50 mA Flash Memory 32 KB (ATMEGA328P), sendo 0,5 KB usados pelo gerenciador de sinalização SRAM 2 KB (ATMEGA328P) 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&c… 9/27 EEPROM 1 KB (ATMEGA328P) Velocidade de Clock 16 MHz LED na placa 13 Comprimento 68,6 mm Largura 53,4 mm Peso 25 g Fonte: ARDUINO. Acesso em: 15/06/2020. (Adaptado). O Arduino Mega é o que tem a mais alta performance entre todos os modelos de Arduino e, também, tem a maior quantidade de portas de entrada e saída. Um dos fatos que o torna um feito engenhoso na sua criação foi que todos os conectores laterais continuam compatíveis com os do Arduino Uno, disponibilizando a ele todos os shields feitos para o Uno (MONK, 2013). Na Tabela 2, estão descritas as características dessa placa, sendo também muito importante conhecer para planejar e construir um projeto. Tabela 2 – Características da placa Arduino Mega MICROCONTROLADOR ATMEGA2560 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 10/27 Tensão de operação 5 V Tensão de entrada (recomendada) 7-12 V Tensão de entrada (limite) 6-20 V Pinos digitais I/O 54 (sendo que 15 podem ser usados como saída PWM) Pinos de entrada analógica 16 Corrente DC dos pinos por I/O 20 mA Corrente DC para pinos 3,3V 50 mA Flash Memory 256 KB, sendo 8 KB usados pelo gerenciador de sinalização SRAM 8 KB EEPROM 4 KB Velocidade de Clock 16 MHz 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 11/27 LED na placa 13 Comprimento 101,52 mm Largura 53,3 mm Peso 37 g Fonte: ARDUINO. Acesso em: 15/06/2020. (Adaptado). 3.3 Programação do Arduino A linguagem de programação é o modo como o computador entende o que desejamos executar, o computador entende a linguagem de máquina (baixo nível). Podemos programar em linguagem de máquina, no entanto, é mais difícil para o entendimento da linguagem, então, foram criadas linguagens de alto nível que trabalham mais perto da linguagem das pessoas, porém precisam de compiladores para fazer a codificação à linguagem de máquina. O projeto Arduino usa uma linguagem de alto nível muito conhecida e tradicional: a linguagem C, com pequenas modificações, ocultando a parte mais complexa. O ambiente de desenvolvimento é utilizado para compilar no Arduino, sendo esse ambiente chamado de IDE. Uma linguagem de programação é usada para escrever um programa, que é uma sequência de comandos para executar uma tarefa qualquer. A linguagem de programação do Arduino pode ser dividida em três partes principais: estruturas, valores (variáveis e constantes) e funções. A programação utiliza variável para armazenar dados e deve ser declarada com tipo de dado que deve ser armazenado. Atribuir um valor significa o valor que está armazenado 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 12/27 dentro dessa variável. Na Tabela 3, são descritos o tipo de dados que pode ser armazenado identificando seu intervalo e o tamanho da memória utilizada. Tabela 3 – Tipos de dados armazenados nas variáveis TIPO DE DADOS MEMÓRIA (BYTES) INTERVALO Boolean 1 Verdadeiro ou falso (0 ou 1) char 1 -128 até +128 byte 1 0 até 255 int 2 -32.768até +32.767 unsigned int 2 0 até 65.536 long 4 -2.147.483.648 até +2.147.483.647 unsigned long 4 0 até 4.294.967.295 float 4 -3.4028235 +38 até +3.4028235+38 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 13/27 double 4 como float Fonte: MONK, 2014, p. 30. » Os elementos da linguagem Arduino Um operador é usado para executar funções normais ou complexas com as variáveis ou constantes, por exemplo, um operador de adição. Alguns tipos de operadores que podem ser usados estão descritos na Tabela 4. Tabela 4 – Operadores OPERADORES ARITMÉTICOS OPERADORES DE COMPARAÇÃO OPERADORES BOOLEANOS OPERADORES PARA PONTEIROS % (resto) != (diferente de) ! (NÃO lógico) & (referência) * (multiplicação) < (menor que) && (E lógico) * (desreferência) + (adição) <= (menor que ou igual a) || (OU lógico) - (subtração) == (igual a) / (divisão) > (maior que) 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 14/27 = (operador de atribuição) >= (maior que ou igual a) Fonte: Elaborada pela autora, 2020. Estruturas de controle ou de decisão são usadas para verificar um comando e efetuar uma decisão do mesmo. As estruturas usadas no Arduino são: Break: a estrutura é usada para sair de comandos de “laço”, “tipo while” ou “do...while”, ou ainda, do “switch case”. Continue: esse comando salta dos comandos de um loop (“for”, “while” ou “do… while”) e indo diretamente para a condicional do loop; Do...while: seu funcionamento é idêntico ao do while, porém a condição é sempre testada no final do loop; Else: comparando com o comando “If”, tem a função de aumentar o controle do fluxo do código. No entanto, quando usados juntos, podem se testar mutuamente; For: esse comando é uma estrutura de repetição que pode estar em qualquer parte do código sendo identificada por estar entre chaves; Goto: tem a função de enviar a sequência do código para outra parte dele, que é identificado por um nome; If: este comando como sua tradução já diz, é um comando “se”, assim, executa algo se a condição for verdadeira ( true ); Return: identifica o fim de uma função, e se na sua sintaxe solicitar um valor de retorno esse será entregue; Switch...case: é mais um comando de controle de fluxo no código, sempre há um teste verificando o valor determinado no “case” e se for positivo o código para e executa os comandos do “case”; While: é um comando de loop que só irá parar caso a expressão se torne falsa. Outras estruturas ainda são encontradas na referência, amplie seus conhecimentos estudando essas outras possibilidades. Também veremos algumas funções como “setup” 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 15/27 e loop que são conhecidos como sketchs e tem a funções conforme definido: loop(): inicializa e atribui valores iniciais; setup(): é chamada quando um programa inicia. É usada para inicializar variáveis, configurar o modo dos pinos (INPUT ou OUTPUT), inicializar bibliotecas etc. Essa função será executada apenas uma vez, após a placa ser alimentada ou acontecer um reset. Como exemplo, podemos citar um programa mais simples e comum do Arduino, que consiste em acender e piscar um LED. O código é detalhado nas frases indicadas após “//”, pois o “//” são linhas de comentário do programa. Sempre é interessante comentar um código, principalmente as partes com uma lógica mais complicada, pois outro programador pode entender o que foi projetado. // Preparação do Arduino, este código irá rodar uma única vez void setup() { pinMode(12, OUTPUT); // Colocamos o pino 12 do Arduino como OUTPUT (saída) } // Este código é chamado automaticamente pelo Arduino, ficará em void loop() // loop até que seu Arduino seja desligado { // Ativamos o pino 12 (colocando 5v nele) digitalWrite(12, HIGH); // Aguardamos 1 segundo delay(1000); // Desligamos o pino 12 digitalWrite(12, LOW); // Aguardamos mais um segundo delay(1000); // Este código irá se repetir eternamente } Outro conceito em programas são “strings”, um conjunto de caracteres para Arduino que pode ser usado em duas situações: escrever em um display LCD ou para enviar dados seriais de texto. VOCÊ QUER LER? 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 16/27 Para saber mais sobre programação do Arduino, consulte os livros do autor Simon Monk: Programação com Arduino: começando com sketches e Programação com Arduino II: passos avançados com sketches . 3.3.1 Biblioteca padrão do Arduino Uma biblioteca é utilizada para que o usuário não tenha que manipular bits e registradores do microcontrolador. Do ponto de vista do usuário, é utilizada apenas para chamadas de funções e escrita de procedimentos lógicos. As bibliotecas são adicionadas por meio do comando “include”. Existem bibliotecas que já vem instaladas junto com o programa, chamadas de biblioteca padrão, mas também existem outras que podem ser usadas, porém não vem instaladas para não sobrecarregar o Arduino. Essas são chamadas “core” e, assim, somente as bibliotecas usadas estão instaladas. Também há as bibliotecas adicionais que são criadas e compartilhadas pelo grupo de trabalho e por outros programadores, que as fazem e disponibilizam. Vamos praticar É possível criar bibliotecas e, no tutorial do site de referência, é possível aprender a criar os programas que, porventura, possamos usar muitas vezes. Disponível em: < https://www.arduino.cc/en/Hacking/LibraryTutorial >. Uma biblioteca Arduino consiste, basicamente, em três componentes ou arquivos. São eles: 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 17/27 https://www.arduino.cc/en/Hacking/LibraryTutorial Arquivo header (cabeçalho) com extensão “.h”, que contém uma listagem (ou declaração) de todas as funções e variáveis da nossa biblioteca; Arquivo source (fonte) com extensão “.cpp”, que contém o corpo e funcionamento ou lógica (definição) das funções; Arquivo “keywords.txt”, que é específico da IDE Arduino e usado para dar coloração as funções da biblioteca, enquanto se escreve um código. Foram as bibliotecas que tornaram o Arduino tão popular, pois elas facilitaram a programação sem a necessidade de um profissional com grandes estudos para usar a imaginação e criar muitos projetos inovadores. Quando colocar uma placa ou um componente específico para trabalhar com seu Arduino, antes de sair criando seus programas, pesquise as bibliotecas existentes e verifique se já não existe alguma pronta, sendo necessário somente chamar e colocar as variáveis de entrada e saída. 3.4 Funções do Arduino Uma função é um bloco de código programado para realizar uma determinada tarefa, seguindo uma série de comandos pré-definidos. Essas funções têm grande utilização para que não seja necessário que uma determinada parte do programa seja repetida diversas vezes, tornando a leitura do código mais clara e fácil. Se comparar uma função com o refrão de uma música, ou seja, com um trecho que se repete a cada verso, não seria necessário repetir a escrita de todas as linhas do refrão, indicando apenas “refrão” para que todos saibam quando cantar a mesma parte da música. Assim, a função, quando é chamada, roda a parte do programa referenciada. Os parâmetros de uma função são as informações que devem ser enviadas na chamada dessa função. No exemplo da música, poderia ser chamado o “refrão (LÁ)” e o parâmetro indicaria que o refrão é em LÁ. As funções precisam ser declaradas indicando seu uso e seus parâmetros. As funçõesdo Arduino podem ser pesquisadas para uso e têm toda a indicação de uso e exemplos. Na lista que segue, temos os tipos de funções: Entradas e saídas digitais; Funções matemáticas; 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 18/27 Números aleatórios; Bits e bytes; Apenas zero, due e família MKR; Funções trigonométricas; Interrupções externas; Entradas e saídas avançadas; Caracteres; Interrupções; Funções temporizadas; Comunicação; USB. Como exemplos de funções de entrada e saída, temos: digitalRead(), digitalWrite() e pinMode(). 3.4.1 Projetos práticos O uso de simuladores ajuda a fazer os primeiros testes de projetos com Arduino. Uma ferramenta que pode auxiliar é o Tinkercad. Essa ferramenta é da empresa Autodesk, criadora de softwares famosos como o Autocad, e ela é conhecida como “sala de aula”, permitindo criar, desenhar circuitos e modificar rapidamente qualquer design. É um software gratuito e que pode ser utilizado de modo on-line. O uso de simuladores são grandes aliados em projetos, pois não pode ter perda de componentes. O acesso do site está identificado nas referências desta unidade. Ele deve ser usado diretamente, seus arquivos ficam guardados e é possível indicar um caminho para acesso ao seu projeto. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 19/27 Figura 5 – Captura de tela inicial do Tinkercad. Ao clicar no site e se cadastrar, será criada uma conta na qual será possível arquivar todos os projetos que executar, podendo, inclusive, serem compartilhados para que outras pessoas possam acessar, sendo possível gerar um hiperlink para enviar às pessoas que desejar. Para iniciar um novo circuito com Arduino, no menu lateral, deve-se estar em Circuits e deve-se pressionar o botão verde: Criar um novo projeto . Conforme a Figura 6, podemos identificar que as placas do Arduino podem ser simuladas, pois temos outros componentes, “protoboard”, “sensores”, dentre outros. A fiação de interligação pode ser colorida o que facilita na identificação dos fios. Verifique o código usado para programar. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 20/27 Figura 6 – Captura de tela de projeto em simulação do tutorial Tinkercad. O código a seguir é referente ao circuito que usa o LCD para escrever e contar os minutos. Esse projeto já está pronto no Tinkercad, como também existem outros para quem é iniciante possa ter uma ideia de como é montada uma placa. /* LiquidCrystal Library - Hello World Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch prints "Hello World!" to the LCD and shows the time. The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * LCD VSS pin to ground * LCD VCC pin to 5V * 10K resistor: 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 21/27 * ends to +5V and ground * wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystal */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000); } Para quem não tem facilidade com linguagem de programação, o Tinkercad também pode ser programado em blocos, de modo que todo interessado possa começar a programar com o simulador. Com o uso dos blocos, conforme a Figura 7, podemos 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 22/27 verificar que é bem mais simples e intuitivo, facilitando para depois transferir para a linguagem de programação. Figura 7 – Captura de tela de projeto em simulação do tutorial Tinkercad. Ainda na Figura 7, é possível observar que o LED está aceso, esse é o primeiro projeto que podemos fazer, pois com poucos componentes e uma simples programação já conseguimos fazer piscar um LED. A Figura 8 representa a realização de um zoom da tela de simulação de circuito, da esquerda para direita os botões têm a seguintes funções: Botão rotacional: o elemento selecionado faz um giro em 25 graus; Botão excluir ou delete: elimina da tela o item selecionado; Botões desfazer e refazer (dois próximos botões): é um atalho CTRL+Z no circuits.io tem a função de desfazer a última ação e a refazer, se necessário; Botão de anotação: coloca anotação o em qualquer local do circuito; Botão de exibir/esconder as anotações. Figura 8 – Captura de tela de simulação do Tinkercad. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 23/27 Os botões identificados na Figura 9, estão do lado direito da tela e tem as seguintes funções: Botão para baixar código, sendo possível após os testes passar o código para o hardware; Botão “Bibliotecas”: caso tenha que usar bibliotecas para que nos poupe trabalho de codificar além do necessário; Botão “Debugger”: tem a mesma ação que os “debuggers” em outras IDEs, serve para analisar como o código irá se comportar linha por linha. Figura 9 – Captura de tela de projeto em simulação do tutorial Tinkercad. Essa é uma pequena parte dessa ferramenta, é possível utilizar em outros tipos de circuitos, em desenhos 3D e outras aplicações. Sugerimos que você explore as possibilidades. Essa prática é necessária para que se consiga dominar e usar todas suas possibilidades. VOCÊ QUER LER? Agora que você já conhece um pouco do Arduino, uma dúvida pode se apresentar: Será possível fazer aplicações em IoT que é a tecnologia do momento com esse dispositivo? No artigo "Desenvolvimento de um sistema de automação residencial de baixo custo aliado ao conceito de Internet das Coisas (IoT)", é realizado o desenvolvimento de um sistema de automação residencial de baixo custo usando um Arduino e o conhecimento de IoT com a utilização de sensores e atuadores 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 24/27 responsáveis pela comunicação e acionamento de dispositivos microcontrolados. É uma ótima e viável leitura de aplicação. Disponível em: < http://sbrt.org.br/sbrt2016/anais/ST02/1570269244.pdf >. Síntese Caro aluno(a), estamos concluindo esta unidade com muitos conhecimentos adquiridos, e já podemos definir as interfaces de comunicação, conhecemos alguns tipos de microcontroladores e, principalmente, o Arduino, com suas bibliotecas e funções que poderemos fazer alguns projetos simulados, pois também conhecemos a ferramenta Tinkercadque possibilita muitos exercícios aplicados para ampliar o conhecimento. Bem, agora, é prática! Vamos usar os livros de referência que indicam muitos circuitos para começar e explorar as possibilidades, escrever códigos com a linguagem que aprendemos e, a partir disso, explorar a criatividade de cada um. Não se limite, vá além, imagine um projeto e coloque em prática, utilizando o Arduino. Referências bibliográficas 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 25/27 http://sbrt.org.br/sbrt2016/anais/ST02/1570269244.pdf ARDUINO. Documentação de referência da linguagem Arduino . Disponível em: < https://www.arduino.cc/reference/pt/ >. Acesso em: 15 jun. 2020. AUTODESK TINKERCAD. Simulador de circuitos . Disponível em: < https://www.tinkercad.com/ >. Acesso em: 30 jun. 2020. EVANS, M.; NOBLE, J.; HOCHENBAUM, J. Arduino em ação . 1.ed. São Paulo: Novatec, 2013. GIMENEZ, S. P. Microcontroladores 8051 : conceitos, operações, fluxogramas e programação. 1.ed. São Paulo: Érica, 2015. GIMENEZ, S. P. Microcontroladores 8051 : teoria e prática. 1.ed. São Paulo: Érica, 2010. GIMENEZ, S. P. Microcontroladores 8051 : teoria do hardware e do software. 1.ed. São Paulo: Pearson, 2002. MONK, S. 30 projetos com Arduino . 2. ed. Porto Alegre: Bookman, 2014. ROTTA, G.; CHARÃO, A.; DANTAS, M. Um estudo sobre protocolos de comunicação para ambientes de internet das coisas. In: ESCOLA REGIONAL DE ALTO DESEMPENHO DA REGIÃO SUL (ERAD/RS), 2017, Ijuí. Anais... XVII Escola Regional de Alto Desempenho do Estado do Rio Grande do Sul. Porto Alegre: Sociedade Brasileira de Computação, 2017. pp. 387-390. Disponível em: < https://sol.sbc.org.br/index.php/eradrs/article/view/2984/2946 >. Acesso em: 15 jun. 2020. SACCO, F. Comunicação SPI – Parte 1. Portal Embarcados , 04 mar. 2020. Disponível em: < https://www.embarcados.com.br/spi-parte-1/ >. Acesso em: 12 jul. 2020. WANZELER, T.; FÜLBER, H., MERLIN, B. Desenvolvimento de um sistema de automação residencial de baixo custo aliado ao conceito de Internet das Coisas (IoT). In: XXXIV SIMPÓSIO BRASILEIRO DE TELECOMUNICAÇÕES, 2016, Santarém. Anais ... Santarém: Sociedade Brasileira de Telecomunicações, 2016, pp. 36-39. Disponível em: < http://www.sbrt.org.br/sbrt2016/anais/ST02/1570267704.pdf >. Acesso em: 30 jul. 2020. 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 26/27 https://www.arduino.cc/reference/pt/ https://www.tinkercad.com/ https://sol.sbc.org.br/index.php/eradrs/article/view/2984/2946 https://www.embarcados.com.br/spi-parte-1/ http://www.sbrt.org.br/sbrt2016/anais/ST02/1570267704.pdf 22/04/2024, 10:08 Unidade 3 - Microcontroladores e IOT https://student.ulife.com.br/ContentPlayer/Index?lc=jV%2fpYsXAYxxMtdFLfHWfRw%3d%3d&l=WXvShvceqTslNSNh6BM%2b%2fQ%3d%3d&… 27/27
Compartilhar