sexta-feira, 30 de junho de 2023

Carrinho de Controle Remoto com Arduino Nano e NRF24L01 - TRANSMISSOR

Boa Tarde.

        Hoje vou postar pra vocês um projeto renovado. Repaginado. Seria a continuação do projeto de montagem do carrinho de controle remoto, mas com novos componentes. Pra começar, eu resolvi fazer do zero tanto o chassi do carro, quanto o circuito eletrônico. A programação também foi diferente. Vamos logo ao circuito. Para o transmissor, utilizei os seguintes componentes:

1) 01 Auduino Nano;

2) 01 módulo NRF24L01 de 2,4GHz;

3) 04 botões Push Button de cores variadas;

4) 04 resistores de pull-down de 10K;

5) 02 baterias de ion-lítio 18650 de 6800mAH e 3,7V;

6) Jumpers para as ligações;

7) Um mini protoboard.

O pinout do NRF24L01 fica conforme a figura abaixo:

 



Nos pinos digitais D2, D3, D4 e D5 do Arduino eu liguei os 4 botões com os resistores de pull-down de 10K, conforme figura abaixo:


O esquema de ligação é o seguinte:

No pino D7 do Arduino ligamos o CE. No pino D8 do Arduino ligamos o CSN. No pino D13 do Arduino ligamos o CSK. No pino D11 ligamos o MOSI e no pino D12 ligamos o MISO. O IRQ não ligamos a nada, pois não vamos utilizar no momento. Ligamos os 3,3V do Arduino no Vcc do NRF24L01 pois o módulo não suporta 5V (queimei um sem querer ligando em 5V). O GND do NRF24L01 ligamos no GND do Arduino assim como no GND do protoboard e das baterias. Todos os GND devem estar conectados. A saída de 5V do Arduino vai alimentar somente o barramento dos botões. A alimentação do Arduino vem direto das baterias e entra no Vin. Veja o pinouto do Arduino abaixo para facilitar a ligação:


Veja como ficou o circuito do transmissor final:




O Sketch do transmissor ficou assim:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";
boolean estado_B1 = 0;
boolean estado_B2 = 0;
boolean estado_B3 = 0;
boolean estado_B4 = 0;
int msg[1];

void setup() {
  radio.begin();
  radio.openWritingPipe(address);
  radio.stopListening();
  radio.setPALevel(RF24_PA_MIN);
  radio.setChannel(82);
  pinMode(2,INPUT);
  pinMode(3,INPUT);
  pinMode(4,INPUT);
  pinMode(5,INPUT);
 
}
 
void loop() {
  estado_B1 = digitalRead(2);  
  estado_B2 = digitalRead(3);
  estado_B3 = digitalRead(4);
  estado_B4 = digitalRead(5);
 
  if(estado_B1 ==HIGH && estado_B2 == LOW && estado_B3 == LOW && estado_B4 == LOW ){
    msg[0]=111;
    radio.write(&msg,sizeof(msg));
    }
 
  if(estado_B2 ==HIGH && estado_B1 == LOW && estado_B3 == LOW && estado_B4 == LOW){
    msg[0]=112;
    radio.write(&msg,sizeof(msg));
    }
 
  if(estado_B3 ==HIGH && estado_B1 == LOW && estado_B2 == LOW && estado_B4 == LOW){
    msg[0]=113;
    radio.write(&msg,sizeof(msg));
    }
 
  if(estado_B4 ==HIGH && estado_B1 == LOW && estado_B2 == LOW && estado_B3 == LOW){
    msg[0]=114;
    radio.write(&msg,sizeof(msg));
    }
  if(estado_B1 ==HIGH && estado_B3 ==HIGH){
    msg[0]=115;
    radio.write(&msg,sizeof(msg));
    }
  if(estado_B1 ==HIGH && estado_B4 ==HIGH){
    msg[0]=116;
    radio.write(&msg,sizeof(msg));
    }
  if(estado_B2 ==HIGH && estado_B3 ==HIGH){
    msg[0]=117;
    radio.write(&msg,sizeof(msg));
    }
  if(estado_B2 ==HIGH && estado_B4 ==HIGH){
    msg[0]=118;
    radio.write(&msg,sizeof(msg));
    }
  if(estado_B1 ==HIGH && estado_B2 ==HIGH || estado_B3 ==HIGH && estado_B4 ==HIGH ){
    msg[0]=119;
    radio.write(&msg,sizeof(msg));
    }

}

Valeu. No próximo post vou colocar o circuito receptor.


Nenhum comentário:

Postar um comentário