28.01.2012

MKboard в качестве программатора STK500

В комментах к посту про Angelino один из пользователей навел меня на интересную мысль: а действительно, как сделать из MKBoard программатор для другой платы? Для стандартных Duemilanova и Uno обычно берут скетч ArduinoISP и дальше действуют в соответствии с этой инструкцией. Но этот скетч совершенно не подходит для MKboard/metaboard, которые не имеют "честного" USB-порта.

Но оказывается - сделать из MKBoard программатор очень даже можно, причем получается практически полноценный STK500-совместимый программатор - AVR-Doper, который можно использовать с AVRStudio (разве что без высоковольтного последовательного программирования). Для этого берете этот хекс: mkboard_avrdoper.tar.gz, замыкаете джампер Upload, нажимаете на сброс и пишите:

avrdude -c usbasp -p m8 mkboard_avrdoper.hex

После завершения процесса вы получаете AVR-Doper в режиме HID.

Соединяйте провода с программируемой схемой, руководствуясь новым назначением пинов:

Для программирования достаточно соединить MKBoard и программируемую плату (target) согласно этой таблице:

MKBoardTarget
RESETRESET
MOSIMOSI
MISOMISO
SCKSCK
GNDGND
+5BVCC

Если схема имеет собственное питание, последнее соединение (VCC и +5В) делать не нужно. 

Откуда брать эти сигналы - с гребенки ISP6 или колодки цифровых пинов - не суть важно, но если соединяете ISP6 у MKBoard и устройства - получается практически "один в один", за исключением сигнала RESET - его надо брать все-таки с цифровой колодки, digital10.



Далее, для прошивки hex-файла через avrdude можно использовать следующую строку:

avrdude -c stk500 -P avrdoper -p MCU -U flash:w:file.hex

где MCU заменяем на тип программируемого микроконтроллера (более подробно см. справку к avrdude - для ATmega8 - m8, для ATmega328P - m328p и т.д.).

Если требуется совместимость с AVRStudio - снимаем джампер Upload и переподключаем питание. Как вы уже догадались, в данной прошивке программатора этот джампер управляет режимом HID: замкнут = вкл, разомкнут = выкл (и вместо него CDC). Но учтите, что выбор срабатывает один раз при подключении питания - если нажмете на сброс, запустится бутлоадер, который будет делать совершенно другие вещи (представляться как usbasp и пытаться запрограммировать самого себя).

Можно ли программировать через DIP-сокет? Разумеется - можете его установить хоть на макетном поле, но при этом:
  • сделайте все вышеописанные соединения Target и MKBoard за исключением VCC и +5V;
  • подключите SUPPLY1 и SUPPLY2 (оба два) к шине VCC программируемого MCU;
  • подключите CLK к ножке XTAL1 программируемого MCU (замена кварцу и емкостям для создания тактовой схемы у target-а).


Два контакта под питание выглядят перестраховкой, но некое рациональное зерно в этом есть. Перед началом через SUPPLY подается питание на программируемый MCU, а по завершении - отключается. Так делает и оригинальный AVRDoper, только у него есть для этого специальная буферная микросхема, которой в MKBoard, увы, нет.

Во время программирования будет мерцать встроенный светодиод L, поскольку он оказался подключен к пину SCK (тактовые импульсы программирования). Оригинальный светодиод "ONLINE" для наглядности можно прикрутить к PC1 (или analog1 в нумерации Arduino), обязательно через токоограничительный резистор 1К - тогда он будет четко загораться в момент входа в режим программирования и при выходе из него.

В этой прошивке также можно использовать встроенный отладочный порт - если соединить  GND, RX и TX отлаживаемого микроконтроллера с пинами digital 0 и digital1 (разумеется, перекрестив), то можно с ним обмениваться через USB-подключение MKBoard  на скорости 19200 - читать и писать данные с помощью утилиты avrdebug.

Ну и напоследок - если программатор больше не нужен.... разбираете схему, замыкаете Upload, нажимаете сброс - и... плата снова готова к загрузке скетчей через ArduinoIDE! ;)

И, конечно же, скажем спасибо команде Objective Development, позаботившейся о том, чтобы код AVR-Doper компилялся не только под разные MCU и разные тактовые частоты, но и под разные схемы (оригинальная, usbasp, metaboard).

25.01.2012

Leonardo в цеху

Пересматривал подборку фотоматериалов Лаймы Фрей (известна также под ником ladyada и своим магазином adafruit.com) с последнего посещения фабрики Smart Projects и наткнулся там на фото Arduino Leonardo:



Это самые крупные фото из всех, что мне пока удалось нарыть, и по ним можно сделать некоторые выводы: 
  • используется раскладка пинов "arduino pinout 1.0";
  • дополнительные аналоговые входы A6-A11 промаркированы на противоположной стороне платы;
  • схема действительно сильно упрощена. Виден регулятор +5В, рядом с ним - регулятор +3,3В, светодиоды RX/TX/L/PWR;
  • прежняя схема автовыбора источника питания на LM-ке в SSOP-корпусе;
  • будет microUSB-разъем.
И (самый главный вывод) - видимо, довольно скоро мы уже получим, наконец, эту плату вместе с ArduinoIDE 1.1 (или как там они теперь их будут нумеровать?!), где ее поддержка включена обратно. Вообще - странно, что итальянцы настолько задерживают выпуск. Уже вовсю появляются клоны:
Скромно замечу, что лишь для последнего варианта есть нормально работающее ядро для ArduinoIDE 1.0, а также в архив добавлены примеры (клавиатура и мышь, изъятые при релизе) - freeduino32u4-1.0.tar.gz


21.01.2012

MKBoard R3

Вышла третья ревизия платы MKBoard:


по сравнению с предыдущей версией, постарался учесть пожелания пользователей и последние веяния моды изменения в раскладке пинов Arduino:
  • на макетном поле теперь есть шины VCC и GND
  • раскладка пинов соответствует arduino pinout 1.0

Напоминаю, что MKBoard - это улучшенный аналог Metaboard, платы на основе программной реализации V-USB от Objective Development, построенный на одном чипе и способный при этом загружать скетчи по USB. 

Купить в собранном виде или комплектом деталей можно здесь. Подробная пошаговая инструкция по самостоятельной сборке - здесь.  

Адаптированный к Arduino 1.0 файл boards.txt - внутри этого архива:  mkbord_r3.tar.gz

Кстати, заметил особенность ArduinoIDE 1.0: после загрузки скетча она ругается на то, что используется старое firmware для USBasp - дескать, обновите до последней версии, а то не работает установка длительности SCK (точнее, это ворниг от avrdude: cannot set sck period. please check for usbasp firmware update). Можно смело игнорировать, все и так работает замечательно.

17.01.2012

RelayShield

Очередная шилд-плата, на этот раз для управления шестью реле:


Смысл агрегата незамысловат - при помощи цифровых пинов 2-7 управлять шестью реле, переключающие контактные группы выведенные на клеммники. Присутствует оптронная развязка и собственный регулятор питания с разхемом (при стыковке с Arduino-совместимой платой питание берется также и с Vin).

Наиболее популярными аналогами являются варианты от Seeedstudio и Open Electronics:


Первый вариант хорош тем, что имеет разъем для подключения беспроводного модуля и, соответственно, возможность дистанционного управления - правда только через модули RFBee (не путать с ZigBee - хотя смысл у них один и тот же), однако и содержит на борту всего четыре реле. Второй вариант имеет шесть реле и даже предназначен для самостоятельной сборки, но лишен оптронной развязки - тут авторы особое внимание уделили освещению ;) аж по два светодиода на реле. Таким образом, мой вариант - как бы промежуточный.

