RFID дверь для кота

Volfram
Offline
Зарегистрирован: 20.10.2015

Решил сделать RFID дверь для кота, в принципе это мой первый проэкт серьезней Blink от кнопки))) 

Мониторил темы разные http://www.instructables.com/id/RFID-cat-door/?ALLSTEPS, вот эта больше всех понравилась.

Заказал RDM6300, nano, пару брелков RFID, серву самую дешевую и начал ломать мозг)

Первой проблемой была антенна RDM6300, та что в комплекте маленькая 4 на 5см, и срабатывала от карты на расстоянии 3-5см, от брелка 1см +-. Т.к. кот напрочь отказался таскать ссобой карту думал как выходить из ситуации. Слова индуктивность и всякие другие сопуствующие термины для меня не известны (это я к тому что методом проб и ошибок можно много что решить). Нашел все запасы проволоки которой раньше я пользовался только из за того что она медная - мягкая и ею удобно привязывать всякие штуки. В итоге есть провод ПЭВ я так понял диаметров 0,5 и 0,35. и о боги как раз такой диаметр оказался нужным. 
Кот у меня ходит в дом через вент трубу 150мм, и остальные коты тоже (((( Методом подбора я намотал 0,5 провод на трубу 150мм 33 витками в этом варианте вышла лучшая срабатываемость. Больше и меньше в диаметре и 0,35й проволокой выходило хуже.

Карта срабатывает на расстоянии 14см, брелок 4см. Как раз нормально, кот проходит в туннеле и не зная отмечается)

#include <SoftwareSerial.h>                  // Библиотека софтварного сериал
#include <Servo.h>                           // Библиотека серво
SoftwareSerial RFID = SoftwareSerial(2,3);   // TX RX RDM6300 подключены к пинам 2 и 3
Servo myservo;                               // Имя сервы

int Door_Sensor_Pin = 7;                     // Контакт геркона, подтянут к GND 10 кОм резистором
int Door_Led_OK = 5;                         // Светодиод открыто управляем LOW
int Door_Led_STOP = 6;                       // Светодиод закрыто управляем LOW
int gerkon = 0;                              // Переменная для хранения состояния датчика геркона
char character;                              // Переменная для хранения RFID тега 
String our_id;                               // Переменная для хранения ID RFID 
 
void setup() {
  Serial.begin(9600);                        // Тут понятно)
  pinMode(Door_Led_OK, OUTPUT);              // Установить Door_Led_OK как выход
  pinMode(Door_Led_STOP, OUTPUT);            // Установить Door_Led_STOP как выход
  pinMode(Door_Sensor_Pin, INPUT);           // Установить Door_Sensor_Pin как вход
  myservo.attach(9);                         // Подключаем серву к пину 9
  myservo.write(0);                          // Выставляем серву в 0 (Закрыто)
  delay(300);                                // Даем ей на это время
  myservo.detach();                          // Отключаем серву (дабы не удерживала в 0, ну и минус дребезг)
  digitalWrite(Door_Led_OK, HIGH);           // Выключить светодиод Door_Led_OK
  digitalWrite(Door_Led_STOP, LOW);          //  Включить светодиод Door_Led_STOP
}
  
void loop() {
        gerkon = digitalRead(Door_Sensor_Pin); // Читать Door_Sensor_Pin
        if (gerkon == LOW) {                 // Если дверь закрыта
        RFID.end();                          // Выключаем RFID
        delay(10000);                        // Ждем 10 сек
        myservo.attach(9);                   // Подключаем серву к пину 9
        myservo.write(0);                    // Выставляем серву в 0 (Закрыто)
        delay(300);                          // Даем ей на это время
        myservo.detach();                    // Отключаем серву
        digitalWrite(Door_Led_OK, HIGH);     // Выключить светодиод Door_Led_OK
        digitalWrite(Door_Led_STOP, LOW);    // Включить светодиод Door_Led_STOP
        } 
        else {
        RFID.begin(9600);                    // Включаем RFID
        while(RFID.available()>0)            // Если RFID имеет что сказать дуине
        {
        character = RFID.read();             // Пишем 
        our_id += character;                 // Пишем
        }
        if (our_id.length() > 10) {          // Если длиннее 10 символов
        our_id = our_id.substring(1,13);     // Обрезаем не нужное (checksum) 
        if (our_id == "565ADDF61235", "1E00936D7292")// Если совпадают метки (сюда впишите ваши метки, их можно получить этим же скетчем)
        {     
        digitalWrite(Door_Led_STOP, HIGH);   // Выключить светодиод СТОП
        digitalWrite(Door_Led_OK, LOW);      // Включить светодиод ОК
        Serial.print(our_id);                // Пишем в сериал монитор что словил RFID
        our_id = "";                         // Обнуляем 
        Serial.println(" ) ");               // 
        myservo.attach(9);                   // Подключаем серву к пину 9
        myservo.write(90);                   // Выставляем серву в 90 (Открыто)
        delay(300);                          // Даем ей на это время
        myservo.detach();                    // Отключаем серву           
        } 
        else                                 // Если метки не совпадают
        {
        Serial.print("ACCESS DENIED   (id: ");// Пишем в сериал, в доступе отказано
        Serial.print(our_id);                 // Пишем полученный ID
        our_id = "";                          // Обнуляем
        Serial.println(" ) ");                // 
        }
        }  
        delay(50);                            // Повторяем это все 
        }
}

Может кому пригодится. Ну или кто что посоветует подправить.

Работает  так. При загрузке закрыто. Активен RDM, если метка совпала серва открывает замок (в моем случае задвижка которая мешает дверце из куска пластика открытся). После ждем пока кот пройдет, откроет дверь сработает геркон, через 10 сек замок закроется. И все заново.

Volfram
Offline
Зарегистрирован: 20.10.2015

Первая нужная поправка. Помогите в какую сторону копать. Какую команду использовать.

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

Нужно сделать так что бы после считывания кода, открытия сервы через 30 секунд если не было открыта дверь (геркон) серва закрывала дверь. Команда delay не подходит т.к. она останавливает считывание кода, что не подходит т.к. кот может быстро пройти и с 1 раза код не совпадет.

 

 

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

Тот факт, что delay() не подходит, известен давно. А как без нее обходиться, в общих чертах изложено в blink without delay.

Volfram
Offline
Зарегистрирован: 20.10.2015

Я понимаю что вы о команде millis но я её в 20 разных ариантах пробовал, ну не получается блин. Хоть натолкните где (в каком месте ) ее применить. 

Logik
Offline
Зарегистрирован: 05.08.2014

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

ПС. тема ржачная, предвкушаю коменты))))

