Arduino: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 39: Linha 39:


;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.
;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.
;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.


==Informações sobre sensores e drives para uso com o Arduíno==
==Informações sobre sensores e drives para uso com o Arduíno==

Edição das 13h42min de 6 de agosto de 2015

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 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
Instalação
Para instalação no Ubuntu 14.04:
sudo apt-get install arduino

Placas Arduino

Arduino UNO

Arduino Micro

Arduino Mega

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.

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.

Ambiente de programação S4A (Scratch for Arduíno)

Também é possível programar o Arduíno usando o ambiente de programação 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.

Instalação do S4A e do firmware no Arduíno
O ambiente de desenvolvimento S4A e o firmware devem ser baixados no Site do S4A (Scratch for Arduino) e instalados, respectivamente, no computador e no hardware do Arduíno.
Exemplos de programas com S4A e Arduíno
Clique na aba Docs do site 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 Sensores Virtuais para o S4A a partir da Web.

Informações sobre sensores e drives para uso com o Arduíno

Sites de lojas virtuais
Arduíno, shields e acessórios
Sensor Infravermelho
Sensor Ultrasônico
Motores e drives

Eletrônica para Arduíno

Fundamentos e conceitos
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 divisor de tensão para fornecer uma tensão variável ao Arduíno.
Acionamento de 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.
Transistor como chave para acionar uma carga elevada com uma única saída do Arduíno
Exempĺo de uso: Acionamento de vários leds com uma única saída do Arduíno no projeto de Automação de Semáforo com Arduíno.

Exemplos de Aplicação com Arduíno

Comunicação Serial

Informações sobre comunicação serial e paralela
Comunicação Serial entre dois Arduínos
Emissor
Insere na porta serial os valores 0 e 1 de maneira alternada a cada dois segundos.
Receptor
Faz a leitura dos valores escritos pelo emissor e controla o LED.
0 -> LED apagado.
1 -> LED aceso.

Código do Arduíno emissor

//emissor  
int num = 0;
void setup(){
 Serial.begin(9600);
}
void loop(){
 num = 0;
 Serial.write(num);
 delay(2000);
 num = 1;
 Serial.write(num);
 delay(2000);
}

Código do Arduíno receptor

//receptor
int recByte;
int led = 13;
void setup(){
 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);
 }
}

Arduíno Leonardo

O Arduíno Leonardo usa a Serial exclusivamente para comunicação com a porta USB. Para comunicação serial TTL (5V) nos pinos 0 (RX) and 1 (TX) deve-se utilizar a Serial1.

Autoria
Matheus Marques / CST Análise e Desenvolvimento de Sistemas - IFPR - Câmpus Foz do Iguaçu

Comunicação com módulo Bluetooth

O módulo Bluetooth permite interagir com o Arduíno, por exemplo, utilizando um aplicativo em um smartphone.

