⚡ DC Моторы и драйвер L298N - Когда IoT получает МУСКУЛЫ!
📋 Паспорт спринта
| Параметр | ЗНАЧЕНИЕ |
|---|---|
| Предмет | Интернет вещей (элективный курс) |
| Класс | 9 класс |
| Спринт № | 28 из 36 🚀 |
| Тип занятия | POWER ELECTRONICS + МЕХАНИКА ⚡🔧 |
| Продолжительность | 90 минут ЧИСТОГО АДРЕНАЛИНА |
| Формат | МОТОР-ЛАБОРАТОРИЯ с реальным железом |
🎯 Цели спринта (БОЕВЫЕ ЗАДАЧИ!)
ГЛАВНАЯ МИССИЯ:
Превратить слабые цифровые сигналы в МОЩНУЮ МЕХАНИЧЕСКУЮ СИЛУ! Создать IoT системы, которые физически изменяют реальный мир!
КОНКРЕТНЫЕ ДОСТИЖЕНИЯ:
- Понимают принципы работы DC моторов и их управления
- Подключают и программируют драйвер L298N
- Создают MQTT-controlled роботизированные системы
- Реализуют PWM для точного контроля скорости
- Управляют направлением вращения реверсом
- 🆕 Создают feedback systems с энкодерами
- 🆕 Реализуют PID регулирование для точности
- 🆕 Строят автономные роботизированные платформы
🔄 Sprint Retrospective (0-3 мин): ПЕРЕХОД К СИЛЕ!
Энергичная проверка:
- “КТО создал working IoT dashboard? ПОКАЖИТЕ МОЩЬ!”
- “У кого есть MQTT система, которая мгновенно реагирует?”
- “Готовы превратить ваши данные в ДВИЖЕНИЕ?”
БОЕВАЯ связка: “Вы научились собирать данные и красиво их показывать. НО! Настоящий IoT ДЕЙСТВУЕТ! Сегодня ваши команды будут ФИЗИЧЕСКИ двигать объекты! WELCOME TO THE POWER SIDE OF IoT!” ⚡💪
🕐 Sprint Timeline (90 минут ЧИСТОЙ ЭНЕРГИИ)
⚡ SPRINT START (3-8 мин): ДЕМО СИЛЫ!
🆕 ЭПИЧЕСКАЯ демонстрация мощи:
-
Слабый сигнал → МОЩНОЕ движение:
- На экране: нажатие кнопки в веб-интерфейсе
- В реальности: МОТОР вращает колесо робота!
- “3.3V сигнал контролирует 12V мотор!”
-
MQTT команда → Роботизированная рука:
- Отправка MQTT:
{"action": "grab", "force": 80} - Робо-рука ХВАТАЕТ предмет и поднимает!
- Отправка MQTT:
-
Мобильное приложение → Танк:
- Joystick на телефоне → танк едет по столу!
- “От touch screen до ГУСЕНИЦ!”
-
🆕 ДЕМО FEEDBACK:
- Мотор встречает препятствие → автоматически увеличивает мощность
- “Умные моторы ЧУВСТВУЮТ сопротивление!”
ВЫЗОВ К КЛАССУ:
- “КТО хочет управлять роботом ПРЯМО СЕЙЧАС?”
- “Как вы думаете, сколько силы нужно чтобы поднять этот предмет?”
- “ГДЕ в реальной жизни такие системы МЕНЯЮТ МИР?”
БОЕВАЯ ЗАДАЧА: “Сенсоры дают нам ИНФОРМАЦИЮ, но моторы дают нам СИЛУ! Сегодня создаем IoT с МУСКУЛАМИ!” 💪
📚 THEORY BLOCK (8-25 мин): НАУКА О СИЛЕ
Микро-блок 1 (8-13 мин): DC Моторы - от электронов к ДВИЖЕНИЮ
1⚡ DC МОТОР = ПРЕОБРАЗОВАТЕЛЬ ЭНЕРГИИ
2
3ФИЗИКА СИЛЫ:
4🔋 Электрическая энергия → 🌀 Магнитное поле → 💨 Механическое вращение
5
6КЛЮЧЕВЫЕ ХАРАКТЕРИСТИКИ:
7🔧 НАПРЯЖЕНИЕ: 3V, 6V, 12V, 24V (больше = сильнее)
8⚡ ТОК: 100mA - 10A (ток = крутящий момент)
9🌀 СКОРОСТЬ: 100-30000 RPM (обороты в минуту)
10💪 МОМЕНТ: 0.1-100 Nm (сила поворота)
11
12ТИПЫ DC МОТОРОВ:
13🎯 BRUSHED (щеточные):
14 ✅ Простые, дешевые ($2-20)
15 ✅ Легко управлять
16 ❌ Износ щеток, искры
17
18🚀 BRUSHLESS (бесщеточные):
19 ✅ Долговечные, эффективные
20 ✅ Высокая точность
21 ❌ Сложное управление, дороже ($20-200)
22
23💥 GEARED MOTORS (редукторные):
24 ✅ Высокий момент, низкая скорость
25 ✅ Идеально для роботов
26 ✅ Самоторможение
27
28🏎️ HIGH-SPEED MOTORS:
29 ✅ Дроны, вентиляторы, шпиндели
30 ❌ Низкий момент
Интерактив: “Кто может ФИЗИЧЕСКИ крутануть этот мотор рукой? Почувствуйте СОПРОТИВЛЕНИЕ!”
Микро-блок 2 (13-18 мин): L298N - МОСТИК СИЛЫ
1🌉 L298N = H-BRIDGE ДРАЙВЕР
2
3ПРОБЛЕМА УПРАВЛЕНИЯ:
4❌ Arduino GPIO: 3.3V, 20mA (слабо!)
5❌ Мотор нужен: 6-12V, 2-4A (МОЩНО!)
6✅ L298N: УСИЛИВАЕТ сигналы в 1000 раз!
7
8СХЕМА СИЛЫ:
9┌─────────────┐ ┌─────────────┐ ┌─────────────┐
10│ Arduino │───▶│ L298N │───▶│ DC MOTOR │
11│ 3.3V/20mA │ │ AMPLIFIER │ │ 12V/2A │
12└─────────────┘ └─────────────┘ └─────────────┘
13
14H-BRIDGE МАГИЯ:
15 ВПЕРЕД: НАЗАД: СТОП:
16 A1=HIGH A2=LOW A1=LOW A2=HIGH A1=LOW A2=LOW
17 │ │ │
18 ▼ ▼ ▼
19 МОТОР → МОТОР ← МОТОР ■
20
21ПИНЫ L298N:
22🔌 POWER PINS:
23 • VCC = 5V (логика)
24 • VS = 6-12V (моторы)
25 • GND = общий минус
26
27🎮 CONTROL PINS:
28 • IN1, IN2 = направление мотора A
29 • IN3, IN4 = направление мотора B
30 • ENA, ENB = включение/PWM
31
32⚡ MOTOR OUTPUTS:
33 • OUT1, OUT2 = мотор A
34 • OUT3, OUT4 = мотор B
35
36🆕 ADVANCED FEATURES:
37 • Current sensing (pin CS)
38 • Thermal protection (автоотключение при перегреве)
39 • Back-EMF diodes (защита от обратного тока)
Микро-блок 3 (18-25 мин): PWM - ТОЧНЫЙ КОНТРОЛЬ СИЛЫ
1🎛️ PWM = Pulse Width Modulation
2
3ПРИНЦИП РАБОТЫ:
4┌─┐ ┌─┐ ┌─┐ ← 100% мощность (всегда включен)
5│ │ │ │ │ │
6└─┘ └─┘ └─┘
7
8┌┐ ┌┐ ┌┐ ┌┐ ← 50% мощность (50% времени включен)
9││ ││ ││ ││
10└┘ └┘ └┘ └┘
11
12┐┐┐┐┐┐┐┐┐┐ ← 10% мощность (10% времени включен)
13┘┘┘┘┘┘┘┘┘┘
14
15МАТЕМАТИКА PWM:
16Duty Cycle = (On Time / Total Time) × 100%
17Скорость мотора ≈ Duty Cycle × Максимальная скорость
18
19ARDUINO PWM:
20analogWrite(pin, value);
21// value: 0-255 (0% - 100%)
22// Частота: 490Hz or 980Hz
23
24PWM КОНТРОЛЬ МОТОРОВ:
25digitalWrite(IN1, HIGH); // Направление
26digitalWrite(IN2, LOW);
27analogWrite(ENA, 128); // 50% скорость
28
29🆕 ADVANCED PWM TECHNIQUES:
30• Soft start (плавный разгон)
31• Speed ramping (постепенное изменение)
32• Current limiting (защита от перегрузки)
33• Back-EMF detection (определение реальной скорости)
34
35ПРИМЕРЫ ПРИМЕНЕНИЯ:
36🚗 Automotive: дворники, стеклоподъемники, кондиционер
37🏠 Home: вентиляторы, пылесосы, стиральные машины
38🤖 Robotics: колеса, манипуляторы, приводы
39🏭 Industrial: конвейеры, насосы, компрессоры
☕ NO BREAK: STRAIGHT TO ACTION!
🛠️ ПРАКТИЧЕСКИЙ БЛОК (25-75 мин): MOTOR POWER LAB
Этап 1: Базовое подключение и первый запуск (25-35 мин)
🆕 ЖЕЛЕЗНАЯ SETUP по группам - MAXIMUM POWER:
🔵 ГРУППА “ROBOT TANK BUILDERS”:
1🏗️ HARDWARE SETUP:
2• Arduino Uno/ESP32
3• L298N Motor Driver Shield
4• 2x DC Geared Motors (6V, 200 RPM)
5• Robot chassis with wheels
6• 7.4V Li-Po battery pack
7• Ultrasonic sensor HC-SR04
8
9ПОДКЛЮЧЕНИЕ СИЛЫ:
10L298N → Arduino:
11├── IN1 → Pin 7 (Левый мотор направление)
12├── IN2 → Pin 6 (Левый мотор направление)
13├── IN3 → Pin 5 (Правый мотор направление)
14├── IN4 → Pin 4 (Правый мотор направление)
15├── ENA → Pin 9 (Левый мотор PWM)
16├── ENB → Pin 10 (Правый мотор PWM)
17└── VCC → 5V, VS → 7.4V, GND → GND
18
19ПЕРВЫЙ КОД СИЛЫ:
20void setup() {
21 // Motor pins as outputs
22 for(int pin = 4; pin <= 10; pin++) {
23 pinMode(pin, OUTPUT);
24 }
25}
26
27void moveForward(int speed) {
28 digitalWrite(7, HIGH); digitalWrite(6, LOW); // Левый вперед
29 digitalWrite(5, HIGH); digitalWrite(4, LOW); // Правый вперед
30 analogWrite(9, speed); // Скорость левого
31 analogWrite(10, speed); // Скорость правого
32}
33
34ПЕРВАЯ БОЕВАЯ ЗАДАЧА:
35✓ Танк едет вперед 2 секунды
36✓ Поворачивает налево 1 секунду
37✓ Едет назад 2 секунды
38✓ Останавливается
🔴 ГРУППА “ROBOTIC ARM CONTROLLERS”:
1🦾 HARDWARE SETUP:
2• Arduino Mega (больше PWM пинов!)
3• 2x L298N (4 мотора = 4 степени свободы)
4• 4x DC Servo-style motors
5• Mechanical arm kit
6• 12V power supply (МОЩНОСТЬ!)
7• Potentiometer для manual control
8
9ПОДКЛЮЧЕНИЕ МАНИПУЛЯТОРА:
10Мотор 1 (Base rotation): IN1→22, IN2→23, ENA→2
11Мотор 2 (Shoulder): IN1→24, IN2→25, ENA→3
12Мотор 3 (Elbow): IN1→26, IN2→27, ENA→4
13Мотор 4 (Gripper): IN1→28, IN2→29, ENA→5
14
15struct ArmPosition {
16 int base, shoulder, elbow, gripper;
17};
18
19void moveToPosition(ArmPosition pos) {
20 setMotor(1, pos.base); // Поворот основания
21 delay(500);
22 setMotor(2, pos.shoulder); // Плечо вверх/вниз
23 delay(500);
24 setMotor(3, pos.elbow); // Локоть сгиб
25 delay(500);
26 setMotor(4, pos.gripper); // Захват открыть/закрыть
27}
28
29ПЕРВАЯ БОЕВАЯ ЗАДАЧА:
30✓ "Home position" - все моторы в ноль
31✓ Поднять "объект" с позиции A
32✓ Переместить в позицию B
33✓ Аккуратно опустить
34✓ Вернуться в home position
🟢 ГРУППА “SMART CONVEYOR SYSTEMS”:
1🏭 HARDWARE SETUP:
2• ESP32 (WiFi + больше мощности)
3• L298N + DC motor with encoder
4• Conveyor belt mechanism
5• IR sensors for object detection
6• Servo for sorting mechanism
7• OLED display for status
8
9ПОДКЛЮЧЕНИЕ КОНВЕЙЕРА:
10Main Motor: IN1→16, IN2→17, ENA→18 (PWM)
11Encoder: Pin A→19, Pin B→21 (interrupts)
12IR Sensors: входной→22, выходной→23
13Sorting Servo: Signal→25
14
15volatile long encoderCount = 0;
16float beltSpeed = 0; // см/сек
17
18void IRAM_ATTR encoderISR() {
19 encoderCount++;
20 // Расчет скорости в real-time
21}
22
23void setBeltSpeed(float targetSpeed) {
24 int pwmValue = map(targetSpeed, 0, 50, 0, 255); // 0-50 см/сек
25 analogWrite(18, pwmValue);
26}
27
28ПЕРВАЯ БОЕВАЯ ЗАДАЧА:
29✓ Конвейер начинает движение при detect объекта
30✓ Поддерживает постоянную скорость 10 см/сек
31✓ Останавливается если объект застрял
32✓ Сортирует объекты по размеру (servo)
33✓ Показывает статистику на OLED
🟡 ГРУППА “DRONE MOTOR CONTROLLERS”:
1🚁 HARDWARE SETUP:
2• Arduino Nano (компактность!)
3• 4x ESC (Electronic Speed Controllers) 30A
4• 4x Brushless motors (2200KV)
5• 4x Propellers (осторожно - ОСТРЫЕ!)
6• LiPo 3S battery (11.1V)
7• IMU sensor (MPU6050)
8
9⚠️ БЕЗОПАСНОСТЬ: Пропеллеры СНЯТЫ во время программирования!
10
11ПОДКЛЮЧЕНИЕ КВАДРОКОПТЕРА:
12ESC1 (Front Left): Pin 3
13ESC2 (Front Right): Pin 5
14ESC3 (Rear Left): Pin 6
15ESC4 (Rear Right): Pin 9
16IMU: SDA→A4, SCL→A5
17
18#include <Servo.h> // ESC используют servo-сигналы
19Servo motor1, motor2, motor3, motor4;
20
21void armMotors() {
22 // Калибровка ESC (обязательно!)
23 for(int i = 0; i < 4; i++) {
24 motors[i].writeMicroseconds(1000); // Минимум
25 }
26 delay(2000);
27}
28
29void setThrottle(int m1, int m2, int m3, int m4) {
30 motor1.writeMicroseconds(map(m1, 0, 100, 1000, 2000));
31 motor2.writeMicroseconds(map(m2, 0, 100, 1000, 2000));
32 motor3.writeMicroseconds(map(m3, 0, 100, 1000, 2000));
33 motor4.writeMicroseconds(map(m4, 0, 100, 1000, 2000));
34}
35
36ПЕРВАЯ БОЕВАЯ ЗАДАЧА (БЕЗ ПРОПЕЛЛЕРОВ!):
37✓ Калибровка всех 4 ESC
38✓ Синхронное изменение скорости всех моторов
39✓ Differential thrust (разная тяга для поворота)
40✓ Emergency stop по команде
41✓ IMU feedback для стабилизации
Этап 2: MQTT интеграция - REMOTE POWER CONTROL (35-50 мин)
🆕 Превращаем моторы в IoT СИЛУ:
1// Универсальный MQTT Motor Controller Template
2#include <WiFi.h>
3#include <PubSubClient.h>
4#include <ArduinoJson.h>
5
6WiFiClient espClient;
7PubSubClient client(espClient);
8
9// Motor control structure
10struct MotorCommand {
11 int motorId;
12 int speed; // 0-255 (PWM)
13 int direction; // 1=forward, -1=reverse, 0=stop
14 int duration; // milliseconds, 0=continuous
15};
16
17void setup() {
18 setupWiFi();
19 client.setServer("your-mqtt-broker", 1883);
20 client.setCallback(onMqttMessage);
21
22 // Subscribe to motor commands
23 client.subscribe("motors/+/command"); // motors/1/command, motors/2/command
24 client.subscribe("robots/+/move"); // robots/tank1/move
25 client.subscribe("automation/conveyor/control");
26 client.subscribe("emergency/stop"); // EMERGENCY STOP!
27}
28
29void onMqttMessage(char* topic, byte* payload, unsigned int length) {
30 String message = String((char*)payload, length);
31 StaticJsonDocument<200> doc;
32 deserializeJson(doc, message);
33
34 // EMERGENCY STOP - приоритет #1!
35 if (String(topic) == "emergency/stop") {
36 emergencyStop();
37 return;
38 }
39
40 // Individual motor control
41 if (String(topic).startsWith("motors/")) {
42 int motorId = extractMotorId(topic);
43 MotorCommand cmd = {
44 motorId,
45 doc["speed"],
46 doc["direction"],
47 doc["duration"]
48 };
49 executeMotorCommand(cmd);
50 }
51
52 // High-level robot commands
53 if (String(topic).startsWith("robots/")) {
54 String action = doc["action"];
55 if (action == "forward") moveForward(doc["speed"]);
56 else if (action == "turn") turnRobot(doc["angle"], doc["speed"]);
57 else if (action == "grab") robotGrab(doc["force"]);
58 }
59}
60
61void executeMotorCommand(MotorCommand cmd) {
62 // Safety checks
63 if (cmd.speed > 255) cmd.speed = 255;
64 if (cmd.speed < 0) cmd.speed = 0;
65
66 // Set direction
67 if (cmd.direction > 0) {
68 digitalWrite(IN1_pins[cmd.motorId], HIGH);
69 digitalWrite(IN2_pins[cmd.motorId], LOW);
70 } else if (cmd.direction < 0) {
71 digitalWrite(IN1_pins[cmd.motorId], LOW);
72 digitalWrite(IN2_pins[cmd.motorId], HIGH);
73 } else {
74 digitalWrite(IN1_pins[cmd.motorId], LOW);
75 digitalWrite(IN2_pins[cmd.motorId], LOW);
76 }
77
78 // Set speed
79 analogWrite(ENA_pins[cmd.motorId], cmd.speed);
80
81 // Auto-stop after duration
82 if (cmd.duration > 0) {
83 delay(cmd.duration);
84 analogWrite(ENA_pins[cmd.motorId], 0);
85 }
86
87 // Publish status back
88 publishMotorStatus(cmd.motorId);
89}
90
91// 🆕 Advanced: Closed-loop control with feedback
92void maintainSpeed(int targetRPM) {
93 static unsigned long lastTime = 0;
94 static long lastPosition = 0;
95
96 unsigned long now = millis();
97 if (now - lastTime >= 100) { // Every 100ms
98
99 // Calculate actual RPM from encoder
100 long currentPosition = encoderCount;
101 float actualRPM = (currentPosition - lastPosition) * 600.0 / encoderPPR;
102
103 // Simple PI controller
104 float error = targetRPM - actualRPM;
105 static float integral = 0;
106 integral += error * 0.1; // dt = 0.1 seconds
107
108 float output = Kp * error + Ki * integral;
109
110 // Update PWM
111 currentPWM += output;
112 currentPWM = constrain(currentPWM, 0, 255);
113 analogWrite(ENA, currentPWM);
114
115 // Publish telemetry
116 publishTelemetry(targetRPM, actualRPM, currentPWM);
117
118 lastTime = now;
119 lastPosition = currentPosition;
120 }
121}
🆕 MQTT Topics архитектура для моторов:
1🏗️ MOTOR CONTROL TOPICS:
2
3COMMAND TOPICS (input):
4motors/1/command - {"speed": 200, "direction": 1, "duration": 5000}
5motors/2/command - Individual motor control
6robots/tank1/move - {"action": "forward", "speed": 150, "duration": 3000}
7robots/arm1/position - {"joint1": 90, "joint2": 45, "joint3": -30}
8automation/conveyor/speed - {"target_speed": 25, "acceleration": 5}
9emergency/stop - "" (any message = STOP ALL!)
10
11STATUS TOPICS (output):
12motors/1/status - {"speed": 198, "current": 1.2, "temperature": 45}
13motors/1/telemetry - {"rpm": 1500, "efficiency": 87, "voltage": 11.8}
14robots/tank1/position - {"x": 1.5, "y": 2.3, "heading": 45}
15robots/arm1/joints - {"j1": 89.5, "j2": 44.8, "j3": -29.2}
16system/power - {"voltage": 11.6, "current": 3.4, "remaining": 78}
17
18ALERT TOPICS:
19alerts/overcurrent - {"motor": 2, "current": 4.8, "limit": 4.0}
20alerts/overheating - {"motor": 1, "temp": 85, "limit": 80}
21alerts/stall_detected - {"motor": 3, "expected_rpm": 1000, "actual": 0}
Этап 3: Advanced Control - PRECISION & FEEDBACK (50-65 мин)
🆕 Системы обратной связи и точного управления:
ГРУППА TANK - Навигация и препятствия:
1// Autonomous Tank with Obstacle Avoidance
2#include <NewPing.h>
3
4NewPing sonar(TRIGGER_PIN, ECHO_PIN, 200); // 200cm max distance
5
6void autonomousMode() {
7 int distance = sonar.ping_cm();
8
9 if (distance > 30) {
10 moveForward(200); // Full speed ahead!
11 publishStatus("moving_forward", distance);
12 }
13 else if (distance > 15) {
14 moveForward(100); // Slow down approaching obstacle
15 publishStatus("approaching_obstacle", distance);
16 }
17 else {
18 stopMotors(); // Stop!
19 delay(500);
20
21 // Look left and right
22 int leftDistance = scanDirection(-90);
23 int rightDistance = scanDirection(90);
24
25 if (leftDistance > rightDistance) {
26 turnLeft(90); // Turn towards more space
27 publishStatus("turning_left", leftDistance);
28 } else {
29 turnRight(90);
30 publishStatus("turning_right", rightDistance);
31 }
32 }
33}
34
35// 🆕 Advanced: Path planning with waypoints
36struct Waypoint {
37 float x, y;
38 int speed;
39};
40
41Waypoint mission[] = {
42 {0, 0, 200}, // Start
43 {2, 0, 200}, // Forward 2 meters
44 {2, 2, 150}, // Turn and go 2 meters
45 {0, 2, 150}, // Return path
46 {0, 0, 100} // Home
47};
48
49void executeMission() {
50 for (int i = 0; i < 5; i++) {
51 navigateToWaypoint(mission[i]);
52 publishMissionProgress(i, 5);
53 }
54}
ГРУППА ARM - Inverse Kinematics:
1// Robotic Arm with Inverse Kinematics
2struct Point3D {
3 float x, y, z;
4};
5
6struct JointAngles {
7 float base, shoulder, elbow, wrist;
8};
9
10JointAngles inverseKinematics(Point3D target) {
11 // Simplified 4-DOF inverse kinematics
12 float r = sqrt(target.x * target.x + target.y * target.y);
13 float baseAngle = atan2(target.y, target.x) * 180 / PI;
14
15 // Arm lengths (измеренные на реальном железе)
16 float L1 = 15.0; // Shoulder length (cm)
17 float L2 = 12.0; // Forearm length (cm)
18
19 float shoulderAngle = calculateShoulderAngle(r, target.z, L1, L2);
20 float elbowAngle = calculateElbowAngle(r, target.z, L1, L2);
21
22 return {baseAngle, shoulderAngle, elbowAngle, 0}; // Wrist parallel to ground
23}
24
25void moveToPoint(float x, float y, float z) {
26 JointAngles angles = inverseKinematics({x, y, z});
27
28 // Smooth motion planning
29 JointAngles current = getCurrentAngles();
30
31 for (int step = 0; step <= 100; step++) {
32 float t = step / 100.0; // 0 to 1
33
34 JointAngles intermediate = {
35 lerp(current.base, angles.base, t),
36 lerp(current.shoulder, angles.shoulder, t),
37 lerp(current.elbow, angles.elbow, t),
38 lerp(current.wrist, angles.wrist, t)
39 };
40
41 setJointAngles(intermediate);
42 delay(20); // 50 FPS smooth motion
43
44 publishArmPosition(intermediate);
45 }
46}
47
48// 🆕 Pick and place automation
49void pickAndPlace(Point3D pickup, Point3D dropoff) {
50 moveToPoint(pickup.x, pickup.y, pickup.z + 5); // Approach
51 moveToPoint(pickup.x, pickup.y, pickup.z); // Contact
52 closeGripper(80); // Grab
53 moveToPoint(pickup.x, pickup.y, pickup.z + 5); // Lift
54
55 moveToPoint(dropoff.x, dropoff.y, dropoff.z + 5); // Transport
56 moveToPoint(dropoff.x, dropoff.y, dropoff.z); // Lower
57 openGripper(); // Release
58 moveToPoint(dropoff.x, dropoff.y, dropoff.z + 5); // Clear
59
60 moveToHomePosition();
61}
Этап 4: SYSTEM INTEGRATION - Координация всех роботов (65-70 мин)
🆕 “ROBOTIC FACTORY” - все группы работают вместе:
1🏭 MEGA-СИСТЕМА КООРДИНАЦИИ:
2
3СЦЕНАРИЙ 1: "AUTOMATED ASSEMBLY LINE"
4┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
5│ CONVEYOR │───▶│ ROBOT ARM │───▶│ DRONE │───▶│ TANK │
6│ подает │ │ собирает │ │ транспорт │ │ доставляет │
7│ детали │ │ изделие │ │ по воздуху │ │ клиенту │
8└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
9
10MQTT CHOREOGRAPHY:
111. Conveyor: "factory/parts/available" → part detected
122. RobotArm: receives signal → "factory/arm/picking"
133. RobotArm: assembly complete → "factory/product/ready"
144. Drone: pickup product → "factory/transport/airborne"
155. Tank: ground delivery → "factory/delivery/complete"
16
17EMERGENCY PROTOCOLS:
18• Any robot can trigger "factory/emergency/stop"
19• All systems halt within 100ms
20• Status reports every second during operation
21• Automatic recovery after fault cleared
🎯 ROBOT WARFARE DEMO (70-83 mин): ДЕМО СИЛЫ!
🆕 Формат: “Battle of the Bots - IoT Robot Championship!”
- Время на группу: 3 минуты боевого демо + 30 секунд вопросы
- LIVE CHALLENGES: Real-time tasks с препятствиями
BATTLE CHALLENGES:
🔵 TANK BATTALION - Навигационный вызов:
1MISSION: "Search and Rescue"
2✓ Танк должен найти "выживших" (цветные объекты)
3✓ Автономная навигация через лабиринт препятствий
4✓ MQTT отчеты о найденных объектах
5✓ Return to base с координатами спасения
6✓ BONUS: Multiple tanks coordination
🔴 ROBO ARM BRIGADE - Точность и скорость:
1MISSION: "Assembly Challenge"
2✓ Собрать tower из 5 blocks за минимальное время
3✓ Blocks разного размера и веса
4✓ No dropping = precision bonus
5✓ MQTT live telemetry во время сборки
6✓ BONUS: Two arms working together
🟢 CONVEYOR COMMAND - Логистика:
1MISSION: "Smart Sorting"
2✓ Sort objects по размеру/цвету на 3 different outputs
3✓ Maintain constant throughput (items/minute)
4✓ MQTT analytics: efficiency, errors, speed
5✓ Handle "jam" situations gracefully
6✓ BONUS: Integration с другими роботами
🟡 DRONE SQUADRON - Воздушное мастерство:
1MISSION: "Aerial Precision" (БЕЗ ПОЛЕТА!)
2✓ Точное управление тягой 4 моторов
3✓ Симуляция stabilization с IMU feedback
4✓ MQTT flight controller commands
5✓ Emergency landing protocols
6✓ BONUS: Swarm coordination algorithms
🔍 POWER ANALYSIS (83-87 мин): Инженерная оценка
🆕 Технический разбор МОЩНОСТИ:
1⚡ POWER CONSUMPTION ANALYSIS:
2
3ИЗМЕРЕНИЯ:
4• Voltage под нагрузкой
5• Current draw при разных speeds
6• Efficiency calculations (mechanical power / electrical power)
7• Thermal analysis (нагрев моторов и драйверов)
8
9REAL-WORLD CONSTRAINTS:
10• Battery life calculations
11• Heat dissipation requirements
12• Safety margins и fault tolerance
13• Scalability для production
14
15OPTIMIZATION OPPORTUNITIES:
16• PWM frequency tuning
17• Motor selection optimization
18• Feedback loop improvements
19• Energy recovery systems
🔄 SPRINT RETRO (87-90 мин): МОЩНЫЕ ВЫВОДЫ
🆕 Power Engineering рефлексия:
- Что было сложнее - software или hardware integration?
- Какой мотор оказался самым “характерным”?
- 🆕 Как изменилось понимание robotics после hands-on?
- 🆕 Где вы видите применение таких систем в real life?
📝 Sprint Backlog (СИЛОВОЕ задание)
🆕 Основное задание: “Industrial Automation Proposal”
Сценарий: Завод заказал автоматизацию производственной линии. Спроектируйте robotic solution на базе DC моторов.
Требования:
1🏭 AUTOMATION ENGINEERING SPEC:
2
31. PROCESS ANALYSIS:
4 • Что автоматизируем? (сборка, упаковка, сортировка)
5 • Current manual process breakdown
6 • Bottlenecks и improvement opportunities
7 • ROI calculations (экономия времени/денег)
8
92. ROBOTIC SYSTEM DESIGN:
10 • Motor specifications (power, speed, torque requirements)
11 • Control system architecture
12 • Sensor integration для feedback
13 • Safety systems и emergency stops
14
153. IMPLEMENTATION PLAN:
16 • Phase-by-phase deployment
17 • Training requirements для operators
18 • Maintenance schedule и spare parts
19 • Testing и validation protocols
20
214. 🆕 FUTURE SCALING:
22 • How to add more robots
23 • Integration с ERP systems
24 • AI/ML opportunities для optimization
25 • Industry 4.0 readiness
26
27DELIVERABLE: Engineering proposal + cost analysis + timeline
🆕 Бонус-задания:
🔧 Mechanical Engineer Track: Спроектировать custom mechanical системы для specific applications. CAD models, stress analysis, gear ratio calculations.
⚡ Power Electronics Track:
Создать advanced motor controller с current sensing, thermal protection, regenerative braking.
🤖 Robotics Engineer Track: Implement advanced control algorithms: PID tuning, trajectory planning, collision detection.
🏭 Automation Specialist Track: Design complete factory automation system с multiple coordinated robots и central SCADA control.
📊 Sprint Metrics (Система оценивания СИЛЫ)
🆕 Power Engineering критерии:
| Критерий | МОЩНО! (5) | Сильно (4) | Работает (3) |
|---|---|---|---|
| Motor Control | Precise speed/direction control + feedback | Good basic motor control | Motors spin when commanded |
| Hardware Integration | Rock-solid connections + proper power mgmt | Stable connections, minor issues | Basic working setup |
| MQTT Robotics | Real-time robot control + telemetry | Good remote control capabilities | Basic MQTT commands work |
| System Reliability | Handles faults gracefully + safety features | Generally reliable operation | Works under ideal conditions |
| 🆕 Engineering Thinking | Considers real-world constraints + scaling | Good understanding of challenges | Basic technical implementation |
| 🆕 Innovation Level | Novel mechanical/control solutions | Creative improvements on standard approach | Standard textbook implementation |
🆕 POWER BADGES:
- ⚡ Motor Master - за excellent motor control mastery
- 🔧 Hardware Wizard - за robust mechanical integration
- 🤖 Robotics Engineer - за advanced robotic behaviors
- 🏭 Automation Expert - за industrial-thinking approach
- 🛡️ Safety Champion - за comprehensive safety features
- 📡 IoT Integrator - за seamless MQTT robotics control
- 💪 POWER BADGE - за outstanding mechanical power systems
🎒 Sprint Resources (АРСЕНАЛ СИЛЫ)
МОЩНОЕ железо:
- Motors: DC geared motors (6V, 12V), brushless motors, servo motors
- Drivers: L298N modules, motor shield, ESCs для brushless
- Power: LiPo batteries, power supplies (5V, 12V), current meters
- Mechanical: Robot chassis, wheels, gears, belts, робо-рука kit
🆕 БЕЗОПАСНОСТЬ - ПРИОРИТЕТ #1:
- Eye protection - safety glasses обязательно
- Power safety - fuses, circuit breakers, emergency stops
- Mechanical safety - no loose clothing, secure propellers
- Emergency protocols - first aid kit, emergency contacts
🚀 ЭНЕРГИЯ СПРИНТА ЗАШКАЛИВАЕТ!
- ✅ REAL MECHANICAL POWER - от milliwatts к WATTS!
- ✅ INDUSTRIAL MINDSET - engineering thinking для real world
- ✅ SAFETY CONSCIOUSNESS - responsible power handling
- ✅ SYSTEM INTEGRATION - motors + sensors + MQTT + brains
- ✅ HANDS-ON MASTERY - real hardware, real problems, real solutions
- ✅ INNOVATION DRIVE - creative mechanical solutions
СЛЕДУЮЩИЙ УРОВЕНЬ: Servo и Stepper моторы! ТОЧНОСТЬ meets СИЛА! 🎯⚡