domingo, 10 de março de 2013

Review RFID Shield

Introdução:



RFID / NFC Shield é uma interface de comunicação Near Field construida em torno do popular NXP PN532, um circuito integrado de comunicação SPI entre Arduino e Shield NFC. É uma tecnologia de rádio de curta distância que permite a comunicação entre dispositivos que são mantidos bom próximos fisicamente. RFID / NFC tem suas raízes na tecnologia RFID e é uma tecnologia de plataforma aberta padronizados no ECMA-340 e ISO / IEC 18092.


É regulada pelo Near Field Communication, que padroniza a comunicação entre dispositivos NFC compartilhar dados e permitir uma operação segura. NFC desenvolve e certifica a conformidade com os padrões dispositivo. NFC operar em banda ISM de 13,56 MHz de freqüência. Tem alcance de comunicação é de até 10 cm. Mas, esta está limitada pela antena e design de radiação de energia. A maioria dos dispositivos funciona dentro de um intervalo de 10 mm. O modulo com antena antena é projetado para trabalhar dentro de uma faixa de 1cm. O modulo fornece todos os circuitos necessários para o PN532 com cristal de  27.12Mhz, fonte de alimentação. Ele também tem pinos de I/O para fácil acesso.


Sobre o Modulo:



  • Compatível com Arduino e qualquer outro uC.
  • Nenhuma solda necessária.
  • Interface SPI. Com isso maioria dos pinos do uC fica disponível para outras aplicações.
  • Construído em antena PCB.
  • Suporta tanto 3.3V e operação de 5V.
  • Soquete para conectar outros shields.


Ideias para aplicação:

  • Use como um leitor de RFID com Mifare tags (ISO14443-Type A) e cartões (13,56).
  • Construir sistema de compartilhamento de cartão de visita.
  • Construir sistemas de atendimento.
  • Autenticação de sistemas.
  • Leia pôsteres inteligentes.
  • Troca segura de dados de pequeno porte com outros dispositivos NFC
  • E possibilidades infinitas...

Programando:


A biblioteca PN532 para NFC é derivado da biblioteca Adafruits PN532.A original fornece API para leitura ID passivo de Mifare/Tags. Isso é suficiente para o cartão/tag efeitos de identificação.
Observação: os usuários Arduino 1,0 tem que mudar as linhas # include <WProgram.h> para # include <Arduino.h> em PN532.cpp e PN532.h.

#include <PN532.h>
#define SS 10
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  #define MISO 50
  #define MOSI 51
  #define SCK 52
#else
  #define MISO 12
  #define MOSI 11
  #define SCK 13
#endif
PN532 nfc(SCK, MISO, MOSI, SS);
void setup(void) 
{
  Serial.begin(9600);
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) 
{
    Serial.print("Nao encontrei placa PN53x");
    while (1); // para programa
  }
  // placa OK, envia dados
  Serial.print("Encontri chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Versao de Firmware"); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  Serial.print("Suporta "); Serial.println(versiondata & 0xFF, HEX);
  // configura placa para ler tags RFID e cartoes
  nfc.SAMConfig();
}
void loop(void) 
{
  uint32_t id;
  // procura por cartoes MiFare
  id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);
  if (id != 0)
 {
    Serial.print("Ler Cartao #"); Serial.println(id);
  }
}




Review Acelerômetro ADXL335 3-Eixos

Introdução:


O Acelerômetro de 3-Eixos ADXL335 incorpora os 3-eixo em um sensor de siada analógica. Este é o último de uma longa linha comprovada de sensores analógicos - o santo graal dos acelerômetros. O ADXL335 é um acelerômetro MEMS triplo eixo com baixíssimo ruído e consumo de energia - apenas 320uA! O sensor tem uma ampla gama de detecção de + /-3g. Ele pode medir a aceleração estática da gravidade em inclinação de sensoriamento, bem como aceleração dinâmica resultante do movimento, vibração e choque.








Não há nenhum regulamentação da placa ADXL335, podendo ser fornecida entre 1,8 e 3.6 VDC.
Os capacitores 0.1uF incluídos definir a largura de banda de cada eixo para 50Hz.

Características:



  • Três eixos acelerômetro de campo magnético.
  • Tamanho compacto, fonte de alimentação baixa.
  • Usado para sistemas de jogo, dispositivos móveis, etc.
  • Chip: ADXL335
  • Faixa de tensão de operação: 3V ~ 5V
  • Corrente: 400uA
  • Interface: saída analógica.
  • Temperatura de operação:-40'C ~ +85' C
Código de Exemplo:
/*
 analog 0: accelerometer self test
 analog 1: z-axis
 analog 2: y-axis
 analog 3: x-axis
 analog 4: ground
 analog 5: vcc

*/

