Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Компоненты и материалы

Компонент Количество Примечание
Arduino UNO 1 Управление сервоприводами
Сервопривод (стандартный, 5V) 3 Yaw, Pitch, Roll — 3 оси головы
Android-смартфон 1 Источник данных ориентации (акселерометр/магнетометр)
LinkIt ONE Board 1 Bluetooth-мост телефон → Arduino (если нет BT-шилда)
Стабилизатор питания (12V/5V/3.3V) 1 Отдельное питание для сервоприводов
Текстолит, разъёмы, провода, клей — Самодельный шилд для сервоприводов

Инструменты

Софт

История и мотивация

Хотел сделать робота, но сервоприводы дорогие. Нашёл 4 сервы за $13. Есть LinkIt ONE и Arduino UNO. Идея: робот-голова с 3 степенями свободы (Yaw, Pitch, Roll), управляемая наклоном телефона на голове оператора. Дешево и весело.

Шаг 1: Материалы

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Почему две платы?

Шаг 2: Самодельный Servo Shield для Arduino

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Шаг 3: Связь LinkIt ONE ↔ Arduino

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Шаг 4: Центральное положение серв (90°)

Загрузите Servoposition.ino — все сервы встают на 90°. Соберите механику так, чтобы в этом положении голова смотрела прямо, оси были ортогональны. Проверьте движение — сервы не должны мешать друг другу.

Шаг 5: Планирование механики (3 оси)

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Сначала на двустороннем скотче, проверяете диапазоны, потом клеите термоклеем.

Шаг 6: Финальная сборка

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Постепенно заменяйте скотч на горячий клей. Проверьте: при включении все сервы встают на 90°, голова ровная.

Шаг 7: Настройка SensoDuino

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

  1. Установите SensoDuino, дайте права на сенсоры и Bluetooth.
  2. Меню → Connect Bluetooth → выберите LinkIt ONE (имя «Sivam_LIO»).
  3. Включите Orientation Sensor (галочка «On» и «Send via Bluetooth»).
  4. Performance → интервал обновления (100 мс для плавности, 250 мс для тестов).

Шаг 8: Программы

LinkIt ONE (Linkitonehead.ino)

#include <LBT.h>
#include <LBTServer.h>

String inputString = "";
void setup() {
  if (!LBTServer.begin((uint8_t*)"Sivam_LIO")) return;
  Serial1.begin(9600); // UART к Arduino
}
void loop() {
  if (LBTServer.connected()) {
    uint8_t buf[64];
    int bytesRead;
    while ((bytesRead = LBTServer.readBytes(buf, 32)) > 0) {
      inputString = "";
      for (int j=0; j

Arduino UNO (Arduinohead.ino)

#include <Servo.h>
Servo leftright; // Yaw - пин 3
Servo updown;    // Pitch - пин 5
Servo shake;     // Roll - пин 6

String inputString = "";
void setup() {
  Serial.begin(9600);
  leftright.attach(3); updown.attach(5); shake.attach(6);
}
void loop() {}

void serialEvent() {
  while (Serial.available()) {
    char c = Serial.read();
    if (c != '\n') inputString += c;
  }
  // Парсим пакет: >sensor_id,rec_id,val1,val2,val3>
  int s = inputString.indexOf('>');
  if (s >= 0) {
    int e = inputString.indexOf('>', s+1);
    if (e > 0) {
      String packet = inputString.substring(s, e);
      inputString = inputString.substring(e);
      // Разбор CSV внутри пакета
      int c1 = packet.indexOf(',');
      String sensorId = packet.substring(1, c1);
      int c2 = packet.indexOf(',', c1+1);
      String recId = packet.substring(c1+1, c2);
      int c3 = packet.indexOf(',', c2+1);
      String v1 = packet.substring(c2+1, c3);
      int c4 = packet.indexOf(',', c3+1);
      String v2 = packet.substring(c3+1, c4);
      String v3 = packet.substring(c4+1);

      int S1 = v1.toInt(); // Yaw: 90..270 (магнитный азимут)
      int S2 = v2.toInt(); // Pitch: -90..+90
      int S3 = v3.toInt(); // Roll: 90..-90..90

      // Маппинг в углы серв 0..180
      int rot1 = map(S1, 90, 270, 180, 0); // 180° = сев
      int rot2 = map(S2, -90, 90, 0, 180);
      int rot3 = map(S3, 90, -90, 0, 180); // инверсия

      rot1 = constrain(rot1, 0, 180);
      rot2 = constrain(rot2, 0, 180);
      rot3 = constrain(rot3, 0, 180);

      if (rot1 != 0 && rot1 != 180) leftright.write(rot1);
      if (rot2 != 0 && rot2 != 180) updown.write(rot2);
      if (rot3 != 0 && rot3 != 180) shake.write(rot3);
      delay(15);
    }
  }
}

Сервопозиция (Servoposition.ino)

#include <Servo.h>
Servo leftright, updown, shake;
void setup() {
  leftright.attach(3); updown.attach(5); shake.attach(6);
  leftright.write(90); updown.write(90); shake.write(90);
}
void loop() {}

Шаг 9: Упаковка электроники

Оба шилда стыкуются вертикально (двухсторонний скотч), аккуратно, без замыканий.

Шаг 10: Тест рукой

Держите телефон в руке, лицом на азимут 180° (юг). Наклоны телефона → голова повторяет.

Шаг 11: Лицо робота

Купили куклу Санта-Клауса, голова на двусторонний скотч к рычагу верхней сервы (Roll).

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Шаг 12: Шляпа-контроллер

Обычная кепка + двусторонний скотч спереди → телефон наклеен на лоб. Надеваете шляпу — голова робота копирует движения вашей головы.

DIY робот-голова на Arduino: управление сервоприводами с Android-телефона через SensoDuino

Видео

  • Низкая частота (250 мс) — дерганье, но работает.
  • Высокая частота (100 мс) — плавное следование, выглядит живо.

Выводы и улучшения

  • Работает весело и дешево (~$20 без телефона).
  • Проблема: провода тянут сенсор, при беге артефакты. Нужен беспроводной сенсор (вторая итерация — nRF24).
  • BT-связь LinkIt ONE иногда глючит — лучше использовать HC-05/HC-06 на Arduino напрямую.
  • Механику можно усилить металлом, добавить возврат пружинами.

Производственный процесс

  1. DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
  2. Робот-будильник на колесах: умная мобильная система пробуждения на Raspberry Pi и Google Calendar
  3. RasPiRobot Board V2: Расширьте Raspberry Pi в мощный робот-контроллер
  4. Создание моторизированного робота-крипера Minecraft на Arduino
  5. Archimedes: Робот-совица с ИИ для распознавания эмоций
  6. Создание робота с компьютерным зрением и голосовым управлением на Windows 10 IoT Core
  7. ROS-робот: Управление навигацией из терминала на Raspberry Pi
  8. Интеграция Microsoft Kinect с Raspberry Pi для детекции людей в реальном времени на роботе Sonbi
  9. Simple Pi Robot — Сборка 2WD автономного ровера на Raspberry Pi
  10. Главный актив: человеческий капитал в производственных операциях