👁️ Оптические датчики в робототехнике

Даем роботам зрение и цветовосприятие

🌈 Свет • 👁️ Зрение • 🎨 Цвета • 🤖 Интеллект
5 класс • Технология • 45 минут

👨‍🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-11
🎯 Цель: Научить роботов “видеть” мир вокруг себя!

🎯 План урока

🌟 Наша световая миссия:

  1. 🔄 Вспомнить основы - что мы знаем о свете и датчиках
  2. ⚗️ Изучить физику света - как работают оптические явления
  3. 🔬 Понять фотоэлементы - от света к электричеству
  4. 🧮 Освоить преобразования - от сигналов к числам
  5. 🎨 Поработать с цветом - RGB и датчики цвета
  6. 🤖 Создать видящего робота - проект “следование по линии”

🎯 К концу урока вы сможете:

  • ⚗️ Объяснить физические принципы работы оптических датчиков
  • 🔬 Использовать датчики света и цвета в проектах
  • 🧮 Понимать преобразование световых сигналов в данные
  • 🤖 Создавать роботов с оптическим зрением

🔄 Актуализация знаний

Что мы уже знаем о датчиках и свете

❓ Блиц-опрос о датчиках

1. Типы изученных датчиков:

  • Какие датчики мы уже изучили?
  • Как датчик преобразует физическую величину в электрический сигнал?
  • Что такое аналоговый и цифровой сигнал?

2. Основы работы датчиков:

  • Что происходит внутри датчика при изменении измеряемой величины?
  • Зачем нужна калибровка датчиков?
  • Как компьютер понимает показания датчиков?

🎯 Связь с новой темой: Сегодня изучаем датчики, которые работают со светом!

🌈 Световые явления вокруг нас

🤔 Вопросы о свете:

  • Что происходит со светом, когда он падает на поверхность?
  • Почему мы видим предметы разного цвета?
  • Как наши глаза различают цвета?
  • Может ли машина “видеть” как человек?

🌍 Свет в природе и технике:

  • 🌞 Солнце - главный источник света на Земле
  • 👁️ Глаза - природные оптические датчики
  • 📸 Камера - технический аналог глаза
  • 🚗 Фары и датчики - свет в автомобилях

🧠 Проблемная ситуация: Как научить робота различать день и ночь? Как робот может следовать по цветной линии? Как автомобиль “видит” препятствия?

🤖 Зрение роботов vs зрение человека

👨 Человеческое зрение:

  • 👁️ Глаза - сложная оптическая система
  • 🧠 Мозг - обработка визуальной информации
  • 🌈 Цветовосприятие - различение миллионов оттенков
  • Скорость - мгновенная реакция на изменения

🤖 Робототехническое зрение:

  • 📡 Датчики - простые фотоэлементы
  • 💻 Процессор - числовая обработка сигналов
  • 🎨 Цветоанализ - RGB-модель цветов
  • 🔢 Дискретность - работа с числовыми значениями

⚖️ Сравнение возможностей:

Параметр Человек Робот
Количество цветов ~10 млн 16.7 млн (24-бит)
Скорость реакции 0.1-0.2 с 0.001-0.01 с
Работа в темноте Ограничена С ИК-подсветкой
Точность измерений Субъективная Объективная
Усталость Есть Нет

⚗️ Физические основы оптических датчиков

От света к электричеству

🌈 Природа света

📊 Свет как электромагнитная волна:

  • Свет - это электромагнитное излучение
  • Длина волны определяет цвет
  • Видимый спектр: 380-780 нанометров

🎨 Спектр видимого света:

1Фиолетовый ← Синий ← Голубой ← Зеленый ← Желтый ← Оранжевый ← Красный
2380 нм     450 нм   500 нм    550 нм    580 нм   620 нм      750 нм

⚡ Основные свойства света:

  • Отражение - свет отбрасывается от поверхности
  • Поглощение - свет “проглатывается” материалом
  • Преломление - свет изменяет направление при переходе в другую среду
  • Рассеяние - свет распространяется во все стороны

🔬 Отражение и поглощение света

🪞 Закон отражения: Угол падения = Угол отражения

🎨 Цвет объектов:

  • Белый объект - отражает весь видимый свет
  • Черный объект - поглощает весь видимый свет
  • Красный объект - отражает красный, поглощает остальные цвета
  • Зеленый объект - отражает зеленый, поглощает остальные

📊 Коэффициент отражения:

1Коэффициент отражения = Отраженный свет / Падающий свет
2
3Примеры:
4- Свежий снег: ~90%
5- Белая бумага: ~80%
6- Серая поверхность: ~50%
7- Черный асфальт: ~5%

🔬 Практическое применение: Оптические датчики измеряют количество отраженного света для определения свойств поверхности.

⚡ Фотоэлектрический эффект

🏆 Открытие Эйнштейна (Нобелевская премия 1921): При попадании света на металл из него вылетают электроны.

🔬 Механизм фотоэффекта:

  1. Фотон света попадает на электрон в материале
  2. Электрон получает энергию и покидает атом
  3. Возникает электрический ток - поток электронов
  4. Сила тока зависит от интенсивности света

⚡ Математическая модель:

1E_фотона = h × f
2
3где:
4E_фотона - энергия фотона
5h - постоянная Планка
6f - частота света

🎯 Применение в датчиках: Изменение освещенности → Изменение тока → Изменение напряжения → Цифровой сигнал

📡 Типы фотоэлементов

1️⃣ Фоторезистор (LDR - Light Dependent Resistor):

Принцип работы:

  • Сопротивление зависит от освещенности
  • Больше света → меньше сопротивление
  • Меньше света → больше сопротивление

Характеристики:

  • Диапазон сопротивления: 1 кОм - 10 МОм
  • Время реакции: 10-100 мс
  • Спектральная чувствительность: похожа на человеческий глаз

2️⃣ Фототранзистор:

Принцип работы:

  • Транзистор с прозрачным корпусом
  • Свет управляет током между коллектором и эмиттером
  • Встроенное усиление сигнала

Характеристики:

  • Высокая чувствительность
  • Быстрая реакция: 1-10 мкс
  • Линейная зависимость тока от освещенности

3️⃣ Фотодиод:

Принцип работы:

  • Диод, работающий в режиме фотогенератора
  • Создает ток при освещении
  • Самый быстрый отклик

Характеристики:

  • Время реакции: < 1 мкс
  • Высокая точность
  • Широкий спектральный диапазон

🧪 Демонстрационный эксперимент

🔬 Эксперимент: “Измерение сопротивления фоторезистора”

Оборудование:

  • Фоторезистор
  • Мультиметр
  • Источники света разной яркости
  • Цветные фильтры

Методика:

11. Подключить мультиметр к фоторезистору
22. Измерить сопротивление в темноте
33. Постепенно увеличивать освещенность
44. Записать изменения сопротивления
55. Проверить с разными цветами света

Ожидаемые результаты:

  • В темноте: 1-10 МОм
  • При ярком свете: 1-10 кОм
  • Красный свет: меньшая чувствительность
  • Синий свет: большая чувствительность

🎯 Вывод: Фоторезистор надежно преобразует световые изменения в электрические сигналы, пригодные для измерения контроллером.

🧮 Математические основы преобразования сигналов

От аналога к цифре

📊 Аналого-цифровое преобразование (АЦП)

🔄 Процесс преобразования:

Свет → Фотоэлемент → Аналоговое напряжение → АЦП → Цифровое значение

🧮 Формула преобразования:

1Цифровое_значение = (Напряжение_входа / Опорное_напряжение) × (2^Разрядность - 1)
2
3Для 10-битного АЦП с опорным напряжением 5В:
4Цифровое_значение = (U_вх / 5В) × 1023

📝 Примеры расчетов:

  • При U_вх = 0В: Значение = 0
  • При U_вх = 2.5В: Значение = 512
  • При U_вх = 5В: Значение = 1023

📏 Разрешающая способность:

1Разрешение = Опорное_напряжение / (2^Разрядность)
2
3Для 10-битного АЦП:
4Разрешение = 5В / 1024 ≈ 4.9 мВ на единицу

📈 Калибровка датчиков освещенности

🎯 Зачем нужна калибровка:

  • Каждый датчик имеет индивидуальные характеристики
  • Условия освещения различаются
  • Нужно связать цифровые значения с физическими величинами

📊 Метод двухточечной калибровки:

Шаг 1: Измерение крайних точек

1Темнота (0 люкс): показание АЦП = значение_мин
2Яркий свет (1000 люкс): показание АЦП = значение_макс

Шаг 2: Расчет коэффициентов

1k = (люкс_макс - люкс_мин) / (значение_макс - значение_мин)
2b = люкс_мин - k × значение_мин

Шаг 3: Формула перевода

1Освещенность_люкс = k × Показание_АЦП + b

📝 Практический пример:

 1Измерения:
 2- В темноте: АЦП = 50, освещенность = 0 люкс
 3- На ярком свету: АЦП = 950, освещенность = 1000 люкс
 4
 5Расчет коэффициентов:
 6k = (1000 - 0) / (950 - 50) = 1000 / 900 ≈ 1.11
 7b = 0 - 1.11 × 50 = -55.5
 8
 9Формула калибровки:
10Освещенность = 1.11 × АЦП - 55.5

📊 Работа с шумом и фильтрацией

🌊 Проблема шума в сигнале:

  • Электрические помехи
  • Флуктуации освещения
  • Вибрации датчика
  • Температурные изменения

🔧 Методы фильтрации:

1. Простое усреднение:

 1АЛГОРИТМ Усреднение_показаний(количество_измерений):
 2  сумма = 0
 3  ДЛЯ i = 1 ДО количество_измерений:
 4    показание = Прочитать_АЦП()
 5    сумма = сумма + показание
 6    Ждать(10 мс)
 7  КОНЕЦ ДЛЯ
 8  среднее = сумма / количество_измерений
 9  ВОЗВРАТ среднее
10КОНЕЦ АЛГОРИТМА

2. Скользящее среднее:

 1МАССИВ буфер[размер_буфера]
 2индекс = 0
 3
 4ФУНКЦИЯ Скользящее_среднее(новое_значение):
 5  буфер[индекс] = новое_значение
 6  индекс = (индекс + 1) % размер_буфера
 7  
 8  сумма = 0
 9  ДЛЯ i = 0 ДО размер_буфера - 1:
10    сумма = сумма + буфер[i]
11  КОНЕЦ ДЛЯ
12  
13  ВОЗВРАТ сумма / размер_буфера
14КОНЕЦ ФУНКЦИИ

3. Медианная фильтрация:

 1ФУНКЦИЯ Медианный_фильтр(размер_окна):
 2  МАССИВ окно[размер_окна]
 3  
 4  ДЛЯ i = 0 ДО размер_окна - 1:
 5    окно[i] = Прочитать_АЦП()
 6    Ждать(5 мс)
 7  КОНЕЦ ДЛЯ
 8  
 9  Отсортировать(окно)
10  ВОЗВРАТ окно[размер_окна / 2]  // Средний элемент
11КОНЕЦ ФУНКЦИИ

🎯 Пороговые значения и гистерезис

📊 Проблема дрожания порога: Когда сигнал находится рядом с пороговым значением, результат может быстро переключаться между “светло” и “темно”.

✅ Решение: гистерезис

 1ПЕРЕМЕННЫЕ:
 2  порог_включения = 600
 3  порог_выключения = 400
 4  текущее_состояние = ТЕМНО
 5
 6ФУНКЦИЯ Определить_освещенность():
 7  показание = Прочитать_датчик_с_фильтром()
 8  
 9  ЕСЛИ текущее_состояние = ТЕМНО ТО
10    ЕСЛИ показание > порог_включения ТО
11      текущее_состояние = СВЕТЛО
12    КОНЕЦ ЕСЛИ
13  ИНАЧЕ  // текущее_состояние = СВЕТЛО
14    ЕСЛИ показание < порог_выключения ТО
15      текущее_состояние = ТЕМНО
16    КОНЕЦ ЕСЛИ
17  КОНЕЦ ЕСЛИ
18  
19  ВОЗВРАТ текущее_состояние
20КОНЕЦ ФУНКЦИИ

🎯 Преимущества гистерезиса:

  • Устраняет дрожание
  • Повышает стабильность работы
  • Уменьшает количество ложных срабатываний

🌟 Практическая работа: Датчики света

Измеряем освещенность

🔌 Подключение датчика света

📊 Схема подключения фоторезистора:

1Arduino → Фоторезистор + делитель напряжения
2
3+5V → Резистор 10кОм → Аналоговый вход A0 → Фоторезистор → GND
4
5Делитель напряжения:
6U_out = U_in × (R_фото / (R_фото + R_постоянный))

🔧 Проверка подключения:

 1АЛГОРИТМ Тест_подключения_датчика():
 2  НАЧАЛО
 3    Настроить аналоговый вход A0
 4    
 5    ПОСТОЯННО:
 6      значение = Прочитать_аналоговый_вход(A0)
 7      напряжение = значение × 5.0 / 1023
 8      
 9      Вывести("АЦП:", значение, " Напряжение:", напряжение, "В")
10      Ждать(500 мс)
11    КОНЕЦ ПОСТОЯННО
12  КОНЕЦ
13КОНЕЦ АЛГОРИТМА

🧪 Эксперимент: Измерение освещенности в классе

📋 Методика эксперимента:

Задача: Создать карту освещенности класса

Оборудование:

  • Робот с датчиком света
  • Рабочий лист для записи данных
  • Секундомер

Процедура:

1ПЛАН ЭКСПЕРИМЕНТА:
21. Разделить класс на сетку 5×5 точек
32. В каждой точке измерить освещенность
43. Записать результаты в таблицу
54. Построить карту освещенности
65. Найти самые светлые и темные места

📊 Таблица результатов:

Точка X, м Y, м Показание АЦП Освещенность, люкс Особенности
1 0.5 0.5 ___ ___ У окна
2 1.0 0.5 ___ ___ Центр
3 1.5 0.5 ___ ___ У доски

📈 Анализ результатов

🎯 Вопросы для анализа:

  • Где в классе самое яркое освещение?
  • Как изменяется освещенность от окна к противоположной стене?
  • Влияет ли время дня на показания?
  • Как искусственное освещение влияет на датчик?

📊 Построение графиков:

1График 1: Освещенность vs Расстояние от окна
2График 2: Изменение освещенности по времени
3График 3: Карта изолиний освещенности класса

🔍 Интересные наблюдения:

  • Освещенность у окна может быть в 10-100 раз выше, чем в углу
  • Искусственное освещение дает более равномерное распределение
  • Отраженный свет от белых стен увеличивает общую освещенность

🤖 Программирование реакции на свет

📝 Базовый алгоритм “Следование за светом”:

 1АЛГОРИТМ Робот_следует_за_светом():
 2  КОНСТАНТЫ:
 3    ПОРОГ_СВЕТА = 500
 4    СКОРОСТЬ_ПОИСКА = 100
 5    СКОРОСТЬ_ДВИЖЕНИЯ = 200
 6  
 7  НАЧАЛО
 8    ПОСТОЯННО:
 9      освещенность = Прочитать_датчик_света()
10      
11      ЕСЛИ освещенность > ПОРОГ_СВЕТА ТО
12        // Достаточно света - двигаемся вперед
13        Установить_скорость_моторов(СКОРОСТЬ_ДВИЖЕНИЯ, СКОРОСТЬ_ДВИЖЕНИЯ)
14      ИНАЧЕ
15        // Мало света - ищем источник
16        Поиск_источника_света()
17      КОНЕЦ ЕСЛИ
18      
19      Ждать(100 мс)
20    КОНЕЦ ПОСТОЯННО
21  КОНЕЦ
22КОНЕЦ АЛГОРИТМА
23
24ФУНКЦИЯ Поиск_источника_света():
25  // Поворачиваемся на месте в поисках света
26  Установить_скорость_моторов(СКОРОСТЬ_ПОИСКА, -СКОРОСТЬ_ПОИСКА)
27  
28  максимум_света = 0
29  лучшее_направление = 0
30  
31  ДЛЯ угол = 0 ДО 360 ШАГ 30:
32    текущий_свет = Прочитать_датчик_света()
33    ЕСЛИ текущий_свет > максимум_света ТО
34      максимум_света = текущий_свет
35      лучшее_направление = угол
36    КОНЕЦ ЕСЛИ
37    Ждать(200 мс)
38  КОНЕЦ ДЛЯ
39  
40  // Поворачиваемся к источнику света
41  Повернуть_на_угол(лучшее_направление)
42КОНЕЦ ФУНКЦИИ

🎯 Усложненные алгоритмы

🧠 Алгоритм с памятью:

 1ПЕРЕМЕННЫЕ:
 2  история_освещенности[10]
 3  индекс_истории = 0
 4
 5ФУНКЦИЯ Умный_поиск_света():
 6  // Запоминаем текущую освещенность
 7  текущий_свет = Прочитать_датчик_света()
 8  история_освещенности[индекс_истории] = текущий_свет
 9  индекс_истории = (индекс_истории + 1) % 10
10  
11  // Анализируем тенденцию
12  тенденция = Анализ_тенденции(история_освещенности)
13  
14  ЕСЛИ тенденция = УВЕЛИЧЕНИЕ ТО
15    // Свет становится ярче - продолжаем в том же направлении
16    Двигаться_вперед()
17  ИНАЧЕ ЕСЛИ тенденция = УМЕНЬШЕНИЕ ТО
18    // Свет тускнеет - поворачиваем и ищем новое направление
19    Повернуть_на_случайный_угол()
20  ИНАЧЕ
21    // Стабильный уровень - медленно исследуем область
22    Медленное_движение_по_спирали()
23  КОНЕЦ ЕСЛИ
24КОНЕЦ ФУНКЦИИ
25
26ФУНКЦИЯ Анализ_тенденции(массив):
27  первая_половина = Среднее(массив[0..4])
28  вторая_половина = Среднее(массив[5..9])
29  
30  ЕСЛИ вторая_половина > первая_половина + 20 ТО
31    ВОЗВРАТ УВЕЛИЧЕНИЕ
32  ИНАЧЕ ЕСЛИ вторая_половина < первая_половина - 20 ТО
33    ВОЗВРАТ УМЕНЬШЕНИЕ
34  ИНАЧЕ
35    ВОЗВРАТ СТАБИЛЬНО
36  КОНЕЦ ЕСЛИ
37КОНЕЦ ФУНКЦИИ

🎨 Датчики цвета и RGB-модель

Учим роботов различать цвета

🌈 Основы цветовосприятия

👁️ Как человек видит цвета:

  • В сетчатке глаза есть 3 типа колбочек
  • Каждый тип чувствителен к определенному диапазону:
    • S-колбочки - короткие волны (синий)
    • M-колбочки - средние волны (зеленый)
    • L-колбочки - длинные волны (красный)

🤖 RGB-модель цветов:

  • R (Red) - красный компонент (0-255)
  • G (Green) - зеленый компонент (0-255)
  • B (Blue) - синий компонент (0-255)

🎨 Примеры RGB-кодов:

1Красный:    RGB(255, 0, 0)
2Зеленый:    RGB(0, 255, 0)
3Синий:      RGB(0, 0, 255)
4Белый:      RGB(255, 255, 255)
5Черный:     RGB(0, 0, 0)
6Желтый:     RGB(255, 255, 0)
7Фиолетовый: RGB(255, 0, 255)
8Голубой:    RGB(0, 255, 255)

🔬 Устройство датчика цвета

📡 Принцип работы RGB-датчика:

Конструкция:

  • 1 белый светодиод (источник света)
  • 1 фотодиод (приемник отраженного света)
  • 3 цветных фильтра (красный, зеленый, синий)
  • Контроллер для управления

🔄 Алгоритм измерения:

11. Включить белый светодиод
22. Осветить объект
33. Измерить отраженный свет через красный фильтр → R
44. Измерить отраженный свет через зеленый фильтр → G
55. Измерить отраженный свет через синий фильтр → B
66. Выключить светодиод
77. Нормализовать значения R, G, B

🧮 Математическая обработка:

 1// Нормализация к диапазону 0-255
 2R_норм = (R_измеренное / R_максимальное) × 255
 3G_норм = (G_измеренное / G_максимальное) × 255  
 4B_норм = (B_измеренное / B_максимальное) × 255
 5
 6// Определение доминирующего цвета
 7максимум = МАХ(R_норм, G_норм, B_норм)
 8
 9ЕСЛИ максимум = R_норм ТО цвет = "Красный"
10ИНАЧЕ ЕСЛИ максимум = G_норм ТО цвет = "Зеленый"
11ИНАЧЕ ЕСЛИ максимум = B_норм ТО цвет = "Синий"
12КОНЕЦ ЕСЛИ

🧪 Практическая работа с датчиком цвета

📋 Эксперимент: “Создание палитры цветов”

Задача: Создать базу данных цветов для робота

Методика:

 1АЛГОРИТМ Создание_палитры():
 2  цвета = ["красный", "зеленый", "синий", "желтый", "белый", "черный"]
 3  
 4  ДЛЯ КАЖДОГО цвета ИЗ цвета:
 5    Вывести("Поднесите", цвет, "объект к датчику")
 6    Ждать_нажатия_кнопки()
 7    
 8    // Делаем несколько измерений для точности
 9    сумма_R = 0, сумма_G = 0, сумма_B = 0
10    
11    ДЛЯ i = 1 ДО 10:
12      (R, G, B) = Прочитать_RGB_датчик()
13      сумма_R = сумма_R + R
14      сумма_G = сумма_G + G
15      сумма_B = сумма_B + B
16      Ждать(100 мс)
17    КОНЕЦ ДЛЯ
18    
19    // Вычисляем средние значения
20    эталон[цвет].R = сумма_R / 10
21    эталон[цвет].G = сумма_G / 10
22    эталон[цвет].B = сумма_B / 10
23    
24    Вывести(цвет, ": RGB(", эталон[цвет].R, ",", эталон[цвет].G, ",", эталон[цвет].B, ")")
25  КОНЕЦ ДЛЯ
26КОНЕЦ АЛГОРИТМА

📊 Таблица эталонных цветов:

Цвет R G B Особенности
Красный ___ ___ ___ Высокий R, низкие G и B
Зеленый ___ ___ ___ Высокий G, низкие R и B
Синий ___ ___ ___ Высокий B, низкие R и G
Желтый ___ ___ ___ Высокие R и G, низкий B
Белый ___ ___ ___ Все компоненты высокие
Черный ___ ___ ___ Все компоненты низкие

🎯 Алгоритм распознавания цветов

🧠 Метод ближайшего соседа:

 1ФУНКЦИЯ Распознать_цвет(измеренный_R, измеренный_G, измеренный_B):
 2  минимальное_расстояние = БОЛЬШОЕ_ЧИСЛО
 3  найденный_цвет = "неизвестный"
 4  
 5  ДЛЯ КАЖДОГО эталона ИЗ база_эталонов:
 6    // Вычисляем евклидово расстояние в RGB-пространстве
 7    расстояние = КОРЕНЬ(
 8      (измеренный_R - эталон.R)² + 
 9      (измеренный_G - эталон.G)² + 
10      (измеренный_B - эталон.B)²
11    )
12    
13    ЕСЛИ расстояние < минимальное_расстояние ТО
14      минимальное_расстояние = расстояние
15      найденный_цвет = эталон.название
16    КОНЕЦ ЕСЛИ
17  КОНЕЦ ДЛЯ
18  
19  // Проверяем, достаточно ли близко
20  ЕСЛИ минимальное_расстояние < ПОРОГ_СХОЖЕСТИ ТО
21    ВОЗВРАТ найденный_цвет
22  ИНАЧЕ
23    ВОЗВРАТ "неизвестный цвет"
24  КОНЕЦ ЕСЛИ
25КОНЕЦ ФУНКЦИИ

🎯 Улучшенный алгоритм с нормализацией:

 1ФУНКЦИЯ Нормализованное_распознавание(R, G, B):
 2  // Нормализуем к общей яркости
 3  яркость = R + G + B
 4  
 5  ЕСЛИ яркость > 0 ТО
 6    R_норм = R / яркость
 7    G_норм = G / яркость  
 8    B_норм = B / яркость
 9  ИНАЧЕ
10    ВОЗВРАТ "черный"
11  КОНЕЦ ЕСЛИ
12  
13  // Теперь сравниваем нормализованные значения
14  ВОЗВРАТ Распознать_цвет(R_норм, G_норм, B_норм)
15КОНЕЦ ФУНКЦИИ

