Tabla de contenido:

Servocontrol inalámbrico: 6 pasos
Servocontrol inalámbrico: 6 pasos

Video: Servocontrol inalámbrico: 6 pasos

Video: Servocontrol inalámbrico: 6 pasos
Video: PLC Keyence "Servo Control" Panasonic Minas A6 Tutorial 2024, Mes de julio
Anonim
Servocontrol inalámbrico
Servocontrol inalámbrico
Servo control inalámbrico
Servo control inalámbrico

Este proyecto controla la rotación de un servo de forma inalámbrica mediante un potenciómetro (perilla). La rotación está limitada a 180 grados.

Paso 1: componentes

Componentes
Componentes
Componentes
Componentes
Componentes
Componentes

Este proyecto consta de

  • 2 placas controladoras Arduino UNO con cable conector USB
  • 2 nRF24L01 - módulos transceptores de RF de 2,4 GHz (para obtener ayuda con estos módulos, consulte
  • 2 tarjetas adaptadoras de enchufe (chips de mochila) para el nRF24L01
  • 1 placa de expansión prototipo ProtoShield 328 compatible con Arduino opcional
  • 1 servo
  • 1 potenciómetro analógico
  • soldador y soldadura
  • cable
  • alicates de punta de aguja
  • envoltura aislante, usé cinta aislante

Paso 2: placa del servidor

Tablero del servidor
Tablero del servidor

La placa del servidor consta de un módulo transceptor, la placa protectora (que se conecta directamente a la placa Arduino de una sola manera) y el servo. Decidí incluir la placa protectora para evitar la placa de pruebas torpe y darle al proyecto un acabado más ordenado.

El código y el recurso web incluidos en la lista de componentes detallan las conexiones del módulo transceptor. Decidí soldar las conexiones en lugar de usar conexiones temporales como en proyectos anteriores. Como soy principiante, aislé cada junta de soldadura con cinta aislante (no eran bonitas).

Los pines de la placa de protección corresponden directamente a los pines de Arduino. Antes de colocar la placa protectora, conecté la tierra y los pines de 5 voltios a los rieles de la placa con alambre y soldadura. También soldé los cables de tierra y de 5 voltios de los componentes a los rieles de la placa protectora, luego finalmente conecté el Arduino a la placa protectora.

El servo está conectado al pin de 3 voltios para alimentación y al pin digital 2 para comunicación.

** Nota: solo después de completar esta compilación noté que mis placas Arduino no son idénticas. El transceptor de mi servidor está alimentado por el riel de 5 voltios en la placa protectora, mientras que el transceptor del cliente está alimentado por el pin de 3 voltios, aunque me han hecho creer que una función del chip adaptador en el transceptor es proporcionar el voltaje adecuado. Todo lo que puedo decir con certeza es que el código proporcionado coincidió con la configuración que se muestra en las imágenes produce el efecto descrito.

Paso 3: Codificador de servidor: copiar y pegar

// CÓDIGO DE SERVIDOR / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> No utilizado GND> GND VCC> 5V * / // cableado del transceptor

#incluir

// biblioteca de servos

#incluir

// biblioteca del transceptor

#define Servopin 2

// declaración pin de salida del servo

ServoTimer2 serv;

// declaración del nombre del servo

RH_NRF24 nrf24;

// declaración del nombre del transceptor

int timeOUT = 0;

// variable para servo

pulsos int = 90;

// variable para almacenar pulsos

configuración vacía ()

{serv.attach (Servopin); // cosas de servo

Serial.begin (9600); // cosas del transceptor

si (! nrf24.init ())

Serial.println ("error de inicio"); // cosas del monitor serial if (! nrf24.setChannel (12)) // establece el canal en 125 Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF falló"); // cosas del monitor en serie}

bucle vacío ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = tamaño de (buf); if (nrf24.recv (buf, & len)) // cosas del monitor serial {Serial.print ("solicitud obtenida:"); pulsos = strtol ((const char *) buf, NULL, 10); // cambio de tipo de datos

int prin = map (pulsos, 750, 2250, 0, 180); // cambio de tipo de datos

Serial.println (prin); serv.write (pulsos); // hace que el servo se mueva}}

}

Paso 4: tablero del cliente

Junta de clientes
Junta de clientes

La placa del cliente consta de un módulo transceptor y el potenciómetro. El módulo transceptor está cableado de la misma manera ** que la placa del servidor, con la excepción de que sin la placa protectora, se conecta directamente a los pines de la placa Arduino.

El potenciómetro toma 5v, tierra y está conectado al pin analógico 2.

** Nota: como se mencionó en el paso de la placa del servidor, mis placas Arduino no son idénticas. En este caso, el transceptor está conectado al pin etiquetado como 3.3V, directamente adyacente al pin de 5V, pero nuevamente, todo parece funcionar bien.

Paso 5: Código de cliente: copiar y pegar

// CÓDIGO DE CLIENTE / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> No usado GND> GND VCC> 5V * / // cableado del transceptor

#incluir

// biblioteca del transceptor

int potpin = A2; // delaración del potenciómetro

int val;

char tempChar [5];

String valString = ""; // cambio de tipo de datos

RH_NRF24 nrf24; // cosas del transceptor

configuración vacía ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("error de inicio"); // Los valores predeterminados después de init son 2.402 GHz (canal 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF falló"); } // cosas del transceptor

bucle vacío () {

val = analogRead (potpin); // cosas del potenciómetro

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

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // cambio de tipo de datos nrf24.send (tempChar, sizeof (tempChar));

}

Paso 6: una nota sobre el código:

El Código contiene algunas funciones limitadas de resolución de problemas en forma de comentarios del monitor en serie en la interfaz del software Arduino. Al ver el monitor en serie desde el código SERVIDOR (ctrl + shift + M), debería poder ver el estado del potenciómetro en forma de un número entre 1 y 180.

Además, aquí está la biblioteca para la conexión inalámbrica y el servo:

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

github.com/nabontra/ServoTimer2

Recomendado: