Часто у начинающих ардуинщиков и более продвинутых пользователей возникает проблема: памяти микроконтроллера недостаточно или наоборот, слишком много. Основная часть моделей имеет объем памяти 32к или 256к. С портами ввода/вывода ситуация не сильно лучше. Конечно, есть расширители портов, но тогда придется менять логику программы. Одним словом тупик. И выход есть - создать свою копию Arduino на другом микроконтроллере.

Предупреждение

Перед использованием схем из этой статьи, проверьте, все ли в порядке. Я тоже могу допустить ошибку. Если вы это заметили, напишите в комментарии.

Выбираем микроконтроллер под свои задачи

Выбирая МК, нужно определить основные параметры:

  • Память Flash

  • Память SRAM

  • Память EEPROM

  • Кол-во линий ввода/вывода

  • Доступные интерфейсы

Большим плюсом при создании платы на базе официально не поддерживаемого МК, будет наличие загрузчика и ядра. Привожу некоторые МК, для которых есть ядро:

МК

Flash, k

SRAM, k

EEPROM, b

Порты

Интерфейсы

Корпус

Atmega16

16

1

512

32

SPI, I2C,UART

DIP40, TQFP44

Atmega32

32

2

1024

32

SPI, I2C,UART

DIP40, TQFP44

Atmega64

64

4

2048

53

SPI, I2C,UART x2

TQFP64

Atmega8

8

1

512

23

SPI, I2C,UART

DIP28, TQFP32

Atmega644

64

4

2048

32

SPI x3, I2C,UART

DIP40, TQFP44

Atmega128

128

4

4096

53

SPI, I2C,UART x2

TQFP64

Atmega640

64

8

2048

86

SPI x5, I2C,UART x4

TQFP100

Atmega1284

128

16

4096

32

SPI x3, I2C,UART x2

DIP40, TQFP44

Главное найти баланс: чтобы желаемого пункта хватало, но не в ущерб остальным характеристикам.

Немного о маркировке МК ATmega

Маркировка МК ATmega обычно интуитивно понятна, в качестве примера разберем маркировку чипа ATmega32l - 8AU. ATmega - семейство МК, 32 - flash память, l - пониженное напряжение питания. Буквы после модели я вынес в таблицу:

Буква

Значение

Нет

Напряжение питания от 4.5 до 5.5

L

Напряжение питания от 2.7 до 5.5

V

Напряжение питания от 1.8 до 5.5

U

Напряжение питания от 0.7 до 5.5

P

Потребление 100нА в режиме Power-down

A

Уменьшен ток потребления, перекрывается весь диапазон тактовых частот всех версий, напряжение питания 1,8 - 5,5 вольт

Надо учитывать, что микроконтроллер без буквы в обозначении может иметь пониженное напряжение питания, это нужно проверять по документации.

Тактирование

После выбора микроконтроллера под свои задачи можно переходить к проектированию схемы. Сначала находим пины XTAL1 и XTAL2. К ним мы подключаем кварц. Сейчас их достаточно много - есть и со встроенными конденсаторами внутри.

Обычный выводной кварц
Обычный выводной кварц

Для его работы требуется обвязка - два конденсатора на 22 пикофарада.

Схема подключения кварца, линии от X1 идут к XTAL1 и XTAL2
Схема подключения кварца, линии от X1 идут к XTAL1 и XTAL2

Также существуют другие варианты - со встроенными конденсаторами и в других корпусах, включая SMD. Если в кварце уже есть конденсатор, то дополнительные не нужны, подключаем напрямую к XTAL1 и XTAL2.

Далее гуглим "НАЗВАНИЕ_МК максимальная частота". Для примера я загуглил "Atmega32l-8au максимальная частота". Почти гарантировано вы увидите строчку:

В этом случае смысла во внешнем кварце нет, можно использовать внутренний генератор. В большинстве случаев частота работы 16 МГц, иногда 20 МГц.

Корпус

Здесь все сводится к размерам и удобству сборки. Некоторые МК выпускаются только в SMD - в основном из-за огромного количества портов. Самые крупные выводные МК обычно выпускаются в корпусе DIP-40. Те, которые имеют 100+ выводов, конечно, идут в SMD. Паяльником реально припаять корпус TQFP-44 - ATmega16/32. Больше - я не пробовал, если у вас есть опыт - отпишите в комментарии. Однако, китайцы, если заказать у них печатную плату, могут нам припаять МК хоть TQFP-100. Естественно, это недёшево, но когда очень большая партия - это единственный выход.

Прошивка

Если мы копируем Arduino, нам необходимо добавить возможность прошивки через бутлоадер - загрузчик, через разъем USB. Существуют специализированные микросхемы - CH340, FT232, CP2102. На оригинальных Arduino для загрузки прошивки используется отдельный камень - Atmega8u2/16u2 со своей прошивкой и аппаратным USB. Я сам использую чип CH340C. Некоторые на него жалуются, но у меня все достаточно хорошо. Прилагаю рекомендуемую схему подключения:

