29 março 2013

Acionando portas do Arduino usando Android e bluetooth

Hoje vou mostrar um esquema bem simples (pelo menos eu espero que seja) para controlar as portas do Arduino usando bluetooth e o módulo bluetooth JY-MCU HC-06, que exploramos em um artigo anterior.

Arduino Android Bluetooth

Se você perdeu, não deixe de ler o artigo sobre configuração do módulo HC-06, que vai te ensinar como mudar alguns parâmetros desse módulo, inclusive a senha e o nome padrão de fábrica. ;-)

19 março 2013

Nova versão IDE Arduino

Estou um pouco atrasado, mas saiu no dia 11.03.2013 a versão 1.0.4 da IDE do Arduino.

Se você é como eu, que gosta de ter sempre a última versão, pode baixa-la clicando aqui, ou copiando e colando o link no seu navegador :

http://arduino.cc/en/Main/Software


Na página tem também uma versão Beta, release 1.5, que funciona com a placa Arduino Due.

Versão "Beta" é aquela sujeita a bugs e algumas instabilidades, mas nada que vá estragar o seu Arduino. No máximo, gerar algum resultado estranho. :-)

18 março 2013

Módulo Bluetooth JY-MCU - HC-06 - Configuração

Conforme comentei, hoje vou mostrar um tutorial que vai ajudar você a configurar o módulo bluetooth JY-MCU HC-06, alterando o ID do módulo e também a senha. Este componente pode ser encontrado na FILIPEFLOP, uma loja no Brasil, com produtos à pronta entrega e preços bem acessíveis.

módulo bluetooth jy-mcu hc-06 configuracao


Atualizado : Veja outros artigos aqui no Arduino e Cia mostrando o uso de módulos bluetooth JY-MCU, HC-05 e HC-06 clicando aqui.

15 março 2013

Módulo Bluetooth JY-MCU

Já sei. Comprou aquele módulo bluetooth no Mercado Livre, e acha que vai ter que passar o resto da vida usando a senha "1234", ou seja lá qual vem no módulo, certo ?

Errado. Estou montando um tutorial para você não só mudar a senha, como também mudar o nome da conexão e alguns outros parametros do módulo. Aguardem.

Módulo Bluetooth JY-MCU

Módulo Bluetooth JY-MCU - FrenteMódulo Bluetooth JY-MCU - Verso


14 março 2013

Display LCD 16x2 e Sensor de temperatura LM35

Mostrei no último artigo como ligar o display LCD 16x2 WH1602A no Arduino. Hoje vamos acrescentar o sensor de temperatura LM35, e mostrar as informações de temperatura no display.

O circuito não tem grandes alterações, basta ligar o display, como explicado no post anterior, e acrescentar o LM35, ligando-o a entrada analógica A0. O circuito fica assim :


display lcd e sensor de temperatura lm35
Depois disso, carregue o seguinte programa, que vai mostrar no display a temperatura atual, assim como a máxima e a mínima atingidas :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Programa : Display LCD 16 x 2 e sensor de temperatura LM35
// Autor : Arduino e Cia

#include <LiquidCrystal.h>

// Pino analogico para ligacao do LM35
int pin = 0; 

// Variaveis que armazenam a temperatura em Celsius e Fahrenheit
int tempc = 0,tempf=0; 

// Array para precisão na medição
int samples[8]; 

// Variáveis que guardam a temperatura máxima e mínima
int maxtemp = -100,mintemp = 100; 

int i;

//Define os pinos que serão ligados ao LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

//Array que desenha o simbolo de grau
byte a[8]= {B00110,B01001,B00110,B00000,B00000,B00000,B00000,B00000,}; 

void setup()
{
  Serial.begin(9600); // Inicializa comunicação serial
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  lcd.begin(16, 2); //Inicializa 
  lcd.print("Temperatura: ");
  //Atribui a "1" o valor do array "A", que desenha o simbolo de grau
  lcd.createChar(1, a); 
  lcd.setCursor(7,1); //Coloca o cursor na coluna 7, linha 1
  lcd.write(1); //Escreve o simbolo de grau
  lcd.setCursor(15,0);
  lcd.write(1);
  lcd.setCursor(15,1);
  lcd.write(1);
}