У обоих плат есть одно слабое место - они располагают реле над разъемом USB, за что неоднократно подвергались критике (одно неловкое движение, и короткое замыкание в цепи нагрузки). Я постарался учесть этот факт и немного отодвинул клеммники и реле:

  


Старшие товарищи уже раскритиковали примененные пятивольтовые реле (1A, 250VAC  или 30VDC). Утверждается, что они ненадежные и для реальной промышленной автоматики никак не подходят... Так что имейте это ввиду, на всякий случай ;)



Как всегда, купить можно здесь:  http://mk90.ru/store/ru/shields/240-relayshield-v20.html

12.01.2012

LolShieldRus для 1.0

Библиотека LoLShieldRus, адаптированная для ArduinoIDE 1.0: LoLShieldRus.tar.gz

Ссылка на github (модификация, кстати, несложная - как и в случае с LiquidCrystalRus - сводится к замене инклуда WProgram.h на Arduino.h). 

Напоминаю, что это за зверь: библиотека поддержки шилд-платы LoLShield, представляющей из себя матрицу светодиодов 9х14, соединенных методом хексиплексирования таким образом, что можно управлять засветкой каждого отдельно взятого светодиода. Поддерживаются все полноразмерные Arduino-совместимые платы, включая Mega, а также - русский язык. 

См. также все статьи про LoL-shield в моем блоге.

03.01.2012

Christmas tree in use

Итак, бОльшая часть HNYduino уже "ушла в народ", и у народа уже успели назреть вопросы. Это, конечно, досадно - мне казалось, что там и объяснять-то нечего, но придется посвятить этому вопросу еще одну статью - дальше ответы буду добавлять прямо в wiki.

02.01.2012

LiquidCrystalRus для 1.0

По многочисленным заявкам телезрителей пользователей, выкладываю под тегом Arduino 1.0 libs адаптированные для Arduino 1.0 библиотеки.

Начинаю с LiquidCrystalRus: скачать LiquidCrystalRus-1.0.zip.

Это копия оригинальной библиотеки LiquidCrystal с поддержкой русского языка. Добавленный код трансформирует русские символы UTF8 в правильные коды для HD44780U. 

Этот вариант будет одинаково нормально работать и с arduino-0023, и с arduino-1.0. Основная причина несовместимости - класс LiquidCrystalRus (как и оригинальный LiquidCrystal) порожден от стандартного Print, у которого поменялся прототип виртуальной функции write: если раньше возвращаемое значение было void, то теперь - size_t.

Проект также доступен на GitHub: https://github.com/mk90/LiquidCrystalRus

01.01.2012

Freeduino ONE smd

Вслед за другими производителями Arduino-совместимых плат, вынужден констатировать: ATmega328 в DIP-корпусе и дороже, и сложнее доставаем. Именно это и стало одной из причин появления платы Freeduino ONE smd
Попутно внесены мелкие изменения, соответствующие Arduino UNO R2:
  • линия HWB притянута резистором к GND - джампер UBOOT пропал с тыльной стороны платы. Это позволяет упростить загрузку новой прошивки через DFU, более подробно см. в статье DFU. В отличие от оригинального итальянского решения с номиналом подтяжки 1К, в нашем варианте выбрано более правильное 10К. 
  • Добавлено посадочное место четырехконтактной вилки bit-bang (пины PB4,PB5,PB6 и PB7). Правда, каких-либо вменяемых примеров альтернативного firmware для ATmega8u2, которые бы их использовали, я пока не встречал:

По-прежнему сохраняются отличия от оригинала в тактовой схеме - не используется керамический резонатор для основного MCU (хоть он меньше и легче, но менее точный) - оба резонатора кварцевые; резистор 1М параллельно кварцу не устанавливается (все отличия версии R1 уже обсуждались в статье Новости Arduinoстроения). 

С одной стороны - девайс получился немного дешевле. С другой - да, если что-то случится с основным MCU, поменять его будет несколько сложнее. Но, как я уже неоднократно говорил - чем больше альтернатив, тем лучше.