🤖 Программирование реакций на цвета

🎮 Алгоритм “Робот-сортировщик”:

 1АЛГОРИТМ Сортировка_по_цветам():
 2  ПОСТОЯННО:
 3    цвет = Определить_цвет_объекта()
 4    
 5    ВЫБОР цвет:
 6      СЛУЧАЙ "красный":
 7        Вывести("Красный объект - поворачиваю налево")
 8        Повернуть_налево()
 9        Проехать_вперед(30)
10        
11      СЛУЧАЙ "зеленый":
12        Вывести("Зеленый объект - двигаюсь прямо")
13        Проехать_вперед(50)
14        
15      СЛУЧАЙ "синий":
16        Вывести("Синий объект - поворачиваю направо")
17        Повернуть_направо()
18        Проехать_вперед(30)
19        
20      СЛУЧАЙ "черный":
21        Вывести("Черная линия - остановка")
22        Остановиться()
23        Ждать(2000 мс)
24        
25      ПО_УМОЛЧАНИЮ:
26        Вывести("Неизвестный цвет - случайное движение")
27        Случайное_движение()
28    КОНЕЦ_ВЫБОРА
29    
30    Ждать(500 мс)
31  КОНЕЦ ПОСТОЯННО
32КОНЕЦ АЛГОРИТМА

🤖 Мини-проект: “Робот, следующий по линии”

Применяем оптические датчики на практике

🎯 Постановка задачи

📋 Техническое задание: Создать робота, который автономно движется вдоль черной линии на белом фоне, используя оптические датчики.

🎯 Требования:

  • ✅ Устойчивое следование по прямой линии
  • ✅ Прохождение плавных поворотов
  • ✅ Возвращение на линию при отклонении
  • ✅ Остановка при достижении цветной метки

🏗️ Конфигурация датчиков:

Вариант А: Один датчик (простой):

  • 1 датчик света в центре робота
  • Алгоритм поиска линии при потере

Вариант Б: Два датчика (стандартный):

  • 2 датчика света по краям линии
  • Дифференциальное управление

Вариант В: Три датчика (продвинутый):

  • 3 датчика: левый, центральный, правый
  • Точное позиционирование на линии

📊 Анализ задачи и алгоритм

🔍 Принцип работы:

  • Черная линия поглощает свет → низкие показания датчика
  • Белая поверхность отражает свет → высокие показания датчика
  • Граница линии дает промежуточные значения

📈 Характерные показания:

1Белая поверхность: 800-1000 (АЦП)
2Граница линии:     400-600   (АЦП)
3Черная линия:      0-200     (АЦП)

🧠 Базовый алгоритм (два датчика):

 1АЛГОРИТМ Следование_по_линии():
 2  КОНСТАНТЫ:
 3    ПОРОГ_ЛИНИИ = 400
 4    СКОРОСТЬ_БАЗОВАЯ = 150
 5    СКОРОСТЬ_ПОВОРОТА = 100
 6  
 7  ПОСТОЯННО:
 8    левый_датчик = Прочитать_датчик(ЛЕВЫЙ)
 9    правый_датчик = Прочитать_датчик(ПРАВЫЙ)
10    
11    левый_на_линии = (левый_датчик < ПОРОГ_ЛИНИИ)
12    правый_на_линии = (правый_датчик < ПОРОГ_ЛИНИИ)
13    
14    ЕСЛИ левый_на_линии И правый_на_линии ТО
15      // Оба датчика на линии - едем прямо
16      Установить_скорости(СКОРОСТЬ_БАЗОВАЯ, СКОРОСТЬ_БАЗОВАЯ)
17      
18    ИНАЧЕ ЕСЛИ левый_на_линии И НЕ правый_на_линии ТО
19      // Линия ушла влево - поворачиваем налево
20      Установить_скорости(СКОРОСТЬ_ПОВОРОТА, СКОРОСТЬ_БАЗОВАЯ)
21      
22    ИНАЧЕ ЕСЛИ НЕ левый_на_линии И правый_на_линии ТО
23      // Линия ушла вправо - поворачиваем направо
24      Установить_скорости(СКОРОСТЬ_БАЗОВАЯ, СКОРОСТЬ_ПОВОРОТА)
25      
26    ИНАЧЕ
27      // Линия потеряна - поиск
28      Поиск_линии()
29    КОНЕЦ ЕСЛИ
30    
31    Ждать(50 мс)
32  КОНЕЦ ПОСТОЯННО
33КОНЕЦ АЛГОРИТМА

⚙️ Улучшенный ПИД-алгоритм

🎯 Проблемы простого алгоритма:

  • Рывки при переключениях
  • Медленная реакция на изменения
  • Неточное позиционирование

✅ Решение: ПИД-регулятор

 1ПЕРЕМЕННЫЕ:
 2  Kp = 0.8  // Пропорциональный коэффициент
 3  Ki = 0.1  // Интегральный коэффициент  
 4  Kd = 0.2  // Дифференциальный коэффициент
 5  
 6  предыдущая_ошибка = 0
 7  интеграл_ошибки = 0
 8
 9ФУНКЦИЯ ПИД_управление():
