Самый маленький микроконтроллер для самоделок
Многие профессионалы-разработчики электроники часто "воротят нос" от семейства микроконтроллеров производства Atmel - фи, мол, эта ваша Атмега — только лампочками поморгать. Однако, это спорное утверждение.
Дешевизна, легкость программирования (как физической "заливки" прошивки, так и создания самих программ) превращают микроконтроллеры семейства AVR в универсальный инструмент, доступный начинающему радиолюбителю, а богатейшая линейка устройств — от самых простых ATTiny до устройств Mega256 с огромным количеством периферии "на борту" позволят реализовать самый смелый и амбициозный проект.
В этот раз мы рассмотрим конкретные примеры реализации одноплатных (и не очень) конструкторов на базе микроконтроллеров семейства ATMega. Все они вполне реализуемы в домашних условиях, а некоторые можно приобрести на сайте авторов. Для начала - небольшое отступление про "одноплатники" вообще.
Именно так — те самые "компьютеры в клавиатуре" были одноплатными. Да, допускались различные расширения, но кто о них помнит сейчас, тем более приобрести их в магазине было довольно проблематично. Да и нужды не было по большому счету.
И вот 21 век сдвинул "окно ностальгии" в нужную позицию и радиолюбители по всему миру не сговариваясь выпустили несколько проектов, которые по характеристиками ну очень напоминают те самые "эр-кашки" и "спектрумы" конца восьмидесятых годов прошлого века. А некоторые — в точности повторяют, но обо всём по порядку.
AVR Chip Basic
Первый персонаж нашего обзора - компьютер AVR Chip Basic, точнее это целое семейство компьютеров, различающееся по степени "навороченности" и наличию той или иной периферии.
Из под пера автора ( J?rg Wolfram ) вышла целая плеяда устройств:
- AVR-ChipBasic8 на базе ATMega8 или ATMega88 (та же микросхема используется в ARCAdaptor)
- AVR-ChipBasic на базе ATMega16
- AVR-ChipBasic32 на базе ATMega32
- AVR-ChipBasic2 на базе ATMega644
Все они имеют (как минимум) ТВ-выход и общаются с пользователем с помощью языка BASIC. В качестве устройства ввода используется стандартная PS/2 клавиатура.
Как уже говорилось, каждое из устройств обладает разными характеристиками, так например, AVR-ChipBasic8 имеет чёрно-белый видеовыход, может хранить программы на языке BASIC на подключаемой микросхеме EEPROM, ибо память самой микросхемы оставляет лишь 512 байт для хранения исходного текста.
Тем не менее - имеется и звуковой выход, и даже "свободные ножки", на которые можно повесить дополнительное оборудование.
Диалект бейсика очень сильно урезан, но позволяет вдоволь наиграться с этим языком программирования.
Из "фишек" интересное - прошивку можно собрать самостоятельно как под PAL развертку, так и под NTSC.
Остальные аппараты уже в состоянии выводить цветной видеосигнал через разъем SCART, и даже подключаться к совместимой TFT-матрице. Также к услугам пользователя возможность работы с периферией, последовательный интерфейс RS-232 с возможностью общения с "большим братом" и даже "картриджи памяти"! - съемные блоки памяти с записанными на них программами.
Более того, версии на ATMega16,32 и 644 используют одну и ту же плату, то есть достаточно поставить микросхему в панельку и загрузить нужную прошивку.
Остальные подробности можно почерпнуть на странице автора. К сожалению страничка на немецком языке, но онлайновые переводчики значительно облегчат жизнь.
Кстати, среди его проектов есть и эмулятор компьютера ZX-81 на микроконтроллерах AVR.
FIGnition
Движемся дальше - следующий экспонат - одноплатный компьютер Fignition.
Автор Julian Skidmore создал "одноплатник", работающий под управлением ФОРТ-машины. Устройство способно управляться с экраном размером 25x24 символов, 16 пользовательскими символами, ну или графикой размером 160x160 точек.
Стоит отметить, что устройство может работать как с PAL-телевизорами, так и с NTSC - зависит от загруженной прошивки микроконтроллера ATMega168.
Особый интерес вызывает способ ввода данных. Обычно с AVR-устройствами часто интегрируют поддержку PS/2 клавиатуры, коих в избытке (пока что). Автор подготовился к вселенской катастрофе и организовал ввод с помощью восьми кнопок. Перебор значений на них организован по образу и подобию набора SMS в кнопочных мобильных телефонах.
Безусловно, такое устройство будет интересно в первую очередь поклонникам языка FORTH.
Сам автор предлагает приобрести комплект для сборки, хотя схема открыта, и в принципе желающие могут собрать подобное устройство самостоятельно.
Если до этого шла речь о самобытных устройствах, то следующая часть статьи будет почти полностью посвящена эмуляторам и репликам существующих (за некоторым очень интересным исключением).
PMD-85
Первый в списке - компьютер PMD-85. Это довольно интересное устройство, которое выпускалось с 1985 по 1989 в социалистической Чехословакии. По характеристикам он очень похож на семейство "РК-86", выпускавшийся в СССР в середине и конце восьмидесятых годов прошлого века - процессор i8080 и небольшой объем памяти.
Подробнее можно почитать в Википедии , ну а пока что рассмотрим аппаратную реализацию на ATMega.
Даже по этой иллюстрации видно - на плате всего лишь 2 микросхемы - непосредственно контроллер ATMega128 и микросхема памяти.
Ввод осуществляется с клавиатуры PS/2, вывод - через черно-белый ТВ. Для того, чтобы запустить ту или иную игру - необходимо скомпилировать соответствующую прошивку, которая содержит тот или иной набор программ. Вот несколько скриншотов от "родных" игр.
А вот видео работы, правда записано с настоящего PMD:
Подробности можно почерпнуть по этой ссылке , сайт же поклонников PMD-85 из бывшего соцлагеря тут.
Проект был бы весьма интересен отечественным фанатам РК-86, тем более что уже есть реализация на микроконтроллере PIC в проекте Maximite.
AVR-CP/M
Дальше - больше. Если возможна эмуляция i8080, то почему бы не попытаться запустить на АТМеге операционную систему CP/M ?
Это стоит сделать хотя бы ради великого и ужасного ZORK! И ведь запускают.
В качестве устройства отображения используется serial port.
Для него в плату установлен конвертер Serial->USB, но вполне можно обойтись и без него, точнее - обойтись внешним конвертером.
Сама схема представляет собой контроллер ATMega328 и несколько чипов памяти (из старых видеокарт или материнских плат).
Диск эмулируется через набор образов, размещенных на SD-карте. Схемы, прошивки и прочее можно найти здесь. Сайт на немецком языке, но онлайновые переводчики сделают свое дело.
UzeBox
Постепенно переходим к жемчужинам этого собрания. Первая в списке - самодельная, полностью открытая приставка UzeBOX.
Мало того, что приставка полностью "повторяема" в домашних условиях — её программное обеспечение имеет вполне достойный уровень, и более того — игры для неё разрабатываются энтузиастами прямо-таки в промышленных количествах.
Что "под капотом":
- Низкая стоимость. Всего 2 чипа (микроконтроллер и кодер NTSC), более того - второй не обязателен, если есть телевизор с полноценным разъемом SCART.
- Ядро управляется прерываниями. Нет "тормозов", никто не отсчитывает такты процессора, генерация аудио и видео происходит в фоне.
- 256 цветов 4 звуковых канала - 3 wavetable +1 шумовой
- MIDI-интерфейс
- Стандартные джойстики от SNES (на 15 долларов на Aliexpress можно приобрести несколько штук).
- Есть возможность использовать NES (Dendy), но потребуется перекомпиляция игр, хотя это вообще не проблема
- Поддержка манипулятора "мышь" от SNES
- Поддержка SD-карточек UART и SPI интерфейсы доступны, также есть некоторое количество свободных "ножек" ATMega
- Есть эмулятор для разработки игр Загрузчик игр/программ с SD Развитое API для разработки Полностью открытая схемотехника и код
Приставка оказалась настолько удачной, что комплектами для сборки подторговывал магазин Adafruit Industries — признанный лидер в DIY движении.
Сама приставка базируется на микросхеме ATMega644 в DIP-исполнении (об этом чуть подробнее ниже). Этого контроллера вполне хватает для вышеописанных задач, а на выходе можно наблюдать игры примерно такого качества:
Без сомнения - классика не стареет.
Неплохо для микроконтроллера, правда ?
Автор разработки - канадец Alec (Uze) Bourque. Проекту не один год, но сообщество, сложившееся вокруг консоли всё еще полно идей и энтузиазма для дальнейшего движения вперед.
По этой ссылке можно ознакомиться с минимальной версией UzeBox - полностью модульной системой, которая состоит из базовой платы с микроконтроллером и SCART-выходом, а также дополнений - платы энкодера NTSC, платы адаптера SD-карты и платы MIDI-переходника.
Последний, кстати, никогда не был воплощен "в металле" за отсутствием MIDI-оборудования :) Выглядит "домашняя версия" в сборе примерно так:
Так что с уверенностью заявляем - "дизайн" проверен и работает.
Конечно же, нужно упомянуть о недостатках.
- Для обеспечения нужной скорости ATMega работает в режиме "overclock" - аж на 28.6 Mhz
- Для сборки подходят только DIP-версии микросхемы
- При использовании SMD-версий перестает работать UART, перебои с SD-картой и вообще большой риск "не завестись". Причина тому - указанный выше "разгон"
- Чип AD725 (энкодер NTSC) в наших краях редкость и довольно дорого обходится (хотя он по большому счету и не нужен в начальной конфигурации)
- SNES-джойстики не так распространены и уж тем более "ответные" разъемы для них
- Нормально работают далеко не все SD-карты (точнее, большинство не работает, хотя подобрать в конце концов можно)
Достоинства консоли, кстати, с лихвой перевешивают описанные недостатки, так что её действительно можно рекомендовать к сборке даже новичкам.
Официальный сайт консоли со всей информацией, исчерпывающей документацией и весьма позитивным форумом здесь.
AVR ZX Spectrum 2.0
Ну и в финале — действительно потрясающий проект нашего соотечественника - Василия Лисицына - полностью функциональный "клон" компьютера ZX-Spectrum!
На фото - плата AVR ZX-Spectrum 2.0 с установленным эмулятором AY8910(12), кстати тоже на ATMega.
Плата в базовой конфигурации имеет на борту 3 микроконтроллера и микросхему динамической памяти аж на 512 кб:
- Центральный процессор (ATMega128)
- Видеопроцессор (опять ATMega128)
- Контроллер клавиатуры (ATTiny2313)
Это позволяет "в теории" реализовать компьютер с таким объемом памяти. Помимо этого на плате есть некоторое количество микросхем мелкой логики.
Уже сейчас помимо "спектрума" плата может функционировать, как Robotron 1715. То есть на этой базе можно реализовывать и другие компьютеры!
Что может быть лучше ретро-платы все в одном! Впрочем, о тайнах и возможностях может поведать сам автор:
К сожалению, на данный момент у автора нет веб-сайта, но есть надежда, что он появится. А пока что со схемой и описанием можно ознакомиться, например, вот здесь.
Заключение
Микроконтроллеры - отличная возможность прикоснуться с миру разработки микроэлектроники. Для "олдскульщиков" - возможность "нырнуть" в то время, когда они были молодыми, а компьютеры простыми. Для поколения Arduino - шаг вперед в образовании. И пусть фанаты навороченных FPGA и ARMов утверждают о том, что время ATMega прошло - мы-то знаем на что она способна.
Тестер емкости аккумулятора на Atmega8. Схема и описание
Это тестер емкости аккумулятора позволяет измерять емкость аккумулятора или аккумуляторной батареи (измерение в мА/ч или … читать далее
Калибратор OSC генератора и устройство восстановления фьюзов AVR микроконтроллеров
Тахометр — простой измеритель оборотов на базе микроконтроллера ATtiny13A
Данный тахометр позволяет измерять количество оборотов двигателя в минуту. Измерение основано на подсчете отраженного света … читать далее
Маломощные ЖК-часы на микроконтроллере AVR128DA48. Схема и описание
Это достаточно маломощные ЖК-часы построены на микроконтроллере AVR128DA48. Часы способные работать более трех лет от … читать далее
ШИМ-контроллер для RGB светодиодов с использованием PIC PIC12F629
Данный ШИМ-контроллер RGB светодиодов позволяет использовать 5 мм RGB светодиоды или квадратные светодиоды типа Superflux … читать далее
Дистанционный регулятор освещенности на микроконтроллере PIC12F629 / PIC12F675. Схема диммера
Особенность данного диммера в том, что его питание осуществляется от сети через нагрузку (обычно это … читать далее
Для создания робота нужно сделать правильный выбор микроконтроллера. Сначала нужно разобраться с понятием, что такое микроконтроллер и что он делает?
Микроконтроллер — это вычислительное устройство, способное выполнять программы (то есть последовательность инструкций).
Он часто упоминается как “мозг” или “центр управления” робота. Как правило, микроконтроллер отвечает за все вычисления, принятие решений и коммуникации.
Для того, чтобы взаимодействовать с внешним миром, микроконтроллер имеет ряд штырей или выводов для электрического распознавания сигнала. Так сигнал может быть включен на максимум (1/С) или минимум (0/выкл) с помощью инструкции программирования. Эти выводы также могут быть использованы для считывания электрических сигналов. Они поступают с датчиков или других приборов и определяют, являются сигналы высокими или низкими.
микроконтроллер для робота
Большинство современных микроконтроллеров может также измерять напряжение аналоговых сигналов. Это сигналы, которые могут иметь полный диапазон значений вместо двух четко определенных уровней. Происходит это с помощью аналогового цифрового преобразователя (АЦП). В результате микроконтроллер может присвоить сигналу числовое значение в виде аналогового напряжения.Это напряжение не является ни высоким, ни низким и, как правило, находится в диапазоне 0 — 10 вольт.
Что может делать микроконтроллер?
Хотя микроконтроллеры могут показаться довольно ограниченными, на первый взгляд, многие сложные действия можно выполнять, используя контакты высокого и низкого уровня сигнала для программирования алгоритма. Тем не менее создавать очень сложные алгоритмы, такие как интеллектуальное поведение или очень большие программы, может быть просто невозможно для микроконтроллера из-за ограниченных ресурсов и ограничения в скорости.
Например, для того, чтобы заставит мигать свет, можно запрограммировать повторяющуюся последовательность. Так микроконтроллер включает высокий уровень сигнала, ждет секунду, превращает его низкий, ждет еще секунду и сначала. Свет подключен к выходному контакту микроконтроллера и в циклической программе будет мигать бесконечно.
микроконтроллер со светодиодами
Аналогичным образом, микроконтроллеры могут быть использованы для контроля других электрических устройств. В первую очередь таких как приводы (при подключении к контроллеру двигателя), устройства хранения (например, карты SD), WiFi или bluetooth-интерфейсы и т. д. Как следствие этой невероятной универсальностью, микроконтроллеры можно найти в повседневной жизни.
Практически в каждом бытовом приборе или электронном устройстве используется, по крайней мере, один микроконтроллер. Хотя часто используется и несколько микроконтроллеров. Например, в телевизорах, стиральных машинах, пультах управления, телефонах, часах, СВЧ-печах и многих других устройствах.
В отличие от микропроцессоров (например, центральный процессор в персональных компьютерах), микроконтроллер не требует периферийных устройств. Таких как внешняя оперативная память или внешнее устройство хранения данных для работы. Это означает, что хотя микроконтроллер может быть менее мощным, чем их коллеги ПК. Почти всегда разработка схем и продуктов, основанных на микроконтроллерах значительно проще и дешевле.Потому что требуется очень мало дополнительных аппаратных компонентов.
Важно отметить, что микроконтроллер может выдавать только очень небольшое количество электрической энергии через свои выходные контакты. Это означает, что к микроконтроллеру не получиться подключить мощный электродвигатель, соленоид, большое освещение, или любую другую большую нагрузку напрямую. Попытка сделать это может вывести контроллер из строя.
Какие существуют более специализированные функции микроконтроллера?
Специальное оборудование, встроенное в микроконтроллеры позволяет этим устройствам сделать больше, чем обычный цифровой ввод/вывод, базовые расчеты и принятие решений. Многие микроконтроллеры с готовностью поддерживает наиболее популярные протоколы связи, такие как UART (RS232 или другой), SPI и I2C. Эта функция невероятно полезна при общении с другими устройствами, такими как компьютеры, датчики, или другие микроконтроллеры.
Хотя эти протоколы можно реализовать вручную, всегда лучше иметь выделенное встроенное оборудование, которое заботится о деталях. Это позволяет микроконтроллеру сосредоточиться на других задачах и обеспечивает чистоту программы.
rs232
Аналого-цифровые преобразователи (АЦП), используются для преобразования аналоговых сигналов напряжения в цифровые. Там количество пропорционально величине напряжения, и это число может затем использоваться в программе микроконтроллера. Для того, чтобы выходное промежуточное количество энергии отличается от высокого и низкого, некоторые микроконтроллеры имеют возможность использовать широтно-импульсную модуляцию (ШИМ). Например, этот способ позволяет плавно изменять яркость свечения светодиода.
Наконец, в некоторые микроконтроллеры интегрирован стабилизатор напряжения. Это достаточно удобно, так как позволяет микроконтроллеру работает с широким диапазоном напряжения. Поэтому вам не требуется обеспечивать необходимые значения напряжений. Это также позволяет легко подключать различные датчики и другие устройства без дополнительного внешнего регулируемого источника питания.
Аналоговые или цифровые?
Какие нужно использовать входные и выходные сигналы зависит от поставленной задачи и условий. Например, если у вас стоит задача просто что-то включить или выключить, то вам достаточно чтобы сигнал на входном контакте микроконтроллера был цифровой.
Двоичное состояние переключателя 0 или 1. Высокий уровень сигнала может быть 5 вольт, а низкий 0. Если же вам нужно измерить, например, температуру, то нужен аналоговый входной сигнал. Далее АЦП на микроконтроллере интерпретирует напряжение и преобразует его в числовое значение.
Как программировать микроконтроллеры?
Программирование микроконтроллеров стало более простым благодаря использованию современных интегрированных сред разработки IDE с полнофункциональными библиотеками. Они легко охватывают все наиболее распространенные задачи и имеют много готовых примеров кода.
Программировать микроконтроллеры становится еще проще, так как производители создают графические среды программирования. Это пиктограммы, которые содержат в себе несколько строк кода. Пиктограммы соединяются друг с другом. В результате создается программа визуально простая, но содержащая в себе большое количество кода. Например, одно изображение может представлять управление двигателем. От пользователя требуется только разместить пиктограмму там, где необходимо и указать направление вращения и обороты.
среда программирования Lego Education EV3
Разработанные микроконтроллерные платы достаточно удобны в эксплуатации. И их проще использовать долгое время. Они также обеспечивают удобные питание от USB и интерфейсы программирования. Следовательно, есть возможность подключаются к любому современному компьютеру.
Почему не использовать стандартный компьютер?
Очевидно, что микроконтроллер очень похож на процессор компьютера. Если это так, почему бы просто не использовать компьютер для управления роботом? Итак, что выбрать настольный компьютер или микроконтроллер?
системный блок компьютера
По сути, в более продвинутых роботах, особенно тех, которые включают сложные вычисления и алгоритмы, микроконтроллер часто заменяются (или дополняются) стандартным компьютером. В настольном компьютере установлена материнская плата, процессор, оперативная память устройства (например, жесткий диск), видеокарта (встроенная или внешняя).
Дополнительно есть периферийные устройства, такие как монитор, клавиатура, мышь и т. д. Эти системы обычно дороже, физически больше, потребляют больше энергии. Основные отличия выделены в таблице ниже. Кроме этого они часто имеют больший функционал чем необходимо.
Как выбрать микроконтроллер правильно?
Если вы изучаете робототехнику, то вам понадобится микроконтроллер для любого робототехнического проекта. Для новичка, выбор правильного микроконтроллера может показаться сложной задачей. Особенно учитывая ассортимент, технические характеристики и области применения. Есть много различных микроконтроллеров доступны на рынке:
- Ардуино
- BasicATOM
- BasicX
- Lego EV3
- и многие другие
Для того чтобы правильно выбрать микроконтроллер задайте себе следующие вопросы:
Какой микроконтроллер самый популярный для моего приложения?
Конечно, создание роботов и электронных проектов в целом-это не конкурс популярности. Очень хорошо если микроконтроллер имеет большую поддержку сообщества. И успешно используется в похожих или даже одинаковых ситуациях. В результате это может значительно упростить этап проектирования. Таким образом, вы могли бы извлечь пользу из опыта других пользователей, как среди любителей, так и среди профессионалов.
Участники сообществ конструкторов роботов делятся друг с другом результатами, кодами, картинками, видео, и подробно рассказывают об успехах и даже неудачах. Все это является доступными материалами и возможностью получать советы от более опытных пользователей. Следовательно, может оказаться очень ценным.
Есть какие-то особенные требования у вашего робота?
Микроконтроллер должен быть способен выполнять все специальные действия вашего робота, чтобы функции исполнялись правильно. Некоторые особенности являются общими для всех микроконтроллеров (например, наличие цифровых входов и выходов, возможность выполнять простые математические действия, сравнение значений и принятие решений).
Возможно другим контроллерам требуется специфическое оборудование (например, АЦП, ШИМ, и коммуникационный протокол поддержки). Также требования к памяти и скорости, а также число выводов должны быть приняты во внимание.
Какие компоненты доступны для конкретного микроконтроллера?
Может быть ваш робот имеет специальные требования или необходим конкретный датчик или компонент. И это имеет решающее значение для вашего проекта. Следовательно выбор совместимого микроконтроллера, безусловно, очень важен.
Большинство датчиков и компонентов может взаимодействовать напрямую со многими микроконтроллерами. Хотя некоторые комплектующие предназначены для взаимодействия с конкретным микроконтроллером. Возможно они будут уникальными и несовместимыми другими типами микроконтроллеров.
Что нас ждет в будущем?
Цена на компьютеры резко идет вниз, и достижения в области технологии делают их меньше и эффективнее. В результате одноплатные компьютеры стали привлекательным вариантом для роботов. Они могут работать с полноценной операционной системой (Windows и Linux являются наиболее распространенными).
Дополнительно компьютеры могут подключаться к внешним устройствам, таким как USB-устройства, жидкокристаллические дисплеи и т. д. В отличие от своих предков, эти одноплатные компьютеры, как правило, значительно меньше потребляют электроэнергии.
Основные критерии выбора
Для того чтобы выбрать микроконтроллер составим список нужных нам критериев:
- Стоимость микроконтроллера должна быть низкой
- Он должен быть простым в использовании и хорошо поддерживаться
- Важно наличие доступной документации
- Он должен программироваться в графической среде
- Он должен быть популярен и иметь активное сообщество пользователей
- Так как наш робот будет использовать два двигателя и различные датчики, то микроконтроллеру понадобится как минимум два порта для управления двигателями и несколько портов для подключения датчиков. Также должна быть возможность для расширения количества подключаемых устройств в будущем.
Этим критериям соответствует модуль EV3 из набора Lego Mindstorms EV3.
Мы определились, что будем использовать в наших устройствах микроконтроллеры Atmel серии AVR. Теперь нам нужно выбрать конкретные типы микроконтроллеров. В качестве основного критерия выбора должна стать небольшая стоимость чипа. Это объясняется тем, что устройства этого блога позиционируются как вспомогательные (вторичные) для Ваших проектов (незря название блога созвучно с Get Cheap – сделай дешевле!). Второй критерий — популярность чипа, а значит и его доступность. Исходя из этих критериев, представляю три основных микроконтроллера, на которых будут собраны устройства блога.
Конечно же, первым в списке должен стать ATTiny2313. Один из самых дешевых в серии AVR. Очень распространен. Наверное Вы не найдете ни одного магазина электроники где бы его Вам не продали.
Более подробный обзор ATTiny2313 >
Далее по списку идет ATMega48 не намного дороже предыдущего, но гораздо функциональнее. Чуть менее доступен, но тоже популярный.
Подробней про ATMega48 >
И напоследок ATTiny13 – восьминогая крошка, наверно, с самой маленькой ценой и довольно интересной функциональностью.
Читаем больше про ATTiny13>
Хотя я и буду максимально придерживаться этих трех микроконтроллеров в своих разработках, но в случае боле оправданного использования других микроконтроллеров – они будут использованы.
Читайте также: