Sleeping Beauty Bare Bone – Спящая красавица, обнаженная кость.Вот таким несколько странным сочетанием решили обозвать разработчики еще одной ардуино-совместимой платы свое творение. Немного предыстории о том, как я вышел на сборку данной ардуины: развитие программной части среды разработки (IDE) концепции Ардуино не стоит на месте, причем не только добавляется поддержка нового железа, но вместе с этим даже древние модели ардуин, в том числе UNO (являющаяся приемником еще более старинной Duemilanove), в новых версиях среды разработки продолжают поддерживаться и имеют возможность использовать все большее и большее количество библиотек включенных уже в комплект, или теперь доступных для скачивания из официального репозитория (средствами IDE). Свистопляски и танцы вокруг совместимости связанной с версионностью IDE и библиотек различных авторов, описание которых выходит за рамки данного материала, почти в прошлом. Хотя если вспомнить - это задница еще та … Теперь, большое количество готовых и отлаженных компонент вроде как упрощает создание собственных проектов и работу с разнообразной периферией, а включенность большинства библиотек в комплект IDE вроде как гарантирует совместимость … Очевидно также и то, что на витке своей популярности Ардуино повторяет путь многих других платформ – объем кода растет, а оптимизация снижается. Однако если на других платформах ЭВМ такой подход компенсировался возрастающей производительностью железа – то в случае с Ардуино, платформой на базе микроконтроллеров, где подобной лавинообразной эволюции железа нет (модели микроконтроллеров не устаревают более 10 лет) – все более явно заметна «просадка» железной составляющей перед валом строк неоптимизированного (т.е. в значительной степени бесполезного) кода. Да зачастую дело даже и не в оптимизации, а неуемном стремлении единообразить подходы и методы программирования для микроконтроллеров ориентируясь на обычные ЭВМ – забывая, что применение к микроконтроллерам слоеной «бутербродо-образной» концепции построения кода (объектно-ориентированного программирования, библиотека на библиотеке и т.п.) если не вредно, то только в очень разумных объемах, от чего Ардуино уходит все дальше … Причина – «железная»: контроллеры создаются и существуют для решения узко специфичных задач (зачастую требовательных ко времени исполнения), описанных компактным эффективным кодом – а не для простора программистских изысков в виде многотомных трудов! Да в сторону от абстрактной лирики – к практике! Понятно, что увеличенный форм-фактор ардуино-мега обусловлен тем, что у следующих «по размеру» моделей контроллеров вслед за mega328 (применяемом в старшей модели классической ардуино - UNO) помимо большего объема «внутренних» ресурсов еще и большее количество ног (mega1280, mega2560 - имеют корпуса TQFP-100). Не пропадать же портам ввода вывода – логично, что форм-фактор был увеличен. Однако далеко не всегда требуется большее количество ног, т.е. объективно не часто начинаешь что-нибудь конструировать на «меге» именно по критерию количества портов. А так как большинство щитов рассчитаны на формат классической ардуины, то «выбивающаяся» своим размером из всего пирога щитов основа, ардуина-мега, не придает изящности и удобства использованию всего решения. Вместе с этим в последнее время все чаще сталкиваюсь с ситуацией, когда требуется решить вроде как простую задачу, и даже кода писать много не нужно, т.к. библиотеки для всех компонентов есть в наличии (датчики, дисплеи, интерфейсы, управляющие элементы …), нужно лишь накидать нехитрую логику во взаимодействии всех компонент – фактически вызов разных функций по событиям … И на самом последнем этапе наступает облом! – размер кода превышает, порой существенно, доступную память контроллера mega328 (32кб за вычетом бутлоадера) или вдруг оперативы не хватает (случается и такое, если с массивами работать). Что делать? Ну явных путей два: первый взять ардуино-мега и не париться (благо цены сейчас сильно снизились), при этом забив на габариты и на то, что даже в UNO часть портов оставалась свободной; второй – заняться оптимизацией и кастрацией библиотечного кода (трудоемко, скучно, не универсально) … На такой волне меня давно уже не оставлял в покое вопрос: а почему нет «меги» в форм-факторе «уны»? Да хрен бы с ним, что львиная доля ног осталась бы неиспользованной – ведь нужен именно внутренний ресурс контроллера (память для кода и ОЗУ) и сохранение компактности поделки в целом! Но нет … Хотя если быть совсем честным, то подобная штука существует: Iteaduino MEGA 2560 – только цена о нее космическая (40 баксов), превышает цену меги почти в три раза! За что? За более маленькую плату? (кстати, размер все же чуть длиннее классической ардуины, что не есть гуд …) За идею? – короче тоже не совсем не вариант. И вот в очередной раз в раздумьях на тему «мега в формате уны» наткнулся я на проект под названием Sleeping Beauty (типа, «спящая красавица») … Вау, то что нужно! Хочу, сколько стоит? А… А вот как бы такая ардуина не продается в готовом виде ни на крупных площадках, ни в приватном магазинчике разработчика. Зато есть топология печатной платы, которую можно направить в производство. Плата содержит в основном smd-компоненты, что несколько осложняет не только сам процесс ее рукопашной пайки, но и требует закупки большинства компонентов именно в исполнении smd (лично я имею немалый запас dip-комплектующих, но не smd). Короче оценив затраты, в том числе временные и в том числе на ожидание поставки всякой мелочевки – немного приуныл. Но ниже наткнулся на вариацию «спящей красавицы» со странным суффиксом «обнаженная кость» - лишенную всяких «периферийных вкусностей», но имеющей туже самую концепцию и ядро – контроллер mega1284р в корпусе dip. Технология обкатанная – методом копи-паста заказываю в производство десяток плат (минимальная партия 5, но 10 стоят ровно столько же – чуть дороже доставка, которая и составляет 75% стоимости всей покупки). Производитель проверенный, качество и сроки исполнения на высоте … И вот платы приехали. Белый цвет выбрал я, во-первых оригинально, а во-вторых не видны белесые разводы от спирта после очистки запаянной платы от пасты-флюса. И так. Сборка первой платы, собираем только самое необходимое – светодиоды, конверторы напряжения и рассупуху для питания от внешнего источника отличного от 5в, штыри для rf-модуля не распаиваем … Готовим «ядро» системы – контроллер mega1284р:
Вобщем то и все. Да, еще понадобится «ftdi-кабель», т.к. «голая кость» не содержит на борту преобразователя usb<->com … С начала я огорчался данному факту – но потом решил, что может оно и к лучшему. Ведь преобразователь, выполненный в виде кабеля, выглядит эстетично и удобен в использовании, при этом нужен он только на этапе отладки – в готовом устройстве (если это не периферия для компа), будь он интегрирован (как в официальных ардуинах) – висел бы «мертвым грузом». Распиновку кабеля по цветам – см. на рисунке выше Что оставил не распаянным?
Общее впечатление крайне положительное – имеем не только большее количество памяти, но и возможность более быстрой (в 8 раз) скорости выгрузки скомпилированной программы в контроллер! А еще есть дополнительные пины (над колодкой питания) … MiGeRA (июль 2017) | |