Projetos de circuito eletrônicoProjetos de engenharia do ArduinoTermômetro sem fio usando link RF de 433 MHz usando Arduino

Termômetro sem fio usando link RF de 433 MHz usando Arduino

Relacionados

Neste post, vamos construir um termômetro sem fio baseado em Arduino que pode monitorar a temperatura ambiente e a temperatura ambiente externa. Os dados são transmitidos e recebidos via link RF de 433 MHz.

Usando o módulo de RF de 433 MHz e o sensor DHT11

O projeto proposto utiliza o Arduino como cérebro e o coração como módulo transmissor/receptor de 433 MHz.

O projeto é dividido em dois circuitos separados, aquele com receptor de 433 MHz, display LCD e sensor DHT11 que será colocado dentro da sala e também mede a temperatura ambiente.

Outro circuito possui transmissor de 433MHz, sensor DHT11 para medição de temperatura ambiente externa. Tanto o circuito tem um arduino cada.

O circuito colocado dentro da sala exibirá as leituras de temperatura interna e externa no LCD.

Agora vamos dar uma olhada no módulo transmissor/receptor de 433 MHz.

MÓDULO TRANSMISSOR/RECEPTOR DE 433 MHZ.

Os módulos transmissor e receptor são mostrados acima; é capaz de comunicação simplex (unidirecional). O receptor tem 4 pinos Vcc, GND e pinos DATA. Existem dois pinos DATA, eles são os mesmos e podemos enviar os dados de qualquer um dos dois pinos.

O transmissor é bem mais simples ele possui apenas pino de entrada Vcc, GND e DATA. Temos que conectar uma antena a ambos os módulos que está descrito no final do artigo, sem antena a comunicação entre eles não será estabelecida além de alguns centímetros.

Agora vamos ver como esses módulos se comunicam.

Agora suponha que estamos aplicando pulso de clock de 100Hz ao pino de entrada de dados do transmissor. O receptor receberá uma réplica exata do sinal no pino de dados do receptor.

Isso é simples certo? Sim… mas este módulo funciona em AM e suscetível a ruídos. Da observação do autor, se o pino de dados do transmissor ficar sem sinal por mais de 250 milissegundos, o pino de saída de dados do receptor produzirá sinais aleatórios.

Portanto, é adequado apenas para transmissões de dados não críticos. No entanto, este projeto funciona muito bem com este módulo.

Agora vamos para os esquemas.

RECEPTOR:


ARDUINO PARA CONEXÃO DE DISPLAY LCD.  POTENCIÔMETRO DE 10K

O circuito acima é a conexão do arduino para o display LCD. O potenciômetro de 10K é fornecido para ajustar o contraste do display LCD.

TERMÔMETRO SEM FIO USANDO LINK RF DE 433 MHZ E ARDUINO

O acima é o circuito receptor. O display LCD deve ser conectado a este arduino.

Faça o download dos seguintes arquivos de biblioteca antes de compilar o código

Radio Head: github.com/PaulStoffregen/RadioHead

Biblioteca de sensores DHT: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Programa para Receptor:

//--------Program Developed by R.Girish-----//
#include
#include
#include
#include
#define DHTxxPIN A0
LiquidCrystal lcd(12,11,5,4,3,2);
RH_ASK driver(2000, 7, 9, 10);
int ack = 0;
dht DHT;
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
ack = 0;
int chk = DHT.read11(DHTxxPIN);
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack = 1;
lcd.setCursor(0,0);
lcd.print("INSIDE:");
lcd.print("NO DATA");
delay(1000);
break;
}
if(ack == 0)
{
lcd.setCursor(0,0);
lcd.print("INSIDE:");
lcd.print(DHT.temperature);
lcd.print(" C");
delay(2000);
}
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen))
{
int i;
String str = "";
for(i = 0; i < buflen; i++)
{
str += (char)buf[i];
}
lcd.setCursor(0,1);
lcd.print("OUTSIDE:");
lcd.print(str);
Serial.println(str);
delay(2000);
}
}
//--------Program Developed by R.Girish-----//

Transmissor:

TRANSMISSOR DE TERMÔMETRO SEM FIO

O acima é o esquema para Transmissor, que é bastante simples como receptor. Aqui estamos usando outra placa arduino. O sensor DHT11 detectará a temperatura ambiente externa e enviará de volta ao módulo receptor.

A distância entre o transmissor e o receptor não deve ser superior a 10 metros. Se houver algum obstáculo entre eles, o alcance de transmissão pode ser reduzido.

Programa para Transmissor:

//------Program Developed by R.Girish----//
#include
#include
#define DHTxxPIN A0
#include
int ack = 0;
RH_ASK driver(2000, 9, 2, 10);
dht DHT;
void setup()
{
Serial.begin(9600);
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
ack = 0;
int chk = DHT.read11(DHTxxPIN);
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack = 1;
const char *temp = "NO DATA";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
break;
}
if(ack == 0)
{
if(DHT.temperature == 15)
{
const char *temp = "15.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 16)
{
const char *temp = "16.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 17)
{
const char *temp = "17.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 18)
{
const char *temp = "18.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 19)
{
const char *temp = "19.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 20)
{
const char *temp = "20.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 21)
{
const char *temp = "21.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 22)
{
const char *temp = "22.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();;
}
if(DHT.temperature == 23)
{
const char *temp = "23.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 24)
{
const char *temp = "24.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 25)
{
const char *temp = "25.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 26)
{
const char *temp = "26.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 27)
{
const char *temp = "27.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 28)
{
const char *temp = "28.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 29)
{
const char *temp = "29.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 30)
{
const char *temp = "30.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 31)
{
const char *temp = "31.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 32)
{
const char *temp = "32.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 33)
{
const char *temp = "33.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 34)
{
const char *temp = "34.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 35)
{
const char *temp = "35.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 36)
{
const char *temp = "36.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 37)
{
const char *temp = "37.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 38)
{
const char *temp = "38.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 39)
{
const char *temp = "39.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 40)
{
const char *temp = "40.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 41)
{
const char *temp = "41.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 42)
{
const char *temp = "42.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 43)
{
const char *temp = "43.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 44)
{
const char *temp = "44.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
delay(500);
if(DHT.temperature == 45)
{
const char *temp = "45.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 46)
{
const char *temp = "46.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 47)
{
const char *temp = "47.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 48)
{
const char *temp = "48.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 49)
{
const char *temp = "49.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
if(DHT.temperature == 50)
{
const char *temp = "50.00 C";
driver.send((uint8_t *)temp, strlen(temp));
driver.waitPacketSent();
}
delay(500);
}
}
//------Program Developed by R.Girish----//

Construção da Antena:

Se você estiver construindo projetos usando esses módulos de 433 MHz, siga os detalhes de construção abaixo estritamente para um bom alcance.

ANTENA DE RF DE 433 MHZ

Use um fio de núcleo único que deve ser resistente o suficiente para suportar esta estrutura. Você também pode usar fio de cobre isolado com isolamento removido na parte inferior para junção de solda. Faça dois destes, um para o transmissor e outro para o receptor.

Protótipo de termômetro sem fio do autor usando Arduino e link de RF de 433 MHz:

PROTÓTIPO DE TERMÔMETRO SEM FIO USANDO LINK RF DE 433 MHZ E ARDUINO

Hashtags: #Termômetro #sem #fio #usando #link #MHz #usando #Arduino
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados