Продолжаю перебирать все мои Ардуинки и делиться опытом работы с ними.
В прошлый раз я выдал базу про платы, начавшие свою жизнь как официальные продукты Arduino. Но время показывает, что истинная сила платформы скрывалась не в конкретных Uno и Nano, а в открытости и расширяемости. В этой и следующей части речь пойдёт уже о сторонних решениях, разработанных и поддержанных в Arduino IDE творческими усилиями множества энтузиастов.
Сегодня это будут довольно редкоземельные элементы — платы, не так часто встречающиеся в самоделках. Но возможно, это именно то, что вы искали для решения какой-то особенно нестандартной задачи. А я расскажу о некоторых связанных с ними граблях, по которым уже сплясал лично, чтобы вам не пришлось повторять этого дома.
▍ Расширяемость
Хотя внешне Arduino IDE выглядит крайне аскетично, а интерфейс неудобен и откровенно устарел, её внутренний мир скрывает одну сильную сторону: расширяемость. Правда, появилась она не сразу.
Ассортимент оригинальных плат Arduino на микроконтроллерах ATmega постоянно рос, и как вы знаете из предыдущей части, в итоге их набралось буквально десятки. После заключения соглашения с Arm его пополнили новые платы на соответствующих 32-битных микроконтроллерах, для которых, разумеется, потребовался совершенно другой набор инструментов разработки, включая компилятор C++ и прошиваемый в микроконтроллер загрузчик скетчей.
Это расширение было реализовано полностью прозрачным для пользователя образом. Для пользователей внешне ничего не поменялось — та же самая IDE и редактор, та же архитектура Wiring с её основными функциями, те же самые библиотеки. Переход на другую архитектуру сводится к простому выбору платы из списка. На практике, конечно, были нюансы, но всё же, это значительно проще, чем полная смена средств разработки ради перехода на микроконтроллеры другой архитектуры — процесс, который являлся нормой раньше.
Выбор платы в Arduino IDE
Внутри Arduino IDE предусмотрен так называемый Менеджер плат, хотя можно сказать, что это скорее менеджер платформ. Поддержка новых плат добавляется из пакетов, скачиваемых из Интернета. Часть из них встроена в IDE из коробки (в виде предустановленных ссылок в настройках), а также можно добавлять ссылки на сторонние пакеты. В одном пакете может быть поддержано целое семейство плат на каком-либо микроконтроллере. В нём содержатся не только все необходимые инструменты, одинаково скрытые от пользователя за кнопкой компиляции и загрузки скетча, но и набор примеров использования плат из пакета.
Это открыло возможность добавления в IDE не только официально поддерживаемых компанией Arduino плат, но и решения сторонних разработчиков, с другими микроконтроллерными архитектурами и своими компиляторами. Для добавления поддержки разработчику платы достаточно подготовить соответствующий пакет и выложить его в Интернет, а пользователю нужно только добавить ссылку на него в настройки IDE и установить пакет из Менеджера плат.
После установки пакета нужная плата выбирается из списка, после чего в IDE появляются соответствующие настройки, которые могут отличаться у разных плат — опции загрузчика, выбор способа и скорости загрузки, включение и выключение средств отладки, варианты распределения памяти, скорости работы и так далее.
▍ Arduino на ATtiny
Как вы могли понять по табличке в предыдущей части статьи, все оригинальные платы Arduino построены на контроллерах серии ATmega. Действительно, официальных плат на других 8-битных контроллерах не было, и далее оригинальные Arduino развивались в направлении 32-разрядных контроллеров с ядром ARM от Atmel и других производителей.
Однако сторонние разработчики не растерялись и создали ряд Arduino-совместимых плат на младшем, более слабом семействе микроконтроллеров от той же Atmel — ATtiny.
Табличка из Интернета со сравнением ATmega и ATtiny и указанием цены чипов (2013 год)
В своё время, в начале 2000-х годов, существование двух разных схожих линеек микроконтроллеров — ATmega и ATtiny — имело вполне определённый смысл. Их заметно меньший объём памяти, более простая периферия, и особенно корпуса с малым количеством выводов обеспечивали заметную разницу в стоимости, и в устройствах с большими тиражами это могло сыграть свою роль.
Если честно, ума не приложу, зачем это может быть нужно сейчас, спустя 20 лет, когда те и другие микроконтроллеры устарели и стоят плюс-минус одинаково, а им на смену пришли более мощные и при этом менее дорогие альтернативы. И тем не менее, платы на ATtiny существуют и с ними можно работать в экосистеме Arduino.
Из-за меньших тиражей платы на ATtiny в рознице стоят ненамного дешевле, сколько самая популярная Nano, но заметно уступают ей в возможностях. К тому же, есть более дешёвые совместимые аналоги Nano и даже Pro Mini на китайских чипах-клонах. Поэтому повод применять их в проектах найти не так-то просто. Вероятно, эти платы можно использовать для отладки проектов, которые впоследствии тиражируются уже на голом ATtiny внутри устройства, что действительно всё ещё может снизить себестоимость.
Разные и одинаковые платки на микроконтроллерах ATtiny
Загрузка скетчей из Arduino IDE в такие платы осуществляется по-человечески, через разъём USB. Но технически это реализовано иначе, чем в оригинальных Arduino: без микросхемы USB-UART моста, с помощью загрузчика под названием Micronucleus, работающего на самом ATtiny. Для коммуникации с ПК в нём используется программная реализация V-USB, которая занимает довольно много места, и для пользовательского кода остаётся около 6 килобайт Flash-памяти. Зато ОЗУ почти полностью свободно.
За счёт реализации V-USB платы также способны работать в режиме USB HID устройства, на них теоретически можно сделать низкоскоростные USB-устройства. Например, джойстик или клавиатуру — если, конечно, для этих целей хватит линий ввода-вывода.
Приобретённые платы могут быть с уже прошитым Micronucleus правильной версии, но могут быть и с такой, которую не понимает загрузчик в Arduino IDE, и тогда надо предпринимать ряд действий, чтобы прошить загрузчик, и это будет целая отдельная история. К счастью, мне такие платы не попадались, все они сразу работали из коробки.
Загрузка скетча в платы с Micronucleus происходит несколько иначе, чем обычно. Нужно отключить плату от компьютера и нажать кнопку загрузки в IDE. Когда код скомпилируется, появится предложение подключить плату к USB в течение 60 секунд. После подключения загрузка происходит автоматически, и надо заметить, практически моментально, чего не скажешь о многих других платах.
Есть два основных вида плат на ATtiny, и у меня в коллекции есть по одному представителю каждого из них.
Плата MH-ET Live Tiny88
Первый — плата MH-ET Live Tiny88 на микроконтроллере ATtiny88. По размеру она как Nano, имеет довольно много пинов. Контроллер пятивольтовый, 16 мегагерц, 8 килобайт Flash-памяти, 512 байт ОЗУ, 64 байта EEPROM. Из заметных отличий в периферии — отсутствует USART, то есть нет вывода в Serial.
Микроконтроллер ATtiny88 на плате Tiny88
В сети есть подробные инструкции, как настроить работу с подобными платами в Arduino IDE, например, у Алекса Гайвера. Я же кратко резюмирую основные моменты. Важно: ссылки в инструкциях устаревают и их приходится искать через поисковик по названию плат, здесь я привожу актуальные на момент написания статьи.
Установленный пакет для работы с платами MH-ET Live
Для начала, конечно, необходимо установить драйвер, без него ничего не получится. Далее добавляем в настройках Arduino IDE в источники для Менеджера плат ссылку на пакет. После этого в Менеджере плат выбираем единственную плату во вновь появившемся разделе MH-ET Live Boards. После установки пакета также появляются примеры работы с платой в разделе примеров MHEtLive.
https://raw.githubusercontent.com/MHEtLive/arduino-boards-index/master/package_mhetlive_index.json
Второй распространённый вид Arduino-совместимых плат на микроконтроллере ATtiny — семейство Digispark от Digistump, а также его китайские клоны. Все платы этого вида представляют собой вариацию одной и той же платы, немного отличающиеся форм-фактором и типом USB-разъёма.
Платы Digispark двух видов на ATtiny85
Построены эти платы на пятивольтовом микроконтроллере ATtiny85. Основные характеристики совпадают с ATtiny88 — 16 мегагерц, 8 килобайт Flash, 512 байт ОЗУ. Отличается объём EEPROM, которого у этой версии значительно больше — 512 байт, а также некоторая периферия.
Микроконтроллер ATtiny 85 на плате Digispark
Пожалуй, главной их особенностью является очень малое количество пинов: всего шесть, и только два из них не имеют каких-либо ограничений по использованию. Поэтому подойдут они для очень ограниченного набора проектов. Но из этого же вытекает и главное преимущество, малогабаритность: это одни из самых компактных Arudino-совместимых плат.
Установленный пакет для работы с платами на ATtiny, включая Digispark
Версию платы с контактными площадками USB прямо на плате довольно удобно использовать с USB-хабом, но весьма неудобно заливать скетч, если плата уже вмонтирована в конструкцию. Этот момент нужно продумывать заранее.
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
Для работы с этими платами также нужно добавить в настройках IDE ссылку на пакет и потом в Менеджере плат установить Digistump AVR Boards. Также есть более свежий альтернативный пакет ATTinyCore, но в настоящий момент ссылка на него работает.
▍ Arduino на STM8
Семейство 8-разрядных микроконтроллеров STM8 от STMicroelectronics появилось в конце 2000-х годов, и предлагалось как недорогая альтернатива популярным контроллерам от Atmel и Microchip. Они действительно очень быстро заполонили нишу встраиваемой электроники, сильно потеснив AVR, но сравнимого успеха среди энтузиастов не получили — вероятно, из-за появления доступных 32-битных контроллеров.
Семейство STM8 включает множество моделей. В среднем они похожи на контроллеры ATmega, со своими плюсами и минусами: примерно такая же производительность, ОЗУ и Flash-память, более гибко конфигурируемая периферия. Главным же плюсом была цена: STM8 значительно дешевле. Собственно, эти контроллеры и вытеснили более дорогостоящие PIC, ATtiny и ATmega.
Через некоторое время появились и максимально дешёвые «ознакомительные» платы на STM8. Поначалу их можно было использовать только с собственной экосистемой от STM, но позже энтузиасты реализовали их поддержку в рамках Arduino IDE, создав таким образом решение, которое иногда называют «Arduino для бедных».
Плата stm8blue
У меня есть парочка одинаковых плат, так называемых stm8blue. Другие платы тоже существуют, в том числе вариация в форм-факторе Arduino Uno, но в дикой природе они мне не встречались. В целом это не очень частый зверь в мире Arduino, и судя по Интернету, энтузиасты их не очень жалуют, вероятно, из-за довольно ограниченной и сырой поддержки. Возможно, поэтому я не встречал их применений в реальных проектах.
Характеристики используемого в stm8blue микроконтроллера STM8S103F3P6 находятся примерно посередине между ATmega и ATtiny: 16 мегагерц, 8 килобайт Flash-памяти, 1 килобайт ОЗУ, 640 байт EEPROM (в три раза более живучего, чем у AVR). Периферия более-менее похожа, в ней есть свои интересные моменты. Например, 96-битный UID для всех чипов.
Микроконтроллер STM8S103F3P6 на плате stm8blue
Раньше я заострял внимание на пятивольтовости контроллеров, и для этого была причина. Вот мы и добрались до неё: с STM8 мы вступаем на трёхвольтовую территорию. STM8S поддерживает напряжения питания от 2.95 до 5.5 вольт, и если он питается от пяти вольт, его логические уровни также будут пятивольтовыми. Но на плате стоит 3.3-вольтовый стабилизатор, и при питании через него уровни должны быть трёхвольтовыми. Я уделю этому вопросу отдельное внимание в следующей части статьи, в которой все контроллеры будут уже исключительно трёхвольтовыми. А пока нужно отметить, что с переходом на 3.3 вольта начинаются проблемы совместимости с существующими модулями расширения.
С моей колокольни мне кажется, что подобные платы и их поддержка в Arduino появились слишком поздно и просто не нашли свою нишу. Возможно, это неплохой малобюджетный стенд для освоения архитектуры STM8, но вряд ли я буду часто использовать их в собственных проектах, так как и возможности довольно скромные, и по цене не сильно дешевле, и с готовыми библиотеками дела обстоят хуже, да и заливать скетчи в них довольно неудобно.
Пожалуй, главным сомнительным решением, связанным с этими платами, является расположенный на них разъём Micro USB. Он наводит на мысль о том, что скетчи загружаются так же легко, как в Arduino Nano, а может быть даже доступна коммуникация по USB, как у плат на ATtiny. Но всё это обман и морок: разъём предназначен исключительно для питания, а линии данных на нём даже не разведены.
Парочка китайских ST-Link v2 и USB-UART адаптеров
Программируется stm8blue подобно Arduino Pro Mini, внешним адаптером. Но и тут всё не так просто: это делается только устройством ST-Link, предназначенным специально для контроллеров STM8 и STM32. Минимальная китайская копия ST-Link v2 сейчас стоит копейки и продаётся на всех маркетплейсах, но в своё время, когда STM8 только пошли в массы, программатор был значительно дороже и не так доступен, и это было не очень приятным препятствием на пути к освоению этой архитектуры.
Подключение stm8blue к ST-Link v2 для загрузки скетча
Для начала работы с ST-Link нужно установить его бесплатный драйвер, который больше нельзя скачать с официального сайта, потому что санкции. Но разумеется, Яндекс (Гугл) — найдётся всё. Как и в случае с USB-UART, полностью готовых кабелей в комплекте нет, но есть провод с отдельными пинами, которыми нужно соединить соответствующие выводы платы и программатора.
Внимание: в разных версиях порядок пинов на программаторе может отличаться от оригинального и идти не по порядку! Во избежание ошибок и для удобства использования лучше спаять провод с нормальными целиковыми разъёмами, подходящими к имеющимся платам и программатору.
Схема подключения ST-Link к плате stm8blue для загрузки скетчей
Поддержка STM8S в Arduino IDE называется Sduino. Как обычно, добавляем в настройках ссылку на пакет для Менеджера плат. Далее в Менеджере плат устанавливаем пакет Sduino.
https://raw.githubusercontent.com/tenbaht/sduino/master/package_sduino_stm8_index.json
Здесь вы сразу обнаружите существенную проблему, связанную с stm8blue: в Arduino IDE для STM8 доступен только компилятор классического С, без плюсов. Это сразу ограничивает выбор доступных библиотек. К тому же компиляция даже пустого проекта неприлично долгая. Используемый здесь компилятор — SDCC, которому я не очень доверяю, так как в прошлом имел богатый опыт его использования на других 8-битных архитектурах, и нередко встречал ситуации, когда заведомо рабочий код не работал.
Установленный пакет Sduino для работы с платами на STM8
Загрузка скетча выполняется без выбора COM-порта (в настройках он есть, можно выбрать любой), простым нажатием кнопки загрузки при подключённой через ST-Link к ПК плате. По крайней мере, в теории. На практике при первых попытках у меня возникла проблема, выглядящая как сообщение «1829 bytes at 0x8000… Tries exceeded», и я потратил немало времени, прежде чем выяснил, что нужно сделать две не самые очевидные вещи.
Во-первых, при загрузке нужно питать плату от внешнего источника, через тот же Micro USB разъём. Вообще-то, это нормальная практика для голых микроконтроллеров, но в данном случае есть вводящие в заблуждение моменты: среди пинов программатора есть питание, а при подключении на плате горит синий светодиод, создавая впечатление наличия питания. Когда всё подключено правильно, с внешним питанием, при прошивке будет помигивать ещё и красный светодиод.
Экран байта конфигурации STM8 в ST Visual Programmer
Во-вторых, плата почему-то приходит с защищённым от записи микроконтроллером, и это мешает Arduino IDE залить скетч. Нужно снять защиту вручную через программу ST Visual Programmer, перезаписав байт конфигурации. В Интернете пишут, что можно также нажать прошивку загрузчика из IDE, и это тоже снимет защиту, но я не пробовал, потому что не ищу лёгких путей.
При использовании дешёвой копии ST-Link в системе не будет виртуального COM-порта и вывода в консоль. Чтобы он появился, нужно использовать оригинальный полноценный программатор или приспособить внешний USB-UART, но я этим не занимался за отсутствием такой необходимости.
▍ Arduino на STM32
Если предыдущие платы на основе самых недорогих микроконтроллеров шли в сторону уменьшения возможностей и были не очень интересны с практической точки зрения, так как подходили для решения более узкого круга задач, платы на 32-битных контроллерах STM32, также известные как Maple и Blue Pill, выглядят значительно интереснее.
STM32 — это уже совсем другой уровень: 32-битная архитектура ARM, увеличенная производительность и объём памяти. На момент своего появления эти контроллеры предлагали выдающиеся характеристики при весьма скромной цене, и за счёт этого быстро вытеснили 8-битные решения от Atmel из значительного объёма встраиваемой электроники. У Atmel тоже были сопоставимые 32-битные решения, сначала собственная архитектура AVR32, потом контроллеры с ядром ARM, но, как я понимаю, они проиграли конкуренцию именно из-за цены.
Изначально поддержка STM32 в Arduino IDE осуществлялась посредством разработанных энтузиастами отладочных плат под названием Maple. Они не смогли завоевать большую популярность, но начало было положено. После открытия исходников Maple сообщество стало развивать программную поддержку, а в Китае начали производить очень недорогую вариацию Maple Mini, которая в народе стала известна как Blue Pill.
Парочка версий Blue Pill из моей коллекции
Мне попадалась платы Blue Pill только одного форм-фактора, в двух вариациях. Обе представляют собой версию Arduino Nano-подобной платы, чуть покрупнее, с немного разной разводкой, но одинаковым функционалом. Существуют и другие платы, но их я в продаже не встречал.
Версия, приобретённая на Али довольно давно: вместо джамперов кнопки, STM32F103CBT6 (128 КБ Flash-памяти)
По сравнению с классическими 8-битными Ардуинами, преимущества Blue Pill заключаются в большом количестве пинов, гибко конфигурируемой периферии, высокой тактовой частоте, большом количестве памяти. В общем, всё в них замечательно, и если бы не контроллеры от Espressif, вероятно, это решение имело бы куда более высокую популярность. Сейчас же это скорее умеренная экзотика.
Версия, доступная в настоящий момент на маркетплейсах: джамперы вместо кнопок, STM32F103C8T6 (64 КБ Flash-памяти)
Платы Blue Pill построены на контроллерах STM32F103C6, STM32F103C8 и STM32F103CB — это ядро ARM Cortex M3, развитая периферия, разный объём Flash-памяти и ОЗУ: 32+10, 64+20 и 128+20 килобайт соответственно.
Тактовая частота составляет 72 мегагерца, что даёт производительность около 90 MIPS (заявляется примерно 1.25 DMIPS на мегагерц) — в пять раз быстрее классических Arduino. Но есть подвох, который присутствует и во многих других микроконтроллерах высокой производительности: это частота ядра, а не всей системы.
Микроконтроллер STM32F103C8T6 на одной плате
Периферия STM32 использует сложную коммутацию и мультиплексирование внутренних шин, что с одной стороны даёт ей очень высокую гибкость, но с другой стороны, она работает на более низкой частоте. Это касается и пинов GPIO: если контроллер ATmega (и Arduino на его основе) может изменять состояние пинов хоть каждый такт работы ядра, у STM32F1 шина работает на частоте 50 МГц или ниже (для снижения потребления, настраивается программой), что ограничивает скорость реакции на внешние события. Впрочем, она всё равно выше, чем у ATmega.
Микроконтроллер STM32F103CBT6 на другой плате
Как и STM8, STM32 трёхвольтовый, что создаёт определённые сложности при переходе с классического Arduino. К счастью, у STM32 есть и так называемые 5V tolerant выводы, то есть некоторые входы способны воспринимать 5-вольтовые логические уровни, и даже если они превышают 3.3 вольта питания, это не повредит контроллер. Выходные уровни всегда трёхвольтовые. Это является одной из полезных особенностей Blue Pill: такие платы можно применять в задачах, где по каким-то причинам требуется осуществлять сопряжение пятивольтовых и трёхвольтовых компонентов.
Установленный пакет для работы с платами на STM32
Программная поддержка STM32 в Arduino IDE называется STM32duino. Она реализована в виде пакета поддержки и загрузчика, прошиваемого в плату. В среду она добавляется как обычно: сначала указывается ссылка в настройках, потом устанавливается пакет из Менеджера плат.
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
или
http://dan.drown.org/stm32duino/package_STM32duino_index.json
К сожалению, из коробки платы Blue Pill идут без загрузчика STM32duino, и это, конечно, значительный недостаток в формате использования в экосистеме Arduino, достаточно существенное препятствие для новичков.
Чтобы начать загружать в Blue Pill скетчи по-человечески, через USB-разъём, нужно сначала прошить соответствующий загрузчик (однократно).
Подключение ST-Link к плате Blue Pill для прошивки загрузчика
К счастью, в отличие от STM8, где это делается только специальным программатором, у STM32 доступны опции: можно использовать тот же ST-Link, а можно любой USB-UART, такой же, каким загружаются скетчи в Arduino Pro Mini. Я не буду подробно описывать этот процесс, так как в Интернете хватает инструкций, например, прямо здесь, на Хабре.
Сам я прошиваю загрузчик через USB-UART, временно припаивая четыре проводка, потому что делал так до приобретения ST-Link, и это работает. Прошивка загружается через Flash Loader Demonstrator от STM, как и в голые контроллеры. В процессе нужно переставлять джамперы или удерживать кнопку, в зависимости от вариации платы.
Подключение USB-UART к плате Blue Pill для прошивки загрузчика
Как я слышал, бывают вариации Blue Pill не на оригинальных контроллерах ST, а на их китайских аналогах с другой маркировкой, и это создаёт какие-то трудности при работе с STM32duino. Ещё упоминаются перемаркированные чипы младших версий (меньше памяти, чем должно быть) и неправильные номиналы резисторов на платах, мешающие процессу прошивки. Но мне проблемные экземпляры пока не попадались.
▍ Продолжение следует
Существуют и более экзотические платы на других микроконтроллерных архитектурах с поддержкой в Arduino IDE. Например, MSP430 от Texas Instruments. Но у меня таких в арсенале пока нет, да и не очень-то они нужны. Как можно понять по сегодняшним примерам, применения их весьма специфичны, а сила Arduino всё же в универсальности.
Почти все мои Ардуинки
Поэтому в следующий раз речь пойдёт о куда более популярном и универсальном семействе, просто-таки открывшем второе дыхание у строителей разнообразных поделок на Arduino — платах на микроконтроллерах ESP8266 и ESP32 от Espressif. Их есть у меня!
© 2024 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT ?
Комментарии (35)
vagon333
19.11.2024 13:44Поэтому в следующий раз речь пойдёт о ... ESP8266 и ESP32 от Espressif.
Ждем!
А если кто еще как обучить ESP32 Cam на распознавание объектов через edgeimpulse.com, так вообще праздник.
ds138
19.11.2024 13:44Что-то мне кажется, что я примерно похожий собиратель всяких платок: от датчиков и крутилок, до стм-ок и апельсинок. Из всех из них впрок куплена оказалась, по большому счёту, только одна: на даче апельсинка исправно трудится в качестве "умного сарая", ну и в квартире ещё одна выполняет летом важную стратегическую функцию: гонять комаров строго по астрономическому времени "от заката до рассвета", да ещё и картинки из общего коридора шлёт по движухе - большей активности ей не выделилось.
Идей было море, но видимо не настолько важными они были и они все утонули во времени, да и работа изрядно времени занимает - не до них становится.shiru8bit Автор
19.11.2024 13:44Да, это факт, очень многие платки годами лежат без дела. Очень часто до них не доходят руки. Или некогда, или надо ждать прочие детали, а пока они соберутся за месяц-другой-третий, уже и забываешь, зачем всё это было надо, и голова полна других идей. Но всё-таки раз в год и Ардуина стреляет. Хотя полезность проектов, в которых я их применяю, тоже под вопросом. Впрочем, мне кажется, всё DIY примерно такое. Типа как покупка 3D принтера, чтобы потом годами его настраивать и совершенствовать, и раз в год печатать какой-нибудь держатель филамента для него же. Деятельность больше ради процесса, а не результата.
nickolaym
19.11.2024 13:44Наверное, смысл в tiny - в меньшем энергопотреблении?
shiru8bit Автор
19.11.2024 13:44Теоретически да, но вроде фактическая разница не особо велика по сравнению с экономией за счёт снижения тактовой частоты и напряжения питания. Хотя, возможно, я просто не сталкивался с задачами, где эта разница может сыграть роль. Я знаю, что в таких случаях снижают напряжение питания до 1.8 вольт, и некоторые версии ATtiny вроде бы могут работать даже от одного вольта. А в проектах самодельных наручных часов предпочитают MSP430 вместо AVR и PIC из-за самого низкого потребления.
okhsunrog
19.11.2024 13:44У nrf52840 очень низкое энергопотребление, в моих часах именно такой чип. Pine64 PineTime часы. Если нужен чип с BLE и очень низким энергопотреблением – nrf52840 однозначно выигрывает у esp32, они очень уж сильно жрут
nixtonixto
19.11.2024 13:44У Tiny обрезанное ядро, упрощённая периферия и уменьшенное количество выводов, из-за чего они в начале нулевых стоили заметно дешевле Mega. По потреблению у всех AVR примерно одинаково, и только у Picopower оно стало чуть ниже.
randomsimplenumber
19.11.2024 13:44У stm32 киллер фича - внутрисхемная отладка через stlink. К сожалению, работает только с debug build, а он получается жырным.
yappari
19.11.2024 13:44жырным
Ну, это же только elf от отладочной информации распухает. С прошиваемым бинарником чуть иная история.
randomsimplenumber
19.11.2024 13:44Хм, а есть способ сгенерировать прошивку с вырезанным debug но точки останова ставить в исходном elf?
yappari
19.11.2024 13:44Без отладочной информации потеряется связь с исходниками, т.е. отлаживать можно будет только по дизассемблеру (проблем поставить бряку нет, достаточно выковырять нужный адрес). Тут вопрос - зачем её вырезать? Прошивка всё равно в бине/хексе, а там этого ничего нет.
randomsimplenumber
19.11.2024 13:44Ну, если прошивка собрана с debug, то можно ставить точки останова и смотреть переменные. Но если не влезет в память, то ой Если собрать без debug, то в память влезет, но с отладкой ой
yappari
19.11.2024 13:44Выглядит так, что в debug помимо отладочной информации в elf (и в саму прошивку) попадают другие отладочные фичи (оно может включаться/выключаться при определении __DEBUG__ или подобного), также скорее всего отключена оптимизация. Скорее всего это причина дополнительного раздувания. Отладочные символы не попадают в прошивку (бинарник), это исключительно внешняя информация. Можно посмотреть флаги, выставить оптимизацию как релиз, но отладочные символы оставить. Хотя в таком режиме отлаживать чуть тяжелее.
tigreavecdesailes
19.11.2024 13:44Attiny85 с micronucleous в формате юсб-флэшки можно увидеть в руках Эллиота в "Мистер Робот" перед тем, как он решает пойти войной на Evil Corp.
Это и правда может быть удобным инструментом для взлома, используя, например, технику bad USB, когда такой контроллер эмулирует HID устройство, например, клавиатуру, запускает хоткеем консоль и вводит там нужные команды.
Tomasina
19.11.2024 13:44Жаль, что не упомянули младшую - ATtiny 10.
shiru8bit Автор
19.11.2024 13:44А есть на ней какие-то подобные платки? Среди установленных пакетов в Arduino IDE самые младшие из поддерживаемых ATtiny24/25. С голыми МК я работал только с 13-ой, 10-ую не пробовал.
nixtonixto
19.11.2024 13:44У 6-ногих AVR другой интерфейс программирования, поэтому они вообще непопулярны.
randomsimplenumber
19.11.2024 13:44Есть ещё замечательные stc8, не требующие совсем никакой обвязки, на них тоже портировано Arduino core.
Javian
19.11.2024 13:44MSP430 можно тоже как Ардуино (Energia IDE).
Using Energia (Arduino) with the MSP430 software-dl.ti.com
Kurochkin
19.11.2024 13:44С msp430 в экосистеме Ардуино всё очень печально. Упомянутая вами IDE Energia - заброшена лет 5-6.
Javian
19.11.2024 13:44Нецелесообразно оказалось. Ардуино слишком грубый инструмент, который не позволит использовать особенности микроконтроллера.
Фактически забивать гвозди микроскопом - использовать эти микроконтроллеры там , где можно использовать более дешевые микросхемы.
NutsUnderline
19.11.2024 13:44arduino прекрасно умеет использовать возможности atmega8, 328, 2560, 32u4 как и задумывалось. а при необходимости можно и дописать, только это будет не совместимо с другими платформами
Javian
19.11.2024 13:44В этих отличиях и смысл использования - низкое энергопотребление, сенсорные входы. Без этого они одинаковые с другими платформами.
randomsimplenumber
19.11.2024 13:44Arduino не запрещает ни малое потребление ни особенные входы. Просто в основе этого фреймворка - бесконечный цикл и таймеры, занятые под счётчик микросекунд и pwn. И все библиотеки ожидают именно такого поведения. Если задействовать общепринятые трюки с играми в low power - программа уровня blink скорее всего заработает, а что то более сложное, с включением чужих либ, скорее всего нет.
JollyRoger000
19.11.2024 13:44Это не проблема msp430. Это типичные грабли ардуинщиков, упираясь в ограничения Ардуино они становятся беспомощными. Ардуино хороша для входа в экосистему микроконтроллеров, но вообще не предназначена для сколько нибудь серьезных проектов.
vrangel
19.11.2024 13:44Решил я первый заказать плату для своего pet проекта на jlcpcb. Проектик тестировал на Ардуино Нано, потратил время на портирование на attiny85, 45. Однако при заказе оказалось, что самый бюджетный вариант - ESP32... Я вот до сих пор думаю, я где-то ошибся или реально такое странное ценообразование.
ITMatika
19.11.2024 13:44Можно подробнее, о чём речь? Голые чипы ESP32 дешевле атмелок? Или итоговые устройства на основе ESP32 дешевле аналогичных на атмелках? Или что?
Kurochkin
19.11.2024 13:44Хм, как бы ESP32 и ATTiny45 настолько разные, что их совсем некорректно сравнивать. При заказе в Китае может оказаться, что в те же деньги оценен и какой-то пожилой SoC MediaTek, на которых штамповали дешёвые смартфоны, но вряд ли он вам подойдёт из-за одной лишь цены.
shiru8bit Автор
19.11.2024 13:44Да, такое бывает, что более мощный МК в рознице дешевле слабенького. Я думаю, дело в объёмах производства и продаж. Платы на Tiny не сказать что сильно востребованы, а ESP32 теперь каждой бочке затычка, особенно с выходом C3-Supermini.
alexhott
19.11.2024 13:44Для изучения брал набор с ардуиной очень давно, поиграл в ArduinoIDE светодиодиком.
Но когда делал первый простой проект, то сначала споткнулся о сопли проводов, а потом не мог запустить отдельно два таймера как мне нужно.
В итоге1 Изготовил плату специально под свое устройство
2 Скачал АтмелСтудию (сейчас микрочип) - это IDE которую производитель чипов распространяет.
Вобщем советую попробовать выйти из Arduino IDE
shiru8bit Автор
19.11.2024 13:44В первой части статьи я упоминал, что вошёл в Arduino IDE после Atmel Studio (тогда ещё AVR Studio 3) и нескольких лет программирования контроллеров AVR на ассемблере.
NutsUnderline
19.11.2024 13:44я не понял зачем за конфигом на stm32 обращаться на какой то левый сайт dan.drown.org
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
shiru8bit Автор
19.11.2024 13:44На момент написания статьи у меня работала только приведённая в ней ссылка.
halfworld
19.11.2024 13:44"Ардуинить" в IDE ещё было можно для attiny13, используя плату Arduino как ISP-программатор.
MrJones
Atmel проиграли не только из-за цены. Сами их контроллеры (AVR32) уступали в удобстве работы и насколько понимаю в периферии, а уже бонусом шла более высокая цена. У тех же ST был удобный HAL и в добавок CubeMX, а так же очень богатая периферия