Умный говорящий гуманоидный робот на Arduino UNO — пошаговая инструкция
Компоненты и материалы
| Arduino Pro Mini (5V, 16 MHz) (любая плата подойдет, использована для компактности) | ×1 |
| Пин-хедеры (мама/папа) для монтажа на перфоплату | — |
| Перфоплата (Vero Board) | ×1 |
| Модуль SD-карты (TF) | ×1 |
| Micro SD-карта (не более 2 ГБ) | ×1 |
| ИК-датчики приближенности | ×3 |
| Сервоприводы (Tower Pro MG996R / SG90) | ×3 |
| Картон для корпуса | — |
Приложения и сервисы
- Arduino IDE
О проекте
Этот робот — Мофиза (странное имя) — ВИДИТ, ГОВОРИТ и РЕАГИРУЕТ на окружение. Сначала посмотрите видео.
Часто говорящих роботов делают на более мощных платах, но на Arduino тоже можно сделать гуманоида, который говорит и движется сервоприводами. Начнем!
Шаг 1: Необходимые детали
(Список выше + фото деталей в исходнике)
Шаг 2: Датчики ИК и корпус
Корпус сделан из картона — просто. ИК-датчики запаяны шлейфом с разъемами: два в «глаза», один в «грудь».
Логика: если срабатывает грудной датчик — робот говорит приветствие. Если срабатывает датчик в глазе — говорит «Ааа... не трогай мой глаз» и поднимает сервопривод в этой зоне.
Шаг 3: Схема
Схема выглядит сложно, но на самом деле проста. Питание от одного аккумулятора. Всё пайкается на перфоплате. Сервоприводы на голове и руках.
Шаг 4: Код
Используются две библиотеки:
- TMRpcm.h — воспроизведение аудио с SD-карты (речь). GitHub
- ServoTimer2.h — управление сервоприводами через Timer2, так как TMRpcm использует Timer1. Объяснение
Пример кода (приветствие + рукопожатие левой рукой):
#include "ServoTimer2.h"
#define SD_ChipSelectPin 10
#include "TMRpcm.h"
TMRpcm tmrpcm;
ServoTimer2 matha; // голова
ServoTimer2 lhand; // левая рука
ServoTimer2 rhand; // правая рука
int in1 = 6, in2 = 7, in3 = 8; // пины датчиков
void setup() {
matha.attach(2);
lhand.attach(3);
rhand.attach(4);
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD FAIL");
return;
}
}
void loop() {
if (!(digitalRead(in3))) { // датчик груди сработал (LOW = сработал)
tmrpcm.play("welcome.wav");
lhand.write(2500); // рука вверх
delay(2000);
lhand.write(1200); // позиция рукопожатия
delay(9000);
} else {
lhand.write(300); // руки вниз
rhand.write(1700);
matha.write(1500); // голова в центр
}
}
На SD-карте должен быть файл welcome.wav (8-бит, 16 кГц, моно). Можно записать свои фразы.
Полный расширенный код на GitHub: Mofiza — Humanoid social robot
Шаг 5: Финал
Подключаете питание — робот готов. Хотел сделать ходьбу, но осталось только 3 свободных цифровых пина — мало для ног. Поддержите подпиской на YouTube!
Схема
См. раздел Schematics (изображение схемы в исходнике).
Производственный процесс
- Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
- Умные шторы: автоматическое управление светом на Arduino с солнечной энергией
- Умная копилка: управление монетоприёмником на Arduino Nano
- Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Автономный линий-следующий робот на Arduino UNO
- Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- Управление манипулятором LittleArm через Android-приложение по Bluetooth
- Умный зарядный мультиплексор для 6 батареек на Arduino Uno с LCD и ультразвуковым управлением