lqp - Про Arduino
May 24th, 2015
03:30 am

[Link]

Previous Entry Add to Memories Tell A Friend Next Entry
Про Arduino
Купил у китайцев набор Arduino - племянникам в подарок, но как водится, играю вместо этого сам. Мои впечатления:

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

Модуль Arduino (как и микросхема ATMega, на которой он построен) имеет 20 ножек-выходов. Это всё - никаких других возможностей для общения с внешним миром у него нет. Для подключения любого внешнего устройства расходуется минимум одна нога, а мало-мальски сложные забирают по 3-4. Чем тупее цифровое устройство, тем больше дефицитных коммуникационных ресурсов оно жретъ. В конечном счете построение мала-мала сложных устройств вокруг Arduino вырождается в пересылку туда-сюда данных по последовательным шинам (SPI, I2C, 1W) между Arduino и "внешними устройствами", каждое из которых имеет встроенный процессор как бы не мощнее, и которое вполне способно было бы выполнить все нужные функции самостоятельно. Мне это представляется идиотизмом.

В пресловутой тележке Arduino Robot на самом деле две платы Arduino, как в УК-НЦ и все равно этот робот туп как инфузория туфелька. Два килобайта оперативной памяти не оставляют места ни для продвинутых алгоритмов, ни для накопления информации. О таких вещах как компьютерное зрение и говорить не приходится. Только бихевористские схемы времен Вейцзенбаума, стимул-реакция.

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

Это не значит, что Arduino мне не понравился. Напротив, Arduino крут неимоверно! Но крут он не как самостоятельный процессор а как универсальный USB-контроллер. Ну и воообще, учитывая наличие к нему Ethernet-,Fi-, Bluetooth- и GPRS-плат - как универсальный контроллер низкоскоростных устройств.

В свое время, лет десять назад, большой бедой было исчезновение из схем персональных компьютеров COM-порта. Сначала из ноутбуков, а теперь и в десктопной плате редко где встретишь. Это лишило кучу народу традиционной возможности спаять простое периферийное устройство, не содержащее ни процессора ни даже цифровой логики, а управляемое просто наличием/отсутствием питания на каждой из пяти ног COM-порта. Да хотя бы ту же лампочку туда повесить. Пришедший на смену COM порт USB предполагает работу по сложному цифровому протоколу и такие фокусы не поддерживает.

Arduino решает эту проблему, радикально и с большим запасом. Теперь, с помощью трех проводков и пяти строчек кода я, с моими рудиментарными знаниями электротехники, могу подцепить к компьютеру практически любой датчик или эффектор, цифровой или аналоговый. Сейсмограф, лазер, сонар, стиральную машину, холодильник, кофеварку, Большую Красную Кнопку - все что угодно. Лишь бы они были совместимы по напряжению. Если несовместимы, придется еще добавить транзистор. Если сверху нахлобучить коммуникационный shield и добавить еще десять строчек кода, то с датчиком можно будет общаться с другой стороны глобуса. И это круто, ящетаю.

(54 comments | Leave a comment)

Comments
 
From:(Anonymous)
Date:May 24th, 2015 - 11:52 am
(Link)
Ардуино хороша для детей и начинающих.
Но после того, как ЛЕДами помигали, пьезодатчиком попищали, надо, конечно, переходить на более интересные вещи типа Tiva C LaunchPad (на основе ARM Cortex M4). Это все-таки уже 32 битная машина с приличным объемом памяти, с большим количеством ног и профессиональными IDE на выбор. Роботов надо на таких строить. Тем более что цены на них сейчас не сильно отличаются от ардуиновских.
From:[info]lqp
Date:May 24th, 2015 - 12:22 pm
(Link)
Я не думаю, что здесь есть сколь-нибудь различимое поле для деятельности для "неначинающих". Все, чем нужно учиться больше недели - вне рассмотрения.
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 06:36 pm
(Link)
Какую задачу вы не можете реализовать на Ардуино по прочине его
технических ограничений?
From:(Anonymous)
Date:May 24th, 2015 - 11:55 am
(Link)
а к чему был плач по RS232-портам? берешь USB-RS232 адаптер и работаешь.

