Ардуино

Возникла у меня во время переписки с Vga мысль подкинуть сообществу одну совсем не новую идею — использовать Arduino. Мы конечно тут все крутые программисты на ассемблере и С, но среди нас попадаются и такие которые только начинают свой путь в царстве электроники. Для которых, собственно, и был создан проект Arduino.
Описывать его я не буду, надеюсь, большинство о нем знают, а кто не знает – почитает – информации видимо-невидимо. Только я отношусь к нему со смешанным чувством, как в истории о собственной теще на собственном автомобиле, катящемся к пропасти. С одной стороны – простая, но мощная система программирования на базе AVR-GCC, с мощными библиотеками, бутлоадером и стандартным расположением выводов микроконтроллера с четко прописанными функциями… С другой – этажерочная конструкция шилдов, сразу намекающая на незавершенность, временность, любительщину. Необходимость кабельного соединения между элементами устройства (кроме Arduino-Nano и его клонов) еще больше наводит на мысль о варианте для «прототипирования и для поиграццо».
Но ведь можно придать завершенность такого рода устройствам. Надо просто отвлечься от конструктивной идеи Arduino и использовать микроконтроллер с зашитым в него бутлоадером как совершенно другой микроконтроллер, с особой архитектурой, с определенной распиновкой, назвав его, конечно только для себя, к примеру, AR8, AR16, AR32, AR128. Главное – сохранить тактовую частоту для сохранения временных характеристик.

Его можно применять в любых устройствах, разведя под него плату. Или сделав малогабаритный модуль. Главное – не забыть установить разъем программирования, по функциям аналогичный ISP.

Кстати, кнопка и светодиод – игрушки, которые в конечном устройстве – необязательны.
При этом, для заливки программы можно использовать «программатор» (собственно говоря, переходник RS232-UART или USB-UART с дополнительным конденсатором для сброса), аналогичный примененному в Arduino (как, например, на рисунке ниже).


На FT232RL рисовать не буду, и так все понятно.
Мощности микроконтроллеров ATMega8, ATMega168, ATMega328 и прочих хватит для большей части задач. Конечно, уменьшится количество допустимых для использования выводов, нельзя будет применять некоторые их функии, но, в целом такая система, как мне кажется, смогла бы заинтересовать большое число начинающих любителей embedded-устройств. Да и неначинающих тоже.
  • 0
  • 17 июля 2011, 20:23
  • mzw

Комментарии (68)

RSS свернуть / развернуть
Вот смотрю на картинку с подписью выводов меги168 и спрашиваю себя: а где I2C? где SPI? где прерывания INT1 и 0?!
0
Есть куча библиотек.
0
Опять сайт висит.
arduino.ru/
rln.nnov.ru/index.php?pid=13/
0
Сам ардуино, как концепт, хорош только в ЖЕСТКОМ стандарте себе подобных. С точной распиновкой и габаритами оригинала, чтобы можно было не включая мозг покупать шилды-кубики и юзать готовые библиотеки. Чуть в сторону — и это уже просто МК с бутлоадером.
+2
Не прсто МК с бутлоадером.
Но и со средой программирования.
С библиотеками.
Это дорогого стоит.
0
Это мне напоминает анекдот — вам шашечки или ехать?
Что интересно — создать конечное устройство или сам процесс создания.
Мне кажется, оба эти направления имеют право на существование.
+2
Это почти ничего не стоит без жёсткого стандарта на шилды (мезонины).

Потому что я, например, постоянно то программирую в AVR-studio — подключив ардуинку, то набрасываю эскиз в ардуино-иде — заливая его между делом на Pinboard.