// these constants describe the pins. They won't change:
const int groundpin = 18;             // analog input pin 4 -- ground
const int powerpin = 19;              // analog input pin 5 -- voltage
const int xpin = A3;                  // x-axis of the accelerometer
const int ypin = A2;                  // y-axis
const int zpin = A1;                  // z-axis (only on 3-axis models)

void setup()
{
  // initialize the serial communications:
  Serial.begin(9600);
  
  // Provide ground and power by using the analog inputs as normal
  // digital pins.  This makes it possible to directly connect the
  // breakout board to the Arduino.  If you use the normal 5V and
  // GND pins on the Arduino, you can remove these lines.
  pinMode(groundpin, OUTPUT);
  pinMode(powerpin, OUTPUT);
  digitalWrite(groundpin, LOW); 
  digitalWrite(powerpin, HIGH);
}

void loop()
{
  // print the sensor values:
  Serial.print(analogRead(xpin));
  // print a tab between values:
  Serial.print("\t");
  Serial.print(analogRead(ypin));
  // print a tab between values:
  Serial.print("\t");
  Serial.print(analogRead(zpin));
  Serial.println();
  // delay before next reading:
  delay(100);
}





Review GY-521 Module 3 Axis Gyroscope + Accelerometer

Introdução:


O sensor MPU-6050 contém um acelerômetro de MEMS e um giroscópio MEMS em um único chip. Ele é muito preciso, contem 16 bits analógicos para hardware de conversão digital para cada canal. Capta a x, y, e z de canal ao mesmo tempo.



O MPU-6050 não é caro, uma vez que combina um acelerômetro e um giroscópio.

GY-521:




Esta placa de sensor tem um regulador de tensão. Assim, ele pode ser usado com 3,3 V e com 5V. Ele tem  resistor de  pull-up de 2k2 no I2C. O valor de 2k2 é bastante baixo. Se for combinado com placa de outro sensor que também têm resistências pull-up, a impedância de pull-up total pode ser muito baixa.


Características:


  • Cor: Azul
  • Material: PCB
  • Chip: MPU-6050
  • Alimentação: 3 ~ 5V
  • Chip built-in conversor AD de 16 bits, 16 bits de dados de saída
  • Faixa de giroscópios: + / - 250 500 1000 2000 graus / seg
  • Faixa de Aceleração: + / - 2g, + / - 4g, + / - 8g, + / - 16g
  • Imersão em banho de ouro na PCB.






Review Arduino NANO

Introdução:

O Arduino Nano é uma versão para ser acoplada a uma protoboard com uma porta USB acoplada. Ele é a versão mais pequena e completa das placas Arduino.

Eletronicamente ele tem tudo o que o Diecimila tem com mais pinos de entrada analógica e um jumper acoplado de +5V AREF. Fisicamente ele não tem a entrada auxiliar nem o jumper para selecinoar a fonte de alimentação. Como o Nano detecta automaticamente chaveia para a maior fonte de alimentação não há necessidade do jumper de seleção.

O Nano pode ser usado diretamente na protoboard como o Boarduino e a conexão miniUSB maximiza o espaço restante. Ele tem uma disposição de pinos que funciona bem tanto com o Mini ou com o Basic Stamp (TX, RX, ATN, GND em uma face e a alimentação e o terra na outra). Ele é uma placa de quatro camadas com planos para a alimentação e para o terra para auxiliar a fornecer energia suficiente para os CIs durante o chaveamento e reduzir o ruído (EMC) durante o chaveamento de alta velocidade dos pinos de entrada e saída. O plano do terra auxilia na redução de radiação (EMI). O plano de alimentação é de baixa indutância e assim quaisquer transientes que possam surgir na linha de alimentação serão de baixo nível.

Especificações:

  • Microcontrolador Atmel ATmega328
  • Voltagem de operação (nível logico) 5 V
  • Voltagem de entrada (recomendada) 7-12 V
  • Voltagem de entrada (limites) 6-20 V
  • Pinos digitais I/O
  • 14 (dos quais 6 podem ser saídas PWM)
  • Pinos de entrada analógica 8
  • Corrente contínua por pino I/O
  • 40 mA
  • Memória Flash
  • 16 KB (dos quais 2KB são utilizados pelo bootloader)
  • SRAM 1 KB
  • EEPROM 512 bytes
  • Velocidade de Clock
  • 16 MHz
  • Dimensões 0.73" x 1.70"


Características:


Reset automático durante o download de programas
LED azul de alimentação na parte de baixo
Verde (TX), vermelho (RX) e laranja (L) LEDs
jumper +5V para AREF
Detecção utomática da fonte de alimentação
conector mini-B USB para programação e comunicação serial
cabeçalho ICSP para download direto de programas
Disposição padrão dos pinos (pode ser montado em protoboard)
Botão manual de switch





