Pull to refresh

Comments 62

Зачем, упоминание про RuVDS? Готовится новый фемтоспутник на MCU?

Достаточно давно использую под разную мелкую автоматизацию
платы на основе ATmega328 и ATmega2560 с гальванической развязкой по USB.
Даже название им было придумано SafeDuino ещё в 2010 году, но вот дальше
использования под свои свои задачи дело не пошло.
И да микроконтроллеры ATmega328/2560 конечно же устарели причём ещё лет 10-20 назад,
но вот из-за простоты их программирования и высокой надёжности их судьба уже
похожа на таймер NE555, который по временнЫм меркам современной электроники вечен.

Вот мои платы SafeDuino MEGA 328 и SafeDuino MEGA 2560

https://drive.google.com/file/d/1hWr_M0uHy77NYrbYnCi_U0TSU_BmYyu-/view?usp=sharing

https://drive.google.com/file/d/1nWC4PiTc2E2BlAhaDD2i6myoVGcKMUJ_/view?usp=sharing

но вот из-за простоты их программирования и высокой надёжности

Особенно их "простота и надежность" вспоминается после случайно прошитых не тех битов конфигурации.

о да, пока учился на первых 2 курсах легким нажатием мыши "закрыл" наверно шт. 5 МК

Придуманная пятью итальянскими студентами-энтузиастами в 2005 году экосистема Arduino предложила простейшую IDE с программами на языке C

А разве у них был когда-то С? Я видел версии Arduino IDE только с плюсами. Впрочем, баловаться этим я начал достаточно поздно, мог пропустить.

Pro Mini

Pro Micro

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

Arduino LilyPad

Оригиналы вроде уже сняли с производства. По крайней мере на arduino.cc их давно не видать.

Для этих целей на многих платах Arduino предусмотрен шестиконтактный разъём для подключения ICSP-программатора

А еще через этот разъем можно заливать скетчи. Сам программатор можно было сделать из другой ардуины, соединив соответствующим образом пины SPI интерфейсов ардуин программатора и прошиваемой (собственно SPI микроконтроллера на плате и был заведен на этот разъем), предварительно прошив на ардуино-программатор скетч программатора (был в комплекте примеров Arduino IDE). На некоторых платах было важно не перепутать ISP разъем. Второй использовался для прошивки USB-UART преобразователя.

ATmega32u4 используют в MMJoy2 https://forum.il2sturmovik.ru/topic/4664-mmjoy2-бесплатная-прошивка-и-софт-для-самодельного-контроллера-джойстика/ . Для меня это самое заметное использование. Клавиатуры/мыши/трекопойнты/etc тоже вполне можно делать. Эмуляцией клавиатуры можно изобразить "хакерский инструмент", когда вы вставляете якобы флешку, а она типа-нажимает-буквы.

Предпочитаю использовать "чистые" атмеги с avr-libc, которые вместе с библиотеками spi/i2c практически дают комфорт ардуино.
Но что в ардуино действительно мне понравилось и я это перетянул себе, на "чистые" атмеги - это загрузчик urboot.

Он занимает полкилобайта и используется для прошивки контроллера по UART. И плюс в том, что на реальном устройстве не надо делать на плате SPI гребенку для программирования. Достаточно вывести rx/tx UARTa, это на одну ножку меньше SPI, а также позволяет после загрузки контроллера по этому же UARTу смотреть лог!
Аvrdude этот загрузчик поддерживает, а через dtr/cts UARTа может ребутить МК чтобы процедура прошивки была полностью автоматическая.

Да, есть риск, что контроллер однажды "ёкнется" так, что загрузчик будет сломан и понадобится прошивка по SPI и придётся его выпаивать... но вероятность этого небольшая. Загрузчик сам себя никогда не перетрёт, а если "ёкнется" флэш контроллера, то это уже исключительная ситуация сама по себе.

На I2C встречались с зависанием шины намертво? Когда и master и slave остаются в ожидании завершения транзакции и никто не может эту ситуацию прекратить. У нас такое регулярно случалось на atxmega. Помогает только перевод SDA и SCL в GPIO на мастере и установка обоих в 1 (если склероз не врёт).

