╔═══════════════════════════════════════════════════════════╗
║ ██████╗ ██████╗ ██████╗ ██████╗ ████████╗ ║
║ ██╔══██╗██╔═══██╗██╔══██╗██╔═══██╗╚══██╔══╝ ║
║ ██████╔╝██║ ██║██████╔╝██║ ██║ ██║ ║
║ ██╔══██╗██║ ██║██╔══██╗██║ ██║ ██║ ║
║ ██║ ██║╚██████╔╝██████╔╝╚██████╔╝ ██║ ║
║ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ║
║ ║
║ 🐱 Raspberry Pi + Arduino Robot ║
║ 6 серво (голова + шея) + 4 серво (тело) + RGB LED ║
║ Web UI + Telegram Bot + API ║
╚═══════════════════════════════════════════════════════════╝
Raspberry Pi + Arduino робот с веб-интерфейсом управления, Telegram ботом и REST API.
- 🏗️ Архитектура
- ⚡ Подключение и питание
- 💻 Управление и API
- 🚀 Установка и запуск
- 📁 Структура проекта
⚠️ Известные проблемы- 📸 Галерея
- 📝 Блог и лицензия
┌─────────────────┐ USB ┌──────────────┐
│ │──────────────│ Arduino Uno │ Голова: 3 серво + RGB LED
│ Raspberry Pi │ │ (CH340) │ • Левый глаз (D4)
│ Node.js :3000 │ │ │ • Правый глаз (D7)
│ │ │ │ • Челюсть (D8)
│ │ └──────────────┘
│ │ USB ┌──────────────┐
│ │──────────────│ Arduino Mega │ Тело: 4 серво (+4 future)
│ │ │ 2560 R3 │ • Shoulder L/R (D2/D3)
│ │ │ │ • Elbow L/R (D4/D5)
│ │ └──────────────┘
│ │
│ Angular UI ◄── WebSocket ── Браузер
└─────────────────┘
| Компонент | Роль | Подключение |
|---|---|---|
| Raspberry Pi 3B | Контроллер, веб-сервер | Ethernet/WiFi |
| Arduino Uno (CH340) | Голова: 3 серво + RGB LED | USB → /dev/ttyUSB0 |
| Arduino Mega 2560 R3 | Тело: 4 серво | USB → /dev/ttyACM0 |
| RGB LED (4-pin) | Индикация глаз | Uno D3/D5/D6 |
| Сервоприводы (×7+) | Движение | Uno D4,D7,D8,D9-D11 / Mega D2-D9 |
| Пин | Компонент | Описание |
|---|---|---|
| D3 | RGB R | Красный светодиод (через 220Ω) |
| D5 | RGB G | Зелёный светодиод (через 220Ω) |
| D6 | RGB B | Синий светодиод (через 220Ω) |
| D4 | Servo | Левый глаз ↔ |
| D7 | Servo | Правый глаз ↔ |
| D8 | Servo | Челюсть (открыть/закрыть) |
| D9 | Servo | Поворот головы ↔ |
| D10 | Servo | Шея ↕ (наклон) |
| D11 | Servo | Шея ↔ (поворот) |
| GND | RGB GND | Общий провод |
| Пин | Компонент | Описание |
|---|---|---|
| D2 | Servo | Левое плечо |
| D3 | Servo | Правое плечо |
| D4 | Servo | Левый локоть |
| D5 | Servo | Правый локоть |
| D6-D9 | Servo | Резерв (future) |
⚠️ НЕ питать сервоприводы от Arduino 5V! Используйте отдельный блок 5-6V, минимум 2А на серво. GND всех источников соединить вместе.
- 🔗 Полная интерактивная схема — кликабельная SVG с подробными подписями
- 📄 Wiring документация — полное описание подключения
| Схема подключения | Проводка |
|---|---|
![]() |
![]() |
- Arduino Uno/Mega: питание от USB Raspberry Pi
- Сервоприводы (7шт): отдельный блок питания 5-6V, минимум 2А на каждый серво
- RGB LED: питание от Arduino через резисторы 220Ω
- GND: соединить GND всех источников питания вместе
| Команда | Описание | Пример |
|---|---|---|
SERVO:<name>:<angle> |
Установить угол серво (0-180) | SERVO:eyeL:120 |
RGB:<r>,<g>,<b> |
Установить цвет (0-255) | RGB:255,128,0 |
OFF |
Выключить RGB | OFF |
FADE:<r>,<g>,<b> |
Плавный переход к цвету | FADE:0,0,255 |
BLINK |
Режим мигания | BLINK |
PRESET:<name> |
Готовый цвет | PRESET:red |
STATUS |
Текущее состояние | STATUS |
| Команда | Описание | Пример |
|---|---|---|
SERVO:<name>:<angle> |
Установить угол серво (0-180) | SERVO:shoulderL:120 |
CENTER |
Центрировать все серво | CENTER |
STATUS |
Текущее состояние | STATUS |
red, green, blue, white, yellow, cyan, magenta, orange, pink, purple
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/status |
Статус подключения + состояние |
| POST | /api/servo |
{board, servo, angle} |
| POST | /api/rgb |
{r, g, b} |
| POST | /api/rgb/off |
Выключить RGB |
| POST | /api/rgb/preset |
{name} |
| POST | /api/animation |
{name, params} |
| POST | /api/animation/stop |
Остановить анимацию |
Подключение: ws://<pi-ip>:3000
{"type": "servo", "board": "head", "servo": "eyeL", "angle": 120}
{"type": "rgb", "r": 255, "g": 0, "b": 0}
{"type": "preset", "name": "red"}
{"type": "animation", "name": "wave"}
{"type": "stop"}cd ~/robot-catty/server
npm start
# Открыть http://<pi-ip>:3000Возможности UI:
- 🎛️ Управление серво — слайдеры для всех серво
- 💡 RGB LED — слайдеры R/G/B + 10 пресетов + кнопка выключения
- 🎬 Анимации:
wave,nod,shake,dance,lookAround,blink - 📊 Статус в реальном времени — WebSocket
- 📋 Лог — все команды и события
Управление RGB LED через Telegram.
Команды: /red, /green, /blue, /white, /yellow, /cyan, /magenta, /orange, /pink, /purple, /off, /status, /blink, /color R G B, /demo, /stop
⚠️ Токен бота нужно запросить у @BotFather и вставить вscripts/rgb_bot.py
# Клонирование
git clone https://github.com/RuslanStrogov/robot-catty.git
cd robot-catty
# Установка Node.js зависимостей
cd server
npm install
# Запуск
npm start
# Автозапуск (crontab)
crontab -e
# Добавить:
# @reboot cd /path/to/robot-catty/server && /usr/bin/node server.js# Arduino Uno (голова — 3 серво + RGB)
avr-gcc -mmcu=atmega328p -DF_CPU=16000000L \
-DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR \
-I$CORE -I$VAR \
-Os -w -std=gnu++11 -fpermissive -fno-exceptions \
-ffunction-sections -fdata-sections -fno-threadsafe-statics -flto \
$CORE/*.cpp $CORE/*.c \
firmware/servo_head/servo_head.cpp -o servo_head.elf -lm
avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 115200 -D -U flash:w:servo_head.hex:i
# Arduino Mega (тело)
arduino-cli compile -b arduino:avr:mega firmware/servo_body/
arduino-cli upload -b arduino:avr:mega -p /dev/ttyACM0 firmware/servo_body/Автоматический запуск при старте системы (crontab @reboot):
- 🔴 Моргание красным — 1 минута
- Каждый пресет — 3 минуты с плавным переходом
robot-catty/
├── firmware/
│ ├── servo_head/servo_head.cpp # Uno — голова (3 серво + RGB)
│ └── servo_body/servo_body.ino # Mega — тело (4 серво)
├── server/
│ ├── package.json # Node.js зависимости
│ ├── server.js # Express + WebSocket сервер
│ ├── services/
│ │ ├── arduino.js # Serial связь с Arduino
│ │ └── robot.js # Логика робота + анимации
│ └── public/
│ └── index.html # Angular веб-интерфейс
├── config/
│ ├── arduino_config.md # Настройки плат
│ └── servo_config.json # Конфигурация серво (пины, лимиты)
├── docs/
│ ├── wiring.md # Схема подключения (полная)
│ ├── interactive-schematics.md # Описание интерактивных схем
│ ├── robot-catty-circuit.html # Интерактивная SVG
│ └── images/ # Фото и схемы
├── scripts/
│ ├── rgb_bot.py # Telegram бот управления RGB
│ └── demo.py # Демо-режим (автозапуск)
├── remote/
│ └── rgb_led_remote.py # Удалённое управление с Windows
├── ISSUES.md # Известные задачи и проблемы
├── CREATE_ISSUES.md # Шаблоны для GitHub Issues
└── README.md # Этот файл
- Arduino Uno CH340: все фюзы = 0x00 (125kHz клок), но serial работает на 9600 baud
- Для компиляции на Pi нужен Arduino IDE или PlatformIO (версия atmelavr ≤5.3.0 для корректной работы с Mega 2560)
- AVR core хранится в
/tmp/или~/.platformio/— теряется после перезагрузки при использовании Snap - Mega 2560: Servo library конфликтует с Timer1 — используйте прямую ШИМ или
Servo.hсlib_deps
Подробнее в ISSUES.md
- 🎛 Управление серво — слайдеры для всех серво (голова + тело)
- 💡 RGB LED — слайдеры R/G/B + 10 пресетов + кнопка выключения
- 🎬 Анимации —
wave,nod,shake,dance,lookAround,blink - 📊 Статус в реальном времени — WebSocket подключение к Arduino
- 📋 Лог — все команды и события
- Telegram: http://t.me/itvpi
- VK: https://vk.com/itvpiska
MIT







