Pull to refresh

Comments 74

Спасибо за работу! Как раз начинаем проект где будет задействован и чип и эта библиотека.
+1
Полезная вещь, респект автору за работу!
на оффициальном сайте Ардуино есть и другие библиотеки реализующие или не весь функционал шилдов или с ошибками, хотя есть библиотеки на github.com с лучшим кодом, который охватывает больше функционала железа. Чтобы попасть на оффициальный сайт есть какие то трудности? Или просто никто не отслеживает на оффициальном сайте лучшие реализации библиотек?
Я совершенно не фанат официальной библиотеки, мне нужно, чтобы AMS работал и если есть нормальная библиотека то я с удовольствием ею воспользуюсь. Все, что я протестировал были не лучше.
Ведь с библиотекой работают не только пользователи, но и огромное количество профессиональных разработчиков.

Не холивара ради, а любопытства. А правда есть профессиональные разработчики на Ардуино? Пытался найти недавно примеры коммерческих Ардуино-продуктов, но как-то поиски не на что не навели…
И по посту. Если все равно приходится ковыряться в библиотеках то не проще ли сразу перейти на обычную атмегу?
Нет, что вы, это же адский ад, писать на атмеге или, не дай Бог, на любом другом микроконтроллере.
Я вообще сейчас ужас напишу, нет не так… УЖАСЪ!!! Ассемблер.
shpaker: Не холивара ради, а любопытства. А правда есть профессиональные велосипедисты на детских пластиковых трехколесных велосипедах?

aronsky: Нет, что вы, это же адский ад, велосипедисту велосипед использовать.
Профессиональный — это в контексте ВУЗов с недостатком финансирования. Коммерческий проект в Ардуино — это сама Ардуино и шильды к ней. Например атмеловские чипы нельзя использовать в оборудовании медицинского направления — они вроде как отказались лицензировать.

Что касается самих веб серверов на атмеле, то проектов куча. Начиная с цепляния эзернетовской карточки на rtl8239, полноценного web с ftp на mega644 и закачнчивая микросервером на attiny2313.
Как-то не убедительно. Сама Ардуина как пример успешного проекта на Ардуинке тоже не засчитано. Имхо преподов принимающих работы на дуинке не должно быть, только если на вводных дисциплинах.
пс: Вы не подумайте у меня у самого их три штуки, для целей быстрого прототипирования.
Не защитник Ардуино, но нам на экскурсии в Rice University, весьма небедном месте, показывали, что вообще все электронное прототипирование студентами ведется с использованием ардуино…
На сколько вижу по информации из поисковика, в этом универе ардуиной проповедуют с 2014 года. Зато прекрасно помню их страницу студенческих разработок под атмел с 2002 года. Да оно и сейчас не дурно отображается по запросе rise univeryity atmel.

Идея стандартизировать модуль разработки не нова и даже хорошо, что на это кто-то выделил денег под рекламу, чтоб сделать некий «стандарт», отметающий кучу самолепных велосипедов. Самый навоз идет от прилагаемого фреймворка, от которого у начинающих пучит мозг (что напрямую относится к данному топику). Благо для программирования можно не легко, но отказаться от фремворка.
Под профессионалами подразумевались люди хорошо разбирающиеся в сетях, авторы серверов на Ардуино (такие тоже есть) и разработчики библиотек, основанных на стандартном коде.

В библиотеке пришлось ковыряться по необходимости, до сих пор как-то обходилось без этого.
Недавно я задал тот же вопрос Винфилду Хиллу, автору знаменитой книги «Искусство схемотехники». Он выслал схему своего недавнего проекта — драйвера электропорации — под управлением Arduino Nano. Удобство Arduino в том, что клиенту будет легко обновлять программный код.
Удобство Arduino в том, что клиенту будет легко обновлять программный код


Это достигается заливкой в любую конструкцию бутлоадера от Ардуины, если вы хотите именно из Arduino IDE заливать прошивки (не представляю, зачем покупателю серийного коммерческого устройства этого хотеть). Во всех остальных случаях это будет очень странным решением.

Он выслал схему своего недавнего проекта — драйвера электропорации


