domingo, 22 de abril de 2012

lcd 16x2 controlado por bluetooth + sensor de temperatura.



Depois de um longo tempo parado(enferrujado), sem mexer com a eletrônica, em um sábado forever alone ;P, resolvi voltar praticar.
Minha ideia foi construir um protótipo de um telão lcd controlado por bluetooth e que mostrasse a temperatura. (pensei no estádio daqui).



Material Utilizado:

Modulo Bluetooth slave;
Arduino;
LM35 (sensor de temperatura);
LCD 16x2;
Resistor de 1k.

Primeiro fiz a montagem do hardware, iniciando pelo lcd, como o esquema abaixo:


Depois montei um sensor de temperatura, com o LM35.
Datasheet: http://www.ti.com/lit/ds/symlink/lm35.pdf



Cada 0,01 volt corresponde a 1 grau. Logo, se no pino Vout eu medir 1 Volt então a temperatura será de 100 graus centígrados.
Como sabemos que a entrada analógica do arduino tem uma resolução de 10 bits.
O que isso quer dizer ? Se temos um retorno do sensor de 1024 bits, teremos 5 volts de tensão, 512.. 2.5V e assim proporcionalmente .
temp °C = ( 5 * retorno * 100) / 1024.
A terceira etapa foi integrar o modulo do bluetooth(slave) com o arduino para uma comunicação serial. Alimentando os pinos VCC no 3v do arduino(Alguns modulos aceitam 5volts), O RX do bluetooth direto no TX do arduino e TX do arduino a um divisor de tensão para obter os 3V e ligar sem riscos no RX do modulo bluetooth.



Finalizado o hardware, segue o código abaixo.

<br /> #include <LiquidCrystal.h><br /> LiquidCrystal lcd(12, 11, 5, 4, 3, 2);<br /> int valorlido;<br /> float temperatura;<br /> int pinsensor = 5;<br /> void setup(){<br /> <br /> lcd.begin(16, 2);<br /> <br /> Serial.begin(9600);<br /> }<br /> <br /> void loop()<br /> {<br /> //sensor de temperatura<br /> valorlido = analogRead(pinsensor);<br /> temperatura = (valorlido * 500) / 1024;<br /> lcd.setCursor(9,1);<br /> lcd.print((byte)temperatura);<br /> lcd.setCursor(11,1);<br /> lcd.print(" temp");<br /> delay(1000);<br /> <br /> if (Serial.available()) {<br /> <br /> delay(100);<br /> lcd.clear();<br /> // receber msg pela comunicacao serial <br /> while (Serial.available() > 0) {<br /> <br /> lcd.write(Serial.read());<br /> }<br /> }<br /> }

A parte da comunicação do dispositivo(no caso foi o celular, como exemplo) com o lcd, foi intermediada por um software em java(BTTERM), responsável por enviar dados seriais para o bluetooth


Qualquer duvida e maiores detalhes entre em contato com pedro.guimaraes@ee.ufcg.edu.br