Um módulo Bluetooth bastante utilizado é o HC06 (ver: http://www.instructables.com/id/Add-bluetooth-to-your-Arduino-project-ArduinoHC-06):

Pinagem e conexão com o Arduíno

Este módulo apresenta 6 pinos, mas com apenas 4 pinos é possível colocar o mesmo para funcionar e fazer o Arduíno interagir dispositivos Bluetooth.

            _________
           |         |
           |         |
           |         |
           |Bleutooth|
           |         |
           |   HC06  |
           |         |
           |         |
           |_________|
             | | | |
     Vcc ----+ | | +---- Txd
     Gnd ------+ +------ Rxd

Cuidados com a conexão do módulo Bluetooth HC06 com o Arduíno:

  • O HC06 funciona com alimentação Vcc=3,3V, a qual também é fornecida pelo Arduino ao lado da alimentação de 5V;
  • Na comunicação serial, como o Arduíno fornece 5V, é necessário utilizar um divisor de tensão na entrada Rxd do HC06, conforme exemplo abaixo:

VRxd = R2/(R1 + R2).5
Exemplo:
R1=470 Ω, R2=1 KΩ -> VRxd = 3,4 V

Exemplos de programas de aplicação

Fonte: http://www.instructables.com/id/Add-bluetooth-to-your-Arduino-project-ArduinoHC-06

Echo Code
Permite enviar uma string ao Arduíno via Bluetooth e receber de volta a mesma string no monitor serial.
String message; //string that stores the incoming message
void setup()
{
  Serial.begin(9600); //set baud rate
}
void loop()
{
  while(Serial.available())
  {//while there is data available on the serial monitor
    message+=char(Serial.read());//store string from serial command
  }
  if(!Serial.available())
  {
    if(message!="")
    {//if data is available
      Serial.println(message); //show the data
      message=""; //clear the data
    }
  }
  delay(1000); //delay
}
Led Code
Permite acender e apagar um led conectado ao Arduíno enviando caracteres via Bluetooth de um smartphone ou outro dispositivo Bluetooth.
char blueToothVal;           //value sent over via bluetooth
char lastValue;              //stores last state of device (on/off)
void setup()
{
 Serial.begin(9600); 
 pinMode(13,OUTPUT);
}
void loop()
{
  if(Serial.available())
  {//if there is data being recieved
    blueToothVal=Serial.read(); //read it
  }
  if (blueToothVal=='n')
  {//if value from bluetooth serial is n
    digitalWrite(13,HIGH);            //switch on LED
    if (lastValue!='n')
      Serial.println(F("LED is on")); //print LED is on
    lastValue=blueToothVal;
  }
  else if (blueToothVal=='f')
  {//if value from bluetooth serial is n
    digitalWrite(13,LOW);             //turn off LED
    if (lastValue!='f')
      Serial.println(F("LED is off")); //print LED is on
    lastValue=blueToothVal;
  }
  delay(1000);
}

Smartphone Android

Para enviar caracteres de um Smartphone Android para o módulo Bluetooth pode-se utilizar aplicativos como o Bluetooth Serial Port Terminal.

Arduíno Leonardo

O Arduíno Leonardo usa a Serial exclusivamente para comunicação com a porta USB. Para comunicação serial TTL (5V) nos pinos 0 (RX) and 1 (TX) deve-se utilizar a Serial1.

Tradução e adaptação
--Evandro.cantu (discussão) 12h49min de 3 de agosto de 2015 (BRT)

Comunicação sem fio com Wireless Shield e Xbee

O Wireless Shield permite a comunicação serial sem fio baseado no módulo Xbee da Digi.

Configuração do Wireless Shield

A placa Wireless Shield possui uma chave de configuração da comunicação serial entre o módulo Xbee e o microcontrolador do Arduino e o conversor serial USB (ver: https://www.arduino.cc/en/Main/ArduinoWirelessShield):

  • Posição micro: O pino Dout do módulo Wireless é conectado ao pino RX do microcontrolador do Arduino e o pino Din ao pino TX do microcontrolador. O módulo sem fio se comunica de forma serial com o microcontrolador do Arduino. Destaca-se que os pinos TX e RX do microcontrolador também continuam conectados aos pinos RX e TX do conversor serial USB. Desta forma, dados transmitidos pelo microcontrolador serão enviados simultaneamente ao módulo sem fio e a serial USB. Neste modo o microcontrolador do Arduino não pode ser programado via USB.
  • Posição USB: O pino Dout do módulo Wireless é conectado ao pino RX do conversor serial USB e o pino Din ao pino TX do conversor serial USB. O módulo sem fio se comunica diretamente com o computador. Para usar este modo o microcontrolador do Arduíno deve ser programado com um sketch vazio:
void setup() { }
void loop() { }
Xbee Explorer USB
A placa Wireless Shield com a chave na posição USB e o microcontrolador do Arduíno programado com sketch vazio se comporta como um módulo Xbee Explorer USB, com o Xbee se comunicando diretamente com o computador.

Exemplo de utilização

Exemplo de comunicação usando a configuração padrão dos módulos Xbee, apresentado em https://www.arduino.cc/en/Guide/ArduinoWirelessShield:

  • Para fazer a carga de programas no microcontrolador do Arduíno, colocar a chave do módulo wireless na posição USB.
  • Em um dos Arduínos com módulo Wireless carregar o programa
Exemples->Communication->Physical Pixel
Este programa faz o Arduíno acender ou apagar o led da porta 13 a partir do envio do caracter H ou L a partir do monitor serial. Testar o funcionamento do programa com a chave do módulo wireless na posição USB. Em seguida desconectar o Arduíno da interface USB e mudar a chave do módulo wireless para a posição micro.
  • Em outro Arduíno com módulo wireless, carregar o programa abaixo com chave do módulo wireless na posição USB. Verificar o funcionamento do programa no monitor serial. Depois de carregado o programa mudar a chave do módulo wireless para a posição micro.
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  Serial.print('H');
  delay(1000);
  Serial.print('L');
  delay(1000);
}
  • Para testar a comunicação serial sem fio, conectar o primeiro Arduíno na fonte de alimentação e verificar se a comunicação entre os Arduínos acontece, fazendo o led piscar.
    • Caso não haja comunicação, tente restabelecer a configuração padrão (default) nos módulos Xbee (veja abaixo).

Arduíno Leonardo

O Arduíno Leonardo usa a Serial exclusivamente para comunicação com a porta USB. Para comunicação serial TTL (5V) nos pinos 0 (RX) and 1 (TX) deve-se utilizar a Serial1.

Endereçamento dos módulos Xbee

Vários parâmetros precisam ser configurados para que os módulos Xbee possam se comunicar:

  1. Os dispositivos precisam estar na mesma rede, definida pelo parâmetro ID;
  2. Os dispositivos precisam usar o mesmo canal, definido pelo parâmetro CH;
  3. O endereço destino (DH e DL) determina qual módulo da rede receberá os dados:
    • Se o DH = 0 e o DL < 0xFFFF (i.e. 16 bits), o dado transmitido pelo módulo será recebido por qualquer módulo cujo endereço de 16-bit MY é igual a DL;
    • Se o DH = 0 e o DL = 0xFFFF, o dado transmitido será recebido por todos os módulos (broadcast);
    • Se o DH ≠ 0 e o DL > 0xFFFF, o dado transmitido será recebido somente pelo módulo cujo número serial seja igual ao endereço destino (i.e. SH = DH e SL = DL).

Síntese de alguns parâmetros:

Parâmetro Descrição Valor default
ID Identificador de rede 3332
CH Canal C
SH SL Numero de série Diferente para cada módulo
MY Endereço do módulo 0
DH DL Endereço destino 0
BD Vazão da comunicação serial (bps) 3 (9600 bps)

Configuração do módulo Xbee

Para a configuração do módulo Xbee é interessante utilizar o software XCTU da Digi ou o moltosenso Network Manager, os quais apresentam facilidades para configuração e atualização dos módulos wireless.

Exemplo de configuração com o software moltosenso Network Manager
Baixar e instalar o software moltosenso Network Manager IRON 1.0 (Free):
  • Na guia Port Setup é possível verificar a configuração da porta, clique em Open Port e verifique se o dispositivo foi detectado;
  • Clique no dispositivo e verifique as informações do mesmo em Current Device;

  • Na guia Node Settings é possível selecionar o módulo e verificar seus parâmetos de configuração;

  • Para restaurar os parâmetros default do dispositivo clique em Restore All e depois em Write Permanently;

Adaptação e autoria
--Evandro.cantu (discussão) 20h19min de 12 de julho de 2015 (BRT)

Controlando Leds pelo Monitor Serial

Componentes necessários
  • Placa Arduino;
  • Conector Arduino
  • Protoboard;
  • 5 fios com conectores macho;
  • 2 resistores de 220 ohm(Vermelho, vermelho, marrom);
  • 2 Leds.
Montagem
Primeiramente, faça as ligações como mostra a imagem abaixo:

Agora, abra a IDE do Arduino e passe a seguinte programação
char c;
void setup(){
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
Serial.begin(9600);
}
void loop()
{
   if (Serial.available() > 0)
   {
   c = Serial.read() - '0';
   Serial.flush();
   digitalWrite(c,!digitalRead(c));
   }
}
Instruções
Conecte o Arduino no PC, selecione a versão do seu Arduino e a porta e clique em UPLOAD. Abra o Serial Monitor, ao digitar o número 2 no Serial Monitor, irá acender o LED conectado na porta digital 2 do Arduino, e ao digitar novamente o número 2, o LED apagará. Agora se digitar o número 3, irá acender o LED da porta digital 3 e se digitar novamente o número 3, o LED apagará.
Autoria
Igor Matheus B. Quintana / CST Análise e Desenvolvimento de Sistemas - IFPR - Câmpus Foz do Iguaçu.

Sensor de temperatura (LM35)

Componentes necessários
  • Placa Arduino;
  • Conector Arduino;
  • Protoboard;
  • 3 fios com conectores macho;
  • Sensor de temperatura – LM35
Funcionamento do sensor LM35
O LM35 tem uma resolução de 10mV por cada 1oC. Como sensor básico de temperatura, mede temperaturas entre 2oC e 150oC.
Esquema de ligação com Arduíno

            _______
           |       |
           | LM 35 | 
           |_______|
             | | |
   (+5v) ----+ | +---- (Ground)
               |
          Analog Pin 
       0mV + 10mV / oC
Leitura pela entrada analógica do Arduíno
O Arduíno lê valores pelas entradas analógicas entre 0V e 5V e os converte em números digitais com 10 bits de magnitude, ou seja, 210 valores (entre 0 e 1023).

O valor de tensão lido na entrada analógica do Arduíno (entre 0V e 5V) pode ser obtido multiplicando a leitura por 5/1023. Como a tensão medida pelo sensor varia 10mV/1oC, se multiplicarmos por 100, teremos o valor em graus Celcius:

ConversaoGrausCelcius = 5 / 1023 * 100 = 0,488758553
Montagem
Primeiramente, faça as ligações como mostra a imagem abaixo:

Agora, abra a IDE do Arduino e passe a seguinte programação
//Sensor de temperatura LM35
const float ConversaoGrausCelcius = 0.488758553;
//ConversaoGrausCelcius = 5 / 1023 * 100 = 0,488758553
float Temperatura;
void setup() {
Serial.begin(9600);
}
void loop() {
  Temperatura = analogRead(A0) * ConversaoGrausCelcius;
  Serial.print("Temperatura: ");
  Serial.println(Temperatura);
  delay(2000); //Tempo entre as leituras em ms
}
Instruções
Conecte o Arduino no PC, selecione a versão do seu Arduino e a porta e clique em UPLOAD. Agora abra o Serial Monitor e terá a temperatura atual, observe que a cada 2 segundo será feita uma nova leitura, caso queira aumentar ou diminuir este tempo deve ser alterado o tempo de leitura na linha dois do código.
Referencias
  1. http://www.ajudino.com/2013/06/11-lendo-temperatura-com-lm35.html
  2. http://www.ti.com/lit/ds/symlink/lm35.pdf
Autoria
Igor Matheus B. Quintana / CST Análise e Desenvolvimento de Sistemas - IFPR - Câmpus Foz do Iguaçu
--Evandro.cantu (discussão) 14h33min de 29 de junho de 2015 (BRT)

Sensor de Temperatura NTC 10k

O sensor de temperatura NTC 10k é um thermistor, isto é, um resistor cuja resistência varia com a temperatura.

Existem dois tipos de thermistores:

  • NTC (Negative Temperature Coefficient), no qual a resistência diminui com o aumento da temperatura;
  • PTC (Positive Temperature Coefficient), no qual a resistência aumenta com o aumento da temperatura.

Para leitura com o Arduíno, o sensor NTC 10k é utilizado numa estrutura com um divisor de tensão com um resistor de 10K Ω.

Esquema de ligação com Arduíno (http://playground.arduino.cc/ComponentLib/Thermistor2):

(Ground) ---- (10k-Resistor) -------+------- (Thermistor) ---- (+5v)
                                    |
                               Analog Pin 0
Equação de Steinhart–Hart
A equação de Steinhart–Hart (https://en.wikipedia.org/wiki/Thermistor), detalha a operação do thermistor NTC relacionando a variação de temperatura (Kelvin) com a resistência (Ω).
onde a, b e c são parâmetros de Steinhart–Hart específicos para cada dispositivo.
Valores típicos para um thermistor com resistência de 10K Ω na temperatura de (25 °C = 298.15 K) é:
  • a = 0.001129148,
  • b = 0.000234125,
  • c = 0.0000000876741.
Código para Arduíno
Referência: (http://playground.arduino.cc/ComponentLib/Thermistor2):
 //Sensor de temperatura NTC10k
 #include <math.h>
 double Thermistor(int ADC) {
 double R;
 double logR;
 double Temp;
 R = 10000.0*((1024.0/ADC)-1);  //Resistor do divisor de tensão 10k
 logR = log(R); 
 Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * logR * logR ))* logR );
 Temp = Temp - 273.15;          // Conversão Kelvin para Celcius
 return Temp;
}
void setup() {
 Serial.begin(115200);
}
void loop() {
 Serial.println(int(Thermistor(analogRead(0))));  // Mostra Graus Celcius
 delay(1000);
}
Autoria
--Evandro.cantu (discussão) 22h22min de 28 de junho de 2015 (BRT)

Sensor de Temperatura e Humidade DHT11

O DHT11 é um sensor de temperatura e humidade. Este sensor inclui um medidor de humidade resistivo e um sensor de temperatura tipo NTC conectado a um microcontrolador de 8 bits (http://www.micro4you.com/files/sensor/DHT11.pdf).

O DHT11 possui uma biblioteca com funções prontas para seu funcionamento, documentada em playground.arduino.cc/DHT11. Para uso, baixe a biblioteca DHT11.zip e insira no ambiente da IDE do Arduíno:

Sketch -> Import Library -> Add Library
Esquema de ligação com Arduíno
            _______
           |       |
           | DHT11 | 
           |_______|
             | | |
(Ground) ----+ | +---- (+5v)
               |
          Analog Pin 1
Programa exemplo
//Sensor de temperatura LDHT11
#include <dht11.h>
dht11 sensor; //Inicializa sensor
void setup() {
  Serial.begin(9600);
  delay(1000);
}
void loop() {
  sensor.read(A1);
  Serial.print("Temperatura (oC): ");
  Serial.println(sensor.temperature);
  Serial.print("Unidade (%): ");
  Serial.println(sensor.humidity);
  delay(2000); //Tempo entre as leituras em ms
}
Autoria
--Evandro.cantu (discussão) 14h31min de 3 de julho de 2015 (BRT)

Sensor de força resistivo

Funcionamento
O sensor de força resistivo funciona como um potenciômetro, isto é, se aplicar força na superfície, a resistência do sensor diminui. Se não tiver nada em cima do sensor, a resistência vai para mais de 20M ohm, tornando-se praticamente um circuito aberto. Este sensor consegue ler objetos com peso de 100g a 10Kg. É necessário que a força seja aplicada dentro da área de contato do sensor, se parte do objeto estiver fora desta área, o sensor não detectará ou dará uma leitura incorreta.
Componentes necessários
  • Placa Arduino;
  • Conector Arduino;
  • Protoboard;
  • 6 fios com conectores macho;
  • 1 resistor de 100K ohm (Marrom, preto, amarelo);
  • Sensor de força resistivo.
Montegem
Primeiramente, faça as ligações como mostra a imagem abaixo

Agora, abra a IDE do Arduino e passe a seguinte programação
int Senval=0;
int Senpin=A0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Senval=analogRead(Senpin);
Serial.println(Senval);
delay(200);
}
Instruções
Conecte o Arduino no PC, selecione a versão do seu Arduino e a porta, clique em UPLOAD. Agora abra o Serial Monitor, ao aplicar uma força no sensor, verá que o número irá variar de 0 a 1023, a resistência vai alterar de acordo com a força aplicada sobre o sensor, consequentemente os valores mostrados no serial monitor mudarão.
Referência
https://www.sparkfun.com/products/9376
Autoria
Igor Matheus B. Quintana / CST Análise e Desenvolvimento de Sistemas - IFPR - Câmpus Foz do Iguaçu.

Referências