ППС. а можна две заслонки поставить, шлюзование организовать, тогда кот не сможет передумать. Еще пневмопушка радикально решит проблему.

Volfram
Offline
Зарегистрирован: 20.10.2015

Про еще одну антенну уже была создана тема, не думаю что можно паралельно тупо еще одну прикрутить. http://arduino.ru/forum/apparatnye-voprosy/mozhno-dve-antenny-na-1-rfid-rdm6300 там тоже коменты крутяк!)

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

Еще и затмив своим нахождением более мелкого и не опытного. (Была мысль одеть робокостюм с обнаружением свой-чужой +100500 к силе и +500000 к остроте когтей, но жена не разрешила)  

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

 

По теме хотелось обойтись тем что имеем с минимальным кол-вом датчиков, это 1 rfid считыватель, nano, геркон. Но чувствую нужно будет заказывать второй rdm6300 (еще не известно смогут ли они на 1 нане работать вместе, хотя почему бы и нет).

Сейчас в принципе организовано почти шлюзование)))) служит еще и защитой от холодного воздуха с улицы.

Выглядит примерно так. 

Volfram
Offline
Зарегистрирован: 20.10.2015

А собсна забыл главное. Иногда котейка пробегает туннель зависает в коробке, а потом опять на улицу не проходив сквозь дверь.