Так что, сама постановка вопроса «сделать своё ардуино с девочками, покомпактнее и без совместимости по дыркам» бессмысленна.
0
Так что, сама постановка вопроса «сделать своё ардуино с девочками, покомпактнее и без совместимости по дыркам» бессмысленна.
А как же Arduino Nano, которая тоже несовместима с шилдами, но вполне популярна? А в макетку-бредборд модуль из поста можно воткнуть не хуже.
0
Совместима. Более того, на неё есть стандарт «формат нано» и стандартные же шилды-переходники.
0
Не видел шилдов на нано. А переходник на стандартные шилды можно и к своему модулю сделать.
0
Ну и таки не стоит фреймфорк недооценивать. Я шилды вообще никакие не использую, а вот ардуино иногда использую именно из-за библиотек.
+1
Именно так. Сам себя процитирую:
"… то набрасываю эскиз в ардуино-иде — заливая его между делом на Pinboard."
0
С хреновой средой и хреновой библиотекой.(fixed)
0
Совсем уж для начинающих можно сделать платку с USB интерфейсом и n-ным количеством выводов: вставил в USB, установил драйвера, написал шняжку, похвастался перед друзьями, написал ещё и всё заверте… Идею в принципе поддерживаю, ибо очень хороша для привлечения свежей крови в направление, тут главное увидеть результат, а дальше самому захочется сделать что-нибудь ещё и ещё… и в итоге приходим к связке C + Asm.
Идея хороша, но с реализацией опять-таки проблемы: либо паяешь сам (здесь повышается порок вхождения), либо покупаешь готовое решение, но тут есть нюанс: я, например, не готов платить за то, что могу сам сделать, а для кого-то это не проблема.
Отсюда вывод: необходимо сделать что-то максимально дешёвое и одновременно доступное, тут думать надо. Кстати, насчёт языка: может стоит написать нечто своё, эзотерическое для типовых задач? Конечно, после нашего языка новичок впадёт в ступор даже при виде Си, но самое главное будет сделано-его зацепит это направление и он будет в нём развиваться.
0
«и всё заверте…»
Аверченко :) Замечательно пишет. Для меня главной проблемой стало оторваться…
0
>>порок вхождения

Надо запомнить
0
Пинборд+статьи Ди тоже вполне годятся для новичков и быстрого старта. А подсаживать на конкретную железку не оч хорошо. =)
+1
PinBoard 1.1 стоит 2,6 КилоРублей, надо что-нибудь подешевле для начинающего.
0
На пинборде есть всё, чтобы нормально поиграться. Можно конечно взять платку с одной межкой и светодиодиком в 2-3 раза дешевле, но и пользы для новичка будет на порядок меньше.
0
О железке речь не идет. Ведь это тот же самый AVR, только вместо С его видоизмененное подмножемтво. Или вы считаете, что есть язык жрецов, а все остальное — для простолюдинов? Чем, по большому счету, он отличается от С. Если в нем можно использовать все его конструкции. Компилятор то тот же.
Догматизм еще никогда нигде к хорошему не приводил. А жречество — и подавно.
0
И вопрос тут не о деньгах — каждый считает по своему карману. Почему нужно бросать в человека камень, если он помигал светодиодами не на ассемблере, а на Wiring?
+2
Напишет на асме — напишет на чём угодно. Напишет на wiring — тока ещё больше запутывается.
Алсо камень не в того кто напишет, а в того, кто подсаживает народ на всякое ардуино. =)
0
Так Wiring — это тот же С.
0
Кстати, а MikroPascal или Bascom не смущают?
0
а вот не надо баском ругать.
0
Я бы не сказал. Идеологическая разница между ассемблером и ЯВУ довольно велика.
А вайринг — тащемта не более чем фреймворк на С. Освоит, потом (при наличии мозгов и желания) разберется уже как оно работает и как увязано с более низким уровнем. Ну а если без мозгов — он и так безнадежен, фиг с ним.
Примерно так я пришел от Delphi VCL к пониманию WinAPI и ассемблера (но пишу по прежнему на Delphi/VCL, иногда AVL, ибо аццки удобно).

А некоторым и С не мешает делать кривые ШИМ-драйверы лампы-линзы на осветительных СИДах на демоборде с Mega16 (если не 32) и USB.
+1
Однако есть разница между эмбедщиной и программированием под винду)
Под виндой, потрогать винапи и асм конечно можно, но так, чисто для лулзов, если пишешь на Дельфи. Можно и отложить на «как-нить потом».
Под МК асм это насущная необходимость. А то я уже тут задолбался объяснять почему лучше заюзать битовую маску, а не строку строку вида «01101101», etc.
Вот «AVR учебный курс» от Ди это действительно клёвая штука)
+1
Т.е., конечно, не обязательно скуривать асм конкретного МК от корки до корки, достаточно просто не теряться при виде дизассемблятины)
0
Ну, на самом деле это не особо нужно. Разве что для утрамбовывания и для реверсинга (собсна, я знаю асм х86 в тех пределах, в каких освоил при реверсе программок).
0
Ну как сказать, на самом деле вайринг и VCL весьма похожи в этом плане, это упрощающие программирование и несколько меняющие модель работы обертки. Ардуино правда не пробовал, так что не знаю, насколько оно упрощает работу. Может и в самом деле достаточно для того, чтобы закрыть на его требования и издержки глаза.

Необходимость эта зачастую не столь насущная. Далеко не всем проектам требуется оптимизация и утрамбовывание.
0
Проекту то может и не требуется, а человеку хотя бы в общем виде знать желательно.
Когда нить всё равно наступишь на грабли вроде переполнения стека, etc. и желательно быть готовым противопоставить этой проблеме что-нить помимо «почему эта херня не работает».
0
Все сразу познать невозможно. Асм далеко не от всех камней помогает. Так что вайринг — вполне нормальная вещь для изучения.

Алсо, глядя на жалобы «опять пример на С, я тока асм умею!», фраза про «ассемблерщик напишет на чем угодно» — более чем сомнительна. А отсюда все тот же вывод — важен не инструмент, а критическая масса серого вещества в тыкве. Хотя да, без вайринга и прочего дельфи тупых вопросов было бы меньше — просто за счет того, что неспособные освоить что-то сложнее ламеры дружно пошли бы лес валить.
0
Алсо, скажем, в даташитах часто попадаются примеры на асме. Так что дело не тока в оптимизации и отлове багов.
Всё же без знания низкого уровня эмбеддеру фигова. Всё же не стоит внушать напрасные надежды («асм тебе не понадобится»), а затем иметь на >9000 тупых вопросов на форумах.
0
Я считаю ардуино отличной платформой для старта, да и не только. Если хочется что-то по-быстрому состряпать, ардуино всегда под рукой!
В любом случае, поначалу проекты на МК делаются чисто для фана!
У меня правда был другой случай: воодушевившийся массой прочитанных материалов, я решил делать курсовик по МПТ (микпропроцессорная техника) «в железе», после получения подписи зав.кафедрой, пути назад уже не было. При всем при этом, было потрачено много нервов (особенно, когда фьюзы перепутал)! В итоге все закончилось благополучно, однако у меня была «жизненная необходимость» в этом. Новичок же, может проста забросить данное увлечение на корню. Хотя это конечно мое частное мнение.
+1
Кстати, коллеги, а вы хоть прочитали мой пост целиком? Или, увидев слово Arduino, сразу поспешили сражаться?
Я ведь не об отладочной плате пишу, не о макетке и не для того, чтобы поиграться.
Я о том, как на его базе можно устройства делать.
Попробуйте почитать внимательно — и от начала до конца.
0
  • avatar
  • mzw
  • 17 июля 2011, 22:40
Я ожидал этого, специально прочитал 2(!) раза. =)
0
Такая идея заслуживает внимания. Конечно, если от устройства требуется работа с какой-то хитрой периферией или надо впихнуть кучу кода в маленький обьем памяти, то это вряд-ли подойдет.

А вот если нужно быстро сделать устройство, безо всяких хитростей, то можно и взять за основу ардуино.
+1
Да идея понятна и, в общем-то, не нова. Есть же ардуино pro. Тока я всё равно не понимаю, зачем вешать межку на отдельную плату, если ей из обвязки требуется тока источник питания…
Если уж делать модуль, то с внешней памятью, etc. А голая межка, зачем? Алсо под дип даже проще развести плату чем под линеечку.
0
Это я экспериментировал (увидел пост про eduino mk90.blogspot.com/2009/09/eduino.html и подумал — лажа какая-то, можно сделать лучше). А фотку привел для примера. Чтобы хоть какая то польза была.
0
А вообще это просто контроллер и применять его надо как контроллер.
0
ИМХО, как контроллер он несколько избыточен. А вот для прототипирования и робоконструкторов (благодаря шилд-конструктиву) — очень даже неплохо. И еще для одноразовых девайсов. Собрал, применил, разобрал.
0
Я повидал столько устройств на Mega8, что часто стараюсь не упоминать об избыточности. Поэтому и подумал об использовании.
0
Попробую что-нибудь насложное сделать. Только пока не придумал, что.
0
Наверное, это потому, что она одна из самых дешевых в семействе, дешевле даже большинства тинек (по тем ценам, какие мне попадались).
0
Согласен
0
arduino неплохая платформа, кстати ее можно прикрутить к LabView и довольно таки прикольно и удобно получается.
0
По своему опыту могу сказать, что первое, что нужно сделать, если есть желание осваивать мк — это купить программатор/отладочную плату. Именно купить. Потому что:
1. Совсем неизвестно к чему приведут попытки сделать свой, особенно, при отсутсвии опыта (сам потерял на этом кучу времени).
2. Как ни крути, но у новичка, который сделает пару абсолютно нерабочих программаторов/плат, могут и руки опуститься…
А потом нужно вооружиться ЛУТом и статьями Di, в которых все замечательно расписано, я бы даже сказал разжевано. :)
0
У DiHalt'а не только разжевано, и разложено до чистой глюкозы :-D
0
У DiHalt'а не только разжевано, но и разложено до чистой глюкозы :-D
0
Когда допаял 4ю Ардуину, об этом тоже подумал: а ведь это просто контроллер; отлаживать можно на Ардуине, а устройство делать как обычно. Только надо запастись 16 МГц кварцами =)

Работаю в школе учителем физики и информатики, хочу сделать кружок по радиоэлектронике и программированию МК. Тут Ардуина — просто идеальное решение. Напрягём трудовика и сделаем «РобоПику» для начала, а дальше-больше. Главное — плавный вход в незнакомое. У педагогов это называется «зона ближайшего развития». Например, у меня есть книга по asm для win, пока мозга не хватает, чтобы осилить. Года два уж пылится на полке…
0
+1, имхо платы ардуино — не слишком удачный вариант для оконечных устройств — разъемы ненадежные, необходимость плат-шилдов строго заданной компоновки, наличие ненужной программной надстройки над AVR-GCC.
Я наделал кучу минимальных платок под разные контроллеры (AVR, C8051, STM8, STM32) с унифицированными разъемами под RS232, I2C, SPI, ISP и платок с I2C/SPI/RS232-периферией. Двухрядные PLD/BH (под шлейф IDC или под пайку на плату) и однорядные HU/WH намного удобнее/надежнее в эксплуатации. Теперь остается заказать все скопом на заводе и при необходимости набирать нужную конфигурацию под конкретный проект — для запайки/наладки хватит нескольких дней, в отличии от заказа готовых платок когда приходится ждать до 2х месяцев и переплачивать в 2..3 раза за доставку и жадность продавца.
0
Я как-то хотел поиграться с ардуино, естественно с самодельным, но не нашел его прошивку. Может ткнёте носом?
0
  • avatar
  • Kasym
  • 29 августа 2011, 08:21
arduino.cc
Качаешь Arduino software, там есть папочка с бутлоадерами — вот и вся прошивка ардуины.
0
Я тоже начал с Arduino, купил дешёвый китайский клон в обычном форм-факторе (Duemilanove).
Немного разобрался что к чему, понял, что более одной готовой Ардуины вряд ли понадобится,
потому что проще купить атмегу самому и запрограммировать её с помощью Ардуины же.

Освоил впоследствии аврные C и ассемблер, хотя смысла в них для домашнего пользователя не вижу
— Processing выше уровнем, масса библиотек давно перевалила за критическую, прекрасное сообщество,
всё просто и понятно. Под серьёзные проекты, где нужна тонкая работа с чипом, сегодня лучше уже
инвестировать время в изучение ARM, имхо.

Приятно видеть, что именно свободная модель развития сообщества и свободный софта с чертежами
сделали возможным такую популярность аппаратно-программной платформы Ардуино.
0
  • avatar
  • Dzhus
  • 29 августа 2011, 16:45
Processing выше уровнем, масса библиотек давно перевалила за критическую, прекрасное сообщество
Processing — костыли для начинающих, ненужная надстройка над GCC. Большинство их так называемых «библиотек» пишутся за 30 минут на С.
+1
Такие, как вы, и гуйки на C пишут.
-2
Так-то оно так, ежели оно про то… (с)

Но в данном конкретном случае, эти библиотеки уже написаны, отлажены, снабжены комментами и примерами. И даже встроены в ГУИ.

Хотя рьяно Ардуину я тоже не буду защищать. Это как VB6: я на нём написал не одну сотню программ, и ничего, но когда понадобилась программка для рассчёта потенциала электростатического поля от многих источников — то тут его быстродействия не хватило: программа заметно долго работала. Хотя там и работы было многовато, да и алгоритм был «в лоб» с минимальной оптимизацией.

И ещё один квант информации, как хотите, так и трактуйте. Захотел как-то я написать библиотеку для PS\2 шины. Как IIC у DiHalt'а: работа по прерываниям, конечные автоматы и т.п. Но, к сожалению, не хватило мозга =). После этого посмотрел как это реализовано в Arduino-библиотеке: там всё делается примитивно и топорно: дрыгнули ногой, delay, дрыгнули ногой, ещё delay и т.д. И ни о какой «параллельности процессов» тут говорить не приходится. Зато читаемо и работает.

Моё мнение — это «ленивая» платформа и «ленивый» язык. И когда оно себя оправдывает (во времени, в читаемости кода, в стоимости, да в чем угодно), то не грех этим воспользоваться.
0
После этого посмотрел как это реализовано в Arduino-библиотеке: там всё делается примитивно и топорно: дрыгнули ногой, delay, дрыгнули ногой, ещё delay и т.д.
ну вот, еще один пример «качества» библиотек Arduino, в коммерческом проекте я бы побоялся слепо использовать такое г., неизвестно как оно себя поведет при эксплуатации.
0
Дык оно на работу в условиях RTOS и не рассчитано, зачем параллелить? Тем более что параллельное программирование такое лютое поле подводных камней, что подсовывать его новичкам — форменное издевательство.
Конечно ардуино добавляет свои накладные расходы, но в целом для многих задач вполне адекватный фреймворк. Не требуется вылизывание на асме для того, чтобы светодиодом помигать. Так что на своем месте — вполне интересный инструмент, простой в освоении и удобный.
0
Можно фойлик платы увидеть?
0
0
Спасибо большое
0
Доброе время суток!