Итоговая схема

Итак, сложим все требования воедино. Я хочу Atmega32l на частоте 8МГц с прошивкой по USB. У меня получилось это:

Итоговая схема
Итоговая схема

Вывод

Создание своего клона Arduino имеет смысл, если вам не хватает мощности UNO, а MEGA использовать нецелесообразно, а также хочется иметь USB порт для прошивки.

Надеюсь, что статья была вам полезна, и вы узнали что-то новое. Если есть вопросы или замечания, напишите в комментарии, спасибо за дочитывание статьи, пока!

Комментарии (15)


  1. VolodjaT
    09.12.2021 12:52
    +2

    А зачем создавать свою модификацию ардуино если есть навык создания печатных плат? Почему сразу не делать нужное устройство?


    1. AlexTutorialYT Автор
      09.12.2021 12:55

      Arduino - плата для макетирования и отладки. Значит, наша плата тоже для макетирования и отладки


      1. VolodjaT
        09.12.2021 14:31
        +1

        Ну отлаживать на макетке если уж возникла проблема нехватки пинов - таке себе (аж страшно какой это клубок проводов)


    1. COKPOWEHEU
      09.12.2021 16:50

      Смысл-то есть. Я недавно сделал себе клон, просто потому что нужная обвязка уже была, а покупать целую Ардуину не хотелось. Заодно предусмотрел на плате второй светодиод, кнопку и обвязку для vusb.
      Но основное назначение у Ардуины — тестировать периферию на скетчах от производителей чтобы было на что ориентироваться при переписывании по-человечески для использования.


  1. Gengenid
    09.12.2021 12:54
    +6

    Это вредные советы?

    В этом случае смысла во внешнем кварце нет, можно использовать внутренний генератор.

    UART без кварца? Отлично, просто отлично.


    1. AlexTutorialYT Автор
      09.12.2021 13:12
      -3

      Atmega328 шьется по uart на внутреннем клоке.


      1. Gengenid
        09.12.2021 13:26
        +4

        Толерантность UART к изменению частоты тактирования примерно +-3%

        А это графики частоты внутреннего RC-генератора для вашего контроллера в зависимости от напряжения питания и температуры.

        Сами выводы сделаете?


        1. Engenigger
          09.12.2021 14:18
          +1

          Для целей прошивки внутреннего RC более чем достаточно.
          Лично я как-то не представляю себе разработчика, программирующего МК в неотапливаемом ангаре глубокой зимой на Севере от маломощного источника питания, который просаживается до 3 В. )))


          1. Polaris99
            09.12.2021 16:02
            +4

            Уже на 115200 могут возникнуть проблемы даже при комнатной температуре. Но у ардуинщиков всегда так - я с этим не сталкивался, значит, этого не существует.


  1. Elsajalee
    09.12.2021 13:00

    Была ли у вас проблема нехватки памяти/пинов?

    Проблема нехватки ног у МК - была. Было ли это проблемой для меня - нет.


    1. drWhy
      09.12.2021 15:43

      К тому же вариант 3 голосовалки может быть следствием варианта 1, но это тоже не проблема ;)


  1. forthuser
    09.12.2021 13:27

    Не проще ли закопать «стюардессу» при наличии других лучших альтернатив, даже с учётом рекламируемого кризиса полупроводниковой промышленности? ????

    P.S. В Ардуино же, если её самостоятельно изготавливать, то имеет смысл и добавить память и другие нужные модули в конструктиве одной платы.


  1. lenz1986
    09.12.2021 18:31

    <тут должна быть картинка про троллейбус из хлеба>

    Логический смысл статьи был бы понятен в случае если бы это решение вдруг стоило копейки... НО изобретать велосипед... Заходим на Али, забиваем Ардуино и выбираем под любой вкус и цвет....

    Ну и второй момент ..... Ардуино - это все таки ИДЕ а не конкретная плата на Атмеге


    1. COKPOWEHEU
      10.12.2021 09:09

      Логический смысл статьи непонятен в любом случае. Рассмотрены разные камни, но не указано какие с ними будут проблемы. Не указано даже каким реальным портам соответствуют богомерзкие digitalWrite. Много времени уделено переходнику usb-uart, но ни слова про загрузчик. Как его настроить, собрать, прошить, где его взять?
      О чем вообще статья, что хотел сказать автор?


  1. unsignedchar
    09.12.2021 22:34

    Если уж упарываться в изготовление плат и пайку SMD, может, сразу делать готовое устройство? Или прототип устройства? Ведь если вдруг не хватает ног - значит, какая то периферия уже есть, может, имеет смысл сделать всё сразу на одной плате без пучка проводов?