Сама по себе шина зависнуть не может, это ведь просто 2 дорожки. А deadlock - это логическое состояние, почти всегда следствие ошибки программирования. Разошлась синхрониация, какой-то битик успел поменяться два раза, быстрее чем его код проанализировал, и вот уже обе стороны на шине жрут друг от друга одного и того-же. А план Б - выход из дэдлока - тоже нужно реализовывать вручную на таймаутах.

Там была проблема с железячным модулем в контроллере. Не помню подробностей, но вроде и мастер и слэйв в какой-то момент держали SCL внизу, считая, что её должен отпустить другой. Мы потом увидели это же на китайском GD32F103 и I2C-дисплее.

именно на X, похоже изза наводок, глубоко не копался

В свое время из-за разного скепсиса в сети прошел мимо ардуины, и делал устройства на ассемблере АВР... потом все-таки решил попробовать и жизнь изменилась на до и после. Начинал тоже с UNO/Nano, потом сразу перешел на Due, все-таки 82 МГц. Затем попробовал STM32 bluepill и понеслось: F103, F303, F343, G431, G474 уже на своих платах того же формат, и всё из среды ардуины. Критичные функции на регистрах, а просто индикацию можно и digitalWrite() сделать. Лично мне нравится её компактность, бесплатность и простота организации. Ну не нравится мне код засоренный сотнями <User code begins> <User code ends>.

И вы таки не поверите, но за 10 лет я так ни разу и не воспользовался отладчиком. Из отладки только консоль и осциллограф. Оказалось, что если не понимаешь как оно работает, то лучше разобраться, чем пытаться подгонять.

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

Без отладчика тяжело выявлять ошибки вызванные неправильной компиляцией или сбоями железа.

Без отладчика, конечно, можно жить. Но когда я перешел на стм32 и купил логический анализатор (настоятельно рекомендую логический анализатор), то диву давался, как я вообще раньше жил!

А вот логический анализатор действительно очень крутая штука. Сейчас чиню одну железку на 580ВМ80, и он крайне пригодился бы. Кажется, пора обзавестись.

Осциллограф. Нет сигнала - обрыв, нет логических уровней - что то подкорочено.

мой совет брать сразу DSLogic. Удовольствие не дешевое, но его функционал, частота дискретизации, количество каналов не сравнимы с китайскими ноунеймами. Имеется такой на работе - очень хороший помощник

за 10 лет я так ни разу и не воспользовался отладчиком

тогда возможно будет еще другое до и после. на avr отладка не очень удобная была, по сути 2-3 интерфейса, но уже подтянули. Но для arm все очень гибко. Плюс, в arduino 2 уже какую то отладку прикрутили.

иногда без отладчика очень тяжело понять где произошел сбой. тот же assert_fault() очень неплохо помогает в отладки новых больших проектов, когда код валится где-то в процессе обработки внешних/внутренних данных или прерываний. А при настройке модуля в составе комплекса на пре-продакшине я часто использую SWO для вывода критичной информации в порт.

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

Думаю пора отвыкать от старого подхода и принимать современные реалии. Отладка в ARM близка к десктопной и позволяет провернуть финты, которые иным образом невозможны. Из крайне полезного - работа с памятью на лету и слежение за доступом к памяти (watchpoint). Про доступ к регистрам периферии вообще молчу, оно и в AVR доступно.

Недавно показал своим падаванам как примерно отследить максимальный размер стека с помощью слежением за доступом к памяти. Смотрели будто это какая-то рокет сайнс, хипстеры, блин. Сначала создают на стеке объекты размером 10 килобайт, потом удивляются.

От ржавых германиевых транзисторов МП42

Это "Жигули" были ржавыми, а у МП42 были красивые блестящие корпуса. В одно время даже покрашенные, причем краска выглядела как бы не лучше, чем на "Жигулях".

Доступные мне в то время транзисторы находились на помойке, поэтому ржавчина — историческая правда.

Хо, я тоже с такого начинал) МП40, МП42, КТ361, микросхемы К155, К176... а на МК перешёл поздно, но первые использовал от МастерКит - это просто распаянный пустой МК AVR + кварц. SEM008 или как-то так назывались.

