Arduino: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(273 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
=Arduíno=
=Arduíno=


;Descrição
;Descrição: O Arduino é um microcontrolador montado em uma plataforma de prototipagem eletrônica de hardware livre que pode ser utilizado em múltiplas aplicações. O '''Arduino''' é facilmente programável através de uma '''interface de programação''' ('''IDE''') e pode ser utilizado para automação de dispositivos eletrônicos, acionamento de motores e leds, monitoramento de sensores, construção de protótipos de soluções tecnológicas e um mundo de possibilidades.  
O Arduino é um microcontrolador montado em uma plataforma de prototipagem eletrônica de hardware livre que pode ser utilizado em múltiplas aplicações. O Arduino é facilmente programável e pode ser utilizado para automação de dispositivos eletrônicos, acionamento de motorExemplo.jpges e leds, monitoramento de sensores, construção de protótipos de soluções tecnológicas e um mundo de possibilidades.  


;Links e referências
;Links e referências:
[http://www.arduino.cc/ Site oficial do Arduíno]
*[http://www.arduino.cc/ Site oficial do Arduíno]
**[https://www.arduino.cc/reference/pt/ Referência da Linguagem]
**[https://www.arduino.cc/en/Tutorial/BuiltInExamples Exemplos prontos]
**[https://www.arduino.cc/en/Tutorial/LibraryExamples Exemplos usando Bibliotecas]


[[Mídia:ArduinoReference.pdf | Arduíno Reference]]
==Algumas placas Arduino==


[http://www.labdegaragem.com.br/wiki/index.php?title=Sobre_Arduino#Introdu.C3.A7.C3.A3o Wiki com exemplos de aplicação com Arduíno]
;Arduino UNO:
[[Arquivo:PinosArduinoUno.png|300px]]


;Instalação
;Arduino Micro:
Para instalação no Ubuntu 12.04:
[[Arquivo:PinosArduinoMicro.png|375px]]
  sudo apt-get install arduino
 
;Arduino Mega:
[[Arquivo:PinosArduinoMega.png|500px]]
 
==Hardware do Arduíno UNO <ref>https://www.arduino.cc/en/Main/ArduinoBoardUno</ref>==
*Microcontrolador   ATmega328P
*Voltagem de operação   5V
*Alimentação recomendada  7-12V
*Entradas/saídas digitais 14 (6 podem ser saídas PWM)
*Saídas PWM "analógicas"  6
*Entradas analógicas      6
*Corrente DC por pino   20 mA
*Corrente DC pino 3.3V    50 mA
*Memória Flash      32 KB
*Memória SRAM           2 KB
*Memória EEPROM           1 KB
*Velocidade do Clock      16 MHz
 
===Voltagens de alimentação===
O Arduíno pode ser alimentado pelo '''cabo USB''' ou por '''fonte externa'''.
 
A alimentação com '''fonte externa''' recomendada é 7-12V.
 
;Pinos de voltagem:
*'''5V''' Tensão regulada de '''5V''' (independente de alimentado pelo cabo UBS ou fonte externa).
*'''3,3V''' Tensão regulada de '''3,3V'''.
*'''GND''' Pinos de '''terra'''.
*'''V<sub>in</sub>''' Quando utilizado '''fonte externa''' a tensão da mesma pode ser obtida aqui.
*'''IO<sub>ref</sub>''' Fornece a tensão de referência que o microcontrolador opera, por exemplo, o UNO opera com 5V, mas o DUE opera em 3,3V.
 
===Entradas e Saídas===
 
;14 Entradas/Saídas Digitais: Operam com valores digitais '''LOW''' ('''0V''') e '''HIGH''' ('''5V'''). Fornecem corrente de até '''20 mA'''. Qualquer corrente solicitada acima de '''40 mA''' pode danificar o Arduíno.
 
;6 Entradas Analógicas: Nomeadas de '''A0''' até '''A5'''. Por default recebem '''valores analógicos entre 0V e 5V''' e convertem para digital com '''10 bits de resolução''' (valores de '''0''' a '''1023''').
:'''A<sub>ref</sub>''' Usada para mudar a referência para a '''conversão analógico-digital''', deve ser usada em conjunto com a função '''analogReference'''(). Por exemplo, se quisermos converter sinal analógico entre 0 e 1,5V, colocamos esta tensão em A<sub>ref</sub>.
 
;6 Saídas PWM: Identificadas pelo sinal '''~'''. Fornecem '''saídas analógicas''' através de '''pulsos PWM''' (''Pulse Width Modulation'') de '''8 bits'''  (valores de '''0''' a '''255''').
:O sinal PWM é uma onda quadrada, com frequência constante, mas a fração de tempo em que o sinal é HIGH (5V) (''duty cycle'') pode variar entre 0 e 100%, fornecedo uma média de tensão variável na saída <ref>https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM</ref>.
[[Arquivo:PWM.gif]]
 
;Led pino 13: O pino 13 tem um '''led montado na placa'''. Quando o pino for HIGH o led acende, quando for LOW o led apaga.
 
;Serial 0 (RX) e 1 (TX): Os pinos 0 e 1 podem ser usados para '''transmitir (TX) e receber (RX) serialmente''' dados TTL.
:Dados digitais '''TTL''' operam valores LOW (0V) e HIGH (5V).
 
;Interrupções externas: Os pinos 2 e 3 podem ser utilizados para dispararem '''interrupções externas''' com a função '''attachInterrupt()'''.


==Ambiente de desenvolvimento do Arduíno==
==Ambiente de desenvolvimento do Arduíno==
O ambiente de desenvolvimento de software do Arduíno usa uma linguagem de programação própria, baseada na '''linguagem C'''.
O ambiente de desenvolvimento de software do Arduíno usa uma linguagem de programação própria, baseada na '''linguagem C'''.
;Instalação: Para instalação no Ubuntu 20.04:
sudo apt update
sudo apt install arduino


Os programas fonte são identificados pela extensão <tt>'''.ino'''</tt>.
Os programas fonte são identificados pela extensão <tt>'''.ino'''</tt>.
Linha 23: Linha 76:


[[Image:ArduinoIDE.png | 400 px]]
[[Image:ArduinoIDE.png | 400 px]]
 
<!--
===Ambiente de programação S4A (Scratch for Arduíno)===
===Ambiente de programação S4A (Scratch for Arduíno)===
Também é possível programar o Arduíno usando o ambiente de programação [http://s4a.cat/ '''S4A''' (Scratch for Arduino)], permite realizar a programação do Arduino utilizando as mesmas estruturas da linguagem [[Scratch]], o que facilita muito o trabalho de quem está iniciando no mundo da programação de computadores.
Também é possível programar o Arduíno usando o ambiente de programação [http://s4a.cat/ '''S4A''' (Scratch for Arduino)], permite realizar a programação do Arduino utilizando as mesmas estruturas da linguagem [[Scratch]], o que facilita muito o trabalho de quem está iniciando no mundo da programação de computadores.
Linha 29: Linha 82:
[[Image:S4A.png | 450 px]]
[[Image:S4A.png | 450 px]]


;Mais informações e ilustrações
;Instalação do S4A e do ''firmware'' no Arduíno: O ambiente de desenvolvimento S4A e o ''firmware'' devem ser baixados no [http://s4a.cat/ Site do '''S4A''' (Scratch for Arduino)] e instalados, respectivamente, no computador e no hardware do Arduíno.
[http://prezi.com/odgpktkek0uw/experimentando-s4a-arduino-scratch/?utm_source=website&utm_medium=prezi_landing_related_solr&utm_campaign=prezi_landing_related_author Apresentação no Prezi sobre '''S4A''': Arduíno & Scratch]
 
;Instalação do S4A e do ''firmware'' no Arduíno: O ambiente de desenvolvimento S4A e o ''firmware'' devem ser baixados no [http://s4a.cat/ Site do '''S4A''' (Scratch for Arduino)] e instalados, respectivamente, no computador e no hardware do Arduíno, conforme ilustra a figura:


[[Image:S4A-3steps.png]]
;Exemplos de programas com S4A e Arduíno: Clique na aba Docs do site [http://s4a.cat/ Site do '''S4A''' (Scratch for Arduino)] e veja exemplos básicos de aplicação com S4A e Arduino.
;Sensores virtuais no S4a: É possível criar [http://www.arduteka.com/2012/11/sensores-virtuales-en-s4a/ Sensores Virtuais] para o S4A a partir da Web.


;Exemplos de programas com S4A e Arduíno
===Ambiente de programação ArduBlock===
*http://andreasgramm.de/projects/S4A%20HowTo%20-%20A.%20Gramm.pdf
O '''ArduBock''' é um ambiente de programação para o Arduíno que utiliza blocos, similares ao do Scratch, facilitando a construção de programas para quem está iniciando no mundo da programação.


;Sensores virtuais no S4a
Uma vez instalado o ArduBlock é incorporado na própria IDE do Arduíno. Assim, um programa construído com o ArduBlock é exportado para a IDE na forma de código na linguagem C do Arduíno.
É possível criar '''sensores virtuais''' para o S4A a partir da Web.  


Veja referência em: [http://www.arduteka.com/2012/11/sensores-virtuales-en-s4a/ Sensores Virtuais no S4A]
;Instalação:
#Baixar o arquivo '''ardublock-all.jar''' do site [https://sourceforge.net/projects/ardublock/ '''ArduBlock'''] (remover do nome do arquivo a data de compilação, deixando ardublock-all.jar);
#Verificar no diretório home a pasta '''sketchbook''' (ou '''Arduino''', dependendo da versão da IDE) e criar nela os subdiretórios indicados para colocar o arquivo ardublock-all.jar ('''tools/ArduBlockTool/tool/ardublock-all.jar''');
#Reiniciar a IDE do Arduíno;
#O '''ArduBlock''' é acessado através da guia '''Tools'''.


==Eletrônica para Arduíno==
[[Arquivo:ArduBlock.png|500px]] -->


;Fundamentos e conceitos:
==SimulIDE: Ambiente de simulação para Arduíno==
*[[Eletricidade Básica]]
*[[Corrente Contínua e Corrente Alternada]]
*[[Eletrônica | Eletrônica Básica]]


;Sensores baseados em resistência variável para Arduíno: '''Sensores de luminosidade (LDR)''' e '''sensores de temperatura''' possuem um resistor variável em função da grandeza que estão medindo. Os mesmos podem ser configurados em uma estrutura baseada em um [http://200.17.101.9/wiki/index.php/Eletricidade_B%C3%A1sica#Divisor_de_Tens.C3.A3o '''divisor de tensão'''] para fornecer uma tensão variável ao '''Arduíno'''.
Existem diversos '''ambientes de simulação''' para o Arduíno, como o '''[https://www.simulide.com SimulIDE]''' e o '''[https://www.tinkercad.com TinkerCAD'''].


;Acionamento de [http://200.17.101.9/wiki/index.php/Eletr%C3%B4nica#Leds leds] com Arduíno: O '''Arduíno''' fornece no máximo 40mA de corrente em cada um dos pinos de saída e tensão de 0V a 5V. Portanto, deve ser colocado um resistor em série com o led para limitar a corrente de saída do Arduíno e também a corrente máxima do led.
O '''SimulIDE''' é um simulador para '''Arduíno''' e '''circuitos eletrônicos''' que pode ser instalado em diferentes sistemas operacionais, sendo um sistema leve e fácil de utilizar.


:[[Arquivo:FotoLed.jpg | 200px]]
;Instalação do SimulIDE no Ubuntu 20.04: Baixar a versão compatível com o sistema operacional de extrair o conteúdo do arquivo .tar.gz.
:Instalar dependências que precisam para o programa e estão descritas no arquivo README.md.
:Podem ser instaladas com o comando:
sudo apt-get install libqt5core5a libqt5gui5 libqt5xml5 libqt5svg5 libqt5widgets5 libqt5concurrent5 libqt5multimedia5 libqt5multimedia5-plugins libqt5serialport5 libqt5script5 libelf1
:O diretório "SimulIDE_x.x.x" tem tudo o que precisa para rodar o programa, ir até ele e executar:
./simulide


;[http://200.17.101.9/wiki/index.php/Eletr%C3%B4nica#Transistores Transistor como chave] para acionar uma carga elevada com uma única saída do Arduíno
===Programação do Arduíno no SimulIDE===
:'''Exempĺo de uso''': Acionamento de vários leds com uma única saída do Arduíno no projeto de [http://200.17.101.9/wiki/index.php/Automa%C3%A7%C3%A3o_de_sem%C3%A1foro_com_Scratch_e_Ardu%C3%ADno Automação de Semáforo com Arduíno].


==Informações sobre sensores e drives para uso com o Arduíno==
A programação do Arduíno no '''SimulIDE''' pode ser realizada utilizando a própria '''IDE do Arduíno''', o que é interessante pelo fato de dispor de todos os exemplos prontos de programas.
;Sites de lojas virtuais: Arduíno, shields e acessórios
*[https://robocore.net/ Robocore]


;Sensor Infravermelho
;IDE Arduíno: Procedimentos:
*http://bildr.org/2011/06/pir_arduino/
*'''Compilar''' o programa;
*https://www.sparkfun.com/datasheets/Sensors/Proximity/SE-10.pdf
*'''Exportar binário compilado''' (.hex)
/sketch/Exportar Binário compilado
;SimulIDE: Procedimentos:
*Clicar com o botão direito do mouse sobre o Arduíno e selecionar '''Load firmware''';
*Selecionar arquivo '''binário compilado''' (.hex).


;Sensor Ultrasônico
====Uso do compilador no próprio SimulIDE====
*http://www.dfrobot.com/wiki/index.php?title=URM37_V3.2_Ultrasonic_Sensor_%28SKU:SEN0001%29
O '''SimulIDE''' também apresenta uma área para '''edição de programa''', a qual pode ser utilizada para '''edição''', '''compilação''' e '''carga do programa''' no módulo de simulação.
*[[Mídia:URM3.2_Mannual_Rev2.pdf | Manual URM3.2]]


;Motores e drives
Para utilizar esta facilidade do SimulIDE deve-se clicar com o botão direito do mouse na área de '''edição de programas''' e configurar o parâmetro '''Compiler path'''. O compilador o simulador utiliza o próprio compilador da IDE do Arduíno, portanto, deve-se configurar o caminho onde o programa está localizado.  
*[http://www.dfrobot.com/wiki/index.php?title=Arduino_Motor_Shield_%28L298N%29_%28SKU:DRI0009%29 Arduíno Motor Shield (L298N)]
*http://communityofrobots.com/tutorial/kawal/how-drive-dc-motor-using-l293d-arduino


;Comunicação Serial:
Para descobrir o caminho onde está rodando a '''IDE do Arduíno''', pode habilitar as mensagens do compilador na IDE em
*http://www.embarcados.com.br/arduino-comunicacao-serial/
Arquivo/Preferências/Mostrar mensagens de saída durante compilação
Depois compilar um arquivo e verificar caminho onde o programa está instalado.


;Comunicação Serial entre 2 arduinos
===Binários compilados===
//emissor 
Quando exportamos o '''binário compilado''' são gerados dois arquivos '''.hex''':
int num = 0;
ino.standard.hex
void setup(){
  Serial.begin(9600);
  ino.with_bootloader.standard.hex
}
void loop(){
  //num = 0;
  Serial.write('0');
  delay(2000);
  //num = 1;
  Serial.write('1');
  delay(2000);
  }


//receptor
Como o nome indica, o primeiro não inclui o '''''bootloader'''''. Quando fazemos um '''carga normal''' de programa no Arduíno via '''USB''', o '''''bootloader''''' instalado no módulo recebe os dados pela '''comunicação serial''' e escreve o programa na '''memória ''flash'''''.
int recByte;
int led = 13;


void setup(){
O binário <code>ino.with_bootloader.standard.hex</code> é utilizado quando se usa um '''programador externo''', conectado aos pinos ICSP da placa, para gravar o programa na '''memória ''flash''''' do '''microcontrolador'''. Neste caso, o programador externo sobre-escreve o ''bootloader'' instalado no módulo, portanto, é necessário incluir a parte do ''bootloader'' para o módulo funcionar.
  Serial.begin(9600);
  pinMode(led,OUTPUT);
}
void loop(){
  if (Serial.available ()> 0)
    {
        recByte = Serial.parseInt();
    }
  if(recByte == 0){
    digitalWrite(led,LOW);
  }else if(recByte == 1){
    digitalWrite(led,HIGH);
  }
}


==Referências==
<references />


----
----


[[Categoria:Arduíno]]
[[Categoria:Arduíno]] [[Categoria:IoT]]

Edição atual tal como às 20h49min de 9 de maio de 2023

Arduíno

Descrição
O Arduino é um microcontrolador montado em uma plataforma de prototipagem eletrônica de hardware livre que pode ser utilizado em múltiplas aplicações. O Arduino é facilmente programável através de uma interface de programação (IDE) e pode ser utilizado para automação de dispositivos eletrônicos, acionamento de motores e leds, monitoramento de sensores, construção de protótipos de soluções tecnológicas e um mundo de possibilidades.
Links e referências

Algumas placas Arduino

Arduino UNO

Arduino Micro

Arduino Mega

Hardware do Arduíno UNO [1]

  • Microcontrolador ATmega328P
  • Voltagem de operação 5V
  • Alimentação recomendada 7-12V
  • Entradas/saídas digitais 14 (6 podem ser saídas PWM)
  • Saídas PWM "analógicas" 6
  • Entradas analógicas 6
  • Corrente DC por pino 20 mA
  • Corrente DC pino 3.3V 50 mA
  • Memória Flash 32 KB
  • Memória SRAM 2 KB
  • Memória EEPROM 1 KB
  • Velocidade do Clock 16 MHz

Voltagens de alimentação

O Arduíno pode ser alimentado pelo cabo USB ou por fonte externa.

A alimentação com fonte externa recomendada é 7-12V.

Pinos de voltagem
  • 5V Tensão regulada de 5V (independente de alimentado pelo cabo UBS ou fonte externa).
  • 3,3V Tensão regulada de 3,3V.
  • GND Pinos de terra.
  • Vin Quando utilizado fonte externa a tensão da mesma pode ser obtida aqui.
  • IOref Fornece a tensão de referência que o microcontrolador opera, por exemplo, o UNO opera com 5V, mas o DUE opera em 3,3V.

Entradas e Saídas

14 Entradas/Saídas Digitais
Operam com valores digitais LOW (0V) e HIGH (5V). Fornecem corrente de até 20 mA. Qualquer corrente solicitada acima de 40 mA pode danificar o Arduíno.
6 Entradas Analógicas
Nomeadas de A0 até A5. Por default recebem valores analógicos entre 0V e 5V e convertem para digital com 10 bits de resolução (valores de 0 a 1023).
Aref Usada para mudar a referência para a conversão analógico-digital, deve ser usada em conjunto com a função analogReference(). Por exemplo, se quisermos converter sinal analógico entre 0 e 1,5V, colocamos esta tensão em Aref.
6 Saídas PWM
Identificadas pelo sinal ~. Fornecem saídas analógicas através de pulsos PWM (Pulse Width Modulation) de 8 bits (valores de 0 a 255).
O sinal PWM é uma onda quadrada, com frequência constante, mas a fração de tempo em que o sinal é HIGH (5V) (duty cycle) pode variar entre 0 e 100%, fornecedo uma média de tensão variável na saída [2].

Led pino 13
O pino 13 tem um led montado na placa. Quando o pino for HIGH o led acende, quando for LOW o led apaga.
Serial 0 (RX) e 1 (TX)
Os pinos 0 e 1 podem ser usados para transmitir (TX) e receber (RX) serialmente dados TTL.
Dados digitais TTL operam valores LOW (0V) e HIGH (5V).
Interrupções externas
Os pinos 2 e 3 podem ser utilizados para dispararem interrupções externas com a função attachInterrupt().

Ambiente de desenvolvimento do Arduíno

O ambiente de desenvolvimento de software do Arduíno usa uma linguagem de programação própria, baseada na linguagem C.

Instalação
Para instalação no Ubuntu 20.04:
sudo apt update
sudo apt install arduino

Os programas fonte são identificados pela extensão .ino.

A própria IDE do Arduíno apresenta vários exemplos de aplicações e programas que ajudam quem está iniciando a programá-lo.

SimulIDE: Ambiente de simulação para Arduíno

Existem diversos ambientes de simulação para o Arduíno, como o SimulIDE e o TinkerCAD.

O SimulIDE é um simulador para Arduíno e circuitos eletrônicos que pode ser instalado em diferentes sistemas operacionais, sendo um sistema leve e fácil de utilizar.

Instalação do SimulIDE no Ubuntu 20.04
Baixar a versão compatível com o sistema operacional de extrair o conteúdo do arquivo .tar.gz.
Instalar dependências que precisam para o programa e estão descritas no arquivo README.md.
Podem ser instaladas com o comando:
sudo apt-get install libqt5core5a libqt5gui5 libqt5xml5 libqt5svg5 libqt5widgets5 libqt5concurrent5 libqt5multimedia5 libqt5multimedia5-plugins libqt5serialport5 libqt5script5 libelf1
O diretório "SimulIDE_x.x.x" tem tudo o que precisa para rodar o programa, ir até ele e executar:
./simulide

Programação do Arduíno no SimulIDE

A programação do Arduíno no SimulIDE pode ser realizada utilizando a própria IDE do Arduíno, o que é interessante pelo fato de dispor de todos os exemplos prontos de programas.

IDE Arduíno
Procedimentos:
  • Compilar o programa;
  • Exportar binário compilado (.hex)
/sketch/Exportar Binário compilado
SimulIDE
Procedimentos:
  • Clicar com o botão direito do mouse sobre o Arduíno e selecionar Load firmware;
  • Selecionar arquivo binário compilado (.hex).

Uso do compilador no próprio SimulIDE

O SimulIDE também apresenta uma área para edição de programa, a qual pode ser utilizada para edição, compilação e carga do programa no módulo de simulação.

Para utilizar esta facilidade do SimulIDE deve-se clicar com o botão direito do mouse na área de edição de programas e configurar o parâmetro Compiler path. O compilador o simulador utiliza o próprio compilador da IDE do Arduíno, portanto, deve-se configurar o caminho onde o programa está localizado.

Para descobrir o caminho onde está rodando a IDE do Arduíno, pode habilitar as mensagens do compilador na IDE em

Arquivo/Preferências/Mostrar mensagens de saída durante compilação

Depois compilar um arquivo e verificar caminho onde o programa está instalado.

Binários compilados

Quando exportamos o binário compilado são gerados dois arquivos .hex:

ino.standard.hex

ino.with_bootloader.standard.hex

Como o nome indica, o primeiro não inclui o bootloader. Quando fazemos um carga normal de programa no Arduíno via USB, o bootloader instalado no módulo recebe os dados pela comunicação serial e escreve o programa na memória flash.

O binário ino.with_bootloader.standard.hex é utilizado quando se usa um programador externo, conectado aos pinos ICSP da placa, para gravar o programa na memória flash do microcontrolador. Neste caso, o programador externo sobre-escreve o bootloader instalado no módulo, portanto, é necessário incluir a parte do bootloader para o módulo funcionar.

Referências