>О таких вещах как компьютерное зрение

берешь современный одноплатный компьютер - raspberry, odroid, любой другой где можно нормальный линукс запускать - и будет тебе зрение. плюс они все сочетаемы с ардуиной, разумеется.
From:[info]lqp
Date:May 24th, 2015 - 12:14 pm
(Link)
Таки прочитате пожалуйста еще раз, о чем речь у меня. Я вроде довольно подробно обьяснил.

Переходник USB-RS232 позволит вам передавать данные по кабелю стандарта RS-232 между двумя _цифровыми_ устройствами. Он никак не поможет вам, если задача - "подать напряжение 5 вольт на провод RST и так держать до особого распоряжения".
From:(Anonymous)
Date:May 24th, 2015 - 12:22 pm
(Link)
и что же вам помешает устанавливать сигналы типа DTR, да и все остальные - на USB переходнике?
From:[info]lqp
Date:May 24th, 2015 - 12:32 pm
(Link)
Очевидно отсутствие таких понятий в протоколе USB.
From:(Anonymous)
Date:May 24th, 2015 - 12:33 pm
(Link)
а, вы просто не в курсе. ну ок.
From:[info]lqp
Date:May 24th, 2015 - 12:54 pm
(Link)
Ну так расскажите нам, темным.

Да, я охотно верю в то, что приборы, одним концом втыкающиеся в USB а другим концом полностью эмулирующие поведение и возможности 16450UART теоретически возможны и практически существуют. Собственно, обсуждаемый Arduino как раз и является таким прибором.
From:(Anonymous)
Date:May 24th, 2015 - 01:05 pm
(Link)
что рассказать? какой командой устанавливается к примеру сигнал DTR на порту RS232?
From:(Anonymous)
Date:June 3rd, 2015 - 12:36 am
(Link)
Больше своеобразие USB-драйверов и USB-переходников, которые могут подать сигнал DTR и через 5ms, и через 500ms после программной команды.
From:[info]lqp
Date:May 24th, 2015 - 12:16 pm
(Link)
И да разумеется, если нужно запускать линукс - так мне проще запустить его на своем собственном компьютере (где он и так уже запущен), а не возиться с каким-то ворохом печатных плат.
[User Picture]
From:[info]do_
Date:May 24th, 2015 - 12:24 pm
(Link)
...но зачем запускать линукс на "своём компьютере", где он будет жрать минимум ватт 50, вместо того чтобы запустить Raspberry PI со сравнимыми характеристиками, который будет жрать всего 1 ватт?
From:(Anonymous)
Date:May 24th, 2015 - 06:47 pm
(Link)
У пая незащищенные gpio пины он беспонтовый
From:[info]lqp
Date:May 24th, 2015 - 08:01 pm
(Link)
Да нет, понятно, что такую задачу можно (и нужно) решать именно так.

Просто это сильно другая весовая категория. Не тянцщая на ненапряжный послеобеденный отдых и слишком похожая на то, что я и так делаю по работе.
From:(Anonymous)
Date:May 24th, 2015 - 12:25 pm
(Link)
если вам нужен отдельный девайс с компьютер вижн то пожалуйста, есть одноплатные компьютеры которые позволяют это реализовать. а если отдельный девайс не нужен то конечно: можно и на собственном десктопе или лаптопе с линуксом запускать.
From:(Anonymous)
Date:May 24th, 2015 - 06:46 pm
(Link)
Привлекательно выглядят андроид тв стики - на них можно ставить линукс и через ардуины управлять миром. Mk802 наверное долларов за 20 можно купить.
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 06:43 pm
(Link)
Я знаю, например, одну группу во Франции, где на Ардуине сделали
спецтрометр для точного измерения кинетики реакций между органическими
радикалами.
From:(Anonymous)
Date:May 24th, 2015 - 08:48 pm
(Link)
ну, органические радикалы разные бывают. в том числе стабильные и довольно долго живущие. а что и как измеряли французы, если вкратце? ссылка на статью подойдет, но буду очень признателен за краткое изложение на пальцах.
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 11:18 pm
(Link)
Я имел ввиду семейство радикалов RO2, у ник скороть само-реакхкии порядка
10^13 см^3/с; это медленная скорость, а радикал этот много где задействован,
отсюда и интерес. Французы измеряли ринг-дауном,
в ближнем ИК, у RO2 там есть запрещенный переход, слабый, но зато спектр
у каждого радикала уникален, в отличии от сильной полосы в УФ.
Я сделал одновременно и независимо от них подобное, только не на ардуине,
а взял комп с ДОСом, отрубил прерывания и сделал его real-time.

