Когда я только начал собирать своего первого робота, мне казалось, что вопрос выбора датчиков — это что-то из области высоких технологий, доступное лишь профессионалам. Однако практика быстро расставила всё по местам: именно от того, насколько точно машина «чувствует» пространство, зависит успех большинства проектов. Особенно остро эта проблема встаёт, если вы, как и я, увлекаетесь лабиринтами или задачами, где робот должен двигаться вдоль стены на небольшом удалении.
Компания MakeBlock предлагает несколько вариантов ультразвуковых дальномеров для mBot2. Оба подключаются по системе mBuild, что очень удобно: не нужно занимать лишние порты, а кабель просто встраивается в общую линию. В mBlock5 для них есть готовые программные блоки, поэтому базовое считывание расстояния не вызывает сложностей.
Сравнение двух ультразвуковых версий от MakeBlock
Первый вариант — это Ultrasonic Sensor 2 с пластиковым корпусом и декоративной подсветкой. Он выглядит современно и отлично вписывается в обновлённый дизайн mBot2. Второй — более старая, упрощённая версия без пластика и подсветки, но с тем же разъёмом mBuild. В программной среде для них используются разные расширения: для нового датчика — одно, для старого — другое, которое легче найти по слову Ultrasonic.
Слева в списке расширений — вариант для нового датчика, справа — для упрощённого. Я долго не мог понять, почему у меня не работают блоки, пока не заметил эту разницу. На практике оба датчика ведут себя очень похоже, но есть нюанс, который я бы назвал критическим.
У обеих версий существует так называемая «мёртвая зона»: на дистанции меньше четырёх-пяти сантиметров и на очень больших расстояниях они выдают одинаковое значение — 300. Это создаёт серьёзную проблему. Робот, оказавшись вплотную к препятствию, не может понять, что стена рядом, и продолжает считать её далёкой. В лабиринтах это почти гарантированно приводит к столкновениям.
Любопытно, но в моих тестах более простая старая версия показывала чуть лучшие результаты при движении вдоль стен, чем её «нарядный» собрат с подсветкой. Поэтому если у вас есть оба датчика и вы планируете использовать один для обзора вперёд, а второй — для контроля бокового зазора, на бок я бы поставил именно старую модель.
Инфракрасные дальномеры: другой принцип, другие возможности
Инфракрасные датчики работают по иному физическому принципу, используя отражённое ИК-излучение. Их главные преимущества — высокая точность на малых дистанциях, отличное быстродействие и низкое энергопотребление. Для задач, где расстояние до препятствия может сокращаться до двух сантиметров, это настоящее спасение.
Однако не всё так радужно. ИК-сенсоры плохо справляются с прозрачными поверхностями, имеют ограниченный радиус действия и стоят заметно дороже ультразвуковых. Утверждать, что один тип лучше другого, было бы неверно: каждый хорош для своих сценариев. Но для лабиринтов, где критичны именно малые дистанции, я всё чаще выбираю инфракрасные модели.
У MakeBlock есть дальномер с разъёмом mBuild, который позиционируется как ИК, хотя по сути ближе к лазерным. К сожалению, он тоже грешит ошибками на коротких расстояниях. Поэтому для точной работы я предпочитаю использовать датчики сторонних производителей, которые к тому же значительно дешевле и доступнее.
Sharp GP2Y0A51SK0F — рабочий инструмент для сложных трасс
Среди моих фаворитов — инфракрасный дальномер Sharp GP2Y0A51SK0F с диапазоном от двух до пятнадцати сантиметров. Эта модель чрезвычайно популярна в спортивной робототехнике, и я понимаю почему. «Мёртвая зона» у него минимальна, а количество ошибок измерений настолько мало, что можно смело полагаться на его показания в самых стеснённых условиях.
В своих проектах я нередко комбинирую ультразвуковой и инфракрасный датчики, направленные в одну сторону. Такая пара позволяет компенсировать слабые стороны каждого: ультразвук хорошо видит крупные плоскости на средних и дальних дистанциях, а ИК-сенсор отлично отрабатывает ближнюю зону и тонкие предметы.
Сочетание двух типов датчиков даёт не только высокую точность измерений, но и возможность различать препятствия по их характеру: сплошная стена или, скажем, ножка стула. Для сложных трасс это бесценно.
Подключение сторонних датчиков к mBot2
Главный вопрос, который у меня возник, когда я впервые взял в руки Sharp: как подключить его к mBot2, если у робота нет подходящего разъёма? Ответ нашёлся быстро — на левой стороне корпуса расположены порты S1 и S2, которые как раз предназначены для нестандартной периферии.
Для соединения потребуется кабель с трёхконтактным разъёмом JST на стороне датчика. Цветовая маркировка стандартная: красный — питание, чёрный — земля, жёлтый или белый — сигнал. С другой стороны провода обычно идут оголённые контакты, которые нужно обжать коннектором DuPont с шагом 2,54 мм. Такие разъёмы широко используются в проектах с Arduino и стоят копейки.
Для обжима я рекомендую обзавестись кримпером, например DuPont HT 208A. Это недорогой инструмент, который окупается после первого же проекта. Использовать одинарные разъёмы тоже можно, но тройной коннектор держится надёжнее и упрощает подключение.
На одном из моих роботов боковой Sharp закреплён на шасси через разъём S1. Для крепления я использовал пластиковые разборные контакты от MakeBlock, хотя при желании можно обойтись и обычными винтами — конструкция от этого не пострадает.
Единственная реальная сложность при работе со сторонними датчиками — программирование в mBlock5. Готовых блоков для них нет, поэтому приходится либо искать дополнительное расширение, либо писать программное решение, анализируя данные, поступающие на порт. Это отдельная тема, которую я раскрою позже в материалах проектной части.
Подводя итог, могу сказать: не стоит ограничиваться только фирменными датчиками MakeBlock. Рынок предлагает множество доступных и точных решений, которые при небольшой доработке отлично встраиваются в экосистему mBot2 и существенно расширяют его возможности.
