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
Придуманная пятью итальянскими студентами-энтузиастами в 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 - это логическое состояние, почти всегда следствие ошибки программирования. Разошлась синхрониация, какой-то битик успел поменяться два раза, быстрее чем его код проанализировал, и вот уже обе стороны на шине жрут друг от друга одного и того-же. А план Б - выход из дэдлока - тоже нужно реализовывать вручную на таймаутах.
именно на 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 доступно.
От ржавых германиевых транзисторов МП42
Это "Жигули" были ржавыми, а у МП42 были красивые блестящие корпуса. В одно время даже покрашенные, причем краска выглядела как бы не лучше, чем на "Жигулях".
Доступные мне в то время транзисторы находились на помойке, поэтому ржавчина — историческая правда.
Хо, я тоже с такого начинал) МП40, МП42, КТ361, микросхемы К155, К176... а на МК перешёл поздно, но первые использовал от МастерКит - это просто распаянный пустой МК AVR + кварц. SEM008 или как-то так назывались.
Есть еще такое чудо - 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.
так наверное везде где есть 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 я все-таки смог его недавно уговорить перейти, разница не сильно велика в цене,
Разница в цене - сравнима с чашкой кофе. Без булочки даже. Моя не понимать. Или это был элемент квеста, только для программиста? ;)
Еще nano от uno отличается загрузчиком, если залить загрузчик uno в nano, можно выиграть 1.5кб памяти, получить работающий watchdog и быстрый старт платы. Загрузчик nano две секунды держит reset при включении.
Прикольно, не знал, спасибо. Медленный старт на многих платах давно напрягает.
платы на ESP8266 и ESP32 уже догнали Arduino Nano
Перегнали. По крайней мере на AliExpress. Если на Arduino Nano минимальная цена сейчас от 210 рублей с доставкой, то ESP32-C3 SuperMini можно купить за 190 рублей с доставкой. Ну а сравнивать их по возможностям бессмысленно.
Для тех случаев, когда действительно нужен восьмибитный МК, лучше ориентироваться на существенно более дешевый Padauk. Например, даже в Чип и Дип можно купить PFS154-S08 по 20 рублей, а PFS154-S16 по 53 рубля. Про OTP вообще молчу, там же PMS150C-U06 по 11 рублей.
Коробочка какая удачная - как специально под UNO! Где такую брали? :) Или самопечать?
На мой взгляд, в статье имело смысл привести первые платы ардуины, выглядят некоторые весьма эпично, хотя и узнаваемо.
Скрытый текст

Все мои Ардуинки: часть первая, восьмибитные на ATmega