29.10.2010

SMPReaderUSB - frontend?

Очередной экземпляр SMPReaderUSB благополучно завелся у нового владельца со штатными СМП от МК-90, так что теперь уже точно понятно, что он 100%-но работоспособен не только с моими СМП. 

Снова возник вопрос написания графического UI, хотя бы даже и в виде frontend-а к CLI-утилите, которая сейчас выполняет чтение, запись и замер напряжения батареи. Размышляю про Java - чтобы получилось кроссплатформенно. Все-таки опыт работы с ArduinoIDE и PDE оказал существенное влияние на мое неокрепшее сознание ;) 

Также зреет идея по превращению этого устройства в имитатор СМП, то бишь интерфейс между МК-90 и "большим братом". Страшно подумать, сколько может образов влезть на HDD ;) Впрочем, это самый туманный вопрос - неясно, будет ли успевать low-speed bulk transfer и libusb за тактовой МК-90 - протокол обмена построен так, что картридж в принципе не может попросить притормозить обмен :(  

28.10.2010

Жанлюка в LinuxFormat-е

Нашел в июльском номере LinuxFormat интервью с Джанлука Мартино - одного из пятерых членов команды Arduino. Я привожу сокращенный текст интервью, полный - читайте в LXF.



LXF: Пожалуйста, расскажите немного о своей команде.
Джанлука Мартино: Команда Arduino насчитывает примерно пять человек. Среди них два итальянца - Массимо Банци (Massimo Banzi) и я, два американца - Дэвид Меллис (David Mellis) и Том Айго (Tom Igoe), и Давид Картьеллес (David Caurtelles), испанец, живущий в Швеции. Банци отвечает за взаимодействие с внешним миром, я - за производство и за компанию, изготваливающую Arduino и занимающуюся его коммерциализацией, на Томе лежит все, что касается документации и пользовательского опыта, Меллис - это ПО, он сопровождает нашу IDE, а Картьеллес отвечает за сайт. Впрочем, наши роли не очень жесткие: мы - команда и обычно принимаем решения вместе.

LXF: А какие компании или проекты вы считаете конкурентами Arduino?
ДМ: Хороший вопрос... Я не могу назвать вам их поименно; например, нельзя сказать, что мы конкурируем с Parallax. Да, они делают что-то на том же рынке, что и мы, но мы делаем это по-другому. Что мы (ну или я) действительно не любим, так это клоны, не добавляющие проекту ничего нового. Нам нравятся инициативы вроде Seeedstudio, которые пытаются сделать что-то новое на нашей основе. Идея ведь в том, чтобы делиться, а не просто пытаться заработать на этом деньги. Например, вот тут у меня есть китайский клон [лезет в коробку]...

LXF: Вы - производитель оборудования, и мы не можем не задать вам любимый вопрос всех Linux-пользователей: должны ли все спецификации на оборудование быть открытыми, и кто все же должен писать драйверы?
ДМ: Я думаю, что наша свобода - не такая уж и свободная. Разумеется, над нами стоят производители чипов, которые регулируют, как именно вы можете общаться с устройством. Может, FPGA и даст вам больше свободы, и мы, в общем, достигли неплохого компромисса, но не надо зарываться в кремний, плодя миллионы различных микроконтроллеров.

LXF: А у вас есть секретные планы по захвату мира... ну или что-то в этом роде?
ДМ: Ну разумеется! Мы готовим плату, которая будет еще проще... и дешевле, но не потеряет при этом в качестве. По мере роста масштаба производства уделять все то же внимание мелочам становится все труднее, но мы стараемся. Наша основная цель, если угодно, продавать такие вещи, которые нам потом не вернут обратно.

LXF: Ну и наконец: что бы вы могли сказать российским пользователям Arduino, которые читают наш журнал?
ДМ: По-моему, Россия - это такой рынок, который еще не показал свой потенциал. У вас много людей, которые могли бы стать частью движения Arduino, конечно, ко всеобщей пользе. Думаю, в будущие годы ваша страна раскроет свой потенциал крупнейшего рынка в мире.

LXF: А пару слов для российских производителей клонов Arduino?
ДМ: Пару? Мы вас любим! [смеется] Видите ли, мы не слишком хорошо представляем себе российский рынок и его динамику. Так что здесь вся надежда на ваших разработчиков - в конце концов, все, что сделали мы, доступно для них свободно и бесплатно. Мы просим их только об одном - будьте осторожны с именем "Arduino". Продавать клоны под тем же самым названием, не добавляя ничего от себя, как я уже говорил - это нехорошо для сообщества.



От себя добавлю - именно из LinuxFormat я узнал о существовании Arduino. Именно там был опубликован цикл статей для начинающих на русском языке. И очень приятно видеть, что журнал снова возвращаются к теме OpenHardware и Arduino (после годового перерыва!). Настоятельно советую подписаться - если успеете до 1 ноября - по льготной цене (да, это - реклама. Наглая и бессовестная реклама моего любимого журнала)! ;)

27.10.2010

Toolduino

Если читая название Toolduino вы первым делом представляете себе Arduino-совместимый клон, спешу огорчить - это не очередной xDuino.

Toolduino - это такой специальный скетч для языка Processing, работающий с платой Arduino через библиотеку Firmata и стандартный Arduino-скетч для Firmata. Собственно, ничего нового - однако автору хватило терпения довести дело до нужной степени реализма. После старта мы должны выбрать порт для общения с Arduino, и, если все правильно, увидим на экране вот такое:


При этом картинка - полностью интерактивная, можно делать следующее:
  • переключать режим работы цифровых пинов правым щелчком (по кругу): OUTPUT, INPUT, INPUT с подтягивающим резистором, ШИМ;
  • левым щелчком менять состояние пина в режиме OUTPUT;
  • в режиме ШИМ появляется текущее значение и слайдер, который можно двигать (имитируя таким образом analogWrite)
  • по левому щелчку считывать и наблюдать значение с аналоговых входов;
  • наблюдать значения на пинах в режимах INPUT и OUTPUT.  
Автор неуклонно трудится над расширением "ассортимента" поддерживаемых плат и просит присылать фото высокого качества для добавления. А пока в очередной версии 1.1 он добавил Arduino Uno:


На мой взгляд, очень удобно для обучения, ну и вообще - красиво ;)

Скачать файлы проекта можно с его страницы: http://nootropicdesign.com/toolduino/

26.10.2010

Замена прошивки 8u2

Собственно, вот и первая попытка видоизменить прошивку ATmega8u2 на плате Arduino Uno - с картинками, подробно и по шагам:

http://arduino.cc/en/Hacking/DFUProgramming8U2

Добавить, пожалуй, даже и нечего - просто хочется обратить внимание, что Arduino превратили в джойстик при помощи проекта LUFA (Lightweight USB Framework for AVRs). Если внимательно присмотреться к списку демонстрационных приложений, то там есть практически всё - мышь, клавиатура, Mass Storgae, Ethernet Device/Host.

И только в списке демо-плат нет Arduino - но вот как раз этот пробел, надеюсь, вскоре будет восполнен в полной мере.

Optiboot только для Uno

В предыдущей статье я немного поторопился с выводами - родной для Arduino Uno optiboot ведет себя на Duemilanova не совсем так, как надо. Точнее - совсем не так :(

Если загрузить скетч - он вполне нормально стартует. Но стоит отключить и снова включить питание, как optiboot зацикливается, реальных шансов снова увидеть работающий скетч - крайне мало. Кроме всего прочего, некоторые жалуются на проблемы при заливке больших скетчей. Собственно, после просмотра исходника optiboot возникает масса вопросов - например, как автор выбирал задержку для watchdog-а, или правильно ли используются улучшения от ladyada. У меня разборки неожиданно осложнились трапом линковщика при попытке пересобрать optiboot из исходников. 

Поэтому - пока что откатился обратно, 1К-bootloader - с ним я подобных проблем не замечал.

05.10.2010

Optiboot в действии

Пока народ возмущается по поводу ахового качества первой партии плат Arduino Uno, а отцы-основатели оправдываются в своем блоге, что "ложка дегтя никак не портит бочку меда", я решил опробовать новый 512-байтный optiboot. По причине отсутствия под рукой оригинального Arduino Uno, все эксперименты проводил на Duemilanove.

Итак, придется скачать ArduinoIDE 0020 под Windows - даже если у вас, как и у меня - Linux (примечание: на момент написания статьи версии 0020 под Linux еще не было, но теперь уже можно качать 0021). В качестве альтернативы подойдет архив со страницы optiboot на google code. В обоих вариантах вы получаете готовые откомпилированные .hex-файлы для всех плат Arduino и совместимых с ней клонов, но учтите - по умолчанию ArduinoIDE 0020/0021 поддерживает только Arduino Uno с МК ATmega328P и тактовой частотой 16 МГц.

Понадобится также и ISP-программатор - подойдет любой, хотя бы даже и на резисторах и LPT-порту.

Простейший способ апгрейда: подключите программатор к разъему ISP6 вашего Arduino, запустите ArduinoIDE (0020 и выше), в меню Tools|Board выберите Arduino Uno, затем шейте через Tools|Ваш программатор.

Если вы не нашли программатор в списке, хотя точно знаете, что он поддерживается avrdude, попробуйте добавить его описание в файл hardware/arduino/programmers.txt. Например, если у вас USBasp, допишите строчки:

usbasp.name=USBasp
usbasp.communication=usb
usbasp.protocol=usbasp

Если у вас все еще нет возможности пользоваться ArduinoIDE 0020/0021, не беда - копируйте каталог hardware/arduino/bootloaders/optiboot из нее в свою "старушку" версии 0019 и добавьте в файл hardware/arduino/boards.txt:

uno.name=Arduino Uno
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino

Наконец, для истинных поклонников кристалльной ясности (командной строки :), можно предложить все сделать парой команд (на примере AVRDoper):

avrdoper -c stk500v2 -P avrdoper -p m328p -e -u -U lock:w:0x3f:m -U efuse:w:0x05:m -U hfuse:w:0xde:m -U lfuse:w:0xff:m
avrdoper -c stk500v2 -P avrdoper -p m328p -U flash:w:optiboot_atmega328.hex -U lock:w:0x0f:m

Собственно, вот и всё - теперь у вас плата, программно совместимая по бутлоадеру с Arduino Uno, свободно 31,5 Кбайт памяти программ, скетчи заливаются со скоростью 115200.

Если же у вас плата с МК ATmega168 или не на тактовую частоту 16 МГц, но очень хочется задействовать optiboot - скачайте архив optiboot с google code, там вы найдете boards.txt с описаниями большей части существующих плат. Скопируйте нужную секцию в свою ArduinoIDE и прошивайте по вышеописанному методу.