Arduino UNO - точная копия и даже лучше!

В конце одной из статей я уже упоминал о практически точной копии Arduino UNO - реализуемой через известный всем dealextreme. Конечно, мне стало интересно его заполучить - что и было сделано. Теперь помимо Duemilanove, есть у меня еще и UNO - так что теперь и взаимно прошиться будет можно, и со вторым контроллером "уны" (ATmega8u2) поэксперементировать.

Качество действительно отменное, даже в сравнении с предыдущей Ардуиной, купленной на е-бэе (фотка ниже). А именно: качество платы - боковые ребра "зашкурены" (как у топовых матерей), разводка дорожек имеет "мелкую" топологию (такую не сделать по ЛУТ, - у "черной" ардуины крупнее), большее количество деталей имеет SMD формат (кварцы, электролиты). Монтаж и запайка выполнена единообразно (без перекосов и излишков припоя), все контактные площадки залужены, надписи нанесены стойкой краской, излишков флюса практически нет. Распаяны все предусмотренные штырьковые разъемы.

С программной точки зрения девайс имеет идентификатор VID_2341&PID_0001 (749373037363517110A1). Драйвер (Arduino UNO) содержит лишь указание использовать устройству с таким идентификатором стандартный драйвер usbser.sys (COM порт на USB).

PS. Цена такой Ардуины (с учетом доставки) - 23,5 бакса ;-)) Итальянцы со своим качеством и ценами нервно курят в сторонке ...

Продолжим ... Как известно, основное отличие "уны" от предыдущих моделей плат Ардуино заключается в наличие второго контроллера, пришедшего на смену аппаратному конвертору USB <-> COM. Преимуществом данного решения является возможность замены прошивки в интерфейсном контроллере с целью эмуляции произвольного устройства при подключении ардуины к компу (накопителя, hid-устройства и т.д.). Как это сделать? У интерфейсного контроллера (именно эту роль он выполняет в Ардуино) ATmega8U2 (или ATmega16U2 в последних ревизиях) есть режим DFU - самопрошивка через подключение USB (почти как прошивка центрального контроллера ардуины). Для этого можно воспользоваться фирменной утилитой Flip. Но прежде чем ей воспользоваться нужно перевести контроллер в DFU-режим, а для этого потребуется малюсенький аппаратный апгрейд ардуины. Апгрейд действительно "малюсенький" - видимо разработчики его специально создали (а китайцы скопировали) как тест на профессиональную подготовку пользователя: сможешь? - значит действительно "достоин" пользоваться DFU-режимом интерфейсного контроллера! "Апгрейд" заключается в установке резистора 10кОм на специально предусмотренное для него место на обратной стороне платы (см. рисунок) - формально сложности никакой, вот только технически резистор должен быть очень маленьким, и паять его нужно соответствующим паяльником (см. рисунок ниже - "до" и "после"). Резистор выпаян из старой нерабочей матери, использовался "русский" паяльник 18Вт*6В (при питании от 5В БП компьютера). Хоть что-то в россии делают лучше китайцев ;-))

 

Далее - при обыкновенном подключении к компу никаких изменений не происходит - ардуина работает штатным образом (интерфейсный контроллер исполняет код своей прошивки - эмулирует USB <-> COM). Для перехода в режим DFU необходимо кратковременно замкнуть RESET интерфейсного контроллера на землю (см. рисунок ниже - левая пара контактов).

После этого в системе появляется устроство со следующим идентификатором VID_03EB&PID_2FF7 (5&19925FBC&0&1) - для него нужно установить драйвер из комплекта к утилите Flip. После чего "неизвестное устройство" превратится в "AT90USB82" (это в моем случае, несмотря на то, что контроллер в реальности имеет маркировку ATmega8U2, странно ...) В программе Flip, после инициализации подключения можно видеть следующее ...

Тут все понятно и вопросов возникнуть не должно. Единственно для того, чтобы корректно сохранить считанную прошивку из буфера в файл: необходимо вручную указать разер буфера в "Buffer -> Options -> User Defined", в моем случае для 4кбайт памяти это "00FFF". Новое firmware перед прошивкой также сначала загружается в буфер. Разумеется изменения прошивки можно откатить (если сделать резервную копия - хотя впринципе она уже идет в пакете со средой Arduino IDE). На практике я залил прошивку из последней сборки Arduino IDE 1.0, прошилось все успешно (но разумеется ничего не изменилось) ... Будем "колдовать" дальше ...

MiGeRA (ноябрь-декабрь 2011)

Заглавная » Радиоэлектроника » Arduino - Высокоуровневая платформа устройств на микроконтроллерах » Arduino UNO - точная копия и даже лучше!