void loop()
{
  // Loop que faz a leitura da temperatura 8 vezes
  for(i = 0;i<=7;i++)
  {
    samples[i] = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
    //A cada leitura, incrementa o valor da variavel tempc
    tempc = tempc + samples[i]; 
    delay(100);
  }

// Divide a variavel tempc por 8, para obter precisão na medição
tempc = tempc/8.0; 

//Converte a temperatura em Fahrenheit e armazena na variável tempf
tempf = (tempc * 9)/ 5 + 32; 

//Armazena a temperatura máxima na variável maxtemp
if(tempc > maxtemp) {maxtemp = tempc;} 

//Armazena a temperatura minima na variavel mintemp
if(tempc < mintemp) {mintemp = tempc;} 


//As linhas abaixo escrevem o valor da temperatura na saída serial
    Serial.print(tempc,DEC);
    Serial.print(" Celsius, ");
    Serial.print(tempf,DEC);
    Serial.print(" fahrenheit -> ");
    Serial.print(maxtemp,DEC);
    Serial.print(" Max, ");
    Serial.print(mintemp,DEC);
    Serial.println(" Min");

delay(100); 
lcd.setCursor(13, 0);
lcd.print(tempc,DEC); //Escreve no display o valor da temperatura
lcd.setCursor(0, 1);
lcd.print("Min:"); 
lcd.setCursor(5,1);  //Posiciona o cursor na coluna 5, linha 1 do display
lcd.print(mintemp,DEC); //Escreve no display o valor da temperatura minima
lcd.setCursor(9, 1); //Posiciona o cursor na coluna 9, linha 1 do display
lcd.print("Max: ");  //Escreve no display o valor da temperatura maxima
lcd.setCursor(13,1);
lcd.print(maxtemp,DEC);

tempc=0;
}

05 março 2013

Display LCD Winstar WH1602A

Hoje vou falar um pouco sobre a ligação do Display LCD Winstar WH1602A, como esse da foto :


display lcd 16x2

Comprei esse display pela internet, e como veio sem manual ou qualquer esquema de ligação, apanhei um pouco para faze-lo funcionar. Apesar de seguir o padrão de ligação dos outros displays com os quais eu já mexi, esse tem uma pinagem um pouco diferente, como vc pode ver na figura abaixo :

pinos WH1602A

Olhando o display de frente, os pinos estão numerados da seguinte maneira :

Display LCD Winstar WH1602A - Numeração

Os pinos são numerados de 1 a 14, em ordem decrescente, e depois vem os pinos 16 e 15. Vai entender...

E como descobrir a função de cada pino ? Procurando o Datasheet, como eu já havia comentado em outro post. O datasheet do WH1602A você encontra aqui.

Bom, essa foi a parte mais difícil. Depois que você descobre pra que serve cada pino, a ligação no Arduino fica assim :

  • Pino 2 do Arduino vai no 14 do display (Pino 14: DB7)
  • Pino 3 do Arduino vai no 13 do display (Pino 13: DB6)
  • Pino 4 do Arduino vai no 12 do display (Pino 12 : DB5)
  • Pino 5 do Arduino vai no 11 do display (Pino 11: DB4)
  • Pino 11 do Arduino vai no 6 (Enable) do display 
  • Pino 12 do Arduino vai no 4 (RS) do display 
  • Vcc do Arduino, ligar nos pinos 2 e 15 do display (Pino 2 : Vdd, Pino 15 : A/Vee)
  • GND do Arduino, ligar nos pinos 1, 5 e 16 do display (Pino 1: GND, Pino 5: RW, Pino 16 : 0v (luz de fundo)
  • Ligar pino 3 do display no pino central do potenciômetro, que vai fazer a regulagem do contraste (Pino 3: Vo (Ajuste de contraste)

O circuito :

LM35 e Arduino Protoboard

Circuito Arduino LCD 16x2
Vamos testar essa ligação ? Você pode utilizar o exemplo que vem no próprio Arduino, carregando o programa através da IDE, no menu ARQUIVO => EXEMPLOS => LIQUIDCRYSTAL => DISPLAY , ou então usar essa minha versão resumida : 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Programa : Teste de Display LCD 16 x 2
// Alteração / revisão : Arduino e Cia

#include <LiquidCrystal.h> //Carrega a biblioteca LiquidCrystal

//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

void setup() 
{
  //Define o número de colunas e linhas do LCD:
  lcd.begin(16, 2);
  //Envia o texto entre aspas para o LCD :
  lcd.print("Arduino e Cia");
}

void loop()
{
  // Insira aqui o código para alterar 
  // o texto, gerar efeito "blink" (piscar), etc.
}

Lembram do artigo sobre o LM35 ? No próximo , usaremos o display juntamente com o LM35 para exibir as informações de temperatura no display. Até lá !