Neste pequeno projeto vamos demonstrar como usar o Arduino para transmitir dados de sensores via wireless (RF – Rádio Frequência)
Nosso objetivo é testar a transmissão RF com Arduino.
Para isso, vamos usar o módulo RF 433 Mhz (transmissor e receptor) muito simples, barato e fácil de configurar.
Related Articles
Hardware Necessário
Para o transmissor:
- Arduino compatível (no meu caso, usei o Arduino Mega 2560);
- Sensor de temperatura DHT11;
- Módulo transmissor RF 433 Mhz.
Para o receptor:
- Arduino compatível;
- Módulo receptor RF 433 Mhz.
Software Necessário
Para controlar o sensor DHT11, precisaremos da biblioteca da Adafruit que você pode baixar do seguinte endereço:
https://github.com/adafruit/DHT-sensor-library
Essa lib é dependente da Adafruit Unified Sensor Library que você encontra aqui:
https://github.com/adafruit/Adafruit_Sensor
Lembre-se: Para instalar essa bibliotecas, você pode usar a própria IDE do Arduino através do Gerenciador de Bibliotecas.
Para a transmissão RF, vamos usar uma biblioteca bem leve que é especializada nos módulos que estamos usando:
Transmissor: https://github.com/zeitgeist87/RFTransmitter
Receptor: https://github.com/zeitgeist87/RFReceiver
Esquema de ligação
No transmissor, ligamos o DHT11 na Porta Digital 3 e o Transmissor RF na porta digital 11.
No receptor, ligamos o Receptor RF na porta digital 2.
Veja o Vídeo da montagem aqui:
O Sketch
Para o transmissor:
#include "DHT.h" #define DHTPIN 3 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); #include#define NODE_ID 1 #define OUTPUT_PIN 11 RFTransmitter transmitter(OUTPUT_PIN, NODE_ID); void setup() { dht.begin(); } void loop() { delay(5000); //Tempo entre as transmissões int t = dht.readTemperature(); //Leitura da temperatura em Celsius if (isnan(t)) { Serial.println("Falha na leitura da temperatura!"); return; } //Nessas 3 linhas convertemos a temperatura de int para array de chars String temp = String(t); char msg[5]; temp.toCharArray(msg,5); transmitter.send((byte *)msg, strlen(msg) + 1) // Envio dos dados delay(5000); transmitter.resend((byte *)msg, strlen(msg) + 1); //Retransmissão para garantir a integridade }
Para o Receptor:
#include#include // Leitura na porta 2 RFReceiver receiver(2); void setup() { Serial.begin(9600); receiver.begin(); } void loop() { char msg[MAX_PACKAGE_SIZE]; //As 2 variáveis abaixo podem ser usadas para determinar o pacote e o canal byte senderId = 0; byte packageId = 0; byte len = receiver.recvPackage((byte *)msg, &senderId, &packageId); Serial.println(""); Serial.print("Temperatura: "); Serial.print(msg); Serial.println(" C"); }
Conclusão
Espero ter ajudado o(a) leitor(a) em seus estudos sobre transmissão wireles RF com Arduino.
Alguns aprimoramentos que podem ser feitos nesse projeto:
- Utilização de antenas para aumentar o alcance da transmissão
- Uso de criptografia para dar mais segurança à transmissão
Até a próxima…
O post Transmitindo Dados de Sensores via RF com Arduino apareceu primeiro em BlogDoJoséCintra.