Интерфейс I2C в Lego Mindstorms NXT

Наверное, многие из Вас слышали, что ультразвуковой датчик расстояния в наборе Lego Mindstorms NXT — цифровой. И использует для передачи данных интерфейс I2C.

А знаете ли Вы, что это такое? Что это за интерфейс?

Подробно о нем можно почитать на википедии. Там рассказано про историю, принцип работы и передачи данных и т.д. Если же в двух словах — то это такой стандарт, в котором оговаривается количество и назначение проводов между «участниками обмена», а так же сигналы, которые по ним передаются.

Какой нам от всего этого толк? А очень простой — интерфейс I2C сегодня очень популярен у всевозможных микропроцессорных устройств. Он используется в Ваших телефонах, компьютерах, всевозможных гаджетах. Он позволяет подключить одновременно множество устройств и общаться с ними на очень большой скорости. И что самое для нас приятное — он полностью готов к использованию в Lego NXT, что называется «из коробки»: все порты датчиков (с 1 по 4) могут передавать и получать сообщения по этому интерфейсу.

Первое применение, которое приходит мне в голову: соединить сразу до 8 блоков NXT и заставить их работать совместно. Единственное, что меня пока останавливает — отсутствие 8 разъемов для портов NXT (чтобы сделать общий провод для  восьми блоков), а резать ради этого провода из комплектов не хочется.

Если же Вы захотите изготовить провод самостоятельно, или подключить внешнее устройство, то необходимо знать, какой «пин» (то есть контакт разъема) к чему подключать. Эту информацию можно взять из таблицы:

Обозначение Назначение Цвет
1 ANALOG Аналоговый сигнал (или +9В) белый
2 GND Общий провод черный
3 GND (земля) красный
4 POWER +4,3 В зеленый
5 DIGITAL0 I2C Clock (SCL) желтый
6 DIGITAL1 I2C Data (SDA) синий

(обозначения SCL, SDA, GND можно найти в описании I2C на википедии, POWER — то же, что и Vdd)

Второе, более интересное, применение — подключить к NXT какое-то внешнее устройство, работающее по интерфейсу I2C. Таким устройством может быть что угодно — датчик стороннего производителя, пульт, джойстик, коммутатор датчиков или реле, внешний дисплей, микроконтроллерное устройство Arduino и т.д. Вот пример: подключение джойстика-»нунчаки» от игровой приставки Wii к блоку NXT.

Следует также упомянуть, что мало просто подключить внешнее устройство проводом, необходимо еще и написать программу. Работать с I2C можно из разных языков программирования:

  • NXT-G — необходимо установить дополнительные «блоки» с этой страницы;
  • RobotC — краткие курсы можно найти здесь и  здесь (на английском языке);
  • NXC — еще один курс на английском языке;

К сожалению, большинство статей по использованию всех этих инструментов на английском языке.

Теперь Вы знаете — наш любимый конструктор можно подключить почти к любой «железяке». Надеюсь, что эта заметка вдохновит Вас на создание чего-то необычного и занимательного.

Комментарии запрещены.