Alimentação:


O Arduino Nano pode ser alimentado por uma conexão mini-B USB, por uma fonte externa não regulada de 6 a 20 volts (pino 30), ou por uma fonte externa regulada de 5V (pino 27). A fonte de alimentação selecionada automaticamente é a de maior voltagem.

O chip FT232RL somente somente é energizado se e placa for alimentada através da porta USB. Desse modo quando a placa está funcionado com alimentação externa (não USB) a saída de 3,3V (que é fornecida pelo chip FTDI) não está disponível e os LEDs RX e TX vão acender se os pinos 0 e 1, respectivamente, estiverem em HIGH.




Memória:

O ATmega328 no Nano tem 16KB de memória flash para armazenamento de código (dos quais 2KB são usados pelo bootloader). Ele possui ainda 2KB de SRAM e 1KB de EEPROM( que podem ser lidos ou escritos com a biblioteca EEPROM).

Review Female DuPont Cables

Introdução:

Esses cabos são pares Fêmea, muito útil para qualquer tipo de projeto, fica fácil fazer as ligações e testar seu circuito. Ótima ferramente que não pode faltar na maleta de ninguém, pode ser usado em conjunto com Jumpers para facilitar ligações.

É isso ai bem simples e útil!! Recomendo comprar do DX.com por ser barato e chegar bem rápido.












Características:


  • Modelo: 6960
  • Cor: Colorido
  • Material: cobre + plastico
  • Fêmea para fêmea
  • Comprimento do cabo: 21cm
  • Ótimo para projetos

terça-feira, 22 de janeiro de 2013

Review Sensor de cor TCS3200

Introdução:

 O sensor da cor TCS3200 é um detetor completo da cor, incluindo uma microplaqueta do sensor de TAOS TCS3200 RGB e 4 diodos emissores de luz brancos. O TCS3200 pode detectar e medir uma escala quase ilimitada de cores visíveis. As aplicações incluem a leitura da tira de teste, classificando a cor, pela detecção e pela calibração ambiental da luz, e por colorimétrica.



O TCS3200 tem uma disposição de fotodetector, cada um com um filtro vermelho, verde, ou azul, ou nenhum filtro (desobstruído). Os filtros de cada cor são distribuídos uniformemente durante todo a disposição para eliminar a polarização da posição entre as cores. Interno ao dispositivo é um oscilador que produz a saída cuja a freqüência é proporcional à intensidade da cor escolhida.



O conversor de luz para frequência lê matriz 8X8 de fotodiodos, cada matriz pode filtrar luz, vermelha, verde ou azul clara de fonte de luz através de dois pinos de controle (S2, S3) e saída de uma onda quadrada (50% ciclo de trabalho) com freqüência diretamente proporcional à intensidade da luz (irradiada). Entradas digitais e saída digital permite interface direta a um microcontrolador ou outro circuito lógico digital.


Como Funciona:

Como se sabe, de acordo com o modelo de cor RGB, uma matriz de cores gerais é produzida por vermelho, verde e azul claro somados de várias formas. Em outras palavras, se sabe que os dados RGB que constitui outro tipo de cor, podemos obter a cor certa. Com um filtro de determinada cor é selecionado (por exemplo, filtro vermelho), TSC230 permite que a luz vermelha possa atravessar sozinho e evitar a luz de cor verde e outro azul, para que possamos obter a intensidade da cor vermelha. A luz azul e verde de intensidade pode ser obtido da mesma maneira.



TCS230 inclui matriz 8X8 de fotodiodos, 16 fotodiodos têm filtros azuis, 16 fotodiodos têm filtros verdes, 16 fotodiodos têm filtros vermelhos e 16 fotodiodos são claras, sem filtros. Com a combinação diferente de S2 e S3, podemos escolher outro tipo de filtro de cor A freqüência de saída pode ser dimensionada através de duas entradas de controle S0 e S1, por que nós podemos produzir o coeficiente de freqüência diferente (100%, 20%, 2%).




Características:


Tensão de entrada: 3V ~ 5V.
Faixa de melhor detecção: 10mm.
De alta resolução de conversão da intensidade da luz com a freqüência.
Cor programável e em larga escala a frequência de saída.
Comunicar diretamente com um microcontrolador.
PCB Tamanho (L x W): Aprox. 1,2 x 0,95 polegadas.





Código de exemplo:




int s0=3,s1=4,s2=5,s3=6;
int flag=0;
int counter=0;
int countR=0,countG=0,countB=0;
void setup()
{
Serial.begin(115200);
pinMode(s0,OUTPUT);
pinMode(s1,OUTPUT); 
pinMode(s2,OUTPUT);
pinMode(s3,OUTPUT);
}
void TCS()
{
  digitalWrite(s1,HIGH);
  digitalWrite(s0,LOW);
  flag=0;
  attachInterrupt(0, ISR_INTO, CHANGE);
  timer2_init();
}
void ISR_INTO()
{
  counter++;
}
void timer2_init(void)
{
  TCCR2A=0x00;
  TCCR2B=0x07; //clock para 1024 pontos
  TCNT2= 100;    //10 ms overflow
  TIMSK2 = 0x01; //liga interupcao
}
int i=0;
ISR(TIMER2_OVF_vect)
{
TCNT2=100;
flag++;
if(flag==1)
 {
   counter=0;
 }
else if(flag==2)
  {
   digitalWrite(s2,LOW);
   digitalWrite(s3,LOW); 
   countR=counter/1.051;
   Serial.print("vermelho=");
   Serial.println(countR,DEC);
   digitalWrite(s2,HIGH);
   digitalWrite(s3,HIGH);   
  }
else if(flag==3)
   {
    countG=counter/1.0157;
   Serial.print("verde=");
   Serial.println(countG,DEC);
    digitalWrite(s2,LOW);
    digitalWrite(s3,HIGH); 
    }
else if(flag==4)
   {
    countB=counter/1.114;
   Serial.print("azul=");
   Serial.println(countB,DEC);
    digitalWrite(s2,LOW);
    digitalWrite(s3,LOW);
    }
else
    {
    flag=0; 
     TIMSK2 = 0x00;
    }
    counter=0;
    delay(2);
}
void loop()
{
 delay(10);
 TCS();
 if((countR>10)||(countG>10)||(countB>10))
  {
     if((countR>countG)&&(countR>countB))
      {
           Serial.print("vermelho");
           Serial.print("\n");
           delay(1000);
      }
     else if((countG>=countR)&&(countG>countB))
      {
           Serial.print("verde");
           Serial.print("\n");
           delay(1000);
      } 
    else if((countB>countG)&&(countB>countR))
     {
           Serial.print("azul");
           Serial.print("\n");
          delay(1000);
     }
   }
 else 
 {
    delay(1000);       
 }
}


Review receptor RF 433Mhz

Introdução:



No mercado existe vários tipos e meios de comunicação para usar com Arduino. A comunicação entre eles é feita utilizando a biblioteca Virtual Wire e a documentação disponível aqui.



Neste tutorial vamos mostrar como mandar uma mensagem utilizando o transmissor RF 433Mhz com um Arduino e recebendo a mensagem utilizando o receptor RF 433Mhz com outro Arduino.

Antes de mais nada, baixe a biblioteca Virtual Wire e extraia para a pasta "libraries" localizada dentro da pasta da IDE do Arduino. Nesta biblioteca é bem fácil de usar, pois já existe um tratamento de erros para filtrar os erros que chegam no receptor.



Esse modulo é muito útil, tem grande alcance, é barato, opera a baixa tensão e consome pouca corrente. Como o sinal de RF é largamente usado por outros eletrônicos existem interferências, essas são tratadas por software, o que torna esses módulos muito especiais e uteis para todos projetos.




Características:



Modelo 433Mhz
Cor Verde
Material Cobre + plástico + PCB
Características Tensão de funcionamento: DC 5V,
Corrente de repouso: 4mA;
Modo de modulação: OOK; Recebendo a sensibilidade:-105dBm,
Freqüência de operação: 433.90MHz





Código de Exemplo:



#include <VirtualWire.h>
int led = 13;

void setup()
{
    Serial.begin(9600);
    Serial.println("Modulo Receptor");
    Serial.println("Acao dos comandos:");
    Serial.println("Comando 1: Acende 1 led");
    Serial.println("Comando 2: Acende 2 leds");
    Serial.println("Comando 3: Acende 3 leds");
    pinMode(led, OUTPUT);
    vw_setup(2000);
    vw_rx_start();
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
 
    if (vw_get_message(buf, &buflen))
    {
int i;
for (i = 0; i < buflen; i++)
{
           digitalWrite(led, HIGH);
           Serial.print((char)buf[i]);
           digitalWrite(led, LOW);
}
           if(strcmp((char*)buf,"1")==0)
              {
                Serial.println("");
                Serial.print("Comando 1 recebido");
              }
           
           if(strcmp((char*)buf,"2")==0)
              {
                Serial.println("");
                Serial.print("Comando 2 recebido");
              }
           
           if(strcmp((char*)buf,"3")==0)
              {
                Serial.println("");
                Serial.print("Comando 3 recebido");
              }              
Serial.println("");
    }
}