Он его производит? Нет? Тогда, боюсь, лично он Arduino не использует.
Авторы книги обедают с самыми продвинутыми схемотехниками Силиконовой Долины, создают приборы для научных лабораторий по всему США, поэтому я бы к их мнению прислушался. Я понимаю, что принято думать, что Ардуино — это такая игрушка для моргания светодиодами, но достаточно одного примера, чтобы это опровергнуть.
Я рад за них, наверняка питаются хорошо.

Но не могли бы вы всё-таки пояснить, какой практический смысл в использовании Arduino в серийно производимом устройстве?
В крупносерийном производстве использовать Ардуино смысла нет, но про это не было и речи. Вопрос был «используют ли Ардуино профессионалы». Ответ — используют, в частности — Arduino Nano. Удобный маленький модуль со смешной ценой.
Вопрос был про коммерческие продукты. Коммерческий продукт — это серийный продукт.

А профессионалы его используют как удобную вещь для быстрого прототипирования, чтобы на коленке быстренько что-то собрать. Иное, повторюсь, не имеет практического смысла.
А если окажется что в серийное устройство дешевле и быстрее будет впаять плату-ардуину? Ключевое слово дешевле. особенно на малых сериях, где подготовка к производству с нуля существенно повысит стоимость конечного изделия.
У вас ардуина куда впаивается? На некоторую плату, на которой нужная вам обвязка стоит?

Ну так вам к производству её готовить что с атмегой на борту, что без неё — одинаково стоит.
Коммерческий продукт не всегда крупносерийный.
Научные установки продаются, зачастую штучно, с адаптацией под конкретного заказчика. Использование технологий быстрого прототипирования в таких проектах вполне оправдано.

PS: сам не использую ардуино и против его использования в проектах с сериями > 500 шт.
Использование технологий быстрого прототипирования в таких проектах вполне оправдано


Извините, полная чушь.

У вас 90 % научной установки — это интерфейсы к датчикам, как правило, весьма специфическим, причём интерфейсы с максимально понятными характеристиками, линейностью, ошибками. У вас просто стоимость одних только нужных АЦП и ОУ (и да, на ардуиновских ширпотребных шилдах ничего близкого к ним не будет) запросто перекроет стоимость самой ардуины в разы, равно как и сложность разводки печатки под них по сравнению с печаткой под атмегу.

P.S. Помнится, в начале нулевых мы в лабе делали себе на атмеге оптоэлектронный интерфейс к спектрометру, не то чтобы сильно страдали от отсутствия ардуины.
Ну фиг его знает. В моей установке обвеса примерно на 200$ датчиков и тому подобного. Но с этим прекрасно справляется Arduino Nano за 2.5$
Вы её себе на коленке делали, а не продавали сторонним людям.

Себе — из чего угодно, хоть из соломы с глиной, никто, кроме вас, от этого не пострадает.
А в чём проблема для одиночных вещей? Сама плата сделана очень качественно, щтампуют их тоннами. Софт? Вероятно. Библиотеки Arduino могут содержать проблемы. Но в моих задачах это не проявляется. Где надо я руками запускал аналоговый коммутатор, который обычным фреймворком не охватывается. Мне остаётся только воткнуть готовую железяку в плату и работать. Меньше возни с разводкой. Какая мне разница — голый там чип или сразу с обвязкой и usb? В одиночных изделиях большая часть цены- моё время. Тупо дешевле не отвлекать меня совсем низким уровнем.
Меньше возни с разводкой


Если разводка AVR8 для вас — это возня, которая заслуживает хоть какого-то отдельного упоминания, то на уровень разработчика электронных устройство вы вообще, совсем, никак не тянете. Для меня, например, развести на плате атмегу и её обвязку — это быстрее, чем рисовать библиотечный компонент с какой-либо ардуиной.

А если для вас разводка атмеги представляет собой какое-то значимое препятствие, то у меня, как потенциального покупателя научной аппаратуры вашего производства, возникает серьёзный вопрос о том, какой уровень понимания там вложен в куда более сложную часть этой аппаратуры.

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

Для себя — повторюсь, хоть из соломы с глиной. Но если вы хотите на коммерческой основе мне это за несколько тысяч долларов продать — у меня будут вопросы.
Убедили, согласен. Я профессионал в другой области.
Ох уж эти специалисты, которые разводят цифровую схему за 5 минут…
У меня как раз сомнения возникают именно эти 5-минутные платы.
Потратить час времени на разводку платы — сколько говорите у вас стоит час времени?
Примерно столько времени уйдет чтобы развести плату уровня ардуины с учетом всех требований разводки а не скопировать уже готовое решение.
Коммерческий продукт — это серийный продукт


Откуда взято такое определение?
Бывают индивидуальные проекты, для которых да же плату разводить не имеет смысла. Как пример — производство архитектурных макетов. Есть фирма (без имен, рекламой заниматься не буду), которая занимается именно этими макетами. В каждый макет втыкается ардуинка, которая мигает лампочками («ночная» подсветка, светофоры), крутит сервы (шлагбаумы, ворота, модельки машин), обрабатывает внешние запросы (в т.ч. сетевые) на запуск сценария. Каждый макет — индивидуальный проект под конкретного заказчика.

В моем понимании «Коммерческий продукт» — это продукт, приносящий прибыль. Каждый макет — это продукт, за который платят достаточно что бы кормить небольшую фирму, которая их производит. Им важна скорость разработки (чем больше выполненных заказов, тем больше прибыль), а в этом ардуине нет равных.
Это фирма со всей очевидностью не занимается разработкой и производством электроники ни в каком виде. Она является потребителем готового изделия.

Как только они захотят чего-то минимально большего и, например, придут с этим запросом к собственно разработчикам электроники, ардуина бодро пойдёт лесом.
Я написал, что эта фирма занимается производством интерактивных архитектурных макетов. Вообще, как и любая коммерческая фирма, она занимается зарабатыванием денег, а не продвижением своей религии. Если производить универсальные блоки им покажется выгоднее, то она это сделает, а пока использует ардуино в своих вполне коммерческих проектах, не претендуя на инновации, не нанимая армию дорогих специалистов, не закупая дорогое ПО и аппаратуру. У них своя ниша и их это, видимо, устраивает.
Напомню, что вопрос был про коммерческий продукт. И я поддерживаю ezh213b в его утверждении, что «Коммерческий продукт не всегда крупносерийный.». В приведенном примере продуктом, который фирма производит, является сам макет. Для его производства закупаются комплектующие, в составе которых Ардуина, которая используется как управляющий блок.
Типа чем Ардуина хуже, чем просто gps или wi-fi чип. Причём этот чип может содержать более сложную структуру и мощные мозги, чем центральный модуль.
Тоже подумалось что професиионал скорее всего не возьмёт ардуионо для любого более-менее серьезного проекта.
Да вот берут (см. комментарий выше)
У меня в лаборатории весьма успешно трудится. Контролирует процесс обработки органа перед засеванием стволовых клеток.
Неужели, профессионально занимаетесь разработкой железок? Или всё же на хлеб зарабатываете другими навыками? ;)
Хм. Уели. Но тем не менее, благодаря сниженному порогу вхождения, специалисты получили возможность использовать железо в профессиональных смежных областях.
А для питания ардуины можно взять батарею из картофелин.

Вы бы всё же обозначили грань между профессиональным и студенческой поделкой. Верный признак второго — вы единственный носитель знаний о девайсе (и, как следствие, неремонтопригодность).

А стоит ли опираться на студенческие поделки в проф. деятельности — большой воопрос.
Для небольших исследовательских групп это нормально. Естественно, подробная документация и все исходники доступны. Мои коллеги сами не смогут без меня, но любой технарь — без проблем.
Нет, батарея из картофелин — это не нормально для любых групп (кроме группы проекта исследования батарей из картофелин).

На сколько я понял, у вас _макет_ трудится в _исследовательской_ деятельности. Но, это _макет_ — ему можно. Как только деятельность станет чуть масштабнее («профессиональнее») — начнёт жать. Профессиональность — она же не в buzzwords измеряется

PS. Но за подробную документацию — лайк (хотя, если честно — не верю -_-)
PPS. Не надо думать, что я Вас где-то дураком назвал
Я стараюсь все документировать. Знаю как тяжело чужую вещь исправлять. В науке нормально использование уникального единичного экземпляра. И иногда для одного эксперимента.
Тут еще вопрос, что вы называете ардуино. Официальные железки? Ардуино как прообраз ОС?
Например, вот знаменитый ArduPilot — отточенный опенсорсный автопилот, под него сначала сделали свою железку, а позже портировали на PixHawk.
О да, профессионал обязательно пойдет в гараж, вытравит плату и будет пол года писать прошивку на ассемблере. Такие вот суровые профессионалы.
Для макетирования пойдёт и wire-wrapped макетки, и девкиты. Да, и арудино тоже.
Но неужели вы будете утверждать что делать продукт на девките это нормально?
Прототипирование и разработка готового изделия — разные вещи.
Пытался найти недавно примеры коммерческих Ардуино-продуктов, но как-то поиски не на что не навели…


А смысл? Arduino — это фактически референсный дизайн атмеги, которая в применении проста настолько, что своя плата с нужным функционалом разводится за вечер студентом-третьекурсником. Результат будет значительно компактнее, надёжнее и дешевле.

Ардуино в коммерческих разработках нужно использовать, если изделие — это какой-то конструктор, который покупатель сам собирать будет.
Как только дело доходит до более-менее серьезной задачи, Arduino ни на что не годится. Хотя сам проц нормальный, библиотеки в проекте слишком уж универсальны, и иза-за этого очень неоптимальны для узких задач. Да и написаны абы как. С этим проектом работают в основном начинающие разработчики, и это сказывается на уровне кода, и от багов проект избавляется очень медленно.

Но для старта он очень хорош. Начав освоение микропроцессоров с Ардуино, очень скоро я перешл в AVR studio и переписал нужные библиотеки под свой проект.
Так вот, оказалось, что эта библиотека попросту профнепригодна. На ней в принципе невозможно построить нормальное сетевое взаимодействие. Можно только «баловаться» одиночными запросами и ответами.

В принципе этим можно охарактеризовать Arduino в целом.
UFO landed and left these words here
Конечно, и подробно описал в статье. Если кратко, то те запросы, которые игнорировались и просто отбрасывались стали обрабатываться, что кардинально (3 — 5 раз) уменьшило время загрузки файлов. Если бы я не разобрался в проблеме, то как бы я перекисал библиотеку и заставил всё работать как минимум в три раза быстрее?
Пардон, переписал, естественно.
UFO landed and left these words here
Я проверял закрытие сокетов и никаких проблем не нашёл, у меня складывается подозрение, что проблема глубже — в работе с буфером 2х8 килобайт в W5100. Было бы здорово, если кто-нибудь из действительно компетентных людей осветил этот вопрос.
Кстати, кто-нибудь может сказать почему именно 3 секунды? Не 2 и не 4, а именно 3. Или кратное этому значению 9 секунд? Здесь явно есть какой-то смысл и какая-то связь. Таймаутов я не обнаружил.
UFO landed and left these words here
Конечно пробовал. Ничего не меняется.
UFO landed and left these words here
Увеличивать нельзя. У W5100 аппаратное ограничение. А при уменьшении всё становится только хуже, что предсказуемо.
Похоже на дефолтовый таймаут tcp syn retry. Вообще, вам надо было начать с дампа траффика хотя бы тем же wireshark, а дальше уже разбираться, где именно не работает.
Да, мы эту проблему обсуждали на форуме АМС с дампами и графиками и пришли к выводу, что запросы уходят в ретрансмиссию на 3 секунды, затем на 6. Но всё равно, на мой взгляд, библиотека работает не на 100% корректно и там есть, что исправлять.

Сейчас мы вышли на минимально приемлемую задержку загрузки страницы в 4 секунды, но желательно всё-таки разобраться с этой проблемой до конца.
> рассуждения на счет комментария и XXX

Осторожно, здесь какая-то порнография:
Мне прислали ссылку forum.arduino.cc/index.php?topic=154157.0, оказывается не только я пытаюсь решить эту проблему. (Обсуждение на итальянском)

Ещё высказано предположение, что 3 секунды связаны с TCP retransmission. Это попытка повторной отправки пакета через определенный таймаут. 3 сек — это Default Retransmission Timeout в Windows msdn.microsoft.com/en-us/library/aa922362.aspx?f=255&MSPPError=-2147217396
У вас отлично получается, может посмотрите чип W5500?
Вот тут я про него писал полтора года назад. С тех пор шилдов на нем появилось изрядно.
geektimes.ru/post/255132
Скоро выйдет «отвязанная» версия в которой все принципиальные проблемы решены и типичное время загрузки страниц составляет 4 секунды, что вполне приемлемо. Но есть мелкие моменты с задержками и сокетами.

