Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Как подключить ультразвуковой датчик Lego Mindstorms NXT к Raspberry Pi

Аннотация

Подключите ультразвуковой датчик Lego Mindstorms NXT напрямую к Raspberry Pi. Необходим буфер шины TCA9517 I2C и дополнительный вывод GPIO для SCL. Предоставляется короткая программа на C ++ для считывания измеренного расстояния.

Введение

Raspberry Pi (Pi), несмотря на некоторые недостатки, однозначно мой любимый SBC. Безусловно, самое большое сообщество, и каждая деталь хорошо задокументирована. С другой стороны, Lego Mindstorms, мой любимый конструктор роботов. В отличие от других комплектов для роботов, он дает неограниченные возможности для создания роботов. Сегодня автомобильный бот, завтра гусеничный бот, а завтра шестиосевой робот-манипулятор - все возможно. Версия набора NXT оснащена мощным микроконтроллером на базе ARM, которого достаточно для большинства простых приложений роботов, но недостаточно для любых продвинутых проектов, таких как компьютерное зрение. Недавно Lego опубликовала EV3, новый комплект с гораздо более мощным мозгом, который, как и Raspberry Pi, управляется Linux. Но все же этот мозг не способен обрабатывать изображения с высоким разрешением с разумной скоростью. Поэтому я все еще хочу объединить мощь Raspberry Pi с неограниченными возможностями Lego. Насколько мне известно, есть один проект, позволяющий добиться этого, под названием BrickPi. Хотя он довольно успешен, я думаю, что он имеет несколько недостатков, которые я хочу рассмотреть в этой и следующих статьях. Прежде всего, он совместим только со старыми датчиками NXT на основе I2C, а не с новыми датчиками EV3 на основе UART. Более того, он не подключает датчики напрямую к пи, но использует два микроконтроллера Atmega (совместимые с Arduino) для связи с датчиками. Для добавления новых датчиков или любых других изменений требуется новая прошивка. Кроме того, BrickPi использует драйверы двигателя L293D, которые способны выдавать ток только около 0,6 А, в то время как двигатель Lego NXT потребляет до 2 А при остановке [Характеристики двигателя NXT]. В этой статье я хочу показать вам, как напрямую подключить Lego Mindstorms Ультразвуковой датчик (датчик США) к Pi без использования какого-либо дополнительного микроконтроллера.

Проблемы

Моя первая попытка подключить датчик США к Pi была простой. Просто соедините обе сигнальные линии I2C с помощью простого переключателя уровня с двумя полевыми транзисторами [AppNote]. Переключатель уровня должен быть необходим, потому что датчик US использует логические уровни 5 В, а пи только 3,3 В. Затем подключите 5 В и 9 В к датчику и запустите простую тестовую программу и не получил - ничего. Дважды проверив провода и программное обеспечение, я подключил логический анализатор и понял, что датчик US не может ответить ни на один запрос, даже не подтвердит свой собственный адрес. Первая и основная проблема - это аппаратное соединение между Pi и датчиком. Аппаратные и программные протоколы хорошо описаны Lego, включая схемы [Lego HDK], и хотя он использует I2C, мы не можем напрямую подключить датчик к пианино. Как вы можете видеть на схеме 1, датчик имеет очень слабые подтягивающие резисторы (82 k) и очень сильные последовательные резисторы (4,7 кОм) на его линиях I2C. Вторые резисторы - наша основная проблема. Как вы, возможно, знаете, Pi использует мощные подтягивающие резисторы 1,8 кОм на своих линиях I2C. Из-за последовательного резистора датчик не может отключить ни одну из линий I2C и, следовательно, не может отвечать на какие-либо запросы ведущего устройства I2C. На Рисунке 1 показано грубое моделирование этой ситуации. Синяя линия показывает данные, которые датчик пытается отправить, зеленая линия показывает данные, полученные Pi. Как вы можете видеть, датчик не может снизить уровень смоделированной линии данных. Вы также можете отметить, что в этом состоянии нет необходимости в какой-либо схеме сдвига уровня, потому что сильный подтягивающий резистор до 3,3 В доминирует в линии также и на высоком уровне. Единственное решение этой проблемы, которое я нашел до сих пор, - это использование TCA9517, 2-канального двунаправленного буфера для I2C. Кроме того, этот чип заботится о сдвиге уровня. Вторая проблема связана с ошибкой прошивки в американском датчике. Это описано здесь, например, на форумах mbed. Также есть статья, описывающая, как анализировать связь между Lego Mindstorms NXT и датчиком США с помощью логического анализатора (немецкий). Подводя итог, необходим дополнительный тактовый цикл (переключение на линии SCL) между записью регистра в датчик и фактическим чтением данных с датчика. Это, конечно, несовместимо с какой-либо стандартной аппаратной или программной реализацией I2C. Вы можете написать специальную программную реализацию I2C, используя любую пару GPIO, но проще просто подключить другой GPIO от Pi к линии SCL и переключать его между записью регистра в датчик и чтением содержимого регистров.

Аппаратное обеспечение

Необходимое оборудование для простого прототипа: Для этого прототипа я использовал макетную плату с небольшой специальной платой для датчиков Lego Mindstorms. Эта плата имитирует защиту порта управления и датчика 9 В из Lego Mindstorms NXT [Lego HDK]. Для простого прототипа вам не понадобится схема переключения 9 В (два полевых транзистора) или дополнительные последовательные резисторы и диоды на линиях I2C. Вы можете просто подключить 9 В к контакту 1 кабеля, GND к контактам 2 и 3, 5 В к контакту 4 (без диода D1), SCL_5V к контакту 5 и SDA_5V к контакту 6. Подробнее:Как подключить Lego Mindstorms NXT Ультразвуковой датчик для Raspberry Pi

Производственный процесс

  1. Базовый IoT - RaspberryPI HDC2010 как
  2. Регистратор температуры Raspberry Pi
  3. Мониторинг температуры на Raspberry Pi
  4. Датчик температуры Python и Raspberry Pi
  5. Метеостанция Raspberry Pi
  6. Интеграция данных датчика с микропроцессором Raspberry Pi
  7. Ультразвуковой датчик (HC-SR04) + Raspberry Pi
  8. Датчик движения с использованием Raspberry Pi
  9. Датчик влажности почвы Raspberry Pi
  10. Датчик температуры и освещенности Raspberry Pi