После дверцы нет возможности поставить какие либо датчики прохождения типа ультразвуковых, световых или веса, там обрыв ))))))))))))))

Volfram
Offline
Зарегистрирован: 20.10.2015

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

Logik
Offline
Зарегистрирован: 05.08.2014

Так конечно понятней. Вторая катушка снаружи решает проблему. Как камрад выше советует на один  контроллер можна добавить.

Тогда логика дето такая: сработала наружная катушка - задвижку закрыть, взвести флаг ПРИХОД; сработла внутренная катушка - если установлен ПРИХОД то открыть задвижку; сработал геркон - если установлен ПРИХОД закрыть задвижку, иначе открыть задвижку (если котэ передумает), флаг ПРИХОД сбросить.

Я так понимаю передумать тунелировать наружу коту в трубе технически сложно? Передумывает он в рамках камеры 30 см (что тоже требует неслабой гибкости мышления)? 

Если возможен апгрейд до двух и более котэ то логику тунелирования прийдется усложнять, учитывать их ID 

Кстати переключатся между двумя антенами часто и быстро нет нужды. Обычно включена наружная, по её срабатыванию или срабатыванию геркона включается та что внутри. По срабатыванию внутренней переключаемся на наружную.

arduinec
Offline
Зарегистрирован: 01.09.2015

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

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Классный образец нужного девайса!!!

Можно фото!

Logik
Offline
Зарегистрирован: 05.08.2014

И фото с котэ в момент тунелирования!

 

Logik
Offline
Зарегистрирован: 05.08.2014

arduinec пишет:

... а чужой кот проваливается в люк.

Лучше чужего шокером, чтоб запомнил и не нагружал систему.

arduinec
Offline
Зарегистрирован: 01.09.2015

Logik пишет:

arduinec пишет:

... а чужой кот проваливается в люк.

Лучше чужего шокером, чтоб запомнил и не нагружал систему.

Шокером можно позже - он же свалится в мешок (коробку, ящик, клетку).

Кстати, в системе не предусмотрен вариант если кот подругу приведёт.

Logik
Offline
Зарегистрирован: 05.08.2014

arduinec пишет:

 если кот подругу приведёт.

или друга.

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

Volfram пишет:

Я понимаю что вы о команде millis но я её в 20 разных ариантах пробовал, ну не получается блин. Хоть натолкните где (в каком месте ) ее применить. 

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

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

Не бойтесь без совершения какой-нибудь полезной работы дойти до конца loop, Вы тут же снова окажетесь в ее начале.

Вы лучше поделитесь опытом: удалось Вам договориться с котом, чтобы он таскал с собой метку?

arduinec
Offline
Зарегистрирован: 01.09.2015

Volfram пишет:

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

Нужно сделать так что бы после считывания кода, открытия сервы через 30 секунд если не было открыта дверь (геркон) серва закрывала дверь. Команда delay не подходит т.к. она останавливает считывание кода, что не подходит т.к. кот может быстро пройти и с 1 раза код не совпадет.

А если кот посидел в шлюзе 30 секунд и все-таки решил пойти в квартиру, а дверка уже закрылась.

Может стоит датчик присутствия кота добавить (например датчик движения)?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

arduinec пишет:

Может стоит датчик присутствия кота добавить (например датчик движения)?

Уже предложено. ТС не верит в необходимость.

Volfram
Offline
Зарегистрирован: 20.10.2015

Завтра куплю пару фотодиодов и ИК светодиодов. Буду куда то тулить "будет типа датчик пересечения линии" но в упрощенной версии, т.к. проход кошачий до 20см. У меня одна пара есть, пробовал, в принципе подходит для этих целей. 

Что можно еще придумать из датчиков? Ультразвуковой как то не то вроде. В идеале как счетчик покупателей в маркетах. пересекаемая линия, но там сложнее там лазерный диод и нужно в двух местах ставить а не в одном.