Я смотрю вы разбираетесь в теме — было бы неплохо если бы вы помогли разобраться. Скачав дистрибутив к себе или «теоретически» обсудив проблему на форуме АМС.
Коллеги к счастью уже давно сделали и сдали железку. Там было все на штатной библиотеке wiz-io на одном фиксированном сокете, а не на пуле сокетов. Задержки были минимальные просто по той причине, что TCP HTTP быстро открывалось и быстро закрывалось. Долгоживущие HTTP сокеты не поддерживались, даже на просьбу Connection: keep-alive. Параллельные соединения от броузера (например IMG SRC) теоретически могли бы мешать, но чип как-то корректно информировал клиента, что сокет уже занят (подробности не смотрел) и запросы приходили последовательно, но в хаотичном порядке, особенно при работе через proxy. Это что помню.
Вот именно поэтому я как правило пишу библиотеки сам на основе известных и популярных. Не люблю котов в мешках. Иногда их приходится практически переписывать заново. Сейчас пишу для Amazon S3. Стандартный SDK вполне рабочий, только во-первых там ноги переломаешь на коде, а во вторых столько абстракций просто не нужно. Все хорошо в меру. В итоге все необходимые функции для работы с файлами уместились в один файл. Один! Времени занимает много, соглашусь, я до сих пор ее пишу согласно нужным задачам, однако я более чем уверен, что она будет работать так, как мне надо, без подводных камней и каких-то сюрпризов, имеющих обыкновение появляться прямо на дедлайне. Ну и наконец это просто интересно и полезно для практики.
Поясните, пожалуйста, это место: «Цикл перебирает сокеты и, как только находит подходящий, возвращает клиента, а остальных просто игнорирует. И они висят по десять секунд, пока «карты благоприятно не лягут».» Что за проблема была в ходе перебора? В ходе перебора сокеты не закрывались должным образом?
Насколько я понял, когда перебор находил первый пригодный сокет, то прерывал цикл и остальные игнорировал. Там по цепочке ещё функция accept. Алгоритм «уходил» на обслуживание микроконтроллерных функций и когда «приходил» опять к этому циклу, опять выхватывал один сокет и опять «убегал», а те запросы, которые он не «выхватил» уходили в ретрансмиссию.

Большую часть проблемы я решил, но там еще далеко не всё в порядке.
Вопрос может немного не в тему, но все же спрошу:
Скажите пожалуйста, в чем вы собираете Ардуиновский проект, например свой MegaServer? В какой среде?
Мне пришлось из-за одного проекта внести в эту же библиотеку изменения касающиеся кол-ва сокетов и объема буфера у них, но в других проектах нужна стандартная версия. Я не знаю как передать компилятору дополнительный параметр, который бы определял какой вариант библиотеки собирать. Пробовал стандартную Ардуиновскую IDE и Code::Block.
Собираю в стандартной Arduino IDE. Я тоже столкнулся с проблемой подключения разных библиотек к разным проектам. И решил её при помощи новой концепции директорий проекта. В частности, 0.13 версия AMS для Arduino Due поставляется с новой схемой директорий проекта. Подробнее об этом можно почитать на форуме проекта, а со структурой папок можно ознакомиться, скачав 0.13 версию AMS для Due.
Чтож, спасибо, попробую. Хотя я в тайне надеялся, что вам удалось раскопать тайны IDE, которые позволили бы поступать примерно так:
1. определить в коде специальный литерал, например TX_RX_MAX_BUF_SIZE_4096
2. в библиотечных файлах прописать соответствующие изменения в конструкцию типа:
#if defined(TX_RX_MAX_BUF_SIZE_4096) // если определен литерал TX_RX_MAX_BUF_SIZE_4096
#define TX_RX_MAX_BUF_SIZE 4096
#else
#define TX_RX_MAX_BUF_SIZE 2048
#endif
А компилятору передать дополнительный параметр -DTX_RX_MAX_BUF_SIZE_4096.
Only those users with full accounts are able to leave comments. Log in, please.