10  левый = Прочитать_датчик(ЛЕВЫЙ)
11  правый = Прочитать_датчик(ПРАВЫЙ)
12  
13  // Вычисляем ошибку позиции
14  ошибка = левый - правый
15  
16  // Пропорциональная составляющая
17  P = ошибка
18  
19  // Интегральная составляющая (накопленная ошибка)
20  интеграл_ошибки = интеграл_ошибки + ошибка
21  I = интеграл_ошибки
22  
23  // Дифференциальная составляющая (скорость изменения ошибки)
24  D = ошибка - предыдущая_ошибка
25  предыдущая_ошибка = ошибка
26  
27  // Вычисляем управляющее воздействие
28  управление = Kp × P + Ki × I + Kd × D
29  
30  // Применяем к моторам
31  скорость_левого = БАЗОВАЯ_СКОРОСТЬ - управление
32  скорость_правого = БАЗОВАЯ_СКОРОСТЬ + управление
33  
34  // Ограничиваем скорости
35  скорость_левого = Ограничить(скорость_левого, 0, 255)
36  скорость_правого = Ограничить(скорость_правого, 0, 255)
37  
38  Установить_скорости(скорость_левого, скорость_правого)
39КОНЕЦ ФУНКЦИИ

🏗️ Сборка и настройка

🔧 Монтаж датчиков:

Позиционирование:

  • Высота над поверхностью: 5-15 мм
  • Расстояние между датчиками: ширина линии × 1.5
  • Угол наклона: 0° (вертикально вниз)

Калибровка:

 1АЛГОРИТМ Калибровка_датчиков():
 2  Вывести("Калибровка датчиков следования по линии")
 3  
 4  // Калибровка белой поверхности
 5  Вывести("Поставьте робота на белую поверхность и нажмите кнопку")
 6  Ждать_кнопки()
 7  
 8  сумма_левый_белый = 0, сумма_правый_белый = 0
 9  ДЛЯ i = 1 ДО 50:
10    сумма_левый_белый += Прочитать_датчик(ЛЕВЫЙ)
11    сумма_правый_белый += Прочитать_датчик(ПРАВЫЙ)
12    Ждать(20 мс)
13  КОНЕЦ ДЛЯ
14  
15  левый_белый = сумма_левый_белый / 50
16  правый_белый = сумма_правый_белый / 50
17  
18  // Калибровка черной линии
19  Вывести("Поставьте робота на черную линию и нажмите кнопку")
20  Ждать_кнопки()
21  
22  сумма_левый_черный = 0, сумма_правый_черный = 0
23  ДЛЯ i = 1 ДО 50:
24    сумма_левый_черный += Прочитать_датчик(ЛЕВЫЙ)
25    сумма_правый_черный += Прочитать_датчик(ПРАВЫЙ)
26    Ждать(20 мс)
27  КОНЕЦ ДЛЯ
28  
29  левый_черный = сумма_левый_черный / 50
30  правый_черный = сумма_правый_черный / 50
31  
32  // Вычисляем пороги
33  ПОРОГ_ЛЕВЫЙ = (левый_белый + левый_черный) / 2
34  ПОРОГ_ПРАВЫЙ = (правый_белый + правый_черный) / 2
35  
36  Вывести("Калибровка завершена:")
37  Вывести("Левый порог:", ПОРОГ_ЛЕВЫЙ)
38  Вывести("Правый порог:", ПОРОГ_ПРАВЫЙ)
39КОНЕЦ АЛГОРИТМА

🏁 Тестирование и оптимизация

📋 Тестовые треки:

Трек 1: Простая прямая

  • Длина: 2 метра
  • Ширина линии: 2 см
  • Без поворотов

Трек 2: Плавные повороты

  • S-образная траектория
  • Радиус поворотов: 30-50 см
  • Постепенное изменение направления

Трек 3: Острые углы

  • Повороты 90°
  • Т-образные развилки
  • Требует алгоритма поиска линии

🎯 Критерии оценки:

  • Скорость прохождения - время на тестовом треке
  • Точность следования - количество съездов с линии
  • Стабильность - повторяемость результатов
  • Адаптивность - работа на разных треках

📊 Таблица результатов:

Команда Трек 1, с Трек 2, с Трек 3, с Съезды Итого баллов
1 ___ ___ ___ ___ ___
2 ___ ___ ___ ___ ___
3 ___ ___ ___ ___ ___

🏠 Домашнее задание

📋 Обязательные задания

1. Исследование оптических датчиков в быту Подготовьте мини-доклад (5-7 минут) о применении оптических датчиков в повседневной жизни:

📝 План доклада:

  • Где встречаются оптические датчики в вашем доме?
  • Как работают автоматические двери в магазинах?
  • Зачем нужны датчики света в смартфонах?
  • Как работают сканеры штрих-кодов?
  • Применение в автомобилях (датчики дождя, света)

🎯 Требования:

  • Минимум 3 примера с объяснением принципа работы
  • Фотографии или схемы устройств
  • Объяснение преимуществ оптических датчиков

2. Проект робота с оптическими датчиками Продумайте идею робота, использующего датчики света или цвета:

🤖 Описание проекта:

  • Назначение робота (что он делает?)
  • Какие оптические датчики использует?
  • Алгоритм работы (блок-схема)
  • Где может применяться?

📝 Примеры идей:

  • Робот-садовник (следит за освещением растений)
  • Робот-художник (рисует по цветным меткам)
  • Робот-охранник (реагирует на изменение освещения)
  • Робот-сортировщик мусора (по цветам контейнеров)

🎯 Дополнительные задания (по выбору)

🔬 Для исследователей: Проведите эксперимент по влиянию различных факторов на работу оптических датчиков:

📊 Исследуемые факторы:

  • Влияние цвета освещения (лампа накаливания vs светодиод vs солнце)
  • Влияние расстояния до объекта (1-10 см)
  • Влияние угла падения света (0°-60°)
  • Влияние материала поверхности (бумага, пластик, металл)

Постройте графики зависимостей и сделайте выводы.

💻 Для программистов: Изучите продвинутые алгоритмы обработки оптических сигналов:

🧠 Темы для изучения:

  • Адаптивная калибровка (самонастройка порогов)
  • Машинное обучение для распознавания образов
  • Фильтры Калмана для сглаживания сигналов
  • Нечеткая логика в управлении движением

Реализуйте один из алгоритмов в виде подробного псевдокода.

🎨 Для творческих: Спроектируйте инновационное применение оптических датчиков:

🚀 Идеи для проектов:

  • Умная теплица с автоматическим освещением
  • Система помощи слабовидящим людям
  • Интерактивная световая инсталляция
  • Робот для творческих мастерских

Создайте презентацию проекта с техническими деталями.

🌐 Полезные ресурсы

📚 Для изучения:

  • Основы оптики и фотоники
  • Цифровая обработка изображений
  • Компьютерное зрение
  • Автоматическое управление

💻 Симуляторы и инструменты:

  • Симуляторы оптических схем
  • Калькуляторы RGB-цветов
  • Программы для анализа спектров
  • Эмуляторы датчиков в робототехнике

🎥 Видеоматериалы:

  • “Как работают цифровые камеры”
  • “Оптические датчики в автомобилях”
  • “Технологии компьютерного зрения”
  • “Роботы с искусственным зрением”

🎉 Подведение итогов урока

🏆 Наши световые достижения

⚗️ Физические знания:

  • ✅ Поняли природу света и оптических явлений
  • ✅ Изучили принципы фотоэлектрического эффекта
  • ✅ Освоили типы фотоэлементов и их характеристики
  • ✅ Разобрались в механизмах отражения и поглощения света

🧮 Математические навыки:

  • ✅ Освоили аналого-цифровое преобразование
  • ✅ Научились калибровать оптические датчики
  • ✅ Изучили методы фильтрации шумов
  • ✅ Поняли RGB-модель и обработку цветов

🤖 Практические умения:

  • ✅ Подключили и настроили датчики света и цвета
  • ✅ Создали алгоритмы реакции на световые изменения
  • ✅ Построили робота, следующего по линии
  • ✅ Научились распознавать цвета программно

🌟 Главные открытия

🎯 Ключевые выводы урока:

“Оптические датчики - это глаза роботов в мире света и цвета”

“Правильная калибровка важнее дорогого датчика”

“Комбинация простых датчиков создает сложные возможности”

🔮 Будущее оптических технологий:

  • 3D-сканирование и лидары для автономных автомобилей
  • Компьютерное зрение с нейронными сетями
  • Дополненная реальность через оптические системы
  • Квантовые датчики света сверхвысокой чувствительности

👁️ Рефлексия “Глаз робота”

🎯 Оцените свое понимание различных аспектов:

⚗️ Физические принципы работы датчиков: ⭐⭐⭐⭐⭐ 🧮 Математические преобразования сигналов: ⭐⭐⭐⭐⭐ 🔧 Практические навыки подключения: ⭐⭐⭐⭐⭐ 🎨 Работа с цветом и RGB-моделью: ⭐⭐⭐⭐⭐ 🤖 Программирование алгоритмов: ⭐⭐⭐⭐⭐

💭 Поделитесь впечатлениями:

  • Что было самым удивительным в работе оптических датчиков?
  • Какой эксперимент показался наиболее интересным?
  • Где вы видите применение полученных знаний?
  • Какие идеи для проектов у вас появились?

🔮 Следующий урок: “Ультразвуковые датчики расстояния”

🎯 Готовимся к новым технологиям:

  • Принципы эхолокации
  • Измерение расстояний звуковыми волнами
  • Создание роботов-навигаторов
  • Системы избегания препятствий

👁️ ВЫ ДАЛИ РОБОТАМ ЗРЕНИЕ!
Теперь роботы могут видеть свет, различать цвета и следовать по путям!