Если у вас есть доступ к ресурсам, могу дать ссылли.
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 11:19 pm
(Link)
10^-13, конечно же!
From:(Anonymous)
Date:May 25th, 2015 - 05:07 pm
(Link)
это понятно.
From:(Anonymous)
Date:May 25th, 2015 - 05:06 pm
(Link)
Спасибо

давайте ссылки, пожалуйста.
[User Picture]
From:[info]ded_mitya
Date:May 25th, 2015 - 07:53 pm
(Link)
Поправлюсь: у французов аппарат сделан на Атмеге, слово "Ардуино" там не встречается.
O. Votava and M. Masat and A. E. Parker and C. Jain and C. Fittschen, Rev. Sci. Instrum., 83, 043110, (2012)

Я сделал похожее на писюке с ДОСом, получилось быстрее (у меня разрешение по
времени ограничивается фактически откликом резонатора а не механикой лазера):
J. Chem. Phys, 139, 094201, (2013)
From:(Anonymous)
Date:May 26th, 2015 - 06:21 pm
(Link)
спасибо ещё раз, интересно

PS смысл давать текстовые координаты, когда можно дать doi или сразу линк через doi?
[User Picture]
From:[info]ded_mitya
Date:May 27th, 2015 - 04:28 am
(Link)
По привычке полез к себе в *.bib файл со ссылками, а DOI там проставлены не везде, из-за того, что я не всегда качал ссылки, а бывало, пальцами
вбивал "под декольте" (т.е. только то что в журнале указывают).
Да, конечно, doi лучше.
From:(Anonymous)
Date:May 27th, 2015 - 10:00 am
(Link)
Позволю себе задать вопрос, если не возражаете. Вы явно понимаете в микроконтроллерах и схемах больше чем я.

Я работаю с контроллером, который управляет примитивным подводным роботом. Примитивным в том смысле, что управление сводится к запуску 11 stepper motor и 4 dc brushless motor. В контроллер после подачи питания вводится "программа" (расписание запуска и остановки stepper моторов, плюс задается скорость вращения для dc brushless). Дальше железка отправляется под воду делать эксперимент, и после окончания извлекается обратно.

Реально ли продублировать такой контроллер на чем-то вроде ардуино? Существующему контроллеру сто лет в обед, и он на ладан дышит.

У меня есть навыки программирования и паять тоже умею, но с контроллерами дела никогда прежде не имел и паяю в основном провода и разъемы на кабелях. Реально ли освоить такой проект в одиночку с моего уровня? Время у меня есть, т.к. железка для исследовательского проекта. Не посоветуете с чего начать, куда смотреть и что почитать?

Или лучше такой проект заказать на стороне?

