Hoje vamos apreder a usar o conjunto transmissor 433Mhz e receptor com Arduino. Esta tecnologia de transmissão sem fio é muito usada em controles remotos de portão eletrônico. A maioria das informações da primeira parte do artigo foi retirada daqui.
A biblioteca que utilizaremos inicialmente é a RC-switch disponível aqui. Baixe a biblioteca do link e depois, na IDE do Arduino vá em “Sketch > Incluir biblioteca > Adicionar biblioteca .ZIP”. Dentro dos arquivos que você baixou vai ter um arquivo chamada “output.ino”, coloque este arquivo na mesma pasta on de salvar o sketch do código abaixo.
/*
Example for receiving
https://github.com/sui77/rc-switch/
If you want to visualize a telegram copy the raw data and
paste it into http://test.sui.li/oszi/
*/
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
}
void loop() {
if (mySwitch.available()) {
output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
mySwitch.resetAvailable();
}
}
mySwitch.getReceivedValue()
O receptor de RF vai conectado ao pino 2 do Arduino, interrupção 0. Nosso controle remoto de portão vai ser o emissor. Veja o esquema de ligação na imagem abaixo.
No monitor serial, ao se apertar um botão do controle de portão é visível o seguinte:
Estes valores (decimal, binary) são únicos para cada controle e podem ser usados para implementar controles dos mais diversos, é o que vamos fazer a seguir.
Emissor e receptor
Para trabalhar com emissor e receptor vamos usar a biblioteca Radiohead, conforme visto neste post e que pode ser baixada daqui. Para instalar no seu Arduino, na IDE do Arduino vá em “Rascunho > Incluir biblioteca > Adicionar biblioteca .ZIP” e procure o arquivo que você baixou do link acima.
Confesso que não entendi porque os pinos são usados os pinos 2 e 12, mas imagino que deva ter algo a ver com a SPI, já que estes são os pinos do Arduino para essa função. A biblioteca SPI é chamada no código abaixo, apesar de não ser utilizada.
Copie e cole este código no Arduino emissor:
#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile
RH_ASK driver;
void setup()
{
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
const char *msg = "123456789012";
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
delay(1000);
}
E este código no Arduino receptor:
#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile
RH_ASK driver;
void setup()
{
Serial.begin(9600); // Debugging only
if (!driver.init())
Serial.println("init failed");
}
void loop()
{
uint8_t buf[12];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)) // Non-blocking
{
int i;
// Message with a good checksum received, dump it.
Serial.print("Message: ");
Serial.println((char*)buf);
}
}
O resultado do código receptor no monitor Serial da IDE do Arduino é a mensagem que o emissor enviou, “123456789012”:
E abaixo um vídeo rápido do funcionamento dos códigos expostos acima. Veja que a antena do receptor pode ser um pequeno pedaço de fio de cobre.
Conclusão
Algo que não comentei foi o alcançe deste tipo de controle remoto. Os fabricantes de portão eletrônico colocam como 40 metros, é uma boa distância. Outro detalhe é o tamanho da antena, que segundo este link e este deve ser de na média 17cm.
Dá pra fazer muitas automações legais com estes módulos 433MHz, sua criatividade é o limite. Quer comprar o módulo usado neste artigo? use meu link de afiliado.
Deixe um comentário