ebook img

Tutorial sobre Introdução ao Arduino PDF

80 Pages·2014·3.05 MB·Portuguese
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Tutorial sobre Introdução ao Arduino

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:
Programa de Educaç˜ao Tutorial – PET. Grupo PET-Tele. Tutoriais PET-Tele. Introduç˜ao ao kit de desenvolvimento Arduino. (Vers˜ao: A2013M06D20).
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.