Comunicação sem fios entre Arduinos com Módulos RF TX e RX 433MHz
Pegue papel, caneta e um café quentinho, pois nesse vídeo você vai ter uma verdadeira aula sobre a maneira mais simples e barata de fazer comunicação sem fio entre Arduinos usando módulos RF TX e RX 433MHz!
A parte eletrônica
Circuito do transmissor:
Circuito do receptor:
O código para ser carregado no Arduino
A única biblioteca que você irá instalar na sua IDE para compilar esse código é a VirtualWire, que você pode baixar clicando aqui.
Para instalar esse biblioteca, basta clicar em:
Sketch > Incluir Biblioteca > Adicionar biblioteca.zip > Selecione o Arquivo .zip que você baixou
Código do Transmissor:
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 |
/* ========== TRANSMISSOR =============== Autor: Marlon Nardi Walendorff Data: 28/11/2020 Projeto: Comunicação entre dois Arduinos sem fio utilizando módulos RF 433Mhz */ //==== Inclusão de bibliotecas ====// #include <VirtualWire.h> //==== Mapemamento de Hardware e constantes =====// #define Size 2 #define pinButton 3 #define pinPot A0 //===== Variáveis globais ========// byte TX_buffer[2]; void setup() { //Entradas/Saídas digitais pinMode(pinButton, INPUT_PULLUP); vw_set_tx_pin(2); //Seleciona o pino de comunicação do TX vw_setup(4000); // Velocidade de comunicação em BPS }//endSetup void loop() { TX_buffer[0] = map(analogRead(pinPot), 0, 1023, 0, 255); if (digitalRead(pinButton) == 1) { TX_buffer[1] = 1; } else { TX_buffer[1] = 0; } vw_send(TX_buffer, Size); vw_wait_tx(); }//endLoop |
Código do Receptor:
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 |
/* ========== RECEPTOR =============== Autor: Marlon Nardi Walendorff Data: 28/11/2020 Projeto: Comunicação entre dois Arduinos sem fio utilizando módulos RF 433Mhz */ //==== Inclusão de bibliotecas ====// #include <VirtualWire.h> //==== Mapemamento de Hardware e constantes =====// #define pinLEDPot 3 #define pinLEDButton 4 //===== Variáveis globais ========// byte message[VW_MAX_MESSAGE_LEN]; // Um buffer para armazenar as mensagens byte messageLength = VW_MAX_MESSAGE_LEN; // Tamanho máximo das mensagens recebidas void setup() { //Inicia comunicação serialcom velocidade de 9600 BPS Serial.begin(9600); //Entradas/Saídas digitais pinMode(pinLEDPot, OUTPUT); pinMode(pinLEDButton, OUTPUT); vw_set_rx_pin(2); //Seleciona o pino para recepção dos dados vw_setup(4000); //Velocidade de comunicação em BPS vw_rx_start(); //Começa a receber os dados }//endSetup void loop() { if (vw_get_message(message, &messageLength))// Se houver dados para receber { analogWrite(pinLEDPot, message[0]);// Controle PWM no pino pinLEDPot if (message[1] == 1)// Se o segundo byte do vetor message for igual a um... { digitalWrite(pinLEDButton, LOW);// Desliga o LED no pino pinLEDButton } else { digitalWrite(pinLEDButton, HIGH);// Liga o LED no pino pinLEDButton } Serial.print("PWM: "); Serial.print(message[0]); Serial.print(" Button: "); Serial.println(message[1]); } }//endLoop |
Um comentário
Emerson Andrade
Oi Marlon Nardi, Gostaria de um projeto de RFID com Arduino para controle patrimonial de equipamentos eletrônicos e antifurto. Tens? Grato!