Как стать автором
Обновить

Паяем Ардуино-совместимый контроллер и играем с интереснейшим шилдом

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров15K
Всего голосов 50: ↑50 и ↓0+53
Комментарии32

Комментарии 32

Хорошая и развернутая статья, но вот такая Ардуинка может много больше:

https://vk.com/id484853030?z=photo484853030_456239018%2Fphoto_feed484853030

К ней была сделана дополнительная плата ОЗУ, расширяющая внутреннее ОЗУ до 520килобайт сегментированно-прямой адресации. С ней возможностей стало ещё больше.. ;)

Не у всех есть возможность посмотреть публикацию в ВК, где требуется авторизация

Hidden text

Развитие плат Ардуино - Мега2560 с оперативной памятью на 512 килобайт прямого доступа.

Последний релиз самой платы Меги. Есть изготовленные в Китае 10 плат, пока в процессе "запайки деталей". Особенности разработки:

  1. В отличии от типовой Ардуино Мега2560, тут все рабочие контакты Мега2560 выведены на разьемы платы и сгруппированы по назначению: Левая сторона - интерфейсы I2C, SPI, UART0 и подача питания на плату (по центру). Правая сторона - Интерфейс расширения ОЗУ, использован в отдельной плате расширения ОЗУ до 512 килобайт (есть рабочий "пилотный" вариант платы + доработка файла линковки для работы с массивами из ПО) Верх - Таймеры 0,1,3 + UART1,3 + доп. ноги + АЦП 0..7; Низ - Таймеры 2,4,5 + UART2 + под. ноги + АЦП8..15.

  2. Все контакты платы, кроме правого интерфейса ОЗУ - сдвоенные для возможности пайки "вертикального разьема" бутербродом И горизонтального выхода на строенные контакты "сигнал-земля-питание" для подключения периферии по типу "серводвигатель";

  3. "большой кварц" и его дополнительное экранирование (отдельная земля) - для повышения стабильности работы платы;

  4. Специальная проводка земли блока АЦП с целью повышения надежности сьема показаний;

  5. Увеличенные емкости развязочных конденсаторов микроконтроллера с понижением их ESR - повышение стабильности работы и снижение влияния помех и тока потребления;

  6. Усиленный стабилизатор питания на плате - 5в до 5А для надежного питания нескольких серводвигателей одновременно;

  7. Удобный габарит платы 56х88мм (чуть больше коробки на 3хLi-ion 18650) и согласованный с размерами Лего (кратно 8мм) - позволяет заменить блок EV3 в его габаритах и крепежом.

Основное назначение - кружки робототехники и обучения программированию микроконтроллеров - "инструмент преподавателя". :)

К этой плате есть герберы из kicad, есть 10шт "пробной партии", есть пробный изготовленный и рабочий образец (предыдущий вариант разводки) с платой расширения ОЗУ.

Спасибо!

520 кБ - это хорошо, но если достаточно 128 кБ, можно к любой Arduino подключить по SPI маленькую микросхему 23LC1024 вместо целой платы расширения.

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

В каких задачах на Arduino может потребоваться быстро оперировать данными в пол мегабайта?

Ну, к примеру, был сделан "осцилоскоп" с сохранением серии снимков и их последующим усреднением перед показом.. Обработка картинок для цветного экранчика .. Ещё делал "пульсоксиметр" на базе фоторезистора, а поскольку там измерялка "пол-потолок-палец", тоже снималось много сэмплов с усреднением..

Какие-то куски выкладывал в свое время на разных ресурсах.

+512кб Меге 2560 оно может и не так уж и надо, но .. SRAM 512kb 70ns покупались за смешные 40-60руб. Почему нет-то, если шина позволяет?

Там контроллер - проще некуда.. :) Впрочем .. где-то тут уже выкладывал какие-то ссылки на АлексГауверовский сайт, что тогда публиковалось.. можно поискать ещё разок.

Если найдете, было бы интересно почитать. Просто для усреднения серии снимков, кмк, уже помощнее МК нужен, чем Arduino.

Да вполне нормальный контроллер - 16Мгц тактовая, вполне. В Космос, в свое время летали машинки послабее и существенно. Осцилоскоп поднимал до почти 500 килосэмплов в сек. Пробовал делать несколько кадров со сдвигом на 1-2-4-8 тактов, но там оно плавает не устойчиво.. или у меня не получилось толком поднять семплированием частоту выше 500.