О, я тоже начинал путь в МК с этих модулей с названием SEM. Один даже сегодня попадался на глаза, лежит с тех времён, ATtiny на квадратной платке.

Есть еще такое чудо - Arduino beetle. Нашел его китайский клон, тоже с монету размерами, но квадратный и с USB-разъемом, как у флешки. По сути, это еще более уменьшенный Arduino Pro Micro на 32u4, т.е. клон Leonardo.

Не знаю, есть ли в нем смысл сейчас, когда примерно столько же стоит Raspberri Pi Pico.

Для меня Arduino Pro Micro оказался хорош тем, что при подключении по USB к компьютеру он может изображать MIDI-устройство, т.е. на него можно играть музыку из всяких секвенсоров вроде Cakewalk и делать синтезаторы.

Кстати, знает кто-нибудь - есть ли другие Arduino-подобные платы, которые умеют из себя MIDI-устройство по USB изображать? Или библиотеки для каких-нибудь Raspberri Pi или STM?

Ого, не встречал такой. В таком же формате есть платы от Digispark на ATtiny, про них будет во второй части. Они умеют изображать USB HID, но реализация программная. С USB есть ещё ESP32 S2 и S3, они могут принимать MIDI.

 Digispark на ATtiny

Тот еще ужас - у меня на нескольких платах слетал загрузчик после нескольких перепрошивок. Доступные ножки в программе использовал все, поэтому делал задержку в начале кода - но не спасло.

В этом проекте, если я правильно понял, MIDI-команды отправляются по USB. А принимать их по USB оно умеет?

Там написано, что посылать MIDI и определяться, как MIDI контроллер он может не только по USB, но еще и про WiFi через WebSocket или через BLE. Про прием ничего не написано.

Принимать MIDI проще. Например.

так наверное везде где есть usb есть реализация midi. тот же самый pro micro может использовать для этого библиотеку lufa а она - для нескольких контроллеров atmel, которые можно купить распаяныt на небольшие платы.

элементарный гуглинг "rp2040 midi synth", "esp32 midi synth", "stm32 midi synth" дает массу ссылок, есть не только синтезаторы но и всякие прочие штуки в тему

Я пару лет назад искал подобную плату с одной-двумя распаянными кнопками. Ничего толком не нашёл кроме Digispark, но у него памяти мало. В результате купил на али металлические bad-usb, но кнопку туда сделать руки так и не дошли. А вот в вашем варианте кнопочку можно приклеить с обратной стороны платы!

Можно, только как плату подключать? Или гребенку с контактами распаять не снизу, а сверху?

Подключать что? Digispark? Можно запитывать от внешнего питания и, насколько я понимаю, прошивать через ISP.

Я про Arduino beetle. Если на него снизу припаять кнопки, к пинам нужные сигналы как подключить? Обычно такую плату через гребёнку к чему-то ещё подключают, вставляя в разъем. Разъем тоже снизу обычно.

Это вопрос уже технический. Можно проводки подпаивать. Можно использовать самодельную гребенку с подпружиненными контактами - просто прислоняем её и давим слегка. Можно в отверстия насовать кабели с пинами типа dupont, рукой давим вбок чтобы контакт не рвался на время прошивки. Решения, конечно, сопливые, но это как всегда временное, на пару раз и всё такое)

Не проще кнопку на проводках прицепить? :)

Да там идея детская: человек втыкает контроллер в ПК, контроллер прикидывается клавиатурой, по нажатию кнопки вводится пароль) Кнопка должна быть нормально закреплена, иначе её быстро оторвут.

Удивительно то, что ничего ардуиноподобного нет. Нашёл только недешевую LILYGO T-Dongle-S3 - но это с ESP32, уже совсем другой уровень. У меня даже идея была развести подобную плату с парой кнопок и светодиодов и заказать в Китае мелкую партию.

Теперь идея понятна. Тогда да, раз больше никакие пины (кроме как для кнопки) не нужны, этот Arduino и правда можно сразу в USB втыкать. Есть даже примеры для эмуляции HID-клавиатуры с помощью Arduino Leonardo, а это его клон и есть.

Правда, чтобы кнопка была нормально закреплена, и не хвататься пальцами за саму плату, лучше её в дополнительный корпус засунуть.

Имхо, всегда считал arduino игрушкой для школьников. Да она проста в понимании, но когда ты понимаешь как работает МК и что происходит когда ты пользуешься ее благами лично у меня происходит когнитивный диссонанс. 4 года из 5 мне в институте рассказывали как правильно строить проекты и писать код для МК и ПЛИС, используя ресурсы по максимуму, в частности для AVR, и тут тебе подкидывают то, с чем разберется даже пятиклассник. Кстати, однажды я уже уперся в ресурсы МК при компиляции проекта. Тогда меня попросили сделать проект для квест-комнаты, где было необходимо по определенной логике управлять 4 RGB-лентами по 100 диодов в каждой, да еще и с эффектами. В итоге пришлось доставать с полки usb-isp программатор, чистить кристалл и переписывать проект в WinAvr с ассемблерными вставками, т.к. заказчик уперся и не хотел тратиться на что-то иное.

заказчик уперся и не хотел тратиться на что-то иное

здесь речь идет про единичный экземпляр или огромную серию? если единичную то стоимость работы должна быть близкой к 0, иначе единичную ардуику на atmel банально дешевле заменить на ардуинку на stm32, и даже код особо не переписывать

именно что единичный. Все квесты обычно же делаются 1 комнатой. По истечении какого-то времени потом переделываются.

А вот на stm32 я все-таки смог его недавно уговорить перейти, разница не сильно велика в цене, камня f103 вполне пока что хватает на загадки, а скорость написания проектов и отладки лично для меня поменялись в лучшую сторону.

А пишу все что на работе, что дома в Eclipse с LL через регистры. Красота, порядок, а главное меньшее время на отладку.

А вот на stm32 я все-таки смог его недавно уговорить перейти, разница не сильно велика в цене,

Разница в цене - сравнима с чашкой кофе. Без булочки даже. Моя не понимать. Или это был элемент квеста, только для программиста? ;)

типа того :) а вообще весомым аргументом стало еще то, что все ардуины которые закупались для квестов просто кончились и новый квест перешел на STM

Еще nano от uno отличается загрузчиком, если залить загрузчик uno в nano, можно выиграть 1.5кб памяти, получить работающий watchdog и быстрый старт платы. Загрузчик nano две секунды держит reset при включении.

Прикольно, не знал, спасибо. Медленный старт на многих платах давно напрягает.

Насколько медленный? Arduino Uno/Nano/Micro почти мгновенно стартуют.

Все Pro Micro, которые у меня есть (десяток, покупал в разных местах) стартуют две секунды. BluePill с обычным загрузчиком стартуют секунд пять, но там есть FastBoot версия загрузчика.

платы на ESP8266 и ESP32 уже догнали Arduino Nano

Перегнали. По крайней мере на AliExpress. Если на Arduino Nano минимальная цена сейчас от 210 рублей с доставкой, то ESP32-C3 SuperMini можно купить за 190 рублей с доставкой. Ну а сравнивать их по возможностям бессмысленно.

Для тех случаев, когда действительно нужен восьмибитный МК, лучше ориентироваться на существенно более дешевый Padauk. Например, даже в Чип и Дип можно купить PFS154-S08 по 20 рублей, а PFS154-S16 по 53 рубля. Про OTP вообще молчу, там же PMS150C-U06 по 11 рублей.

Коробочка какая удачная - как специально под UNO! Где такую брали? :) Или самопечать?

В Леруа-Лемане, недавно, они там ещё есть, под названием органайзер Фолди 31x3.6x19. Да, очень удачно подошло, раньше все эти платы валялись у меня по разным углам, и вот наконец удалось их компактно сложить в одну коробку.

На мой взгляд, в статье имело смысл привести первые платы ардуины, выглядят некоторые весьма эпично, хотя и узнаваемо.

Скрытый текст

Да, согласен, упустил этот момент. Добавил хотя бы эту одну фотографию.

Sign up to leave a comment.