Qrduino~

Купить Qrduino~

avito
Qrduino PDF Attiny1616 PDF megaTinyCore Примеры»

Руководство


Qrduino~ Qrduino~ pins

Qrduino~
razmer

Введение:

Многие 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. Надо заметить, что для более продвинутого программирования с настройкой периферии через регистры, даташит для этого микроконтроллера написан очень доступно для понимания, удобен и легко читаем.

Давайте рассмотрим характеристики ATtiny1616:

  • ЦП (CPU):
  • AVR® 8-битный процессор
  • Работает на частоте до 20 МГц
  • Доступ к входам/выходам (I/O) за один такт
  • Контроллер прерываний с двумя уровнями
  • Умножитель, выполняющий умножение за два такта
  • Память (Memories):
  • 16 КБ (Flash memory) флеш-памяти, программируется, когда микроконтроллер прямо в схеме устройства, с помощью специального интерфейса UPDI
  • 256 байт EEPROM
  • 2 КБ ОЗУ (SRAM)
  • Стойкость к циклам записи/стирания:
  • Флеш-память: 10 000 циклов
  • EEPROM: 100 000 циклов
  • Сохранение данных: 20 лет при температуре 85°C
  • Система (System):
  • Power-on Reset (POR) — Сброс при включении питания
  • Brown-out Detection (BOD) — Обнаружение понижения напряжения питания
  • Варианты внутренних и внешних тактовых сигналов:
  • Внутренний RC-генератор 16/20 МГц с пониженным энергопотреблением
  • Внутренний RC-генератор с ультранизким энергопотреблением (ULP) на 32,768 кГц с точностью ±10%, шаг калибровки ±2%
  • Внешний кварцевый генератор на 32,768 кГц
  • Внешний тактовый вход
  • Интерфейс программирования и отладки по одному выводу (UPDI)
  • Три режима сна (Sleep modes):
  • Режим простоя (Idle) с активной периферией для немедленного пробуждения
  • Режимы энергосбережения (Standby):
  • Настраиваемая работа выбранной периферии
  • Работа периферии в режиме "SleepWalking" (Пробуждение периферии без пробуждения ядра)
  • (Power-down) Отключение питания с ограниченной функцией пробуждения
  • Периферийные устройства (Peripherals):
  • Один 16-битный таймер/счетчик типа A с выделенным регистром периода, тремя каналами сравнения (TCA)
  • Два 16-битных таймера/счетчика типа B с входом захвата (TCB)
  • Один 12-битный таймер/счетчик типа D, оптимизированный для управляющих приложений (TCD)
  • 16-битный счетчик реального времени (RTC), работающий от внешнего кварца, внешнего тактового сигнала или внутреннего RC-генератора
  • Один USART с дробным генератором скорости передачи данных, автоопределением скорости и детекцией начала кадра
  • SPI интерфейс (Master/slave Serial Peripheral Interface)
  • Интерфейс I²C (Master/slave) с двойной адресацией:
  • Стандартный режим (Sm, 100 кГц)
  • Быстрый режим (Fm, 400 кГц)
  • Быстрый режим плюс (Fm+, 1 МГц)
  • Настраиваемая логика пользовательских функций (CCL) с двумя программируемыми таблицами поиска (LUT)
  • Три аналоговых компаратора (AC) с низким временем задержки
  • Два 10-битных АЦП на 115 тыс. выборок в секунду (kSPS) (ADC)
  • Три 8-битных цифро-аналоговых преобразователя (DAC) с одним внешним каналом
  • Пять внутренних опорных напряжений: 0.55В, 1.1В, 1.5В, 2.5В и 4.3В
  • Автоматическая проверка целостности памяти с использованием CRC (Automated CRC memory scan)
  • Таймер сторожевого режима с отдельным встроенным генератором (Window Watchdog Timer, WDT)
  • Контроллер сенсорных датчиков (Peripheral Touch Controller, PTC):
  • Сенсорные кнопки, ползунки и колесики
  • Пробуждение при касании
  • Управляемое экранирование для улучшения защиты от влаги и шумов
  • Поддержка до 12 каналов самоемкости и до 36 каналов взаимной емкости
  • Внешние прерывания на всех доступных выводах общего назначения
  • Ввод/вывод и корпус (I/O and Packages):
  • 18 программируемых линий ввода/вывода (I/O)
  • 20-контактный корпус QFN размером 3 мм × 3 мм (Только для ATtiny1616)
  • 20-контактный корпус SOIC300
  • Температурные диапазоны (Temperature Ranges):
  • -40°C до 105°C
  • -40°C до 125°C
  • Скорости работы (Speed Grades):
  • 0-5 МГц @ 1.8В – 5.5В
  • 0-10 МГц @ 2.7В – 5.5В
  • 0-20 МГц @ 4.5В – 5.5В
  • Теперь интересные особенности ATtiny1616:

  • АЦП есть на всех цифровых выводах кроме двух (16 входов, с учетом пина UPDI)
  • Есть Контроллер сенсорных панелей или кнопок
  • Есть ЦАП 8-битный цифро-аналоговый преобразователь для генерации аналоговых сигналов
  • Есть Блок конфигурируемой логики, позволяющий реализовывать простые логические схемы внутри микроконтроллера
  • Event System: Система событий, позволяющая периферийным модулям взаимодействовать без участия центрального процессора
  • UPDI (Unified Program and Debug Interface): Однопроводный интерфейс для программирования и отладки микроконтроллера
  • Имеет 16 битные таймеры
  • Каждый пин может использоваться как цифровой вход\выход
  • Разные интерфейсы
  • Есть счетчик реального времени(RTC - Real-Time Counter)
  • Удобное питание 1.8 - 5 Вольт
  • Теперь о плате Qrduino~

    На самом деле, плата - это всего лишь переходник – адаптер размером платы - 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, особенно, когда очень ограничено пространство. «~» - это просто для стиля.

    Первая программа, или как начать пользоваться Qrduino~:

    Итак, Attiny1616 очень интересен в программировании, он использует для этого всего один контакт, этот интерфейс называется UPDI. Соответственно, может и не получиться воткнуть эту платку в USB и запрограммировать как обычную Arduino, но благодаря одному проекту - jtag2updi, это можно сделать через Arduino, и достаточно не сложно.

    Подготовьте следующее для сборки программатора jtag2updi:

  • Arduino nano на чипе atmega328p
  • 4.7кОм резистор
  • Конденсатор керамический 10МКФ (или обычный электролитический)
  • Маленький кусок текстолита
  • Нажимные контакты 3 шт они называются («погопин» PA50-B1)
  • Порядок сборки:

  • Сначала Загрузите прошивку jtag2updi с сайта Github. И запрограммируйте в Arduino. Важно этот пункт сделать первым.
  • Возьмите кусок текстолита и канцелярским ножом прорежьте 3 полосы – сюда будут припаиваться нажимные контакты.
  • Припаяйте контакты, на расстоянии друг от друга примерно 1мм(ориентируйтесь на контакты Qrduino –VCC, GND и UPDI.):

  • programator
  • Приклейте на цианакрилатный клей эту плату с контактами к нижней части Arduino:

  • programator
  • Припаяйте конденсатор на контакты Arduino между «GND» и «RESET».
  • Припаяйте один конец резистора на контакт Arduino D6.
  • На другой конец резистора припаяйте провод, далее напаяйте его на нажимной контакт. (он как раз пойдет на UPDI платки Qrduino).
  • Припаяйте еще два контакта от платы Arduino 5v и GND к нажимным:

  • programator
  • Усадите в термоусадку, подрежьте «окошко» для кнопки и светодиодов:

  • programator
  • Программатор готов:

  • programator

    Далее программная часть:

    У вас уже установлена последняя версия IDE Arduino, теперь вам нужно установить ядро megaTinyCore. Для этого просто зайдите в настройки IDE, «File -> Preferences». И в Поле «Additional Boards Manager URLs» вставьте ссылку -

    http://drazzy.com/package_drazzy.com_index.json

    Затем найдете это ядро в менеджере плат, установите последнюю версию. Далее в списке плат, выберите megaTinyCore и выберите серию, где присутствует Attiny1616:


    IDE

    И выберете чип:


    IDE

    Так же выберете программатор «jtag2updi»:


    IDE

    Готово! Теперь можно писать первый скетч для платки Qrduino.

    Обратите внимание, что обращение к пинам немного под другим форматом, но в целом все тоже самое. На изображении распиновки Qrduino, расписано на каждом контакте как обращаться к пинам в IDE Arduino. Все очень просто:

    pinMode(PIN_PB3, OUTPUT);

    digitalWrite(PIN_PB3, HIGH);

    Более подробную информацию по всем нюансам работы с этим чипом в IDE Arduino почитайте на сайте github ядро megaTinyCore.

    Так же для более продвинутого программирования обращайтесь к оригиналу даташита Attiny1616.

    Примечания для платы Qrduino~

    Примечание1: Плата тонкая, переходные отверстия микро-маленькие, рекомендуется соблюдать температурный режим припайки контактов к плате Qrduino - не более 270 градусов целься.

    Примечание2: Монитор порта через интерфейс UPDI недоступен. Но поскольку в этом чипе есть интерфейс uart, то монитор порта можно реализовать через FTDI адаптер.

    Примечание3: Учтите, в микроконтроллере attiny1616 другая архитектура, и не стоит ожидать, что все библиотеки, используемые для Arduino, будут работать в Qrduino. В описании ядра некоторая информация об этом есть.

    Примечание4: Все приведенные примеры проверены на практике и работают. проверены были в версии IDE Arduino 2.3.3 и версии ядра megaTinyCore 1.5.2.

    Примечание5: Пару слов о сенсорном контроллере (PTC). В даташите микроконтроллера Attiny1616 производитель не предоставляет прямого управления этим контроллером с помощью регистров. Управление возможно только через официальную модульную библиотеку ptc_touch, которая работает в Microchip Studio. Так же появилась библиотека для IDE Arduino ptc_touch.

    Периферия attiny1616 в таблице


    pereph

    Конфигурация выводов attiny1616


    pinconfig

    Как чип расположен на плате Qrduino~


    chippins Примеры »