PS Извините что достаю вопросами, совершенно не с кем посоветоваться.
[User Picture]
From:[info]ded_mitya
Date:May 27th, 2015 - 05:17 pm
(Link)
Ну, у меня опыт с Ардуиной не очень большой, поэтому определенного могу сказать мало. 15 моторов если вешать каждый на свои GPIO выводы, если
можно контроллировать, то чем-то типа Mega2560.А может, и нет. Если
делать через IIC, то выводов хватит, н о возможно, на каждый мотор
нужна будет своя переферийная плата. Я моторы на Ардуину ине вешал,
поэтому, увы, это все что я могу сказать.
From:(Anonymous)
Date:May 28th, 2015 - 05:29 pm
(Link)
спасибо.
From:(Anonymous)
Date:June 1st, 2015 - 11:51 am
(Link)
Хахаха клоун
From:[info]lqp
Date:May 27th, 2015 - 06:43 pm
(Link)
Я думаю тут прежде всего нужно посмотреть на электрическую сторону дела. Цифровфе выходы Arduino дают напряжение в 5 вольт и какой-то очень маленький ток (0.2А или около того). Если этого не хватит, то придется городить какие-то развязки, усилители итп, за что я бы лично не взялся.

Ну и - вы его будете перед каждым заплывом по USB программировать? Не заржавеет ли? Или там какой-то интерфейс на самом роботе? Вот на реализацию интерфейса основные усилия и уйдут.
From:(Anonymous)
Date:May 28th, 2015 - 05:28 pm
(Link)
я нашел схемы, цепи питания управляются мощными транзисторами, а транзисторы через bit shift registers.

вы правы насчет интерфейса. конечно это большая и важная часть системы.
программирую через rs232, usb нельзя использовать на простых подводных кабелях и соединениях.

разумеется у существующей системы есть интерфейс и т.д. я пытаюсь понять размер проекта и оценить возможность реализации. штука в том, что времени у меня много (почти сколько угодно).
From:(Anonymous)
Date:May 28th, 2015 - 06:10 pm
(Link)
а существующий контроллер это tattletale 8 на базе моторола 68332
[User Picture]
From:[info]t_t
Date:May 24th, 2015 - 01:11 pm
(Link)
arduino есть на AVR контроллерах с 8,16,32,64,128МБ флеш памятью программ
причём всё работает на одном чипе без обвязки и даже без внешнего кварца.
Таким образом в готовый проект можно впаивать всего одну микруху.
[User Picture]
From:[info]t_t
Date:May 24th, 2015 - 01:16 pm
(Link)
Кб конечно, для программ это много
From:[info]lqp
Date:May 24th, 2015 - 01:44 pm
(Link)
32 кб для программ - это норм. А вот 2 кб для данных - это очень мало. Ну то есть скажем у нас хреновый датчик и мы хотим делать сто измерений и брать моду или там скользящее среднее - оопс мы уже заняли пятую часть памяти на элементарное действие.

Картинку не засосешь вообще никакую. Даже построчно.
[User Picture]
From:[info]t_t
Date:May 24th, 2015 - 02:00 pm
(Link)
SD флешка там подключается четырьмя линиями
From:[info]lqp
Date:May 24th, 2015 - 08:03 pm
(Link)
И что, такое массово практикуется? Это же жутко медленно, нет?
[User Picture]
From:[info]t_t
Date:May 25th, 2015 - 06:06 am
(Link)
тут http://www.poprobot.ru/home/podkluceniesdkartkarduino

приводят такие данные

Байт Запись, мс Чтение, мс
1 25 2
256 35 11
1024 66 39
From:[info]lqp
Date:May 25th, 2015 - 04:45 pm
(Link)
Мда. Все это сильно напоминает методы программирования 1950х годов, когда основная память была на магнитных барабанах. Хотя, конечно, и так тоже можно жить, да.
[User Picture]
From:[info]t_t
Date:May 25th, 2015 - 06:47 pm
(Link)
mega2560 позволяет расширить свою SRAM 8k до 512К
у китайцев он стоит копейки, что-то около 700руб
From:(Anonymous)
Date:June 1st, 2015 - 11:54 am
(Link)
Там все сложно становится, эту память нельзя сразу адресовать все равно, у ардуины нет мму
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 06:34 pm
(Link)
> имеет 20 ножек-выходов.
> Это всё - никаких других возможностей для общения с
> внешним миром у него нет.

