Перейти к публикации
iT4iT.CLUB

Kitsum

Пользователи
  • Публикации

    424
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    234

Все публикации пользователя Kitsum

  1. Стандартный китайский модуль, состоящий из группы реле, в данном случае 8 штук. Имеет два ряда пинов: GND, IN1, IN2, ..., IN8, VCC GND, VCC, JD-VCC Первый (левый ряд) служит для управления реле через оптопару. Она необходима чтобы развязать логику от самой нагрузки и обезопасить контроллер в случае пробоя реле. IN1, IN2, ... входы управления реле. VCC - питание оптопар. Второй (правый ряд) необходим для питания катушек реле. Имеются два варианта подачи питания: Если установлена перемычка между VCC и JD-VCC, то катушки будут запитаны от VCC левого ряда пинов, соответственно от самого контроллера. Нужно учитывать, что для контроллера это может стать непосильной ношей. Если убрать перемычку, то питание на катушки можно подать, от стороннего источника питания воспользовавшись пинами VCC и GND (земля общая по всему модулю)
  2. Проверяйте монтаж, ошибка может быть только в нем.
  3. За качество извиняюсь, снимал на то, что было под рукой. На видео создание мастер ключа и проверка всех почти всех режимов работы. Реле подписаны. Их задержка уменьшена до 0.5 сек.
  4. Проверил последнюю программу на живом контроллере, все работает: реле открыть/закрыть сигнализация режимы программирования режимы закрытия авто/вручную Предлагаю сделать следующее: Внимательно проверить весь монтаж и привести его к тому, что показано на схеме Использовать только описанные в схеме элементы (на время тестирования) Убедиться, что в предыдущую версию не вносились собственные изменения. Если таковые имелись, то привести последний вариант программы в соответствие с теми изменениями. Даже если все проверили, перепроверить еще раз PS: Будьте внимательнее, у Вас ошибка на поверхности и скорее всего по невнимательности! Могу снять видео с демонстрацией работы последней версией программы.
  5. to Alex13 Если проверять светодиодами, то оба будут гореть постоянно т.к управление китайскими релейными модулями инвертировано. По сути оба светодиода горят, но в момент открытия или закрытия соответствующий светодиод погаснет на 1 секунду (думаю, что это время можно уменьшить до 0.5 сек). В любом случае управление автомобильным соленоидом происходит с помощью 12V и придется задействовать реле или транзистор для развязки, как сделано на схеме. Сама сигнализация осталось не тронутой. Думаю, что стоит перепроверить состояние пина A0 (включена сигнализация или нет).
  6. to Alex13 Обновил программу, пока было свободное время на работе. Буду дома, попробую на железе. Все обновления кода сейчас и далее будут в этом посте.
  7. to Alex13 Постараюсь освободить на днях контроллер и собрать все на столе. Отпишусь чуть позже.
  8. Нет, тема ведь про готовый проект и может послужить только отправной точкой для модуля системы умного дома. Не держать же целый сервер базы данных только для одной метеостанции.
  9. Не вижу никаких препятствий для реализации записи в любую базу данных, можно это делать параллельно с отправкой данных на народный мониторинг. Но думаю, что это задача для системы умного дома, и скорее всего народный мониторинг вообще не требуется в данном случае.
  10. to Alex13 Пробуем задействовать два реле, одно закрывает замок, а другое открывает. Для управления автомобильным соленоидом самое то. Схема подключения Листинг программы Каждое из реле должно быть задействовано на 0.4 секунды, этого времени вполне достаточно для отработки соленоида. Все остальное практически без изменений.
  11. Kitsum

    Настройка DDNS

    Продолжим тему и модернизируем скрипт так, чтобы он мог работать с сервисом no-ip.com Ничего кардинально нового тут нет, скорее выбросили лишнее от предыдущего скрипта т.к логика работы сервиса проста и не требует принудительного "пинка" если ip адрес не менялся длительное время. Сервис производит авторизацию средствами самого web сервера, удобное решение, но довольно спорное т.к данные передаются без шифрования, а следовательно перехватив данные можно получить доступ ко всему аккаунту, а не только изменять настройки конкретной зоны. Хотя это мое личное мнение. Для запроса обновления данных зоны используется следующий http запрос http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4 Нам нужно передать логин учетной записи сервиса пароль dns имя обновляемого узла новый ip адрес Все делаем по описанию в предыдущем посте за исключением самого скрипта. :local login "login"; :local pass "password"; :local ddnshost "you_zone.ddns.net"; :local wan "wan"; :local tmpFile "myddns.info"; :local ddnsip [:resolve $ddnshost]; :local localip [/ip addres get [/ip address find interface=$wan ] address]; :local localip [:pick $localip 0 [:find $localip "/"]]; :global ddnsinterval; :if ($localip != $ddnsip) do={ /tool fetch url="http://$login:$pass@dynupdate.no-ip.com/nic/update?hostname=$ddnshost&myip=$localip" dst-path="$tmpFile" delay 2; :local fileid [/file find name="$tmpFile"]; :local fileContent [/file get $fileid contents]; /file remove $fileid; :log info "DDNS: mismatch DNS records, correction is made. $ddnshost ($ddnsip) changed to $localip"; } Параметры: login - логин учетной записи no-ip.com pass - пароль ddnshost - Ваш домен. Указывается полностью. Помним, что no-ip.com предоставляет несколько зон для бесплатного использования wan - имя интерфейса, смотрящего в интернет tmpFile - имя временного файла который будет создаваться в ходе работы скрипта и содержать ответ сервера Как и в предыдущий раз, прописываем удобный интервал запуска и тестируем.
  12. to Alex13 Еще раз хочу напомнить, что использование электромагнитного замка - всего лишь одна из возможных реализаций. Прикрутить можно любую нагрузку, главное развязать управление замком и его питание. Думаю, что использовать в качестве запирающего механизма что-то из элементов CD/DVD привода, как в видео Дмитрия Осипова, не совсем корректно, конечно если нужно запирать входную дверь, а не межкомнатную или что-то другое. Думаю, что использование заводского механизма наиболее оптимальный и надежный вариант. Конечно можно прикрутить и автомобильный соленоид, но мне интересно, каким механизмом он будет управлять?
  13. Доверяй, но проверяй. Идея заключается в том, чтобы проверять антивирусом все загружаемые uTorrent клиентом файлы сразу после окончания закачки. Эта тема особенно актуальна если кроме Вас за компьютером обедаем ваш отпрыск, который не сильно озабочен тем, какую дрянь он может подцепить в сети при скачивании безобидного на вид контента. Я доверяю антивирусу Kaspersky, но подойдет любой другой поддерживающий управление с помощью консольных команд. Аналогично и Torrent клиент должен уметь выполнять эти команды по событию. Для управления антивирусом Касперского с помощью консольных команд используется исполняемый файл avp.com находящийся в корневом каталоге установленного антивируса. Список поддерживаемых команд Usage: avp.com <command> [options] command Specifies the command to be executed. HELP Show this help SCAN Start new scan UPDATE Update databases and optionally application modules ROLLBACK Rollback previously updated databases RENEW Renew product START Start specified task STOP Stop running task STATUS Show task status STATISTICS Show task statistics EXPORT Export settings IMPORT Import settings AcceptEULA Accept EULA and manage KSN agreement usage flag REPORT Export reports SHOWTM Show scan task manager EXIT Exit product TRACES Turn traces on/off, clear traces To get additional description of specific command use 'HELP <command>' syntax Examples: avp.com [ /? | HELP ] avp.com <command> /? avp.com HELP <command> avp.com HELP SCAN avp.com UPDATE /? Первым делом необходимо прописать корневой каталог антивируса в Переменные среды операционной системы, переменная Path. По умолчанию каталог установки находится на системном диске (по умолчанию C:\): x86 - C:\Program Files\Kaspersky Lab\<тип антивируса>\ x64 - C:\Program Files (x86)\Kaspersky Lab\<тип антивируса>\ Допустим используется 64-х разрядная операционная система с установленным бесплатным антивирусом от Касперского версии 16.0.1, полный путь будет выглядеть так C:\Program Files (x86)\Kaspersky Lab\Kaspersky Free 16.0.1\ Открываем свойства компьютера (горячие клавиши "Win" + "Pause") и переходим в раздел "Дополнительные параметры системы". Во вкладке "дополнительно" находятся настройки "Переменные среды". Добавляем в переменную Path полный путь до каталога антивируса определенный ранее. Ничего сложного, но, чтобы проверить правильность действий достаточно в Командной строке набрать avp.com help и в ответ получим список поддерживаемых команд. Осталось дело за малым. Идем в настройки uTorrent, Дополнительно -> Запуск программы. Сам клиент поддерживает следующий список параметров, которые можно передать запускаемому приложению: %F - имя загруженного файла (для торрентов с одним файлом) %D - папка сохранения файлов %N - название торрента %P - предыдущее состояние торрента %L - метка %T - трекер %M - строка статуса (как в колонке статуса) %I - hex-кодированный инфо-хеш %S - состояние торрента %K - вид торрента (одиночный|мульти) На мой взгляд, самый оптимальный вариант, это полная проверка каталога, в который была произведена закачка. В довесок проверяем оперативную память и разделы автозагрузки. Итоги проверки будем записывать в лог файл, это поможет в разборе полетов в будущем. Команда запуска будет выглядеть следующим образом: avp.com SCAN /R:"%HOMEDRIVE%\AVP.log" /MEMORY /STARTUP "%D" По умолчанию файл логов AVP.log будет сохранен в корень системного диска, но Вы можете изменить его на любой другой как это сделал я. Пробуем что нибудь скачать и смотрим на результат.
  14. Kitsum

    Отключение рекламы в uTorrent

    Данная запись скорее крик души или даже протест против унылой рекламы, рассчитанной на людей, не обезображенных интеллектом. Ладно, не будем ходить вокруг да около, а перейдем к вопросу, "что Вы видите при запуске, одного из самых популярных, Torrent клиента - uTorrent?". Вот именно, кучу фекалий рекламы! Все понятно, надо как-то зарабатывать, ... бла бла... мир суров... бла бла... Избавляемся от этого! Благо разработчики отставили открытой "дверь" в глубокие настройки программы. Все, что нам требуется, это изменить значения нескольких параметров в разделе Настройка программы -> Дополнительно В поле Фильтр вбиваем имена следующих параметров и изменяем их значения на FALSE offers.sponsored_torrent_offer_enabled - отключает рекламный баннер в шапке программы offers.left_rail_offer_enabled - отключает окно рекламы в левом нижнем углу gui.show_plus_upsell - отключает рекламу PRO версии программы, которая появится при отключении рекламы в п.2 Сохраняем изменения и перезапускаем клиент. Результатом этих простых операций станет чистое и приятное окно! PS: А в будущем, мы дадим бой самой навязчивой рекламе в Рунете на уровне маршрутизатора! Достали!
  15. Имеется у меня в наличие старенькая магнитола (радио, CD\MP3, Aux), никаких излишеств. Дисками уже долгое время не пользуюсь, а радио надоедает, остается использовать Aux. Телефон и магнитола соединяются аудио кабелем и на телефоне запускается Play list из социальной сети или online радио с конкретным стилем музыки. Все здорово, но автомобиль начал обрастать проводами, да и если кто-нибудь из друзей захочет похвастаться своим музыкальным творением (да да, есть и такие) или просто включить интересный трек, то нужно иметь кабель подлиннее. Можно приобрести магнитолу с Bluetooth и все вопросы отпадут сами собой, но для меня это не вариант т.к в будущем магнитола будет полностью исключена из автомобиля, а её место займет устройство намного боле интереснее и функциональней. Да и куда без самого процесса... Поэтому будем встраивать Bluetooth в то, что есть! Речь пойдет о модернизации магнитолы Kenwood KDC-W4037 но инструкция идентична и для моделей: KDC-W237AY KDC-W237GY KDC-W3037AY KDC-W3037GY KDC-W311AY KDC-W311GY KDC-W3537AY KDC-W3537GY Если подумать, то принцип работы всех магнитол одинаков, поняв один раз, что нужно делать, можно переделать любую "голову". Для начала нам понадобится Bluetooth модуль XS3868 на чипе OVC3860. Приобрести можно в любом Китайском интернет магазине, хотя их производят с такой скоростью, что наверняка можно найти на ближайшем радио рынке. Я брал у Китайцев XS3868 V2, большое внимание уделите версии т.к распиновка отличается. Основные характеристики гласят, что модуль питается от напряжения от 3.6V до 4.2V, но как показывает практика - выдерживает и 5V. Также имеет антенну, разведенную уже на самой плате и её хватит для связи на расстоянии порядка 10м, что позволит "рулить" музыкой на каком-нибудь пикничке во время готовки шашлыков... Нам понадобятся контакты: (1) Масса для аудио каналов (2) Левый канал аудио (3) Правый канал аудио (9) GND питания (11) +5V Остальные контакты можно оставить не задействованными, но при желании можно вывести органы управления проигрывателем на рулевое колесо. Все необходимые контакты описаны на схеме выше. Замечу, что управлять таким образом вы будите не магнитолой, а проигрывателем на устройстве с которого подается аудио поток (телефон, планшет ...). Если необходимо, то можно добавить микрофон (4 и 5 пины), тем самым организовать Hands Free. Можно задействовать UART (18 и 19 пины) и с помощью дополнительного контроллера организовать тоже самое управление плюс дополнительные возможности, но это отдельная тема. И так, ищем техническую документацию на магнитолу, и это не та документация где описаны органы управления и как правильно установить устройство в панель автомобиля. Мы ищем именно ТЕХНИЧЕСКУЮ документацию от производителя со всеми схемами и т.п. Файлы для перечисленных ранее моделей Kenwood я прикреплю к этой записи в блоге. Теперь необходимо определиться куда мы включимся. Контроллер магнитолы знает несколько источников: CD/Радио/AUX и в теории мы можем откинуть любой из них и заменить его нашим источником аудио сигнала, но лучше воспользоваться уже подготовленным AUX. Это самый простой и короткий путь к готовому результату, да и весь остальной функционал останется рабочим. Магнитолы данной серии обладают двумя входами для источников внешнего аналогового сигнала. Первый расположен на лицевой панели (гнездо 3.5jack), второй на задней панели и является частью 13-и пинового разъема для внешних блоков. Второй вариант самый предпочтительный. На схеме он обозначен как модуль J4 (LX BUS). Ищем его подробную схему. Точки подключения и их описание я выделил желтым цветом. Пробежимся по схеме и разберемся, что тут к чему. (3) Постоянные 12V (BU) берутся прямо с питания магнитолы, равносильно питанию от бортовой сети автомобиля. (6) Масса для аудио каналов, она не связана с землей самой магнитолы! (8) Правый канал аудио (9) Сигнал (HIGH) указывающей что задействован AUX от внешнего модуля (12) Левый канал аудио По существу, нам необходимо соединить между собой 3 и 9 пины и соответствующие пины Bluetooth и модуля J4 магнитолы. # --------- | -------------- | ---------------- # # Bluetooth | Магнитола (J4) | Описание каналов # # --------- | -------------- | ---------------- # # 1 | 6 | Audio GND # # 2 | 12 | Audio LEFT ch # # 3 | 8 | Audio RIGHT ch # # --------------------------------------------- # Обычно на плате магнитолы имеется маркировка всех компонентов. Я припаивался на резисторы: R601, R602, R603 для аудио каналов, и таким образом, чтобы не выкинуть их из цепи. 12V можно подать с основной шины питания магнитолы на резистор R606, но я просто сделал перемычку между двумя клеммами на самом разъеме. К сожалению фотографии самого разъема, не осталось, ну да это и не беда, ничего сложного тут нету. В документации производителя имеется зеркальная схема расположения компонентов. Теперь осталось дело за малым. Необходимо найти точку, от которой мы будем питаться. Я попытался решить эту задачу наскоком и это была моя ошибка! Я подал питание на плату и прошелся по ней мультиметром отмечая все точки маркером где имеется напряжение от 4 до 5V. После по схеме из документации производителя выяснял за что отвечает та или иная точка. В итоге была найдена центральная шина питания +5V идущая на CD привод, и я благополучно сел на неё. А теперь самое важное в этом моменте - центральное питание +5V никогда не пропадает! Кстати именно по этой причине Ваша магнитола может вытянуть весь аккумулятор при длительной стоянке, но суть кроется в самом модуле Bluetooth. Если в течении двух минут с модулем не свяжется какое-либо устройство, то он уснет для экономии батареи, а вот разбудить его можно только через специальный пин Reset или сбросом питания. Если этого не сделать, то подключиться к нему получится только, сбросив клеммы с аккумулятора автомобиля, что согласитесь не технологично! А так можно представить себе ситуацию, когда Ваша подруга/девушка/жена (нужное подчеркнуть) захочет включить что-то из своего репертуара и услышит фразу "нет проблем малышка" сопровождающуюся щелчком открывающегося капота... EPIC FAIL! Необходимо брать питание откуда-то еще. Разбираемся с питанием всей платы. Судя по документации за это отвечает модуль IC4. На нем имеются два выхода +5V, один из которых пропадает если снять лицевую панель магнитолы и вынуть ключ зажигания. То, что нужно! На плате это отдельный преобразователь. Вообще он отвечает за питание всего и вся в магнитоле. Нам нужна его 9 нога - SW5V. Кстати, соседняя 8 нога именно постоянное питание +5V (VDD), но в этот раз она нам не понадобится. После все аккуратно запаиваем и укладываем провода. Перед включением магнитолы все внимательно проверьте на правильность подключения и отсутствие КЗ. После включения вы увидите устройство с именем POR 1007BT, это и есть Ваша магнитола. Для сопряжения используется один из стандартных паролей: 0000, 1234... PS: На этом пока все, приятного Вам возрождения старых аппаратов! B64-3498-00_00.pdf BLK-MD-SPK-B_AT_Commands_OVC3860_List.pdf kenwood_kdc-w237_w3037_w311_w3537_w4037.pdf
  16. Изначально задумывалось использовать WiFi и автономное питание, а саму метеостанцию разместить на улице. Но аккумуляторы не смогут пережить зимний период времени, а значит нужно тянуть линию с питанием. Тут и пришла мысль, если есть один провод, то идея с беспроводной связью уже смотрится не так шикарно. Вообще можно все описанное ранее реализовать на ESP8266, но вопрос с питанием остается открытым. Предполагаю, что минимальное время автономной работы должно быть не менее полугода.
  17. Хороший вариант, но опять же, не решает проблему потери питания.
  18. Я уже думал об этом. Согласен, электромагнит это не тот вариант, который необходим для: квартиры, дома, дачи или иного жилого помещения. Такой тип замка используется сейчас в помещении на производстве, люди находятся в нем 24/7 и система питания помещения, как и самого здания, намного надежней, нежели в обычных жилых домах. На практике питание контроллера идет от 5V щины, а электромагнита от 12V. Управление открытием идет через реле. Если снять питание с контроллера, то дверь останется закрытой. В будущем планировалось поставить источник бесперебойного питания, но это уже будет реализовывать текущий эксплуататор в лице моих коллег и друзей. В домашних условиях от электромагнита необходимо отказаться в пользу электромеханических замков. Такой вариант позволяет в случае потери питания оставить дверь запертой, и открыть замок, используя механический ключ. Также этот вариант не позволит отличить на глаз такую дверь от всех остальных в подъезде. В продаже имеются подобные замки, и они очень популярны в домофонах на коттеджах и вообще в частном секторе. Если немного пофантазировать, то я бы попробовал реализовать свою копию RFID сканера на базе RC522, но с антенной, спрятанной в дверной ручке. В продаже также имеются RFID кольца различных размеров, цветов и форм. От классических перстней, до золотых с кожаными вставками. Ну а далее суть ясна, взялся за ручку и дверь разблокирована. Добро пожаловать домой.
  19. Точное время - всегда актуальный вопрос. В большинстве случаев высокая точность не нужна и настроить время на вашем оборудовании можно по наручным, кухонным или напольным с кукушкой часами, да хоть по положению солнца, и этого будет более чем достаточно для большинства людей. Но вот, что делать, если хочется высокой точности? Верно, начинаем синхронизироваться с любым попавшимся NTP сервером в интернете, он в свою очередь синхронизируется с другим (возможно даже более точным, а может быть и нет) сервером. Цепочка может быть достаточно длинной, но в один прекрасный день может появится желание убрать посредников и найти самые точные часы на планете и спрашивать время у них. А какие часы самые точные? Атомные! Кстати на wikipedia имеется отличная статья про время! И вот тут пораскинув мозгами, начинаем судорожно вспоминать, в каком это супермаркете мы последний раз видели их в продаже и желательно с USB интерфейсом, можно даже розового цвета... Вы тоже не видели? Печаль. А ведь у нас над головой, на высоте порядка 19400 км висят куча спутников систем позиционирования (GPS / ГЛОННАС), а чтобы они работали им нужно знать точное время. Именно для этой цели у каждого из этих трудяг на борту имеются атомные часы! Отлично, давайте узнавать время у этих ребят. И так, немного задержавшись на сайте MikroTik можно найти пакет gps-xx.xx.npk который позволяет расширить возможности маршрутизатора и позволит ему определять свои точные координаты на поверхности нашей планеты. Чтобы установить пакет, достаточно просто скопировать его на маршрутизатор (сделать это можно перетащив .npk файл в файловый менеджер WinBox) и перезагрузиться. Теперь нам нужен GPS приемник. Общение будет идти по протоколу NMEA 0183, PDF. Мой маршрутизатор собран на базе стационарного компьютера, а следовательно можно смело брать приемник с USB интерфейсом. В наличии имеется отличный экземпляр от GlobalSat - BU-353U4. После подключения приемника переходим к настройки маршрутизатора. [admin@Kitsum] > port print Flags: I - inactive # DEVICE NAME CHANNELS USED-BY BAUD-RATE 0 serial0 1 Serial Console 9600 1 3:2 usb2 1 4800 Отлично, маршрутизатор видит что-то на порту usb2, запоминаем его Flag (1) и выставляем настройки согласно техническим характеристикам от производителя. Естественно, что для Вашего "свистка" настройки могут отличаться. [admin@Kitsum] > /port [admin@Kitsum] /port> set numbers=1 baud-rate=4800 data-bits=8 parity=none flow-control=none stop-bitsrs=1 Все настройки с портами Вы можете провести через Web интерфейс или WinBox в разделе System -> Ports Теперь осталось дело за малым. Сообщим маршрутизатору, что на порту usb2 висит GPS приемник, и он может им овладеть, то есть воспользоваться, ... блин использовать! И естественно, мы желаем, чтобы время, полученное в телеграмме от спутников считалось эталонным и использовалось как системное. [admin@Kitsum] > /system gps [admin@Kitsum] /system gps> set enabled=yes port=usb2 set-system-time=yes Теперь мы может посмотреть, какими именно данными мы начали располагать в следствии, этих сверх сложных манипуляций! Внимание: естественно, что при холодном старте, данные начнут поступать не сразу. [admin@Kitsum] > /system gps [admin@Kitsum] /system gps> monitor date-and-time: feb/08/2016 14:44:42 latitude: N 00 18' 13.236'' longitude: E 00 54' 5.236'' altitude: 325.299988m speed: 0.000000 km/h destination-bearing: none true-bearing: 133.419998 deg. True magnetic-bearing: none valid: yes satellites: 9 -- [Q quit|D dump|C-z pause] В данном случае получилось поймать сигнал с 9 спутников. Каждый из них передает нам свои координаты, а самое главное - время со встроенных атомных часов. Большая часть информации вычисляется уже по месту (скорость, высота ...). Мы практически добились нужного результата. Естественно мы получаем время по Гринвичу (UTC+0), меня это не устраивает, видимо и Вас тоже. Необходимо подправить часовой пояс. Это можно сделать в System -> Clock [admin@Kitsum] > /system clock [admin@Kitsum] /system clock> set time-zone-autodetect=no time-zone-name=Europe/Moscow И так, теперь Ваш маршрутизатор знает самое точное время на планете и им стоит поделиться хотя бы со всеми желающими в локальной сети. А таких поверьте, будет не мало. В современном мире все устройства жаждут обладать этой информации. Как же без этого Вам кофеварка сварит благородный напиток, или телевизор выключится и оградит молодое поколение от всего того, что оно и так потом узнает, а пока должно делать уроки, ммм? Необходимо поднять собственный NTP сервер и делается это сверх сложной и длинной командой. [admin@Kitsum] > /system ntp server [admin@Kitsum] /system ntp server> set enabled=yes manycast=yes Ну, или просто выставлением соответствующей галочки в System -> NTP Server И все было бы просто великолепно, если бы устройства в сети знали, что мы владеем более точным временем, чем time.windows.com, time.nist.gov да и сотни других серверов. Первая мысль, которая посетила меня - просто подменю ip адреса в записях DNS и "вуаля", но я даже понятия не имею с чем синхронизируется мой телефон, телевизор и у кого, после очередного обновления, захочет узнать время мой компьютер. Мы знаем, что NTP протокол использует 123 UDP порт для общения. Предлагаю перехватывать все запросы, из нашей локальной сети, адресованные на этот порт во внешний мир и заворачивать их на внутренний IP маршрутизатора! У меня все сетевые интерфейсы локальной сети объедены в Bridge и весь трафик ходит во внешний мир через через NAT и masquerade, внутренний адрес маршрутизатора 10.10.10.1 Добавим новое правило в NAT [admin@Kitsum] > /ip firewall nat [admin@Kitsum] /ip firewall nat> add action=dst-nat chain=dstnat dst-port=123 in-interface=bridge1 protocol=udp to-addresses=10.10.10.1 to-ports=123 На этом все. PS: зачем? потому что хочется и есть возможность!
  20. В продолжение темы будем пробовать подружить Arduino + RFID ридер MFRC522 c Ethernet и MySQL базой данных, в которой будут храниться наши ключи. Автором идеи является svchekalin. Это первый вариант реализации СКУД на Arduino с использование БД, уверен, что в дальнейшем получится значительно улучшить работу программы. Первым делом необходимо озаботиться созданием самой базы для ключей. Подразумевается, что раз Вас интересует вопрос хранения ключей не в EEPROM, а во внешней СУБД, то Вы имеете представление о MySQL, работе с ней и сам сервер базы данных у Вас имеется. Я не буду описывать тут процесс его установки и настройки т.к. эта тема не для этого раздела. Создадим базу данных с именем "test" и добавим в ней таблицу с именем rc522 со следующей схемой: CREATE TABLE IF NOT EXISTS `rc522` ( `uid` bigint(12) NOT NULL, `type` enum('0','1','2') NOT NULL DEFAULT '2', `description` varchar(250) DEFAULT NULL, UNIQUE KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; uid - содержит id ключа type - тип ключа. Может быть один из трех вариантов: 0 - ключ в базе, но деактивирован, 1 - мастер ключ, 2 - обычный ключ description - поле не используется в работе замка. Подразумевается, что в дальнейшем будет использоваться некая web форма для работы с ключами, и данное поле будет содержать некое описание, например ФИО владельца ключа. Первый ключ необходимо добавить самостоятельно. Код ключа можно узнать из консоли при попытки открыть замок. iT4iT CLUB (C) 2015 https://it4it.club Connected to server version 5.5.47-0+deb7u1 KEY: 3177510 access dany Disconnected. Чтобы добавить ключ 3177510 в базу и сделать его мастером необходимо выполнить SQL запрос: INSERT INTO `rc522` (`uid`, `type`) VALUES (3177510, '1'); База и таблица созданы, мастер ключ добавлен, переходим к монтажу электронной части. Я использовал Arduino UNO c Ethernet Shield на чипе W5100 (если Вы хотите подвязать ENC28J60, сразу советую отказаться от этой идеи). Сам шилд и библиотека Ethernet.h используют заранее определенные контакты SPI шины, это: 13 - SCK 12 - MISO 11 - MOSI 10 - SS В тоже время RFID сканер MFRC522 тоже использует SPI шину, и чтобы он чувствовал себя не ущемленным в правах, необходимо его пины SS и RST перенести: 13 - SCK 12 - MISO 11 - MOSI 9 - SS 8 - RST Все это дело будет выглядеть следующим образом. Переходим к скетчу. Для его работы понадобятся следующие дополнительные библиотеки: RFID-RC522 (NRF) Bounce2 (избавляет от дребезга контактов при нажатии кнопок) MySQL Connector (реализует работу с базой данных) Сам скетч Сразу хочу уточнить некоторые моменты. В программе Вам необходимо указать имя пользователя и пароль к MySQL серверу. Пользователь должен обладать достаточными правами для доступа к созданной в начале статьи базе. Также не забудьте указать IP адрес самого сервера в Вашей локальной сети. IPAddress server(10, 10, 10, 254); // IP адрес MySQL сервера char user[] = "login"; // MySQL username char password[] = "password"; // MySQL password Если Вы решили изменить имя базы или таблицы на какие-нибудь другие, то необходимо отредактировать константы, содержащие SQL запросы. const char QUERY_S[] = "SELECT type FROM test.rc522 WHERE uid = %s;"; const char QUERY_I[] = "INSERT INTO test.rc522 (uid) VALUES ('%s');"; Как видите, имя базы и таблицы указаны через разделитель точку ".", и в данном примере база имеет имя test а таблица rc522, что соответствует записи test.rc522 Алгоритм работы схож с предыдущими вариантами замка, за исключением того, что EEPROM в данной версии не используется. Соответственно и мастер ключ самостоятельно не создается, именно поэтому мы добавили его в базу руками. Связь с базой и последующая обработка ответа происходит с некоторой задержкой, это связано с производительностью контроллера, особенностями работы библиотеки, самой программы и т.д и т.п. В моем случае, время с момента начала считывания метки до реакции на неё занимало до 3 сек. Плюс ко всему, из-за определенных обстоятельств, MySQL сервер пришлось поднимать на Raspberry PI, а это далеко не лучший вариант для СУБД. В данный момент на одну аутентификацию метки требуется создать одно подключение и один запрос, это тоже увеличивает время реакции. Можно устанавливать соединение с базой при подачи питания на Arduino и просто клепать запросы. Такой вариант уменьшит время реакции в два раза, НО есть ложка дегтя в этой бочке. Если по каким либо причинам связь с сервером будет прервана (а оно так и будет, т.к. 100% гарантию дает только страховой полис), то контроллер зависнет при попытке выполнить заброс к БД. Проснуться он сможет только с помощью сторожевого таймера. В общем, этот момент еще будет проработан в следующих версиях замка. Думаю, что с нормальной СУБД время реакции уменьшится до 2 сек. Для входа в режим программирования необходимо, после того как замок разблокируется, удерживать мастер ключ еще 5 секунд у RFID сканера. Произойдет звуковой сигнал, а замок откроется, и будет находиться в таком состоянии пока Вы не выйдите из режима программирования (повторно удерживаем мастер ключ у сканера до звукового сигнала). В режиме программирования, как и в предыдущих версиях замка, все новые ключи будут записаны в MySQL. Все действия по-прежнему сопровождаются отчетами в Serial мониторе. Вот пример с попытками добавить существующий ключ в базу и добавлением нового ключа. IP: 10.10.10.97 # <- IP адрес полученный от DHCP сервера iT4iT CLUB (C) 2015 https://it4it.club Connected to server version 5.5.47-0+deb7u1 # <- Поднесен новый ключ. Подключаемся к MySQL серверу KEY: 26214177213 # <- ID текущего ключа у RC522 сканера access allow # <- Доступ разрешен (ключ в базе с меткой 1 - мастер) Disconnected. # <- Отключаемся от сервера * closed lock # <- Замок автоматически закрылся, НО КЛЮЧ ВСЕ ЕЩЕ У СКАНЕРА! MASTER PROGRAMMING MODE ON # <- После 5сек. Вход в режим программирования. Connected to server version 5.5.47-0+deb7u1 # <- Поднесен новый ключ. Подключаемся к MySQL серверу KEY: 204641111 # <- ID текущего ключа у RC522 сканера error: key elrady exists in eeprom # <- ID ключа уже прописан на сервере <!> Disconnected. # <- Отключаемся от сервера Connected to server version 5.5.47-0+deb7u1 # <- Поднесен новый ключ. Подключаемся к MySQL серверу KEY: 3177510 # <- ID текущего ключа у RC522 сканера add key in MySQL # <- ID ключа не найден в СУБД. Arduino завписывает новый ключ в базу. Disconnected. # <- Отключаемся от сервера Connected to server version 5.5.47-0+deb7u1 # <- ID текущего ключа у RC522 сканера KEY: 26214177213 # <- ID ключа найден в СУБД (ключ в базе с меткой 1 - мастер) Disconnected. # <- Отключаемся от сервера MASTER PROGRAMMING MODE OFF # <- Выходим из режима программирования PS: На данный момент это полностью рабочий вариант и отличная отправная точка для будущих изменений.
  21. Думаю, что точного ответа не существует в природе. Надо поднимать спецификацию на SPI, информацию о кабеле, внешней среде и погружаться с калькулятором и кучей формул в расчеты. Из собственного опыта могу сказать, что при использовании медной многожильной витой пары связь уверенно будет на 1-1.5, возможно даже 2 метрах.
  22. Из этого Советую все внимательно перепроверить, все подключения, инверсию сигнала и т.д. Собрал на столе с инфракрасным датчиком движения. Все работает.
  23. to Alex13 Дорвался до домашнего компьютера, есть возможность на практике все проверить. В коде была ошибка, сейчас все исправлено. Текущая логика работы (как я её понимаю из всех предыдущих постов): Проверка подбора ключей работает постоянно и управляет выходами A1 и A2 На пин A0 заведен сенсор (датчик движения, удара и т.п) который также управляет выходами A1 и A2 Если на пин A0 подать 1, то сигнализация активируется (пин A1 будет взведен до тех пор пока не откроют замок, пин A2 будет поднять 1 минуту) Если на пин A0 подать 0, но ничего не происходит. Остальная логика осталась без изменения. Напоминаю об инверсии выходов A1 и A2
  24. to Alex13 Видимо изначально я не так понял логику работы дополнительного входа. Оставляем тот же вход A0.
×
×
  • Создать...