Volfram
Offline
Зарегистрирован: 20.10.2015

Датчик движения тоже не вариант, в моем случае будут ложные срабатывания там где можно поставить.

Volfram
Offline
Зарегистрирован: 20.10.2015

В принципе, проблема всех датчиков может отпасть если как то увеличить мощность антенны, она у меня итак самодельная 150мм в диаметре, но читает маленькую метку с 4см, если бы читала с 10 (метки в виде пластиковой карты читает с 15см) или увеличить диаметр антенны до 200мм но чтоб читала с тех же 4. (я пробовал делать 20см, читает плохо и только у края)

Volfram
Offline
Зарегистрирован: 20.10.2015

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

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Может вместо брелков, антен и пр. использовать ВЕС котика! А если поставить датчик веса то можно определять - сам идет или с подружкой.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

vosara пишет:

Может вместо брелков, антен и пр. использовать ВЕС котика! А если поставить датчик веса то можно определять - сам идет или с подружкой.

А если подружка без котика идет, а вида на жительство у нее нету?

Volfram
Offline
Зарегистрирован: 20.10.2015

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

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

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

Volfram
Offline
Зарегистрирован: 20.10.2015

Ну так все коты научатся флажок цеплять)))) Задача пустить одного кота, остальные  идут ф лес.

Gride
Gride аватар
Offline
Зарегистрирован: 09.11.2015

Volfram пишет:
А если повесить на ошейник неодимовый Магнитки, можно какой то электроникой заметить искажение магнитного поля?

Чтобы котейка на нем повесился на ближайшем металлическом столбе?

 

А если антенну не снаружи, а внутри трубы сделать? А если количество витков увеличить? А если транзистором сигнал с антенки усилить? Труба из чего?

http://radiolub.ru/page/shema-radionezabudki

 

Если бы был сфинкс, можно было бы вытатуировать штрих-код и считывать лазером, как в супермаркете. Будет штрих-кот.

 

Клапауций 123
Offline
Зарегистрирован: 06.12.2015

Volfram пишет:
Не вариант, стоять на месте не будет. У него какая то реактивная тяга. Трубу свою пролетает, не успевает rfid срабатывает. Гуглю на еще варианты, но пока ничего.

нужно в трубе замедлять время раз в двести, что бы коооот меееедлееееннно проолееетаалл трубу

Logik
Offline
Зарегистрирован: 05.08.2014

Volfram пишет:

В принципе, проблема всех датчиков может отпасть если как то увеличить мощность антенны, 

Встречал я RFID антену которая метров с 3-х метку считывала, причем в полете. Метку бросали она пролетала в поле антены. Антена направленная была.

чтото типа такой - https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/RFID_antenna_2007.jpg/220px-RFID_antenna_2007.jpg

Volfram
Offline
Зарегистрирован: 20.10.2015

Gride пишет:

Volfram пишет:
А если повесить на ошейник неодимовый Магнитки, можно какой то электроникой заметить искажение магнитного поля?

Чтобы котейка на нем повесился на ближайшем металлическом столбе?

 

А если антенну не снаружи, а внутри трубы сделать? А если количество витков увеличить? А если транзистором сигнал с антенки усилить? Труба из чего?

http://radiolub.ru/page/shema-radionezabudki

 

Если бы был сфинкс, можно было бы вытатуировать штрих-код и считывать лазером, как в супермаркете. Будет штрих-кот.

 

 

Ну магнитик маленький имел ввиду)) 

Труба ПВХ вентиляционная 150мм, внутри снаружи разницы думаю не будет, диаметр изменится на пару мм, а пластик вряд ли мешает радиоволнам.

Усилить я только за, только не особо понимаю как это сделать, вот и пишу сюда. И кстати не знаю, но скорее всего транзисторы уже стоят в модуле RDM6300, можно ли усилять уже усиленный сигнал? Или вместо маленьких СМИД транзисторов поставить больше но "мощнее"

