Многие DIY, Arduino разработчики сталкиваются с необходимостью встраивания маленького модуля на микроконтроллере в проект. На данный момент существуют много разных решений по минимизации плат Arduino. Эти решения, в основном, сделаны для простого пользовательского использования, то есть всегда есть usb разъем, разные светодиодные индикаторы, кнопка, кварцевый резонатор, чип с интерфейсным преобразователем, да и сами платы разведены крупно, под максимально комфортную пайку. Но ведь все перечисленное вместе – занимает пространство, и когда в итоге нужно оставить в проекте только функционирование самого микроконтроллера, приходиться так же и оставлять все эти детали, занимающие пространство. Мы сейчас не говорим о случаях, когда вообще можно весь проект развести на плате и отправить на производство, мы говорим о случаях, когда нужно собрать относительно не сложное при этом маленькое устройство, не прибегая к производству печатных плат, за что многие и используют все возможные ардуино и его модули. Что если, мы попробуем убрать все лишнее и оставить только чип? Сразу возникают сложности программирования, настроек тактовой частоты от внутреннего генератора, зависимость от Bootloader и прочее. Именно по этой причине и был разработан Qrduino. Эта крошечная платка на микроконтроллере ATtiny1616 c широкими возможностями требует всего один провод для программирования, Сам процесс программирования происходит просто и быстро – прижимаются три подпружиненных контакта (VCC, GND, UPDI) от программатора к плате и готово!
В 2016 году компания Microchip — приобрела компанию Atmel. В результате этого сотрудничества, Microchip Выпустила новые линейки микроконтроллеров. Одна из таких серий — ATtiny 1-series, включающая микроконтроллеры ATtiny1616, ATtiny3216 и другие модели. Модели ATtiny 1-series были разработаны для обеспечения высокоэффективной работы при низком энергопотреблении и предлагают более продвинутые периферийные возможности по сравнению с предыдущими поколениями. Именно ATtiny1616 из-за компактных размеров, доступности и впечатляющих функций стал основой для проекта Qrduino. Этот проект разрабатывался как самая маленькая и мощная Ардуина, и предполагает во многом, где требуется компактность устройства, использоваться в место привычного Arduino. Микроконтроллер выпускается в корпусе QFN20(3x3мм), что является одним из самых компактных корпусов. Конечно же, для этих линеек чипов уже есть ядро на просторах github - «megaTinyCore», соответственно, программировать ATtiny1616 можно с помощью ардуиновских библиотек и функций в IDE Arduino и в IDE Platformio. Надо заметить, что для более продвинутого программирования с настройкой периферии через регистры, даташит для этого микроконтроллера написан очень доступно для понимания, удобен и легко читаем.
На самом деле, плата - это всего лишь переходник – адаптер размером платы - 6.1x7.6mm для микроконтроллера ATtiny1616 в корпусе QFN(3x3мм). Но спроектирована она максимально компактно на пороге возможностей любительских, радио-монтажных навыков. Так же, она имеет удобное расположение пинов для питания и программирования дублированные на обеих сторонах, все 3 контакта идут в ряд, что позволяет создать программатор с тремя нажимными контактами для очень легкого и быстрого программирования платы. Некоторые площадки так же продублированы на лицевую сторону. Каждый контакт на документальном изображении расписан максимально полно, умещена полная информация из даташита для конкретного пина. На контакты «VDD» и «GND» припаян конденсатор, и в проектах, питание можно подпаивать на эти же контакты, лучше использовать какой-нибудь МГТФ провод малого диаметра. Так же на плате уместился светодиод.
В новой версии Qrduino~ появился втроеный делитель напряжения от 0 до 24 вольт. На кртинке с распиновкой можно заметить контакт "ADC АЦП (0-24v)" это и есть он. Это удобство позволяет напрямую подключать измеряемые напряжения без дополнительных резисторов. Эта обвязка также имеет конденсатор на 100nf для помехоподавления. Делитель подключен к контакту PIN_PA5. При этом сама площадка на стороне "сетки" контактов подключена напрямую, а площадка делителя напряжения(на лийцевой стороне ADC АЦП) подключена через делитель как дополнение.
На обратной стороне контакты выполнены в виде сетки, это сделано ради максимального уменьшения платы, ведь именно в этом смысл проекта, так же упрощает навигацию по пинам. Такое маленькое изготовление платы, с очень маленькими переходными отверстиями требует 6-ой (предельный) уровень сложности на заводе, все ради того, что бы сэкономить как можно больше пространства, но при этом площадки контактов 1.1x1.1mm, что хоть и является чуть сложнее, но вполне доступным для пайки.
Универсальность входного напряжения Attiny1616 (1.8V-5V), позволяет очень гибко использовать Qrduino без дополнительных конверторов и стабилизаторов для встраивания в системы, или для проектов на литий-ионых аккумулятора и батарейках.
Почему Qrduino название проекта? Все очень просто, буква «Q» взята из названия корпуса ATtiny1616 «QFN» а окончание «rduino» означает, что эту плату можно легко приобщить к проектам Arduino, пользоваться библиотеками в привычном Arduino коде, и пользоваться ей вместо платы Arduino, особенно, когда очень ограничено пространство. «~» - это просто для стиля.
Итак, Attiny1616 очень интересен в программировании, он использует для этого всего один контакт, этот интерфейс называется UPDI. Соответственно, может и не получиться воткнуть эту платку в USB и запрограммировать как обычную Arduino, но благодаря одному проекту - jtag2updi, это можно сделать через Arduino, и достаточно не сложно.
У вас уже установлена последняя версия IDE Arduino, теперь вам нужно установить ядро megaTinyCore. Для этого просто зайдите в настройки IDE, «File -> Preferences». И в Поле «Additional Boards Manager URLs» вставьте ссылку -
http://drazzy.com/package_drazzy.com_index.json
Затем найдете это ядро в менеджере плат, установите последнюю версию. Далее в списке плат, выберите megaTinyCore и выберите серию, где присутствует Attiny1616:
И выберете чип:
Так же выберете программатор «jtag2updi»:
Готово! Теперь можно писать первый скетч для платки Qrduino.
Обратите внимание, что обращение к пинам немного под другим форматом, но в целом все тоже самое. На изображении распиновки Qrduino, расписано на каждом контакте как обращаться к пинам в IDE Arduino. Все очень просто:
pinMode(PIN_PB3, OUTPUT);
digitalWrite(PIN_PB3, HIGH);
Более подробную информацию по всем нюансам работы с этим чипом в IDE Arduino почитайте на сайте github ядро megaTinyCore.
Так же для более продвинутого программирования обращайтесь к оригиналу даташита Attiny1616.