Штрих-коды, Ардуины и наши фантазии


#1

Дошли руки до 3-го теста. Во-первых, я бы поспорил с тем, что штрих-коды не позволяют идентифицировать товар с точностью до экземпляра, а так же с тем, что они требуют участия человека(автоматическая сортировка посылок и заказных писем на почте). Во-вторых, USB интерфейс есть только у старших представителей микроконтроллеров с архитектурой AVR, к тому же это периферийный интерфейс, поэтому он не может использоваться для программирования контроллера. Что же касается Arduino и так называемых USB-программаторов, то там используется проброс UART через USB (как правило программный, реже аппаратный), в свою очередь этот мост используется для ISP по протоколу JTAG, поэтому утверждение, что Arduino программируется через USB - это заблуждение свойственное людям никогда не занимавшимся разработкой электроники на базе микроконтроллеров.


(2 курс ПМИ и ФИИТ) CS221. Архитектура компьютера
#2

Процитирую постановку:

RFID-метки позволяют идентифицировать товар с точностью до экземпляра, а не вида

Имеются ввиду товары в массовой торговле, например, супермаркетах: об этом говорилось на лекции (правда, вы на этой части лекции отсутствовали). Если вы продаёте свои старые видео-кассеты, то вы, конечно, можете повесить на них различные штрих-коды и идентифицировать с точностью до экземпляра. В реальных условиях штрих-кодов на такое не хватает.

Честно говоря, не знаю, какие технологии используются для сортировки на почте. Об этом можно что-то почитать в открытой печати? Я взял первую нагугленную статью, там упоминаются штрих-коды, но ни слова о том, что они обрабатываются автоматически.

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

При чём здесь «микроконтроллеры с архитектурой AVR»? Обсуждаются именно Ардуины. Вы можете привести пример модели Ардуины, которую нельзя запрограммировать, подключив к компьютеру по USB? Те, что я знаю, (Uno, скажем) позволяют. Вот я захожу на arduino.ru и читаю:

Устройство программируется через USB без использования программаторов.

На офсайте более длинный гайд, в котором то же:

Connect the Arduino board to your computer using the USB cable.

Ну, и далее процесс запуска примера с мигающей лампочкой с помощью этого соединения.

Наверное, эти сайты тоже делали люди, «не занимавшимся разработкой электроники на базе микроконтроллеров»…


#3

При том, что Arduino по-сути это и есть AVR-микроконтроллер(чаще ATmega) с программатором, красиво выведенными портами ввода-вывода и симпатичным лейблом на плате - не более того. Если обратите внимание на фотографию, то там две микросхемы - одна в TQFP (она осуществляет UART-USB), а другая в DIP(ее вы программируете). Вот datasheet для второй микросхемы - никакого USB там на борту нет. Да, именно USB кабель вы втыкаете в компьютер, но USB там нет - это UART эмулируемый через USB-HID. Что касается инструкций, то я не знаю кто их пишет, но для меня очевидно, что они пишутся для школьников, которые даже не знают, что эту процедуру можно проделать с помощью нескольких резисторов и LPT порта без всяких сложных интерфейсов и дополнительных микросхем (есть настоящие инженеры, которые проделывали это с помощью двух переключателей и батарейки, то есть вообще без компьютера). В конце концов важно понимать, что Arduino и ATmega это как аспирин и ацетилсалициловая кислота.

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


#4

Предлагаю, дать дополнительные баллы тем, кто такое повторит :smirk: Никакого сарказма!!!


#5

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

Теперь про Ардуину. То, что она сделана на процессорах AVR, не делает процесс её программирования таким же как у всех остальных. Идея Ардуины в том, что её может запрограммировать, как вы говорите, даже школьник или студент младших курсов, не имея никакого опыта. В этом её сильная сторона. Вы же пытаетесь объяснить как всё устроено и демонстрируете тем самым:

  1. Неумение абстрагироваться от деталей реализации.

  2. Неумение читать вопросы (вопрос был именно об интерфейсе):

     Укажите название интерфейса (вид разъёма), используемого для загрузки прошивки на плату Arduino.
    
  3. Непонимание идеи Ардуины как максимально доступного микроконтроллера (это, кстати, косвенно упоминалось на лекции).

  4. И, наконец, самое печальное, банальный снобизм (могу привести конкретные цитаты для подтверждения, но не хочется тратить на это время).