Количество витков это врятли, или менять что то из обвязки (что?) в модуле РДМ6300, т.к. при моем диаметре и проволоке лучше всего показала себя антенна 150мм 33 витка 0.5 проводом. Ведь меняется индукция.

 

Про штрих кот ярко! Есть у знакомых сфинкс, предложу ))))))))))))))

Volfram
Offline
Зарегистрирован: 20.10.2015

Logik пишет:

Volfram пишет:

В принципе, проблема всех датчиков может отпасть если как то увеличить мощность антенны, 

Встречал я RFID антену которая метров с 3-х метку считывала, причем в полете. Метку бросали она пролетала в поле антены. Антена направленная была.

чтото типа такой - https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/RFID_antenna_2007.jpg/220px-RFID_antenna_2007.jpg

 

Да но там прайс. И частота 2ггц+-, считывает с сотен метров активную метку. 

Gride
Gride аватар
Offline
Зарегистрирован: 09.11.2015

http://electronix.ru/forum/lofiversion/index.php/t87661.html

Здесь рекомендуют увеличить размер антенны. Самой метки. Как вариант, нарастить антенну метки и заложить в ошейник кота.

На частоте в  два гигагерца котейка в сфинкса сам превратится :-)

Клапауций 123
Offline
Зарегистрирован: 06.12.2015

шото я утерял смысл чипирования котэ для прохода в дом...

что бы взимать плату с карточки котэ за проживание?

Volfram
Offline
Зарегистрирован: 20.10.2015

Хорошая идея, размер в принципе 40х20 Думаю можно попробовать еще меньше сделать, но не понял про питание, написано что можно питать любой 6в батареей, но перведена таблица питания от 2.5в, это я так понимаю можно его питать и меньшим напр. но будет меньше мощность его? Выходит если его питать от 3.7в например он потребляет 13мКа то нокиевская батарея 1000мач почти вечно будет его питать?

Volfram
Offline
Зарегистрирован: 20.10.2015

Клапауций 123 пишет:

шото я утерял смысл чипирования котэ для прохода в дом...

что бы взимать плату с карточки котэ за проживание?

 

Кот постонно требует что бы его выпускали на улицу, частный дом я ему сделал дверь (просто труба вентиляционная в стене 150мм диаметр длина 30см, он через нее носится туда сюда. Но откуда то появилось куча "друзей" у соседей. И видать они (соседи) решили котов своих не кормить, ходят к нам домой кормится, соотв заодно решают что это их новый домик и метят его. ((( Сейчас я закрыл лаз, но котЭ напрягает своей требовательностью к свободе))))))

Продаются уже готовые девайсы, там та же система, RFID и метка. но стоят от 100$ например.

http://zooland.kiev.ua/trixie-dver-dlja-koshki-s-mikrochipom.html

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

Araris
Offline
Зарегистрирован: 09.11.2012

Возможно Вы ещё не видели : http://www.instructables.com/id/RFID-cat-door/

Клапауций 123
Offline
Зарегистрирован: 06.12.2015

Volfram пишет:

И видать они (соседи) решили котов своих не кормить, ходят к нам домой кормится, соотв заодно решают что это их новый домик и метят его.

чипируй соседей - скоро к тебе жрать будут ходить следом за котами

Volfram
Offline
Зарегистрирован: 20.10.2015

Видел конечно, оттуда и начал) 

Думаю что нужно найти где то метку как там. 35мм диск, потому что моя метка маленькая вообще <2см. А карты размером с кредитку читаются с 15-17см

arduinec
Offline
Зарегистрирован: 01.09.2015

Volfram пишет:

кот напрочь отказался таскать ссобой карту

Внутри карты скорее всего витки проволоки. А если карту разобрать и закрепить эти витки на ошейник кота.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Есть решение для распознавания кота (свой - чужой без RFID, без карты и вообще без ничего - по морде лица. Правда, мужик на малине реализовал. Чужих котов и белок не пущает!