Mehrere Servos per Bluetooth steuern: Arduino & Android App
Komponenten und Zubehör
| Komponente | Menge | Hinweise |
|---|---|---|
| Arduino UNO | 1 | Für >6 Servos: Arduino Mega |
| HC-06 Bluetooth-Modul | 1 | oder kompatibles Modul |
| Servomotoren (Standard) | 6 | Test auch mit weniger möglich |
| Jumper-Kabel (MM/FF/MF) | 1 Set | |
| Android-Smartphone | 1 |
Über dieses Projekt
Ich habe gestern eine 1-Servo-App gebaut und versprochen, eine Multi-Servo-Version nachzuliefern – hier ist sie! Auch der Arduino-Code wurde verbessert.
App herunterladen: Google Play Store (Link in Originalprojekt).
Quellcode der App auf Anfrage.
Schritt 1: Teileliste & Aufbau
Alles gemäß Schaltplan verdrahten, Code hochladen, App installieren, Bluetooth koppeln, verbinden – fertig. Wichtig: RXD des HC-06 an TX des Arduino, TXD an RX. Bluetooth-Modul beim Hochladen abziehen!
Schritt 2: HC-06 konfigurieren (Name, PIN, Baudrate) – optional
Benötigt: USB-zu-TTL-Programmer (z. B. CP2102, CH340).
Verkabelung Programmer → HC-06: VCC↔VCC, GND↔GND, RXD↔TX, TXD↔RX.
AT-Befehle im Serial Monitor (9600 Baud, „Both NL & CR“):
AT→ Antwort „OK“AT+NAMEmeinName→ setzt Modulnamen (Antwort: OKsetname)AT+PIN1234→ setzt PIN (Antwort: OKsetPIN)- Weitere Befehle (Baudrate etc.) im beiliegenden PDF.
Arduino-Code: Multi-Servo Bluetooth Steuerung
/* Autor: Danny van den Brande
Steuert bis zu 10 Servos via Bluetooth-App.
Protokoll: 3 Bytes pro Befehl:
Byte 0: Servo-ID (1-10)
Byte 1+2: Position 0-180 als 16-bit Wert (High/Low)
App sendet: [ID][PosHigh][PosLow]
*/
#include <Servo.h>
Servo servos[10];
const int servoPins[10] = {9, 10, 11, 3, 5, 6, 7, 8, 12, 13}; // Pins anpassen!
void setup() {
for (int i = 0; i < 6; i++) { // Nur erste 6 auf UNO
servos[i].attach(servoPins[i]);
}
Serial.begin(9600); // An HC-06 Baudrate anpassen (Default 9600)
}
void loop() {
if (Serial.available() >= 3) {
byte id = Serial.read();
byte high = Serial.read();
byte low = Serial.read();
int pos = (high << 8) | low; // 16-bit Position
if (id >= 1 && id <= 6) { // UNO: max 6 Servos
pos = constrain(pos, 0, 180);
servos[id - 1].write(pos);
Serial.print("Servo ");
Serial.print(id);
Serial.print(" -> ");
Serial.println(pos);
}
}
}
Hinweis: Der Originalcode nutzte ein eigenes Protokoll (Bereiche 1000-1180 für Servo 1, 2000-2180 für Servo 2, …). Der obige Code ist eine modernisierte, erweiterbare Version. Der Originalcode ist im Projektarchiv enthalten.
Schaltplan

Herstellungsprozess
- Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
- Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
- Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
- Android-gesteuertes Roboterfahrzeug mit Raspberry Pi Motor Shield
- Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
- Servomotoren: Funktionsweise und Bedeutung
- Servomotor-Getriebe: Funktionen, Vorteile und Anwendungen