Робототехника для школьников. Часть 4
Поговорим о датчиках EV3. В этом посте я расскажу о тех, которые входят в комплект Education. О дополнительных датчиках и всякой нестандартной периферии будет отдельный пост.
Итак, знакомтесь:

Слева направо: датчик касания, гироскопический датчик, датчик света и ультразвуковой датчик.
Для тех, кому интересны технические нюансы. Датчики имеют на борту аналого-цифровой преобразователь и общаются они с программируемым блоком по протоколам UART и I2C. Что, собственно, и позволяет подключать практически любой нестандартный сенсор, используя, например, Arduino в качестве конвертора сигнала.
Итак, что они могут.
Датчик касания.
Он передаёт одно из своих состояний: «нажато», «не нажато» и «щелчок» (нажать и отпустить). Таких датчиков в комплекте, кстати, два. Чаще всего их используют как дополнительную выносную кнопку или для определения препятствий методом «тыка». Его можно использовать как концевик в механизме, или для определения края стола при движении (то есть он направлен вниз и в нормальном состоянии нажат, как только робот достигает края - он отжимается и робот должен остановиться. Ну, если это в вашей программе так прописано).
Гироскопический датчик.
Он имеет два режима работы - определение угла при повороте механизма (по часовой стрелке - положительные значения, против часовой - отрицательные, ноль - стартовое положение) и угловая скорость поворота. Это важно для построения автономных роботов, предназначенных для движения по определенным траекториям или просто движения в помещении. Точность - «плюс-минус лапоть», в пределах 5-8 градусов. Имеет очень неприятный глюк - иногда от скуки начинает к своему значению каждые 100 миллисекунд накидывать градус. Просто так. Поэтому при отладке программы его телеметрию нужно отслеживать постоянно, а еще лучше заложить в программу поправку на этот глюк.
Датчик цвета.
Он работает в трех режимах: измерение яркости освещения (какая-то своя шкала в «попугаях», где 0 - это темно, а 100 - это светло. Я, честно, этим режимом пользовался нечасто), яркость отраженного света и цвет поверхности. Яркость отраженного света по своей сути является измерением градаций серого, где 0 - это черный, а 100 - это белый. Промежуточные значения - 98 оттенков серого (да, побольше, чем в той книжке). Такой подход меня немного раздражает. Объясню позже. Используют этот режим, чтобы робот мог ориентироваться на поле, где нанесена черная разметка или двигаться по траектории в форме черной линии. Определение цвета построено очень просто - датчик умеет определять поверхность со стандартными фирменными цветами деталей Lego: белый, черный, коричневый, серый, красный, желтый, зеленый, синий. Если вы возьмете и подсунете ему цвет, немного отличающийся от фирменного с вероятностью 50/50 он либо определит цвет, либо выдаст значение NC - «не цвет». Ну и не стоит забывать, что два последних режима (яркость и цвет поверхности) датчик может определять только на расстоянии, равном толщине одной-двух балок формата Lego Technic.
Ультразвуковой датчик.
Работает в двух режимах: определение расстояния в сантиметрах или дюймах и «режим маяка». Измерение расстояние ограничено 255 см или 100 дюймов (технари уже догадались почему). Самое меньшее расстояние около двух сантиметров. Точность измерения плюс-минус полсантиметра. Режим маяка нужен для определения роботов с такими датчиками, например робот может ехать на источник сигнала ультразвукового датчика как на «зов».
Как они в целом? При соблюдении определенных условий все датчики работают на уровне «для наших целей - пойдет». Понятное дело, что точность у них не как у спецприборов. Но больше всего раздражает аппаратная подгонка результатов измерения в диапазон от 0 до 100. Понятно, что это было сделано для удобства детям, но мы же прекрасно понимаем, что при аналогово-цифровом преобразовании было бы логично иметь диапазон 0-255. Да, на ультразвуковом датчике это изящно обыграли измерением в дюймах. Но конвертация значений снижает точность измерений. Да, у нас не лабораторный прибор, но иногда на отладку взаимодействия датчика и измеряемой величины в конкретных условиях уходит прилично времени.
Подключаются датчики теми же проводами, что и для моторов. Одновременно к программируемому блоку можно подключить не более 4 - по количеству портов на блоке. Если нужно больше, то придется соединить два или больше (куда вам столько?) программируемых блока USB-кабелем и количество портов станет больше на число, кратное 4.




