Не, если конечно складывать 2+2 переводя замер во double, да библиотекой на Питоне с обратным преобразованием в целое через 64 байтное в байт .. то да, слабоват.. :)

И снова пЧичка на фотке предвещает занимательные электронные игрушки :)

Если я всё-таки доберусь до своего кухонного таймера с минимумом ног у контра — надо будет не забыть сделать на фотке узнаваемый силуэт и написать в нём «а у меня такой пЧички нет!» :-D

Будет интересно!

О! Ардуина! А я как раз вчера перед сном ворочался, и думал — а не попробовать ли мне запилить необычный метроном, который совсем молчит, только светодиодом мигает? Скажем, Arduino Nano, красный LED для первой доли, 4 зелёных (для ритмов от 2/4 до 5/4 и придумать как задавать число долей), энкодер для задания темпа, ну и наверно дисплейчик мелкий или несколько 7-сегментных индикаторов для отображения темпа…

Но потом подумал, а хватит ли realtime-вости для слабенького МК, программируемого не в машинных кодах, а через IDE на С++? И заснул.

Хорошая идея! Таймеры у МК есть, обработчик прерывания написать можно.

Спасибо! Тогда сделаю запись в ToDo, может и дойдут руки хотя бы до макета. Мне ведь не много надо: чтобы при, скажем, 120 BPM длительность доли была 500 мс (пусть ±5 мс), а не то 430, а то 550.

За глаза хватит. Он ещё и траекторию спутника на орбите отследит междду делом .. не очень точно (нет встроенного float) .. так, "плюс-минус" .. ;)

Есть софтовый double.

Хватит при программировании на C++ через Arduino IDE? Или нужно какие-то специфические тулкиты использовать?

Даже так хватит за глаза, если не упарываться в разную глупость.

В целом Ардуино и МК по больей части программировать стои на православном Си, и даже без плюсов. Его хватает на всё. Вам стоит почитать про конечные автоматы, это примерно так: https://community.alexgyver.ru/threads/programmirovanie-konechnyx-avtomatov-bez-delay.2657/#post-27876

Спасибо за полезную для формования мыслей ссылку! Теоретическая база в виде КА точно будет не лишняя. А C++ я и сам толком не знаю, максимум «C с классами» умею.

Имхо, более чем хватит.

Вас тоже огорчало, что PLS-разъёмы плат Arduino Uno и Mega установлены без соблюдения сетки с шагом 2.54 мм, отчего невозможно создать собственный шилд на базе обычной макетки под пайку?

Для ленивых и неэкономных есть специальные готовые макетки под шилды.

Почему неэкономных? Оно стоит меньше доллара вроде

То, что я видел под разъемы ардуины, стоит дороже "просто макеток". Не намного, но все же. А если разъемы уже распаяны (для истинно ленивого - лучший выбор), то еще дороже

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

Но, условно, 43 цента за такую платку (не реклама, просто нашлось в выдаче) – это дешевле, чем делать самому на фрезере (даже если он есть и полностью настроен и готов к работе), дешевле (с учётом доставки), чем делать по промоакции за $2 на jlcpcb и тем более где-то вне Азии.

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

Что не отменяет вопросов к тому, зачем двадцать лет назад сделали непонятно какой шаг на плате с тогда-ещё-не-древней атмегой :)

Не ленивый и экономный спаяет свою "ардуину" и свои модули к ней без этой ерунды с нарушением шага.

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

Что не отменяет вопросов к тому, зачем двадцать лет назад сделали непонятно какой шаг на плате с тогда-ещё-не-древней атмегой

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

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

Да почему "кроватка" то??? ПАНЕЛЬ!

Дмэумаю, имеет смысл прошивать МК загрузчиком и ставить сразу без кроваток в плату, заодно и ISP разъем не нужен будет.

Интересно, а сложно припаять ESP32? Не видел таких наборов. А то Ардуино, это как-то не серьёзно.

Тогда Blue Pill?

STM32? Не знаю, вроде и St-link есть. Наверное, просто предвзятости, кажется, что та платформа более закрытая. Хотя, я смотрю и Rust и Toit имеется.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий