Что такое Metaboard? Печать
Добавил(а) microsin   

Metaboard - это простая плата для макетирования, с интерфейсом USB, построенная на основе микроконтроллера Atmel AVR. Она спроектирована так, чтобы во многих случаях быть совместимой с Arduino. Дизайн платы полностью открыт (и аппаратура, и firmware).

[Особенности платы Metaboard]

- простая принципиальная схема и благодаря этому низкая цена.
- возможно использование односторонней печатной платы, что упрощает её домашнее изготовление. В профессиональном исполнении односторонняя плата является самой дешевой.
- отсутствуют компоненты SMD, что также упрощает домашнюю сборку.
- макетная плата Metaboard во многом совместима с Arduino по размерам печатной платы и разводке коннекторов. Metaboard может программироваться через USB в стандартной среде разработки Arduino.
- не требуются затраты на систему разработки и покупку программатора.
- на плате Metaboard имеется поле для макетирования (монтирования собственной схемы пользователя).
- плата Metaboard полностью опубликована по лицензии Open Source.

[Аппаратура (hardware)]

Поскольку интерфейс USB реализован в firmware (программно), то не требуется специальный отдельный чип драйвера USB. Вот принципиальная схема платы Metaboard:

Metaboard-circuit.gif

metaboard-v10-top.png metaboard-v10-bottom.png

Наиболее свежую версию документации по плате Metaboard можно всегда загрузить по ссылке [1]. Пакет с картинками PNG схемы платы, разводки и размещение компонентов можно скачать по ссылке [3].

[Программное обеспечение (firmware)]

Metaboard лучше всего использовать совместно с USBaspLoader, см. [4]. Этот бутлоадер эмулирует AVR программатор USBasp, у которого имеется интерфейс USB. Главное программное обеспечение (firmware) можно загрузить в память микроконтроллера Metaboard через этот бутлоадер. Для работы с бутлоадером может использоваться утилита загрузки Khazama [13], AVRDUDE, среда разработки Arduino IDE с соответствующими настройками [12].

[Средства разработки]

Плата Metaboard может использоваться либо с пакетом разработчика GCC, либо с бесплатной интегрированной средой разработки Arduino. Разработчики Arduino предоставляют набор работоспособных демонстрационных проектов-примеров, которые можно сразу же загрузить и использовать. Разработчики Metaboard планируют также предложить набор примеров, созданных специально для платы Metaboard. GCC можно скачать по ссылкам [5, 6, 7]. Примеры проектов для GCC можно найти по ссылке [8], но для того, чтобы эти примеры правильно заработали, их нужно подкорректировать с учетом назначения портов ввода/вывода микроконтроллера Metaboard, и её тактовой частоты (частоты кварца). Все ресурсы, связанные с Arduino, можно найти по ссылке [9].

[Использование Metaboard в качестве Arduino]

Как уже говорилось, Metaboard разработана с целью максимальной совместимости с Arduino, однако у Metaboard есть несколько отличий:

- размещение коннекторов: все коннекторы привязаны к 2.54 миллиметровой сетке, чтобы дополнительные узлы схемы можно было собрать на макетном поле Metaboard.
- загрузка firmware: для выбора режима бутлоадера используется специальная перемычка, и также необходимо нажать копку сброса, чтобы бутлоадер активировался.
- протокол загрузки firmware: Metaboard эмулирует USBasp, а не STK500.
- линии UART микроконтроллера AVR не используются для подключения USB. Это означает, что линии UART можно использовать по усмотрению пользователя для других целей, однако также отладочный вывод, посылаемый в UART, не будет напрямую перенаправлен в USB.

Для того, чтобы можно было загружать firmware напрямую из среды разработки IDE Arduino, необходимо модифицировать файл hardware/boards.txt в главной папке IDE Arduino. Добавьте следующие строки в конец файла:

##############################################################

metaboard.name=Metaboard

metaboard.upload.protocol=usbasp
metaboard.upload.maximum_size=14336
metaboard.upload.speed=19200

metaboard.build.mcu=atmega168
metaboard.build.f_cpu=16000000L
metaboard.build.core=arduino

metaboard.upload.disable_flushing=true

##############################################################

Поскольку Arduino настаивает на использовании последовательного порта для загрузки firmware (хотя это не нужно для USBasp), Вы можете вручную отредактировать файл Arduino preferences.txt, и установить переменную serial.port на имеющееся устройство. Файл preferences.txt находится на платформе Mac в папке ~/Library/Arduino. Теперь это должно работать без всяких проблем с опцией disable_flushing.

Подробнее про интеграцию metaboard в среду разработки Arduino IDE см. [12].

Под "стандартным" Ардуино обычно подразумевают Arduino Uno. Если внимательно изучить принципиальную схему metaboard, то различия становятся понятны. Если кратко, то основные различия следующие:

1. Главное отличие, из которого вытекают все остальные отличия: на плате metaboard по-другому подключен к микроконтроллеру интерфейс USB. Если на Arduino USB подключен к порту UART микроконтроллера через микросхему FT232RL (или выполняющая аналогичные функции микросхема Atmel Atmega8U2/Atmega16U2), то на плате mataboard такой микросхемы нет, и порт USB подключен к портам GPIO микроконтроллера. Чтобы главное отличие было понятнее, давайте рассмотрим диаграмму разводки платы Arduino Uno, где показаны различия в организации интерфейса USB от платы metaboard.

metaboard-Arduino-difference

Голубым цветом показана организация USB у Arduino Uno, зеленым цветом у metaboard. Как видно на схеме, у Arduino Uno имеется отдельный аппаратный узел для USB (аппаратный преобразователь USB-COM порт, класс устройств USB CDC), и под него задействованы порты PD0 и PD1. У платы metaboard для организации интерфейса USB нет такой аппаратуры, сигналы порта USB напрямую подключены к портам микроконтроллера PD2 и PD4.

Благодаря этому отличию схема metaboard гораздо проще, плата metaboard дешевле, и её проще спаять самому в домашних условиях, чем Arduino.

2. USB-загрузчики у Arduino и metaboard разные. У Arduino используется загрузчик через порт UART, а в metaboard используется загрузчик, эмулирующий программатор USBasp. Поэтому для загрузки кода скетча через среду Arduino IDE для платы metaboard нужно сделать специальные настройки, учитывающие загрузчик USBasp. Подробнее см. [12].

3. Чтобы в среде Arduino IDE при работе с платой metaboard можно было увидеть через монитор отладочный вывод объекта Serial, нужно подключить к порту UART микроконтроллера отдельный переходник USB-UART TTL. Что это за переходник, где его найти и как использовать, см. [11]. Для Arduino такой отдельный переходник не нужен, потому что используется встроенный, распаянный прямо на плате Arduino переходник USB-UART TTL.

4. Порты PD2 и PD4 микроконтроллера metaboard задействованы под сигналы D+ и D- интерфейса USB. Поэтому, немотря на то, что эти порты выведены на те же внешние цифровые порты 4 и 6, как и у Arduino, в скетчах их использование ограничено. Например, эти порты не могут полноценно работать как входы, и не могут также работать как выходы, если metaboard подключена к компьютеру через USB.

5. Порты PD0 и PD1 у Arduino не только выведены на внешние цифровые порты 0 и 1, но они еще и подключены параллельно к узлу USB-UART TTL. Поэтому у Arduino эти порты обычно всегда заняты, использовать их под другие функции, кроме как для объекта Serial, нельзя. У metaboard эти выводы совершенно свободны, и доступны для любого применения - и как порты ввода/вывода GPIO, и как порт UART.

6. У платы metaboard интерфейс USB потенциально имеет гораздо больше возможностей, чем у Arduino. Дело в том, что у Arduino интерфейс USB для связи с компьютером может работать только в режиме последовательного виртуального порта (USB CDC), а у metaboard можно реализовать как минимум 2 класса устройств USB на выбор: USB HID или USB CDC (благодаря использованию библиотеки V-USB). Но этот функционал metaboard не поддерживается стандартной средой разработки Arduino IDE, он доступен только при использовании AVR Studio/Atmel Studio и/или тулчейна GCC (avr-libc, WinAVR).

7. У платы metaboard имеется макетное поле с отверстиями (шаг 2.54 мм). Собирается metaboard из легкодоступных деталей со штыревыми выводами (нет SMD-деталей, которые сложнее паять). Благодаря этому metaboard гораздо проще изготовить самому, и удобнее собирать на ней радиолюбительские конструкции.

8. У платы metaboard последней версии устранена досадная ошибка размещения верхних коннекторов - шаг 2.54 мм у верхних разъемов портов Arduino нарушен. Из-за этой ошибки Arduino нельзя установить в стандартные платы макетирования типа breadboard ProsKit. В последней версии metaboard этот недостаток устранен благодаря наличию второго ряда верхних коннекторов, где шаг 2.54 мм восстановлен.

metaboard-v1.1-fix-connectors

[Проекты, основанные на Metaboard]

1. AVRProg based on Metaboard site:metalab.at - ISP программатор AVRProg для микроконтроллеров AVR. На программаторе имеются сокеты для программирования микроконтроллеров AVR с 8, 20 и 28 выводами.

Avrprog-metaboard-photo-250.jpg

2. MHVBoard - an Arduino Clone site:makehackvoid.com - клон Arduino - MHVBoard.

mhvboard-atmega328p_installed.jpg

[Ссылки]

1. git clone git://gitorious.org/metaboard/metaboard.git - программное обеспечение и документация Metaboard (загрузка через систему GIT).
3. Metaboard-1.0.zip site:metalab.at - схема, разводка и размещение деталей платы Metaboard.
4. USBaspLoader site:obdev.at.
5. WinAVR site:sourceforge.net - GCC для Windows.
6. CrossPack for AVR® Development site:obdev.at - GCC для Mac OS X.
7. AVR GNU Tool Chain - Building and Installing under Linux, FreeBSD, and Others site:nongnu.org - GCC для Linux и других Unix-подобных систем.
8. Projects Based on V-USB site:obdev.at - примеры проектов GCC для USB-устройств (библиотека V-USB) и ПО хоста (библиотека libusb). Русскоязычный пакет можно скачать по ссылке http://microsin.net/Download.cnt/avr/avr-usb-russian.rar.
9. Arduino site:arduino.cc - домашняя страничка системы разработки Arduino.
10. Metaboard wiki activities site:metalab.at - дополнительная информация по плате Metaboard.
11. AVR: отладочный вывод через UART (RS232 debug).
12. Работа с макетной платой metaboard в среде программирования Arduino.
13. 141122Khazama162.zip - утилита Khazama162, драйвер программатора USBasp для Windows XP, Windows Vista, Windows 7, Windows 8, прошивки загрузчика USBasp для различных микроконтроллеров.