Меня интересует кто-то видел библиотеку modbus-rtu + RS485?
Ищу, ищу, вижу для одного, для второго но не вместе. :(

Очень интересуют вопросы распараллеливания времени работы различных процессов в одной или нескольких Arduino. Например опрашивать гирлянду ds18b20 при этом не терять запросы по RS485 + ModBus-RTU ну и более менее своевременно отвечать. Обычно такие вопросы не затрагиваются. Примеры в интернетах очень асинхронны и часто используется не более 1-2 устройств в примере.

Сегодня разговаривал с одним приятелем — он косвенно подтвердил. Он делал проект на Arduino с воспроизведением звука и использовал 2 контроллера. Один выполнял временно-критически важные задачи, а второй — занимался всякими менюшечками )
0
Очень интересуют вопросы распараллеливания времени работы различных процессов в одной или нескольких Arduino.
Теоретически это реализуемо. Но практически — зависит от библиотек, и надо в них закапываться, чтобы понять, как оно сделано и будет ли работать вместе (в этом плане у ардуино встречаются неплохие библиотеки — в отличие от, скажем, библиотек mikroPascal/C/Basic). Ну или писать свое (впрочем, в этом случае ардуино превращается в неудобную IDE с почти голым С++).
0
Боюсь, что именно в таких вопросах совсем не стоит ориентироваться именно на Ардуино-ИДЕ и Ардуино-сообщество. Там есть интересные проекты — но подавляющее большинство из них несовместимы друг с другом, а многие даже не соответствуют немногочисленным стандартам самого сообщество. Это полностью дискредитирует саму идею «кирпичиков» в проектах сложнее «помигай лампочкой».

Но сами по себе «кирпичики» никто не мешает использовать как отличные паяные китайцами заготовки. Ничто не мешает писать проекты с использованием любых сред разработки, языков и библиотек для AVR — например, вот на этом вот сайте есть отличные примеры куда выше качеством чем «скетчи» из ардуино-сообществ.
+1
Глядя на Mindstorms, подумал: а почему бы в каждый кирпичик не вставить собственный контроллер, заточенный под нужный функционал (просится STM8), и соединить все универсальной шиной типа I2C

А вот уже в центре — что-то ардуиноподобное для общего управления.
0
Сразу прошу прощение, но, по-моему, нет в этом смысла.
Поясню.
1) Ардуино идет стандартизированным под свою распиновку, на ней строится множество доп модулей, библиотек. Все завязано так или иначе на распиновке. Огород своего потребует своих переходников под этот стандарт. Распиновка вообще стала стандартом де-факто в индустрии «наколеночников» «прототипщиков» — Proteus 8.2 имеет свои шаблоны для Arduino, Stm32 платы делаются Arduino-pinout compatible(Stm32 Nucleo boards) и еще многие примеры использования стандарта…
2) Ценность платформы в количесве уже(!) написанного и готового кода — библиотеках. Они очень сильно упрощают разработку «на коленке». Отладка прототипа сводится к #include и написанию пары строк кода. Доходит до маразма, что иногда проще сделать порт библиотеки и всего окружения на нужный контроллер, чем переписывать это все на С с нуля и ловить баги.
3) Цена. Китайские аналоги(которые зачастую лучше, ИМХО, чем оригинал) + цены местных барыг на рассыпуху сводят на нет желание делать свою платформу со своими костылями. Меньше 10у.е. за Mega2560 у Китая — суровая реальность. В своем гребаном Минске за эти деньги я даже Мегу не куплю, а еще интерфейс, разьемы, диоды, стабилизаторы, плата… Короч, в некоторых случаях мне получалось бы дешевле закупать китайские ардуины на разборку, чем брать свежие в поставщика.
3) Сборка и отладка собранного для начинающего — еще тот вопрос, поэтому не советовал бы новичкам проходить мой путь от самостоятельной сборки программаторов, любая мелочная ошибка может тут поставить крест на всем. Дешевле взять что-то готовое.
Все ИМХО, но думаю, что найдутся те, кто со мной согласится.
0
Да, на всякий случай, для тех, кто не в курсе:
для ардуин существует плугин для Atmel Studio 7, Visual Micro.
еще Stino — для sublime text(хоть и не без косяков).
Последний, как по мне так вообще лучший из редакторов.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.