Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controlar Múltiples Servos por Bluetooth: Arduino y App Android

Componentes y suministros

ComponenteCantidadNotas
Arduino UNO1Usa Mega si necesitas >6 servos
Módulo Bluetooth HC-061O cualquier compatible
Servomotores (estándar o micro)6Probable con 1 para test
Cables jumper (MM/FF/MF)1 set
Smartphone Android1Para la app de control

Sobre el proyecto

Hice una app para 1 servo ayer y prometí versión multi-servo. ¡Aquí está! También mejoré el código Arduino.

App en Google Play (buscar "Bluetooth Servo Control Multi"). Código fuente de la app: contactar al autor.

Paso 1: Lista de componentes y montaje

Conecta todo según el esquema, sube el código, descarga la app, empareja Bluetooth y listo.

Importante: Conecta RXD del HC-06 a TX del Arduino y TXD del HC-06 a RX del Arduino. No conectes el módulo Bluetooth al subir el sketch.

Paso 2: Cambiar nombre, PIN y baudrate del HC-06 (opcional)

Necesitas un programador USB-TTL:

Código Arduino: Control multi-servo

/* Autor: Danny van den Brande
 * Controla múltiples servos vía app Android Bluetooth.
 * Añade tantos servos como pines tengas.
 */
#include <Servo.h>

Servo servo[10];  // Array para hasta 10 servos
byte serialA;

void setup() {
  // Asigna pines (ejemplo para 6 servos)
  servo[0].attach(9);   // Servo 1
  servo[1].attach(10);  // Servo 2
  servo[2].attach(11);  // Servo 3
  servo[3].attach(3);   // Servo 4
  servo[4].attach(5);   // Servo 5
  servo[5].attach(6);   // Servo 6
  // servo[6].attach(...); // Descomenta para más
  
  Serial.begin(9600);  // Ajusta al baudrate de tu HC-06
}

void loop() {
  if (Serial.available() > 2) {
    serialA = Serial.read();  // Byte de identificación (no usado en esta versión)
    Serial.println(serialA);
    
    unsigned int servopos = Serial.read();   // Byte bajo
    unsigned int servopos1 = Serial.read();  // Byte alto
    unsigned int realservo = (servopos1 * 256) + servopos;
    Serial.println(realservo);
    
    // Cada servo usa un rango de 180 valores: 1000-1179, 2000-2179, etc.
    for (int s = 0; s < 6; s++) {
      unsigned int base = (s + 1) * 1000;
      if (realservo >= base && realservo < base + 180) {
        int angle = map(realservo, base, base + 179, 0, 180);
        servo[s].write(angle);
        Serial.print("Servo "); Serial.print(s+1); Serial.println(" ON");
        delay(10);
        break;
      }
    }
    // Para más servos, extiende el bucle o añade más condiciones
  }
}

Nota: El código original usaba múltiples if repetitivos. Esta versión con bucle es más limpia y escalable.

Esquemático

Ver imagen adjunta: HC-06 TX→RX (pin 0), RX→TX (pin 1), VCC→5V, GND→GND. Servos en pines PWM (3,5,6,9,10,11) con alimentación externa recomendada si son muchos.

Proceso de manufactura

  1. Simple Pi Robot: Construye un Rover Autónomo 2‑WD con Raspberry Pi
  2. Mando universal Android con Arduino, 1Sheeld y control IR
  3. Centro de Control de Potencia Arduino: N-FET, P-FET, Relé y RTC
  4. Vehículo Controlado por Android con Raspberry Pi, Arduino y Motor Shield: Guía Completa
  5. Robot evasor de obstáculos con servo: Construcción con Arduino y HC-SR04
  6. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  7. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  8. Control Preciso de Servo con Arduino y MPU6050 (SG90 / MG996R)
  9. Control remoto de coche con Arduino Uno y Bluetooth: Guía paso a paso
  10. Motores servo: funcionamiento, tipos y por qué son importantes
  11. Entendiendo los reductores para servomotores: funciones, beneficios y aplicaciones