Índice:

Servo controle sem fio: 6 etapas
Servo controle sem fio: 6 etapas

Vídeo: Servo controle sem fio: 6 etapas

Vídeo: Servo controle sem fio: 6 etapas
Vídeo: Como usar um servomotor #ManualMaker Aula 10, Vídeo 1 2024, Julho
Anonim
Servo controle sem fio
Servo controle sem fio
Servo controle sem fio
Servo controle sem fio

Este projeto controla a rotação de um servo sem fio por meio de um potenciômetro (botão). A rotação é restrita a 180 graus.

Etapa 1: Componentes

Componentes
Componentes
Componentes
Componentes
Componentes
Componentes

Este projeto consiste em

  • 2 placas controladoras Arduino UNO com cabo conector USB
  • 2 nRF24L01 - Módulos transceptores de RF de 2,4 GHz (para obter ajuda com esses módulos, consulte
  • 2 placas de adaptador de soquete (chips de mochila) para o nRF24L01
  • 1 placa de expansão protótipo ProtoShield 328 compatível com Arduino opcional
  • 1 servo
  • 1 potenciômetro analógico
  • ferro de solda e solda
  • arame
  • alicate de bico fino
  • envoltório isolante, usei fita isolante

Etapa 2: placa de servidor

Placa para Servidor
Placa para Servidor

A placa de servidor consiste em um módulo transceptor, a placa de blindagem (que se conecta diretamente à placa Arduino apenas de uma maneira) e o servo. Decidi incluir a placa de proteção para evitar a placa de ensaio desajeitada e dar ao projeto um acabamento mais limpo.

O código e o recurso da web incluídos na lista de componentes detalham as conexões do módulo do transceptor. Decidi soldar as conexões em vez de usar conexões temporárias como em projetos anteriores. Como sou iniciante, isolei cada junta de solda com fita isolante (não eram bonitas).

Os pinos da placa de blindagem correspondem diretamente aos pinos do Arduino. Antes de prender a placa de blindagem, conectei o aterramento e os pinos de 5 volts aos trilhos da placa com fio e solda. Também soldei os fios de 5 volts e terra dos componentes aos trilhos da placa de blindagem e, finalmente, conectei o Arduino à placa de blindagem.

O servo é conectado ao pino de 3 volts para alimentação e ao pino digital 2 para comunicação.

** Observação: só depois de concluir esta construção, percebi que minhas placas Arduino não são idênticas. Meu transceptor do servidor é alimentado pelo trilho de 5 volts na placa de blindagem, enquanto o transceptor do cliente é alimentado pelo pino de 3 volts, embora eu tenha sido levado a acreditar que uma função do chip adaptador no transceptor é fornecer a tensão adequada. Tudo o que posso dizer com certeza é que o código fornecido combinado com a configuração mostrada nas imagens produz o efeito descrito.

Etapa 3: codificador do servidor: copiar e colar

// CÓDIGO DO SERVIDOR / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Não usado GND> GND VCC> 5V * / // fiação do transceptor

#incluir

// biblioteca servo

#incluir

// biblioteca do transceptor

#define Servopin 2

// pino de saída do servo de declaração

ServoTimer2 serv;

// declaração do nome do servo

RH_NRF24 nrf24;

// declaração do nome do transceptor

int timeOUT = 0;

// variável para servo

pulsos internos = 90;

// variável para armazenar pulsos

void setup ()

{serv.attach (Servopin); // servo stuff

Serial.begin (9600); // coisas do transceptor

if (! nrf24.init ())

Serial.println ("falha de inicialização"); // coisas do monitor serial if (! nrf24.setChannel (12)) // definir o canal para 125 Serial.println ("setChannel falhou"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF falhou"); // coisas do monitor serial}

void loop ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // coisas do monitor serial {Serial.print ("solicitação obtida:"); pulsos = strtol ((const char *) buf, NULL, 10); // coisas de mudança de tipo de dados

int prin = map (pulsos, 750, 2250, 0, 180); // coisas de mudança de tipo de dados

Serial.println (prin); serv.write (pulsos); // faz o servo se mover}}

}

Etapa 4: Quadro do cliente

Quadro de clientes
Quadro de clientes

A placa do cliente consiste em um módulo transceptor e o potenciômetro. O módulo transceptor é conectado da mesma forma ** que a placa para servidor, com a exceção de que, sem a placa de proteção, ele é conectado diretamente aos pinos da placa Arduino.

O potenciômetro leva 5 V, aterrado, e é conectado ao pino 2 analógico.

** Observação: conforme mencionado na etapa da placa para servidor, minhas placas Arduino não são idênticas. Neste caso, o transceptor está conectado ao pino identificado como 3,3 V, diretamente adjacente ao pino de 5 V, mas, novamente, tudo parece funcionar bem.

Etapa 5: Código do cliente: copiar e colar

// CÓDIGO CLIENTE / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Não usado GND> GND VCC> 5V * / // fiação do transceptor

#incluir

// biblioteca do transceptor

potpin int = A2; // delaração do potenciômetro

int val;

char tempChar [5];

String valString = ""; // coisas de mudança de tipo de dados

RH_NRF24 nrf24; // coisas do transceptor

void setup ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("falha de inicialização"); // Os padrões após o init são 2,402 GHz (canal 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel falhou"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF falhou"); } // coisas do transceptor

void loop () {

val = analogRead (potpin); // coisas do potenciômetro

val = mapa (val, 0, 1023, 750, 2250);

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // alteração do tipo de dados nrf24.send (tempChar, sizeof (tempChar));

}

Etapa 6: uma observação sobre o código:

O Código contém algumas funcionalidades limitadas de solução de problemas na forma de feedback do monitor serial na interface do software Arduino. Ao visualizar o monitor serial a partir do código SERVER (ctrl + shift + M), você deve ser capaz de ver o estado do potenciômetro na forma de um número entre 1 e 180.

Além disso, aqui está a biblioteca para wireless e servo:

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Recomendado: