Соревновония Lego роботов 2.Соревновония Lego роботов 1.

Интерфейс 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 - еще один курс на английском языке;

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

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