#6

Думаю, что причина наших разногласий в другом. Можете строго сказать, что в вопросе подразумевается под словом интерфейс?


#7

Там в скобочках написано, вы не заметили?


#8

Заметил. То есть только разъем и ничего больше?! Мне кажется слово интерфейс здесь лишнее. Все таки в электронике интерфейс это количество проводов(косвенное указание на разъем), ВАХ и протокол - собственно разъема может вообще не быть.


#9

Ещё раз повторю свой вопрос, который задавал выше, и который вы проигнорировали: где вы видели Ардуину без разъёма USB? Где вы видели, чтобы Ардуину (а не то, что у вас там на видео по ссылке выше) программировали руками или программаторами? Кажется, вы пребываете в плену каких-то своих фантазий, что существенно затрудняет общение с вами.


#10

Во-первых, опыт построения устройств на базе AVR это не фантазии. Во-вторых, посмотрите на Arduino Pro Mini.


#11

Посмотрел, спасибо. Очевидно, на лекции рассказывалось не про него.

Пока стало ясно, что ваш опыт сильно мешает вам в понимании простых вопросов. Ну или вы просто хотите создать впечатление крутого программиста микроконтроллеров.


#12

Уверен, что большинство людей, работавших с микроконтроллерами Atmel, на данный вопрос дали бы ответ SPI потому, что знают, что AVR и PIC младших серий USB на своем борту не имеют, хотя бы потому, что они работают на слишком низкой для этого частоте. STM32, насколько мне известно, такое умеют, но это другая история. Человека посвященного в детали этот вопрос просто собьет с толку. Я считаю, что вопрос есть вопрос и ответ на него не должен зависеть от опыта человека - опыт не может мешать.

P.S. @Ulysses, я думаю, что постоянные обвинения в снобизме и попытке “выделится” студента, который для обоснования своей точки зрения не боится углубляться в детали, не способствуют повышению качества образования. Все что я хотел показать, это то, что вопрос из теста, строго говоря, некорректен, а так же то, что arduino это своеобразный конструктор для инженеров, и он не обязан иметь USB разъем, так же как дистрибутив linux не обязан иметь, например, Gnome.


#13

Подавляющее большинство Ардуин имеют USB разъём и именно о таких Ардуинах шла речь на лекции: видимо, вы слушали её невнимательно. С этой точки зрения вопрос поставлен совершенно корректно.

Опыт может мешать, это довольно частое явление (например, опыт управления заднеприводным автомобилем может мешать ездить на переднеприводном, опыт программирования на C# может мешать программировать на C++ и т. д.). Но чаще мешает желание выделиться. Думаю, это ваш случай.


#14

Подавляющее большинство - это явное преувеличение. Большая часть - согласен. А именно 12 из 20 видов плат имеют USB (еще не факт, что через него можно заливать прошивку) - это явно не подавляющее большинство. Остальные 8 бывают незаменимы, когда нужно перейти от макетной платы к прототипу устройства. Но хочу заметить, что все 20, так или иначе, требуют преобразования внешнего интерфейса в SPI с JTAG протоколом.


#15

Не могу сказать, что я эксперт в этой области, но, мне кажется, вопрос был абсолютно корректен.

Приведу пример. Вопрос: “На каком языке можно написать программу для IBM PC?” Ответ “на машинных кодах” имеет право на жизнь, но по-моему ответ С++ или Pascal больше подходит и более ожидаем. А если написан комментарий (в скобочках): императивном, то как бы и сомнений нет. И если даже студент понимает, что в конечном итоге это SPI, простите, машинные коды, то это не меняет ситуации.