Вам мало?
У USB порта всего две "ножки", если не считать питания, при этом
через USB можно контроллировать что угодно и как угодно.
А то, что сдери ножек бывают и АЦП/ЦАП, и IIC, это ничего?
Вообще, под Ардуино есть масса переферии и библиотек для ее управления,
если надо, можно и самому спаять.
From:(Anonymous)
Date:May 24th, 2015 - 06:44 pm
(Link)
Вы так глупы что приходите оспаривать даже ардуино. Займитесь слабо умными детьми своими чтоли они отца не видят растут аутистами.
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 06:48 pm
(Link)
Вас вообще нет.
From:(Anonymous)
Date:June 1st, 2015 - 11:54 am
(Link)
Кто бы говорил
[User Picture]
From:[info]ded_mitya
Date:June 1st, 2015 - 05:01 pm
(Link)
Еще раз (постоянно забываю) -- кто это пишет?
From:[info]lqp
Date:May 24th, 2015 - 08:20 pm
(Link)
через USB можно контроллировать что угодно и как угодно.


Нет, не что угодно, а то, что достаточно интеллектуально, чтобы понимать отдаваемые ему через последовательный порт команды. В случае конкретно с USB - еще и понимать что команды относятся именно к нему.

В случае с Arduino это означает - "почти столь же интеллектуально, как и сам управляющий процессор AVR ATmega". Так собственно и делают, чо. Просто мне вид хаотической кучи процессоров, каждый из которых используется на 5-10% своей функциональности эстетически несимпатичен.
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 11:11 pm
(Link)
Совсем необязательно. Adafruit, к примеру, торгует многими shields
(жаргон для переферии), и библиотеками к ним, которые реализуют
довольно интеллектуальное взаимодействие с этой переферией.
Ардуино опен сорс ивещь вполне популярная, библиотеки найти не проблема,
причем и исходники к ним открыты.
Я полагаю, что этого ресурса хватит на достаточно продвинутые проекты.
Разумеется, у Ардуины есть ограничения -- у всех кроме Due и Zero
медленный процессор, поэтому real-time н ким за пределами быстроты
отклина микросекунд в сто на них делать бессмысленно, но и без этого
у нее возможностей масса.

На Due, кстати, я собирался было переделать свою установку для кинетики,
но не судьба -- свалил из академии.
From:[info]lqp
Date:May 25th, 2015 - 04:43 pm
(Link)
Шилды - это собственно только конструкционный формат, схемно/программно они ничем не отличаются от тех же самых схем, собранных на макетной плате. Даже хуже, поскольку привязка к пинам в них прибита гвоздями.

Получается куча плат, на каждой плате процессор и львиную долю времени они тратят на то, чтобы пересылать друг другу команды через последовательный канал, разбирая их на биты и снова собирая, разбирая и собирая.
[User Picture]
From:[info]ded_mitya
Date:May 25th, 2015 - 07:32 pm
(Link)
Ну так, а на двух стульях все равно не усидишь.
Для контроллера размером со спичечную коробку это уже неплохо.
Универсальный процессор на все случаи жизни не построишь.
Взять тот же писюк, в принципе даже к нему стандартных
карт, которые вставляются непосредственно в него, раз-два,
все остальное привешивается через интерфейсы RS232/USB/GPIB,
которые тем и занимаются, что кодирую данные, пересылают и
раскодируют.
[User Picture]
From:[info]pizelks
Date:May 24th, 2015 - 10:54 pm
(Link)
Ардуино Yun во все поля.
[User Picture]
From:[info]ded_mitya
Date:May 24th, 2015 - 11:12 pm
(Link)
Arduino Due.
From:(Anonymous)
Date:June 3rd, 2015 - 12:39 am
(Link)
Только ChipKIT на PIC32!
Совместимм с Arduino, но больше памяти и более производителен.
Powered by LJ.Rossia.org