Вопросы робототехникам
- Войдите на сайт для отправки комментариев
Привествую всех, кто играется с Ардуино в части построения разного рода "самокатных тележек" и прочего "роботостроения" и, возможно участвует в разного рода соревнованиях по Ардуино.
Предистория: у нас есть Ардуино Мега 2560, которая превращена в "Лего-кирпич" и применяется с самодельно оформленными датчиками и моторами в "Лего-исполнении", что позволяет быстро собирать разные платформы на базе Лего-техник, обычного Лего и использовать даже детальки от Лего-бионикл. Недостаток нашего решения проявился пока только 1: большие габариты "Лего-кирпича" при значительной избыточности Мега 2560.
В среднем, на построение робота уходит не более 1/2, а чаще 1/4 от всего набора периферии Меги, что, в совокупности с удачным опытом подключения внешнего ЗУ к Мега128А, натолкнуло на мыслю сделать комплект периферии под этот камень в меньшем типоразмере. Типоразмер УНО - тоже несколько неудачен для применения как "Лего-контроллер".
Предлагается разработать набор плат на базе Atmega128A кратных Лего-размерам (база, а-ля УНО), в т.ч. и расширители памяти для задач роботостроения с использованием Лего деталек.
Если эта тема кому-то интересна, то предлагаю её обсудить тут.
если найдется больше 10 человек которым это нужно , я разработаю печатные платы, но в моем топике про 128 и память, я выкладывал плату с типоразмерами уно
https://yadi.sk/d/IK5CJYN5sFXkT
Тема интересная, но как для разработчика. Могу помочь с проектированием модулей.
Я видел и поэтому и озадачился. У меня есть плата на мосфетных полу-мостах AO4606A с драйвером на 2 мотора (тут была тема в проектах). Её можно развести в типоразмер 40х56 (5х7 лего-дырок) и возможностью зеркального комбинирования 2-х плат (детальки с двух сторон) для создания совмещенного драйвера на 4 DC-мотора. Как вариант, её можно доработать и втыкнуть туда ... (исправлено: пардон ошибся с маркировкой: PCF8574T, 8-и битный расширитель портов с I2C) .. но 5х7 кажется несколько маловато для базовой платы для Мега128А и возможностью программирования через USB, нет?
Присоединюсь, проект интересен.
Если проект интересен, то из готовых "удаленных" модулей есть:
1. Датчик расстояний HCSR-04 в лего-обрамлении и код измерения расстояний по прерываниям PCINT;
2. Датчики препятствий/линии типа KY-033 тоже в лего-обрамлении;
3. Датчики цвета TCS3200 и код работы с ними в автоматном режиме с удовлетворительной коррекцией цвета и люксов освещенности;
4. Самодельные аналоговые датчики линии на базе простых ИК приемников с чувствительностью около 200мВ в режиме "вижу белое";
5. Несколько вариантов DC-моторов в лего обрамлении на базе DC "130-й мотор", в т.ч. и со сменными редукторами и тоже в лего-исполнении.
6. Обрамление для LCD1602 в лего с подключением по I2C.
Картинки что "под боком":
На двух верхних: датчики препятствий/линии, узв. датчик на серводвигателе (не виден), мотор-редуктор в одном корпусе. На нижних - предыдущие варианты лего-оформлений и пример "сменного" редуктора к мотору (редуктор имеет свои лего-крепления, мотор свои и соединены между собой), почему выкладывается в перевернутом виде - так и не понял. :)
Тут наглядно видно, что вся моща Меги - не использована, а габарит "кирпича" - великоват.
Как понимаю, Меги 128А должно вполне хватать для задач "самокатных тележек" и этот камень как-то незаслуженно пропущен в линейке Ардуин, а промежду тем, вопрос нехватки ОЗУ на нем решается и легко. Отсюда и мое желание "переехать" на этот камень. Удаленная периферия - есть, нет платы самой 128-й меги в "лего-формате" (размеры сторон кратны 8мм).
Последний момент важен, и на фото хорошо видно, как пришлось "подрезать и надставлять" плату меги2560 .. и с платами от УНО - "такая же фигня". :(
Пока набираются желающие поучаствовать, задам вопросы:
1. Можно ли развести ATmega128A в размере платы 40х56мм (5х7 лего-дырок) так, чтобы её можно было бы питать от батареек-аккумуляторов-usb (6-15в) и программировать через usb-порт с компьютера, в смысле без программатора (как ИДЕ или как-то по-своему)? Да .. размещение деталек только на одной стороне платы. С обратной, есть идея разместить расширенную память.. :)
можно, ведь ProMicro имеет все описанное при меньших размерах.
А какой смысл брать ATmega128A с урезаннной памятью и потом расширять память внешней микрухой, которая место занимает?
Есть 2560 в форм-факторе Uno (недавно обсуждали), наверняка есть и разводка платы под нее.
Ну .. я тут поигрался с Мега2560, правда от Ардуино .. в ней пичалька: очень большой габарит платы при отсутствии 16 очень даже нужных ножек. В формфакторе UNO я видел, но цена больно конская ради экспериментов .. что-то за 1500рублев помнится было. Ну и сам формфактор UNO "ни 2 ни полтора" .. там 3мм лишних для лего размеров, отпиливать неможно, смотрел уже, своя УНО валяется. И под размер коробок для аккумов он не очень-то ложится (4АА: 56х64мм можно упихать, свои в лего такие.. но 4АА - "маловато", надо смотреть под 3х18650 Li-ion или модельные 3s2p ..).
Ну и хочется поменьше формфактор. Вот, пока пришел к этому: 40х56 или 32х56 с последующим "двойным размером" в 56х64мм или 80х56мм.
В последствии (если наберется круг заинтересованных) можно и мега2560 развести .. я вот тут http://ru.aliexpress.com/store/product/ATXMEGA128A1-AU-in-stock-can-pay/... сегодня наткнулся на ATxmega128A1U-AU по цене меги 2560 .. заинтриговало, однако.
Ну и по поводу расширения/урезания памяти .. урезание с 8к до 4к .. без расширения, не так критично, ибо урезается И периферия тоже .. а вот расширение с 4/8к до 32к/512к .. это как-бы иной круг задач. Вовсе иной. :)
Нашел вот это у одного продавана, теперь гадаю .. брать или нет:
1. http://ru.aliexpress.com/item/ATMEGA128A-AU-ATMEGA128-TQFP64/32630060233.html .. партия 10шт. 624руб. (62.40/шт)
2. http://ru.aliexpress.com/item/20pcs-lot-74HC573D-SOP20-SN74HC573D/32476515022.html защелки, партия 20шт. 248руб (10.24/шт)
3. http://ru.aliexpress.com/item/10pcs-lot-in-stock-can-pay-HM628512-SOP/32626199343.html память 512к х 8, 10шт. 414руб. (41.40/шт)
4. http://ru.aliexpress.com/store/product/10pcs-lot-CH340G-SOP16-USB-to-ser... CH340g .. по 23руб/шт.
.. собственно "комплект" на 10 плат с памятью в 512 килов ..
Итого, пока вижу себе плату с ATmega128A примерно так (размер платы 40х56мм - меньше не получается при однорядном расположении контактов):
1) короткая сторона1: ADC3, ADC2, ADC1, ADC0, TOSC1, TOSC2, OC0, T3, ICP3, OC3A, OC3B, OC3C, Vcc, GND (всего 14шт = 35.56мм)
2) короткая сторона2: ADC7, ADC6, ADC5, ADC4, AREF, T2, OC2/OC1C, T1, ICP1, OC2/OC1C(2), OC1B, OC1A, Vcc, GND (всего 14шт = 35,56мм)
3) длинная сторона 1: (Vcc, GND, RX0, TX0, XCK0), (Vcc, GND, RX1, TX1, XCK1), (Vcc, GND, SCL, SDA), (VCC, GND, SS, SCK, MOSI, MISO, RESET, PEN) .. т.е. группировка "по интерфейсам" с питанием. Тут 22 контакта (55,88мм)
4) длинная сторона 2: Vin(6..12в), (X-bus шина AD0..7, A8..15, RD, WR, ALE), Vcc, Gnd. .. 22 контакта (55,88мм)
Идея в следующем: разделить на 2 короткие стороны как входы, так и управляющие выходы (ШИМ) примерно поровну, и все интерфейсы вынести на отдельную сторону. Интерфейс к памяти на отдельной стороне, что позволяет выделить расширение памяти на отдельную плату 40х56мм и подцеплять её или рядом, увеличивая общий габарит до 80х56 или "под плату" корпусами наружу (зеркально).
Нашел несколько принципиальных схем с дуньками и ch340g .. оказывается последний есть в виде отдельного девайса за те же бабки что и цена микросхемы и даже гораздо дешевле в виде готового переходника USB-UART, что наводит на мысль устранить эту часть с платы и вовсе. В этом случае, уложиться в желаемый габарит труда не представляет явно.
Итого, на плате нет крупногабаритных разъемов даже microUSB, все выходы на линейках с шагом 2.54мм. На плате - сама Мега128А и стабилизатор питания и развязкой 5в - Vin, кнопка reset и кварцевая обвязка.
Принципиальные схемы нашел, попробую развести.
Как Вам такой вариант платы? Интересны мнения, предложения, критика и пожелания .. изменяемо всё, единственное что мне важно сохранить - габарит платы кратный 8мм.
P.S. Кстати. При двухрядном расположении контактов на плату можно развести и Мега2560 .. :)
интересно на чем вы програмируете свою МЕГУ что памяти не хватает
(для примера скажите какой максимальный объем памяти вы смогли использовать в своих программах)
просто может не нужно такой огород городить а достаточно про-мини ардуинки миниатюрной с 2к ОЗУ
С, Asm .. тут есть моя библиотека для работы с пинами, АЦП, ШИМ, I2C .. arhat.h .. имитация Ардуино ИДЕ в режиме 1 функция = 1 команда ЦПУ. Некоторые вот опять скажут что рекламирую .. :)
В части управления периферией, внутренней памяти хватает "с избытком" - это факт. Но вот по части построения сложных алгоритмов, в частности робот-лабиринтщик, запоминающий размещение препятствий и ищущий оптимальную траекторию движения .. уже только для "простых лабиринтов". Оцифровать с достаточной точностью, скажем комнату 20кв.м. с находящейся в ней мебелью .. увы, "маловато".
Ну и даже на 32кб уже вполне можно ставить тот или иной RTOS со всеми вытекающими последствиями, а на 512кб .. :)
P.S. ребенок больше использует Ardublock и ДРАКОН (в приложении к arhat.h), но ему памяти тоже пока хватает.
P.P.S. Ну и как-бы задача ставится несколько ширшее: сделать блок управления, позволяющий "оживлять" типовые Лего-техник наборы. А тут важен именно габарит плат и всего блока. Скажем блок размерами 6х8, 7х9 лего-дырок ещё можно втиснуть в кабину какого-нибудь крана (42009) или вездехода (42038) или автомашинки (42029) .. то вот имеющийся блок 10х15 лего-дырок на базе мега2560 .. ни лезет. Впрочем как и Лего-майндштормовский "кирпич" тоже, если и лезет, то в сильный натяг.
Конечно, расширенная память требуется далеко не всем .. ну так поэтому и проектирую как "съемную" ..
Тема создана с желанием найти тех, кому такая разработка интересна и кто впоследствии сможет приобрести оставшиеся "9 комплектов" из ссылок выше, если их заказывать (мне или тому кто будет паять это из энтузиастов). :)
Есть заинтересованные?
А внешней медленной памятью для этих лабиринтов никак не обойтись? Типа, толстого чипа с флешем или сд-карточокй? Просто рама в таких объемах на таких девайсах как-то уж слишком "инородно" выглядит.
То есть, Вы предлагаете роботу-пылесосу при перемещении по хатке тормозить, выгружать очередной кусок с последовательного хранения, убеждаться что "не тот" и ковырять следующий? А если "стол подвинули", то тыкаться датчиком и с теми же последствиями соображать в какой кусок флеша теперь это надо перезалить, переместив/подвинув/пропустив то что там уже есть, так чтоли?!?
.. а у ребенка есть ещё пожелание, чтобы оно "разговаривало" по теме движения .. тоже "выливать из флеша"? Так МК больше ничем и не сможет заниматься как сливать туда-сюда куски с последовательного хранения .. :)
ну и вопрос этой темы шире:
Есть ли заинтересованные в наличии небольшой платы (40х56мм) на базе ATmega128A и набора устройств к ней (память, драйвер DC моторов, етс.) в том же самом формате (стекируемые)?
То есть, Вы предлагаете роботу-пылесосу при перемещении по хатке тормозить, выгружать очередной кусок с последовательного хранения, убеждаться что "не тот" и ковырять следующий? А если "стол подвинули", то тыкаться датчиком и с теми же последствиями соображать в какой кусок флеша теперь это надо перезалить, переместив/подвинув/пропустив то что там уже есть, так чтоли?!?
Я вот что-то не пойму, каких же размеров хатка и сколько там может находится перемещабельных столов, какое разрешение карты, что постояно возникает необходимость карту дергать? Я себе это представлял, что загружаем кусок карты и спокойно едем по нему какое-то время. Вышли за пределы, опять подгружаем. А по вашему описанию выходит, что на бешенной скорости эта хрень носится по площади размером со стадион, уставленном всевозможными предметами, которые быстро-быстро меняют свое местоположение. Карта с внешнего носителя загружается гораздо быстрее, чем у этой хрени меняется пейзаж за бортом. В чем проблема, не пойму.
Ну .. давайте скажу иначе. Эта тема для тех, кому интересны МК ATmega128A, ATmega2560 полностью и на компактной плате, в части их периферии и ресурсов и, кому полезна память, доступная компилятору напрямую, в виде переменных, структур, массивов и объектов. А не как "внешнее ЗУ для хранения".
Иначе тут очередной холивар - неизбежен, поскольку зоопарк камней велик и даже очень велик. А равно как и способов их применения и доступной к ним периферии.
ATmega128A я распаивал на такую платку:
http://ru.aliexpress.com/item/5Pcs-QFP-TQFP-FQFP-LQFP-32-44-64-80-100-To...
вот еще похожий коллега, любитель Лего и Ардуино:
https://geektimes.ru/post/277580/
Есть и ещё Ардуино-любители-Лего, только вот ссылок не сохранял .. подходов в целом 2:
1. Использовать стандартные детали, компенсируя расхождения в размерах детальками от обычного Лего. Примерно как тут. Достоинство в том, что "ничего не портится окончательно" и в любой момент можно изделие разделить на составные части в их оригинальном виде. Недостаток - тут же: все получается крайне ненадежно и болтается и/или приходится изобретать разного рода "прокладки" и в конечном счете все безмерно растет в габаритах. Даже на вашей ссылке хорошо видна цена такого "обрамления" (сравните с конструкциями Лего-майндшторм). Ну и "держится" вся эта конструкция "из рук вон плохо" (не дай бог уронить со стола или даже стула, а порой разваливается прямо в руках, если взялся "не так").
Этот "этап" мы проходили примерно год назад.. :)
2. Делать собственные конечные изделия с использованием Лего-деталей для их крепежа и зачастую используя Лего детали "безвозвратным" способом (где-то подпиливая, где-то склеивая нужную форму из нескольких и т.п.). В сети есть демо как делаются таким способом "лего-кубики" со светодиодами и самосоединяющимися контактами на базе обычного Лего, датчики касания из кнопок от мышей и т.п. То что видел, в основном на базе простого Лего .. типа как тут сделан сервомотор (у нас такой тоже есть) .. недостаток этого подхода в том, что есть безвозвратный расход Лего, а оно стоит тоже "недешево" .. тут спасет или заказ оптом у китайцев "лего-подделок", но они сейчас тоже недешевы или "добрые самаритяне" в виде знакомых (наш вариант), способные одарить вас запасом разного барахла.
Достоинство подхода в том, что детальки точно встают в лего размеры и сами могут быть "несущей частью", что резко упрощает и уменьшает конструкции. Но тут есть много "подводных" камней, потому как лего-типоразмеров несколько и они сочетаются друг с другом по хитрым законам (ну не было математиков у Лего, способных запроектировать непротиворечивый набор деталек .. типа Рубика).
Так корпус для 130-го мотора мне пришлось переделывать трижды, чтобы он мог легко вставать как в обычное Лего, так и в Лего-техник и их сочетания .. оказалось "не всё так однозначно" .. :) Зато теперь, имеем Лего-моторы по выходной мощности вполне сопоставимые с Lego-motor EV3, но имеющие большую скорость вращения (550rpm при 2.4кг*см, против 175rpm при 4кг*см) при чуть меньших габаритах и вдвое(!) меньшем весе (42гр против 81гр).. но без встроенного энкодера, который у нас навешивается отдельно на любую ось Лего.
Вот, в рамках второго подхода и хочется реализовать требуемый типоразмер плат из которых можно было бы собирать управляющие кирпичи в нужной конфигурации И сочетаемые с Лего-деталями и(!) желательно размером меньше чем у Лего Майндшторм .. а "память" тут больше как "одна из плат", ибо оказалось "очень дешево" иметь дополнительную, нормальную память управляемую компилятором. :)
Подкину ещё картинок в тему:
Мега 2560 отдельно от батарейного блока и драйвера моторов и датчик цвета TCS3200 в лего оформлении. Текущая версия.
Один из первых "миникаров". Мотор + батарейный блок на 2АА (первые попытки второго подхода) :)
А-а-а .. нашел готовые платы 30.5x40.64мм .. crumbuino зовется. Кстати, их тут не так давно обсуждали оказывается. Посмотрел, "допилить" до размера 32х40 вполне можно.
В общем, тему можно закрывать .. тем более, что наплыва желающих я как-то не вижу. :(
P.S. "Всё украдено до нас"..
Круто, молодцы ребята!!!!