Столкнулся с непростой задачей. В наличии есть низкочастотный RFID считыватель 125KHz: СP-Z2L Он может работать с протоколами: ibutton,Wiegand26,OneWire(он же dallas), все они поддерживаются ардуиной, и считыватель прекрасно работает с каждым из них. Но задача заключается вот в чем, данный считыватель СP-Z2L уже присоединен к действующему контроллеру "Z-5R" и мне очень желательно, чтобы информация со считывателя СP-Z2L передавалась параллельно на оба контроллера, если это вообще возможно. Что было перепробовано: Сначала был протестирован стандартный протокол OneWire(он же dallas) на котором собственно работает контроллер Z-5R. Я взял библиотеку OneWire под Arduino(Uno), подключил к ардуине СP-Z2L как положено в нужные пины, загрузил скетч. Всё работает прекрасно, данные ключей высвечиваются в COM консоли через Serial как надо. Но стоило мне СP-Z2L подключить параллельно к ардуине, и к Z-5R, как происходит следующее. Контроллер Z-5R работает корректно, когда я прикладываю к нему RFID ключи, но в это же время в ардуине вместо айдишников ключей я вижу рандомные байты которые к ID ключа никакого отношения не имеют. То есть, запаралелив считыватель СP-Z2L между двумя разными контроллерами, только один контроллер (это Z-5R) работает корректно(получает правильные айдишники ключей, о чем сообщает звуковым сигналом), а ардуина в этот момент вместо айдишников ловит рандомный мусор. Хорошо, тогда я попробовал протокол Wiegand26, всё как и в предыдущем случае, сначала протестировал работоспособность считывателя СP-Z2L с ардуиной. Работает протокол немножко иначе, там айдишники ключей в другом виде, но в остальном всё аналогично. Так же следом подключил к нему контроллер Z-5R параллельно, и при подаче питания происходит следующее, считывать информацию может лишь один контроллер, он выбирается рандомно при включении питания, другой контроллер не получает вообще никакой информации. Ещё есть ibutton протокол, его я не пробовал, но если не ошибаюсь, он вроде как и есть OneWire... Да, подключение было правильным, и ардуина и Z-5R с СP-Z2L запитывались от одного источника питания, и у всех трех устройств общая земля. И да, я понимаю, что если вместо контроллера Z-5R использовать ещё одну ардуину, то там вариантов выкрутиться будет достаточно, но в моем случае контроллер Z-5R менять нельзя, и в тоже время я хочу получить параллельно айдишники ключей со считывателя в ардуину. Возможно ли вообще реализовать эту задумку, и пустить работу считывателя СP-Z2L сразу на два контроллера? На контроллере Z-5R этот считыватель работает исключительно по протоколу OneWire он же dallas, а вот на ардуине я могу выбрать любой протокол обмена информацией, какой он будет, это не принципиально, главное чтобы работало.
как вариант - ардуино сделать посредником - т.е. принимать ID ключа от считывателя и по другим пинам передавать его на другой контроллер Z-5R. Ищите "arduino iButton emulation".
К сожалению в моем случае это тоже не вариант. А чем сможет помочь arduino iButton emulation? Как я понимаю, протокол iButton может параллельно считывать информацию не искажая её?
обмен по шине OneWire (а она используется в iButton) идет по стандарту Master-Slave. Подключая второй контроллер параллельно, ты в этой шине устраиваешь кашу, потому что получается два Master, чего быть не должно. Теоретически можно сидеть параллельно и просто слушать что передают в линии, но тут надо досконально знать протокол OneWire, т.е. разбираться с регистрами и таймингами, описанными в даташите. Чем не подходит последовательное включение Arduino? Да, придется физически перетыкать провода. но несложно с кодом: просто принять ID по стандартному протоколу и передать его же без изменений.
В моем случае очень рискованно. Мне нужно подключиться уже к существующей системе СКУД, сделать так сказать врезку. И если я сделаю основным контроллером Arduino, вместо текущего z-5r, то в случае непредвиденных ситуаций с ардуиной, вся система встанет, и повлечет очень серьёзные последствия. Я не хочу брать такой риск, так как контроллер z-5r проверен десятилетиями в надежности, а вот в китайской копии arduino UNO с алиэкспресса за 200 рублей я совсем не уверен. Соответственно я хотел бы сделать врезку без рисков, чтобы паралельно со считывателя информацию заимствовать без риска обрушить существующую систему.
СКУД вскрываем? Хакер? Технический шпионаж ? ---------------------------------------------------------------- УК РФ Статья 272. Неправомерный доступ к компьютерной информации ...до 2-х лет... Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей ...до 2-х лет...
Кто сказал, то СКУД чужая? Я хочу подключиться к текущей работающей СКУД, которая нашей же компании и принадлежит, просто в силу технических особенностей контроллер z-5r я на ардуину заменять не могу. А задача стоит, логировать ключи в базу, и иметь спец ключи которые при открытии двери выполняют ещё и другие действия в момент открытия.
а откуда логи-то? 300-рублевый контроллер Z-5R логов не ведет, к сети не подключается, построен на ATMEGA-168, то есть младший брат Arduino и даже не как врезка, а полностью и безо всяких последствий (кроме прошивки адресов карточек по-новой) может быть заменен на самодельную Arduino-платку на ATMEGA-328. Поэтому и разговоры о "повышенной надежности" весьма странно смотрятся.
Это из паспорта... Что там может быть еще накручено - неизвестно. При загрузке выгрузке обычно всегда логи ведутся. Но даже не в этом дело. Ясно же, что чел пытается к нему нелегально подключиться, иначе чего огород городить?!
Как вы знаете, специфика ардуино гласит, что это формально платы для отладки, и не рекомендуется их использовать в боевых условиях, именно по этой причине крайне не желательно менять надежный контроллер на ардуину, или как в предложенном варианте делать из ардуины посредника для обмена информацией, в этом случае всё равно всё будет упираться в ардуину, и если она подведет, то будут последствия в виде невозможности открыть дверь. По этому, мне проще отказаться от идеи заменять z-5r на ардуину, чем подвергаться такому риску, хотя возможно я заблуждаюсь насчет стабильности ардуины, но не протестировав её в своих других проектах, и не убедившись, что это действительно надежная штука, я не могу её ставить на критически важные объекты. А задумка была очень простая, подключив ардуину паралельно текущему контроллеру z-5r, я снимал все риски связанные с возможным сбоем ардуины, и если ардуина вышла бы из строя, то ничего бы не случилось, контроллер z-5r продолжал бы работать в штатном режиме.
В таком случае ардуина должна работать в режиме сниффера, а не ведущего устройства. Т.е. просто прослушивать шину 1-wire, а не пытаться самой на ней что-то сделать.
Вот это я и хочу уточнить, как это реализовать? На ардуине загружен скетч просто считывать ID прикладываемого ключа и всё, обратно он никаких данных не отправляет. Как раз по протоколу 1-wire, я к ардуине подключаю всего 1 контакт по которому передаются данные, контакт на чтение, записи в него не ведется. Вот пример скетча: Код (C++): #include <OneWire.h> OneWire ds(7); // выход считывателя на 7 пин byte addr[8];// буфер приема void setup() {// стартовая инициализация Serial.begin(9600); delay(100); Serial.println("Start..."); } void loop() { if(ds.reset()){ // если обнаружено устройство ds.write(0x33); // отправляем команду "считать ROM" delay(50); // на всякий случай ждем for(int i=0;i<8;i++){ addr[i] = ds.read(); // считываем } Serial.print("ROM ="); // выводим for(int i = 0; i < 8; i++) { Serial.write(' '); Serial.print(addr[i], HEX); } Serial.println(); delay(500); } } И тут всё упирается в момент который описан выше, код работает, но если параллельно подключить этот data порт к z-5r, то вместо айдишников ключей уже получаем мусор. И как исправить код, чтобы он работал как сниффер, получая правильные айдишники ключей, и при этом не нарушая работу считывателя с z-5r, это вопрос... Ардуина не может выступать посредником между считывателем и z-5r контроллером по указанным выше причинам, можно попытаться только "вклиниться", если это хоть как то возможно.
Сомнения по поводу надежности - это лишь ваши сомнения. Если сделать на втыкающихся проводочках, то, конечно - это не слишком надежно. Но что мешает сделать нормально - на пайке и винтовых клеммах? Именно так и сделано в Z-5R. И в Arduino и в Z-5R используется один и тот же контроллер Atmega x8, отличие только в количестве памяти (у Arduino больше в два раза).
1wire он потому и 1wire, что там все по одному проводу и по одному пину - и чтение, и запись. И инициацией запроса ардуино говорит сети "вот я мастер", а другой контроллер этого не понимает. Вам подсказали правильное слово "сниффер", гуглите по 1 wire sniffer arduino.
Устройство – считается надёжным, если соответствует своему предназначению в любых условиях включая как ПО так и аппаратных компонентов. Не зря же руководство компании выбрало сертифицированный контроллер z-5r
Случаем не тот, что зовется РОСС RU.ME83.B00374? Во-первых, он не на конкретный контроллер, а на всю ввозимую партию электроники из Китая (что уже есть бумажка ни о чем). Во-вторых, поинтересуйтесь что на самом деле означает такая сертификация (к слову, стоимость такой сертификации составляет 6500 р. и делается за 2 дня, причем сам продукт предоставлять на экспертизу не требуется - какова ценность такого сертификата?) P.S. любая официально ввезенная Arduino имеет точно такой же сертификат, коим можно ткнуть в заказчика.
С Вами согласен Говорил про контроллер z-5r, который не в китае произведен, а разработан самой компанией. Соответственно должен быть сертификат на продукцию, который на сайте компании непреложен.
номер выше и есть этот сертификат, но он не на контроллер, а на всю продукцию, смотри другие товары ironlogic, там тот же номер. А плату наверняка делали в Китае, это сильно дешевле. К тому же у нас редко так косячат с шелкографией.