Universidade Federal Fluminense – UFF Escola de Engenharia – TCE Curso de Engenharia de Telecomunicac¸o˜es – TGT Programa de Educac¸a˜o Tutorial – PET Grupo PET-Tele Tutoriais PET-Tele Introdu¸c˜ao ao kit de desenvolvimento Arduino (Versa˜o: A2021M06D10) Autores: Roberto Brauer Di Renna (2013) Rodrigo Duque Ramos Brasil (2013) Thiago Elias Bitencourt Cunha (2013) Mathyan Motta Beppu (2010) Erika Guimara˜es Pereira da Fonseca (2010) Tutor: Alexandre Santos de la Vega Niter´oi – RJ Junho / 2021 Sum´ario 1 Introdu¸c˜ao ao Arduino 3 2 Caracter´ısticas do kit Duemilanove 5 2.1 Caracter´ısticas ba´sicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Alimenta¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Memo´ria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Entrada e Sa´ıda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5 Comunica¸c˜ao serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6 Programa¸ca˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.7 Reset Automa´tico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.8 Prote¸c˜ao contra sobrecorrente USB . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Programa¸c˜ao do Arduino 9 3.1 Linguagem de referˆencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Fun¸co˜es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 Bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 Instala¸c˜ao da IDE do Arduino e das suas bibliotecas 14 4.1 Arduino para Windows/Mac OS . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Arduino para GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5 Exemplos de projetos 16 5.1 Exemplo 1 - Acionamento de LED interno . . . . . . . . . . . . . . . . . . . . . 16 5.2 Exemplo 2 - Acionamento de LEDs externos . . . . . . . . . . . . . . . . . . . . 18 5.3 Exemplo 3 - Capac´ımetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.4 Exemplo 4 - Controle de servomotor . . . . . . . . . . . . . . . . . . . . . . . . 23 5.5 Exemplo 5 - Teclado virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.6 Exemplo 6 - Jogo Genius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.7 Exemplo 7 - Alarme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.8 Exemplo 8 - Controle remoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.9 Exemplo 9 - Sensor de Temperatura . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.10 Exemplo 10 - Sensor de Luminosidade . . . . . . . . . . . . . . . . . . . . . . . 41 5.11 Exemplo 11 - Transmissor e Receptor RF . . . . . . . . . . . . . . . . . . . . . . 44 5.12 Exemplo 12 - Intera¸c˜ao com Python e Linux . . . . . . . . . . . . . . . . . . . . 49 5.13 Exemplo 13 - WEB Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.13.1 Circuito de acoplamento do cooler . . . . . . . . . . . . . . . . . . . . . . 54 5.13.2 Circuito de acoplamento para Laˆmpada 110v . . . . . . . . . . . . . . . . 55 5.14 Exemplo 14 - Display de 7 segmentos I2C . . . . . . . . . . . . . . . . . . . . . 59 5.15 Exemplo 15 - LCD 16x2 I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 1 5.16 Exemplo 16 - Emissor e Receptor infravermelho . . . . . . . . . . . . . . . . . . 71 5.17 Exemplo 17 - Arduino stand-alone . . . . . . . . . . . . . . . . . . . . . . . . . 74 6 Referˆencias bibliogr´aficas 79 2 Cap´ıtulo 1 Introduc¸˜ao ao Arduino O Arduino faz parte do conceito de hardware e software livre e esta´ aberto para uso e contribuic¸˜ao de toda sociedade. O conceito Arduino surgiu na It´alia, em 2005, com o objetivo de criar um dispositivo que fosse utilizado em projetos/prot´otipos constru´ıdos de uma forma menos dispendiosa do que outros sistemas dispon´ıveis no mercado. Ele pode ser usado para desenvolver artefatos interativos stand-alone ou conectados ao computador, utilizando diversos aplicativos, tais como: Adobe Flash, Processing, Max/MSP, Pure Data ou SuperCollider. O Arduino foi projetado com a finalidade de ser de fa´cil entendimento, de f´acil programa¸ca˜o e de f´acil aplicac¸˜ao, al´em de ser multiplataforma, podendo ser configurado em ambientes Linux, Mac OS e Windows. Al´em disso, um grande diferencial deste dispositivo´e ser mantido por uma comunidade que trabalha na filosofia open-source, desenvolvendo e divulgando gratuitamente seus projetos. O equipamento ´e uma plataforma de computac¸˜ao f´ısica: sa˜o sistemas digitais ligados a sen- sores e atuadores, que permitem construir sistemas que percebam a realidade e respondem com a¸co˜es f´ısicas. Ele ´e baseado em uma placa microcontrolada, com acessos de Entrada/Sa´ıda (I/O), sobre a qual foram desenvolvidas bibliotecas com fun¸co˜es que simplificam a sua progra- ma¸ca˜o, por meio de uma sintaxe similar a` das linguagens C e C++. O Arduino utiliza o microcontrolador Atmega. Um microcontrolador (tamb´em denominado MCU) ´e um computador em um chip, que cont´em um microprocessador, memo´ria e perif´ericos de entrada/sa´ıda. Ele pode ser embarcado no interior de algum outro dispositivo, que, neste caso, ´e o Arduino, para que possa controlar suas fun¸co˜es ou a¸co˜es. Em resumo, o Arduino ´e um kit de desenvolvimento, que pode ser visto como uma unidade de processamento capaz de mensurar vari´aveis do ambiente externo, transformadas em um sinal el´etrico correspondente, atrav´es de sensores ligados aos seus terminais de entrada. De posse da informa¸ca˜o, ele pode process´a-la computacionalmente. Por fim, ele pode ainda atuar no controle ou no acionamento de algum outro elemento eletro-eletroˆnico conectado ao terminal de sa´ıda. A Figura 1.1 apresenta um diagrama de blocos de uma cadeia de processamento utilizando o Arduino. Figura 1.1: Diagrama de blocos de uma cadeia de processamento utilizando o Arduino. 3 Uma vez que o Arduino ´e baseado em um microcontrolador e, portanto, ´e programa´vel, torna-se poss´ıvel criar diversas aplica¸co˜es diferentes com uma certa facilidade. Al´em disso, o pr´oprio equipamento pode ser reutilizado, atrav´es de uma nova programa¸ca˜o. Por sua vez, a sua programac¸˜ao ´e simplificada pela existˆencia de diversas func¸˜oes que controlam o dispositivo, com uma sintaxe similar `a de linguagens de programa¸ca˜o comumente utilizadas (C e C++). Assimsendo,emumambienteprofissional,ascaracter´ısticasdoArduinofazemdeleumaboa ferramenta de prototipa¸c˜ao r´apida e de projeto simplificado. Por outro lado, em um ambiente acadˆemico, ele pode ser perfeitamente utilizado como ferramenta educacional, uma vez que na˜o requer do usua´rio conhecimentos profundos de eletroˆnica digital nem da programa¸ca˜o de dispositivos digitais espec´ıficos. 4 Cap´ıtulo 2 Caracter´ısticas do kit Duemilanove O kit Arduino Duemilanove (2009 em italiano) ´e uma placa baseada no microcontrolador ATmega168 ou ATmega328. Ele possui 14 pinos de entrada/sa´ıda digital (dos quais 6 podem ser utilizados como sa´ıdas PWM), 6 entradas anal´ogicas, um oscilador a cristal de 16 MHz, uma conexa˜o USB para programa¸ca˜o, uma tomada de alimenta¸c˜ao, um conector ICSP e um bota˜o de reinicializa¸c˜ao (reset). Para sua utiliza¸ca˜o, basta conecta´-lo a um computador com um cabo USB ou liga´-lo com um adaptador AC/DC ou a uma bateria. 2.1 Caracter´ısticas b´asicas A Tabela 2.1 e a Figura 2.1 apresentam as caracter´ısticas b´asicas do Arduino Duemilanove. Microcontrolador ATmega328 / ATmega168 Pinos de entrada anal´ogica 6 Pinos de I/O digitais 14 (dos quais 6 podem ser sa´ıdas PWM) Tens˜ao operacional 5 V Tens˜ao de alimenta¸ca˜o (recomendada) 7 – 12 V Tens˜ao de alimenta¸ca˜o (limites) 6 – 20 V Corrente cont´ınua por pino de I/O 40 mA Corrente cont´ınua para o pino 3.3 V 50 mA Memo´ria flash 32 KB (2KB usados para o bootloader) / 16 KB SRAM 2 KB EEPROM 1 KB Frequ¨ˆencia de clock 16 MHz Tabela 2.1: Caracter´ısticas b´asicas do Arduino Duemilanove. 2.2 Alimenta¸c˜ao O Arduino Duemilanove pode ser alimentado pela conexa˜o USB ou por qualquer fonte de alimenta¸c˜ao externa. A fonte de alimenta¸c˜ao ´e selecionada automaticamente. A alimenta¸c˜ao externa (n˜ao-USB) pode ser tanto de uma fonte ou de uma bateria. A fonte pode ser conectada com um plug P4 de 2,1 mm (centro positivo) no conector de alimenta¸ca˜o. 5 Figura 2.1: Arduino Duemilanove. Cabos vindos de uma bateria podem ser inseridos nos pinos GND (terra) e V (entrada de in tensa˜o) do conector de alimentac¸˜ao. Aplacapodeoperarcomumaalimenta¸c˜aoexternade6a20V.Entretanto, seaalimenta¸ca˜o for inferior a 7 V o pino 5 V pode fornecer menos de 5 V e a placa pode ficar inst´avel. Se a alimenta¸c˜ao for superior a 12 V o regulador de tensa˜o pode superaquecer e avariar a placa. A alimenta¸c˜ao recomendada ´e de 7 a 12 V. Os pinos de alimenta¸ca˜o s˜ao: (cid:136) V : entrada de alimenta¸ca˜o para a placa Arduino quando uma fonte externa for utilizada. in Vocˆe pode fornecer alimenta¸ca˜o por este pino ou, se usar o conector de alimenta¸ca˜o, acessar a alimenta¸ca˜o por este pino; (cid:136) 5V: A fonte de alimenta¸ca˜o utilizada para o microcontrolador e para outros componentes da placa. Pode ser proveniente do pino V atrav´es de um regulador on-board ou ser in fornecida pela porta USB; (cid:136) 3V3: alimenta¸c˜ao de 3,3 V fornecida pelo circuito integrado FTDI (controlador USB). A corrente m´axima ´e de 50 mA; (cid:136) GND (ground): pino terra. 2.3 Mem´oria O ATmega328 tem 32 KB de memo´ria flash (onde sa˜o armazenados os programas), al´em de 2 KB de SRAM (onde ficam as vari´aveis) e 1 KB of EEPROM (esta u´ltima pode ser lida e escrita atrav´es da biblioteca EEPROM e guarda os dados permanentemente, mesmo que desliguemos a placa). A memo´ria SRAM ´e apagada toda vez que desligamos o circuito. 2.4 Entrada e Sa´ıda Cadaumdos14pinosdigitaisdoDuemilanovepodeserusadocomoentradaousa´ıda,usando as func¸˜oes de pinMode(), digitalWrite(), e digitalRead(). Eles operam com 5 V. Cada pino pode 6 fornecer ou receber um ma´ximo de 40 mA e tem um resistor pull-up interno (desconectado por padra˜o) de 20-50 kΩ. Al´em disso, alguns pinos tˆem fun¸co˜es especializadas: (cid:136) Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL. Estes pinos s˜ao conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL. (cid:136) PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma sa´ıda analo´gica PWM de 8 bits com a func¸a˜o analogWrite(). (cid:136) SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunicac¸˜ao SPI, que embora compat´ıvel com o hardware, n˜ao est´a inclu´ıda na linguagem do Arduino. (cid:136) LED: 13. Ha´ um LED ja´ montado e conectado ao pino digital 13. O Duemilanove tem 6 entradas analo´gicas, cada uma delas esta´ ligada a um conversor analo´gico-digital de 10 bits, ou seja, transformam a leitura analo´gica em um valor dentre 1024 possibilidades (exemplo: de 0 a 1023). Por padra˜o, elas medem de 0 a 5 V, embora seja poss´ıvel mudar o limite superior usando o pino AREF e um pouco de co´digo de baixo n´ıvel. Adicionalmente alguns pinos tˆem funcionalidades especializadas: (cid:136) I2C: 4 (SDA) e 5 (SCL). Suportam comunica¸ca˜o I2C (TWI) usando a biblioteca Wire. (cid:136) AREF. referˆencia de tensa˜o para entradas analo´gicas. Usados com analogReference(). (cid:136) Reset. Envia o valor LOW para o pino 1 do microcontrolador reiniciando-o. 2.5 Comunica¸c˜ao serial A comunica¸ca˜o entre o Arduino Duemilanove com computador ou com outro Arduino ou com outros microcontroladores´e muito simplificada. O ATmega328 permite comunica¸ca˜o serial no padra˜o UART TTL (5 V), que esta´ dispon´ıvel nos pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa encaminha esta comunica¸ca˜o serial atrav´es da USB e os drivers FTDI (inclu´ıdo no software do Arduino) fornecem uma porta virtual para o software no computador. O software Arduino inclui um monitor serial(Serial Monitor) que permite que dados simples detextosejamenviadoserecebidosa`placaArduino. OsLEDsRXeTXdaplacapiscamquando os dados esta˜o sendo transferidos ao computador pelo chip FTDI e ha´ conex˜ao USB (mas na˜o quando ha´ comunica¸ca˜o serial pelos pinos 0 e 1). A biblioteca SoftwareSerial permite comunica¸ca˜o serial por quaisquer dos pinos digitais do Duemilanove. O ATmega328 tamb´em oferece suporte aos padro˜es de comunicac¸˜ao I2C (TWI) e SPI. O software do Arduino inclui uma biblioteca Wire para simplificar o uso do barramento I2C. Para usar a comunica¸ca˜o SPI, veja o manual do ATmega328. 2.6 Programac¸˜ao O ambiente de programa¸ca˜o mais indicado´e o dosoftware Arduino, que pode ser baixado no seguinte site: http://www.arduino.cc/en/Main/Software. Mais detalhes sobre a programac¸˜ao do Ardu´ıno ser˜ao apresentados no Cap´ıtulo 3. 7 2.7 Reset Autom´atico Algumas verso˜es anteriores do Arduino requerem um reset f´ısico (pressionando o bota˜o de reset na placa) antes de carregar o programa a ser compilado, denominado de sketch. O Arduino Duemilanove ´e projetado de modo a permitir que isto seja feito atrav´es do software que esteja rodando no computador conectado. Uma das linhas de controle de hardware (DTR) do FT232RL est´a conectada ao reset do ATmega328 via um capacitor de 100 µF. Quando esta linha ´e colocada em n´ıvel lo´gico baixo, o sinal cai por tempo suficiente para reiniciar o chip. O software Arduino usa esta caracter´ıstica para permitir carregar o programa simplesmente pressionando o bota˜o“upload”no ambiente Arduino. Isto significa que o bootloader pode ter um timeout mais curto, ja´ que a ativa¸ca˜o do DTR (sinal baixo) pode ser bem coordenada com o in´ıcio do upload. Estas configurac¸˜oes tˆem outras implica¸co˜es. Quando o Duemilanove esta´ conectado a um computador rodando Mac OS X ou GNU/Linux, ele reinicia toda vez que a conex˜ao ´e feita por software (via USB). No pro´ximo meio segundo aproximadamente, o bootloader estar´a rodando no Duemilanove. Considerando que ´e programado para ignorar qualquer coisa a n˜ao ser um upload de um novo co´digo, ele interceptara´ os primeiros bytes de dados sendo enviados para a placa depois que a conex˜ao ´e aberta. Se um sketch rodando na placa recebe configura¸co˜es de uma vez ou outros dados ao iniciar, assegure-se que o software que esteja comunicando espere um segundo depois de aberta a conexa˜o antes de enviar estes dados. O Duemilanove tem uma trilha que pode ser cortada para desabilitar o auto-reset e pode ser ressoldada para reativa´-lo, ´e chamada de “RESET-EN”, vocˆe pode tamb´em desabilitar o auto-reset conectando um resistor de 110 Ω dos +5 V at´e o sinal de reset. 2.8 Prote¸c˜ao contra sobrecorrente USB O Arduino Duemilanove tem um polifus´ıvel que protege a porta USB do seu computador contra curtocircuito e sobrecorrente. Apesar da maioria dos computadores possu´ırem protec¸˜ao interna pro´pria, o fus´ıvel proporciona uma protec¸˜ao extra. Se mais de 500 mA forem aplicados na porta USB, o fus´ıvel ir´a automaticamente interromper a conexa˜o at´e que o curto ou a sobrecarga seja removida. 8 Cap´ıtulo 3 Programac¸˜ao do Arduino Nesse cap´ıtulo iremos fazer uma pequena introdu¸ca˜o sobre como s˜ao estruturados os progra- mas para o Arduino, conhecendo a linguagem usada como referˆencia e suas principais fun¸c˜oes. E por fim veremos as funcionalidades extras que o uso de bibliotecas nos proporciona. 3.1 Linguagem de referˆencia Os programas para o Arduino sa˜o implementados tendo como referˆencia a linguagem C++. Preservando sua sintaxe cl´assica na declara¸ca˜o de varia´veis, nos operadores, nos ponteiros, nos vetores, nas estruturas e em muitas outras caracter´ısticas da linguagem. Com isso, temos as referˆencias da linguagem. Elas podem ser divididas em trˆes partes principais: As estruturas, os valores (varia´veis e constantes) e as func¸˜oes. As estruturas de referˆencias sa˜o: (cid:136) Estruturas de controle (if, else, break, ...) (cid:136) Sintaxe ba´sica (#define, #include, ; , ...) (cid:136) Operadores aritm´eticos e de compara¸c˜ao (+, -, =, ==, !=, ...) (cid:136) Operadores booleanos (&&, ||, !) (cid:136) Acesso a ponteiros (*, &) (cid:136) Operadores compostos (++, –, +=, ...) (cid:136) Operadores de bits (|, , , ...) ˆ Os valores de referˆencias s˜ao: (cid:136) Tipos de dados(byte, array, int , char , ...) (cid:136) Convers˜oes(char(), byte(), int(), ...) (cid:136) Varia´vel de escopo e de qualificac¸˜ao (variable scope, static, volatile, ...) (cid:136) Utilit´arios (sizeof(), diz o tamanho da vari´avel em bytes) ´ E bom citar que o software que vem no Arduino ja´ provˆe va´rias fun¸co˜es e constantes para facilitar a programa¸ca˜o, tais como: 9
Description: