Интерфейс 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 — еще один курс на английском языке;
К сожалению, большинство статей по использованию всех этих инструментов на английском языке.
Теперь Вы знаете — наш любимый конструктор можно подключить почти к любой «железяке». Надеюсь, что эта заметка вдохновит Вас на создание чего-то необычного и занимательного.
Свежие комментарии