Как работать с несколькими RFID-ридерами RC522?

Тема в разделе "Arduino & Shields", создана пользователем Vittorio, 23 мар 2015.

  1. ostrov

    ostrov Гуру

    Вот примерно такая версия от неленивой жопы должна быть. В теории должно работать на том кол-ве ридеров, для которых хватит свободных ножек SS, на практике хотелось бы узнать сколько потянет. У меня был рекорд 4 штуки. Кто больше?
    Код (C++):
    #include <SPI.h>
    #include <RFID.h>

    #define MAX_SS  3                   // кол-во ридеров
    #define RST_PIN 5
    byte SS_PIN[MAX_SS] = {53, 48, 49}; // адреса пинов SS (при увеличении MAX_SS дописать необходимое)

    byte cardUID[5];
    byte actRfid;
    RFID *rfid[MAX_SS];                 // копии объекта RFID

    void setup() {
      for (byte i = 0; i < MAX_SS; i++) rfid[i] = new RFID(SS_PIN[i], RST_PIN);
      Serial.begin(9600);
      SPI.begin();
      for (byte i = 0; i < MAX_SS; i++) rfid[i]->init();
      actRfid = 0;
    }

    void loop() {
      if (rfidUID(actRfid)) {                      // если метку поднесли, печатаем номер
        Serial.print("Card number:  ");
        for (byte i = 0; i < 5; i++) {
          if (cardUID[i] < 0x0F) Serial.print("0");// незначаший 0 для красоты
          Serial.print(cardUID[i], HEX);           // HEX из уважения
          if (i < 4) Serial.print(", ");           // ненужная запятая
        }
        Serial.println(" ");
      }
      actRfid < (MAX_SS - 1) ? actRfid++ : actRfid = 0;

    }

    bool rfidUID(byte aR) {                       // 1 - считали номер в буфер cardUID, 0 - нет карты
      if (!rfid[aR]->isCard()) return false;
      if (!rfid[aR]->readCardSerial())  return false;
      for (int i = 0; i < 5; i++) {
        cardUID[i] = rfid[aR]->serNum[i];
      }
      rfid[aR]->isCard();
      return true;
    }
     
    Последнее редактирование: 3 май 2016
    Tomasina нравится это.
  2. ostrov

    ostrov Гуру

    Свежий пример глюкодрома. Вот три практически неотличимых друг от друга ридера, один чуть синее, два чуть зеленее. Они из разных партий разных поставщиков.
    [​IMG]
    Первый работает на плате Arduino Mega с библиотекой RFID.h на всех скоростях SPI, включая SPI_CLOCK_DIV2, два вторых начиная с SPI_CLOCK_DIV64, то есть по умолчанию не работают вовсе, не поставишь принудительно - захочется выкинуть или натыкать продавца мордой. На МК Atmega8 (при 8МГц) же все три работают с этой же библиотекой на всех скоростях хорошо. С более громоздкой библиотекой MFRC522.h работают все ридеры на всех платах на всех скоростях, но программа становится чуть ли не вдвое больше размером, что для Атмеги8 критично. Вот такие необъяснимые процессы происходят. Подкрутка настроек регистров в библиотеке RFID.h ничего не изменило. Ох нелегкая это работа...
     
  3. Roon Booh

    Roon Booh Нерд

    Код (C++):

    RFID rfid_1(53, 45);
    RFID rfid_2(48, 45);
    RFID rfid_3(49, 45);
    RFID rfid_4(47, 45);
    RFID rfid_5(42, 45);
    RFID rfid_6(43, 45);
    RFID rfid_7(40, 45);
    RFID rfid_8(41, 45);
    RFID rfid_9(38, 45);

    RFID  rfid[9] {rfid_1, rfid_2, rfid_3, rfid_4, rfid_5, rfid_6, rfid_7, rfid_8, rfid_9};
    мне немного лень действовать на благо...
     
  4. ostrov

    ostrov Гуру

    Если лень, надо подойти к зеркалу... ну вы знаете.
     
  5. Roon Booh

    Roon Booh Нерд

    Я в отличии от некоторых индивидуумов, не грешу тем, что ввожу в заблуждение.
     
  6. ostrov

    ostrov Гуру

    Да неужели? А пост про то как вы ловко победили три ридера из удачной партии с работающими SS? А ведь кто то начнет делать из 9 (как я в свое время) и поймет, что его ввели в заблуждение. И не я.
     
  7. Roon Booh

    Roon Booh Нерд

    Не утрируйте. По платам... Они поддерживают не только SPI. По качеству исполнения : проверяйте платы, проверяйте при подозрении правильность разведения платы, распайку, в частности как установлен сам чип, возможно какие то ноги перемкнуты не в рабочем режиме(я уже не говорю что чип левый может быть, ведь китайцы даже резисторы подделывают). В общем убедитесь что купленная вами плата работает правильно. Если же плата работает не корректно то это уже отдельная тема. А грамогластно заявлять что все не работают и при этом пихать нерабочий код, это и есть заблуждение. Причём если это бессмысленное действие повторять раз за разом, это безумие. Я рад что мой варварский метод побуждения к изучению сути проблемы воздал свои плоды. В частности вы сами опровергли таки своё утверждение что эти платы некорректно работают. Прошу принять мои извинения за причененые неудобства, моими нахальными манипуляциями. Важен результат- тема в топе поисковиков по данному вопросу не вводит в заблуждение на этапе проектирования прототипа, людей которые в состоянии проверить плату.
     
    Последнее редактирование: 11 май 2016
  8. ostrov

    ostrov Гуру

    Нерабочий код? Это только потому что вы его не проверяли? У меня по такому принципу работает с прошлой зимы почему то, что я делаю не так?

    Хорошо наверное жить в идеальном мире, где все ридеры, например, японские. Рад за вас и желаю процветания в бизнесе по производству мультиридеров.
     
    Последнее редактирование: 11 май 2016
  9. Roon Booh

    Roon Booh Нерд

    Не ну код то рабочий только нахрена экскаваторов картошку выкапывать? В идеальном мире? Я ещё раз плвторяюсь не рабочие подделки, неправильно работающие клоны, это отдельная дискусия . человек привёл пример кода и у него не работает как минимум из за неправильного кода. А вы тут же тулите свою точку зрения что все они не работают, и что надо делать какие то костыли. Акститесь сударь. Да и кстати ридеры у меня самые дешёвые самые паленные, местами даже хреново пропаиные были... И пока вы не начали с пеной во рту доказывать что я не прав, я был готов поверить вашим словам о зелёных платах. Подскажите где почитать о таких "зелёных" точнее "зеленоватых" платах?
     
  10. ostrov

    ostrov Гуру

    Закажите на Али по паре плат у 5-7 разных поставщиков и посмотрите что придет. Будут и зеленоватые и голубоватые и красноватые. Какие то будут работать по вашему неприхотливому коду, какие то нет. Какие то вообще работать не будут.

    Я тоже был согласен с вами до тех пор, пока вы косвенно не обозвали всех ленивыми жопами, кто якобы раньше вас не догадался про наличие ножки SS на плате. Вы не открыли Америку и идеальный мир тоже. Надо было почитать хотя бы этот форум по поиску RS485 перед тем как делать громкие заявления и разоблачения. И у меня в личке в том числе.
     
  11. Roon Booh

    Roon Booh Нерд

    В какой вашей личке? В публичной вашей стене? Какое открытие? Вы что то путаете. Я не говорил про то что там есть SS(выбор ведомого) я намекнул что нужно просто обращаться к каждому считыватель как к объекту класса, а не пытаться мутить переключение ноги самостоятельно.

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

    ostrov Гуру

    Добавление универсального МК правильное решение. Может быть не единственное, но всегда рабочее, при любых ридерах и при любом их количестве. Когда вы говорите, что это глупость вы только себя ставите в глупое положение. А так же вводите в заблуждение тех, кто еще не пробовал делать большие массивы ридеров на одном устройстве.
     
  13. Roon Booh

    Roon Booh Нерд

    Вау какие большие массивы? Да хоть 50шт. Вопрос только в длине и удаленности от друг друга. Если ёмкость и длина выбранного шлейфа позволяет, если стоимость шлейфа невысокая (а шлейф можно взять utp многожилку а не моножилку). Все зависит от поставленных задач. Если вам нужно большое расстояние или простота монтажа устройства, тогда конечно же МК необходим, если же вы просто собираете матрицу три на три или 8*8 то там МК на каждый рфид излишняя трата денег заказчика. Спокойно сделал так вами называемый Большой массив из девяти считывателей, и если нужно будет сделаю его из 50-три на одном МК. Почитайте с самого начала ветку форума там все расписано! Если вам надо то пихайте МК хоть на каждую линию данных, это ваше дело, вопрос только какая в этом целесообразность? Вам лет сколько? Ведете себя как школьник.
     
  14. ostrov

    ostrov Гуру

    Как школьник ведете себя вы, громко заявляя о прорыве в трудолюбии и знании языка С++ и тут же публикуя код примера из библиокети RFID.h скопиипащенный трижды подряд, что не демонстрирует ни того ни другого. При этом даже не удосужились убедиться, что идея обсуждалась еще полгода назад и проблемы возникли именно с таким воплощением. Тогда или добавили бы от себя пару революционных идей или хотя бы не упрекали других в отсутствии интеллекта и трудолюбия.

    Еще раз повторяю, сей способ работоспособен не со всеми ридерами и не в любом количестве (хочу посмотреть на цепочку хотя бы из 10 штук, 50 не надо). Кроме того, передача по протоколу SPI очень чувствительна к расстоянию, а мои модули при себестоимости в пару сотен рублей могут передавать данные на сотни метров. Может не стоит всегда считать свое мнение абсолютной истиной?
     
  15. Roon Booh

    Roon Booh Нерд

    Да пожалуй вы совсем не адекват. За основу я взял готовый пример, и не под копирку добавил в него парочку строк. Причём не способом дабы и школьник разобрался. Делайте у нас заказ мы вам пришлем матрицу хоть из 9ти хоть из 50ти рфидов и смотрите сколько пожелание. Да и пожалуйста не выкручивайтесь не юлите, этак и сяк коверкая и трактуя себе в угоду мои слова. Я так понял вы считаете себя гуру? Да хрен с вами, среди говна мы все поэты! Так и среди новичков вы гуру. Локоматив вам на встречу и в попу перышко, что хатите то и думайте, я уже нерничаю из за того что вляпался в диалог с вами, как говориться не трож...
     
  16. ostrov

    ostrov Гуру

    Понятно с вами все, тут и гуру быть не надо, так и думал что скатитесь к проклятиям. Одно не понятно, что такой гений как вы, для которого чужое мнение всегда неправильное, делает на форуме новичков? ЧСВ себе повышает? Сожалею, что помешал в этом важном и благородном деле.
     
  17. Roon Booh

    Roon Booh Нерд

    Когда вы научитесь для начала, читать ветку форума, а не пытаться доказать всем, что вы правы, тогда с вами можно будет вести диалог, а пока научитесь хотябы контролировать свои эмоции. Доброй вам ночи и успехов в освоении C++.
     
  18. ostrov

    ostrov Гуру

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

    Успехов вам в обучении неразумных новичков и во всем остальном тоже.
     
  19. Roon Booh

    Roon Booh Нерд

    С чего вы так решили?

    Что до этого так это масло масленное, если вы не в состоянии приобрести рабочий образец, то это проблема вызванная именно этой несостоятельность. На один ридер, не надо и считыватель(микросхему считыватель), не верите? Откройте контролёры Сибирского Арсенала и посмотрите как у них сделано, забегая вперёд скажу что они тоже на Atmel собраны и что спокойно имеют клавиатуру, считыватель бесконтактных меток, считыватель Dalas меток, светозвуковую индикацию, порт для подключения к системе мониторинга и управляют замком с выводом контроля..

    Вот тут бы сначало выяснить что именно не так? Ведь даже проблемы по питанию приводят к такому результату. Мало того, SPI тонкая штука и там где для одного устройства 0 для другого бит.
    Какая эйфория? Я основывался на вашем мнении при начале проэктировки, как уважаемому на даном форуме специалисту, и тут тебе бац а на проверку специалист с вас то хреновый и собственно из за подобных Специалистов и их Провереному ими опыту, народ тупеет.
    Тут вы пиписьками решили, что имеет смысл мерятся. На что я повторюсь что только что сдал не напрягаясь проект из 9ти и никто не мешает заюзать все доступные для этих задач ноги. Да и вопрос, коль на мегу шлете, не проще ли тогда сдать на программные два SPI и на аппаратный?

    Людей голословно утверждающих, в народе называют балабол.
     
    Последнее редактирование: 12 май 2016
  20. Roon Booh

    Roon Booh Нерд

    Относительно этого... Из удачной партии? Эм... Думаю стоит на это обратить внимание, попробуйте разобраться с интерфейсом Али экспресс.
    Победил? Простите но среда Ардуино доступна для понимания даже школьнику. Так что было бы странно если бы готовая библиотека не сработала. Мало того в своём примере заюзал заведомо упрощённую библиотеку, так как это форум для начинающих.
    Насчёт того что кто то начнёт из девяти, и что по вашим словам я заводу в заблуждение.
    Кто то начнёт и кто то сделает. И у него все получится. Так что вы сново вводите в заблуждение и пугаете народ
     
    Последнее редактирование: 12 май 2016