Tabla de contenido:
- Paso 1: componentes
- Paso 2: placa del servidor
- Paso 3: Codificador de servidor: copiar y pegar
- Paso 4: tablero del cliente
- Paso 5: Código de cliente: copiar y pegar
- Paso 6: una nota sobre el código:
Video: Servocontrol inalámbrico: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
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
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
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:
Servocontrol Arduino: 6 pasos
Servocontrol Arduino: los servomotores tienen tres cables: alimentación, tierra y señal. El cable de alimentación suele ser rojo y debe conectarse al pin de 5 V de la placa Arduino. El cable de tierra suele ser negro o marrón y debe conectarse a un pin de tierra en el Ardui
Robot Arduino inalámbrico con módulo inalámbrico HC12: 7 pasos
Robot Arduino inalámbrico con módulo inalámbrico HC12: Hola chicos, bienvenidos. En mi publicación anterior, expliqué qué es un circuito de puente H, IC de controlador de motor L293D, IC de controlador de motor L293D a cuestas para conducir controladores de motor de alta corriente y cómo puede diseñar y hacer su propia placa de controlador de motor L293D
Servocontrol con NodeMCU y Blynk - en la plataforma IOT: 3 pasos
Servocontrol con NodeMCU y Blynk | en la plataforma IOT: en este tutorial puede controlar su servo usando la aplicación Blynk en la plataforma IOT
Punto de acceso inalámbrico de 50 metros de alcance con adaptador inalámbrico USB TP Link WN7200ND en Raspbian Stretch: 6 pasos
Punto de acceso inalámbrico de 50 metros de alcance con adaptador inalámbrico USB TP Link WN7200ND en Raspbian Stretch: Raspberry Pi es excelente para crear puntos de acceso inalámbricos seguros, pero no tiene un buen alcance, utilicé un adaptador inalámbrico USB TP Link WN7200ND para extenderlo. Quiero compartir cómo hacerlo¿Por qué quiero usar una raspberry pi en lugar de un enrutador? T
Hackear un timbre inalámbrico en un interruptor de alarma inalámbrico o interruptor de encendido / apagado: 4 pasos
Hackear un timbre inalámbrico en un interruptor de alarma inalámbrico o interruptor de encendido / apagado: Recientemente construí un sistema de alarma y lo instalé en mi casa. Usé interruptores magnéticos en las puertas y los cableé a través del ático. Las ventanas eran otra historia y cablearlas no era una opción. Necesitaba una solución inalámbrica y esta es