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

Kitsum

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

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

  • Посещение

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

    234

Сообщения, опубликованные пользователем Kitsum


  1. Приветствую @academyit

    Почитал по поводу использования эффекта Доплера в метеостанции. Да действительно, этот вариант очень привлекателен, но в тоже время немного сложнее в реализации как физически, так и программно. Возможно, в будущем попробую сделать для себя что-то подобное.

    По поводу тепличного хозяйства.

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


  2. @Small_d Приветствую, автор дополнения немного поспешил и допустил ошибку в программе микроконтроллера.

    Был не указан порядковый номер адреса ключа. Должно быть так.

    // Читаем ключ
    for(byte i=0; i<4; i++) key += mfrc522.uid.uidByte[i];

    Все изменения от @svchekalin не проверял. Будем разбираться по мере необходимости.

    Что касаемо кодировок, попробуйте изменить php файл таким образом, чтобы html разметка была похожа не что-то подобное.

    <html lang="ru-RU" dir="ltr">
      <head>
        <title>Заголовок</title>
        <meta charset="utf-8">
      </head>
      <body>
    	Тут само тело или PHP сценарий
      </body>
    </html>

     

    • Like 2

  3. @academyit Я уже задумывался об автономной работе, но нужно иметь довольно большой запас емкости аккумулятора. По крайней мере если хочется оставить контроллер с полноценным web сервером и его плюшками. Если это не требуется, то можно уводить контроллер в сон и передавать показания раз в 15-30 минут. Можно передавать дамп данных, например, в виде JSON строки содержащей массив, заполненный за тот-же период времени пока контроллер не выходил в эфир.

    От литий-ионных аккумуляторов придется отказаться т.к использование их в уличных условиях, особенно зимой, при не удовлетворительном заряде со стороны солнечной батареи, а это вполне возможно, приведет к гибели аккумулятора и потери устройства. В принципе это не особо критично если устройство стоит дома, но кардинально все меняет если устройство работает автономно в поле, условно говоря. Как мне кажется, достойной заменой может послужить Литий-железо-фосфатный аккумулятор (LiFePO4, LFP), он отлично работает при отрицательной температуре (естественно в пределах разумного), имеет не плохие показатели в основных характеристиках и как бы является следующим витком эволюции. Но все это пока только в теории, в руках я их еще не держал.

    По поводу измерения осадков. По началу я хотел собирать весь комплекс, то есть измерение осадков, скорости и направления ветра, но потом спустился на землю. У меня не частный дом, и установить конструкция в независимом от окружающих построек места у меня нет, а, следовательно, и точность этих показаний будет +/- трамвайная остановка. Я отчетливо вижу по текущим графикам, как стена дома дает температурные шумы, если так можно выразиться, на датчики и показания уплывают.

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

    Геометрия емкостей и их расположение относительно друг друга не дают возможности заполнять их водой одновременно. Их объем нам известен заранее, а, следовательно, при заполнении одной из емкости, происходит изменение масс относительно оси и емкость опустошается, а мы по прерыванию фиксируем это получаем количество осадков. Естественно нужно учитывать множество факторов, например, время между прерываниями, площадь воронки над сенсором с которой мы и собираем осадки ну и т.п

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

    А вот для анемометра подойдет оптопара из обычного принтера с шаблоном на котором находится темная полоса с мелкими просветами для сенсора.

    IMG_1727.JPGIMG_1728.JPG

    Ну или как альтернатива оптический сенсор ролика обычной компьютерной мышки с самой осью ролика.

    rolicki.gif

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


  4. @academyit Да действительно, можно организовать и так, тут кому как нравится.

    Меня интересовала только уличная информация, да и цель была разместить всю конструкцию, вместе с контроллером, за пределами жилой зоны. Но не могу не согласиться, Ваш вариант более полезен! Возможно сделаю так в будущем, длинны кабелей хватит вполне.

    IMG_1682.JPG


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

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

    Проблема была только в подключении. А вот для чего нужен сам пин прерывания IRQ

    pn532_irq.png

    По сути, таким образом, PN532 сообщает, что имеются данные для основного контроллера. И количество общего трафика на шине, уменьшается.


  6. @vladmed Рад, что у Вас все получилось.

    4 минуты назад, vladmed сказал:

    Непонятно только одно, на многих видео ясно видно, что плата подключена только четырьмя проводами, без IRQ и RESET, но работает, как же это???

    Модуль может работать по 3 интерфейсам, это SPI, i2C и HSU (высокоскоростной UART). Вот последний как раз и подключается всего по 4 проводам.


  7. Адрес на i2C шине действительно должен быть 0x48. Вот выписка из технической спецификации.

    pn532_i2c_address.png

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

    Попробуйте подтянуть SCL и SDA пины к +5v питания через резисторы 4.7k. Обычно на платах они уже распаяны, но доверять никому нельзя, а тем более Китайскому массовому производству. Также, на всякий случай, можете перейти на пины A4 (SDA) и A5 (SCL).

    Конечно, можно еще попробовать поменять адреса в самих библиотеках, но это не правильно, и скорее всего не даст эффекта, но проверить стоит.

    В библиотеке от elechouse в файле PN532_I2C.cpp, а в библиотеке от Adafruit в файле Adafruit_PN532.h ищите строку

    #define PN532_I2C_ADDRESS (0x48 >> 1)

     


  8. @Zuk Климат через управление стеклоподъемники, это сурово. Так регулировать температуру не получится однозначно. А вот изменять положения стекла в зависимости от скорости автомобиля не сложно, но потребует внесения кардинальных изменений в конструкцию всей системы подъема стекла. Например, установив шаговый мотор и измерив, количество шагов между крайними положениями стекла. Далее снимать показания скорости и линейно изменять уровень открытия окон. Но опять же вопрос в том, какая температура за бортом, это тоже надо учитывать при регулировки, а эти данные будут плавать и довольно сильно. Обязательно нужно помнить о системе безопасности, как реализовано в заводских доводчиках стекол многих автомобилей. Если стекло встречается с препятствием, рука или не дай Бог шея, оно автоматически отступает чтобы не причинить вред. В обычных моторах это можно поймать через отслеживание повышения потребляемого тока, а вот как в шаговых, пока под вопросом. Ну, или использовать штатные моторы, но тогда нужно придумать систему отслеживающую положение стекол.

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

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

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


  9. @SergejMElnikov Значит при появлении основного ключа, кроме открытия входной двери и включения света, происходит разблокирование склада и появляется питание на оборудовании. Все остальные ключи могут только открыть дверь и включить свет. Остается под вопросом, в какой момент необходимо закрыть склад, и когда выключать свет. Точнее будет вопрос, при каких обстоятельствах или действиях необходимо все выключить и заблокировать? Человек ведь выходит по кнопке, значит, ему нужно произвести некие манипуляции уже с ключом снаружи.

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

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

    Возможно, я заблуждаюсь, но мне кажется, что стоит разделить все это на несколько отдельных систем.

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

    Склад имеет свой отдельный замок, но работает он  в другом режиме - у него отсутствует автоматическая блокировка двери. Поднесли ключ, замок открылся, поднесли еще раз, закрылся. Если дверь на склад открыта, то на оборудование в помещении подается напряжение. Закрыли склад, оборудование обесточивается. Хотя питания оборудования можно связать со светом, а не складом. Можно уйти, просто закрыв склад. Если люди остались, то они могут продолжить чем-то заниматься.

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

     

    • Like 1

  10. Доброе время суток @SergejMElnikov

    1. Для каких целей необходим дисплей, что Вы хотите на него выводить?
    2. Расскажите подробнее про начало и окончание рабочего дня. Как Вы себе его представляете? Пока не совсем понятен механизм, учитывая, что выходит человек, используя внутреннюю кнопку, а входит по ключу. Допустим, свет включается, если он еще не включен, при идентификации любого из известных ключей, то, как распознать, что свет необходимо выключить... Если, кто-то вышел по той или иной причине, как реагировать на повторный вход? Или только один ключ включает и выключает свет параллельно с открытием двери, а все остальные только могут открывать дверь в рабочее время? Если так, то может ли человек с таким ключом уйти посреди рабочего дня?

  11. Всем привет. Начнем как всегда с предыстории!

    Цель, сбор данных с различных устройств на очень большой территории промышленного предприятия. Естественно финансирование просто огромное, хватит на большую пачку семечек и пачку индийского чая, возможно даже сдача останется, но не факт. А Вы как думали? В сказку попали? В связи с этим устройства самодельные, на базе популярных микроконтроллеров фирмы ATmel с прикрученным Ethernet. И естественно самый простой способ обмена не критической информацией - MQTT протокол. Т.к. предприятие не малое, цеха большие, то IT оборудование раскидано на агрегатах и для защиты от воздействия внешней среды, оно находится в гермозонах. Температура внутри поддерживается кондиционерами, но они, как и все в этом мире, стремятся раствориться в небытии, и с легкостью потянут за собой все оборудование, что трудится в гермозонах на благо предприятия.

    И так. Для начала Вам понадобится свой брокер c MQTT клиентом. Хотя у Вас он скорее всего уже есть. Его роль может выполнять как сам zabbix сервер, так и отдельная машина. В последнем случае дополнительно потребуется установка zabbix агента.

    Все инструкции и дистрибутивы имеются на официальном сайте mosquitto.org

    Я использую в качестве операционной системы Linux Ubuntu и для меня все очень просто.

    sudo apt-get install mosquitto mosquitto-clients

    Настройка брокера - это отдельная тема и затрагивать её здесь не будем.

    Вносим дополнения в конец файла конфигурации zabbix агента на сервере

    nano /etc/zabbix/zabbix_agentd.conf

    Добавляем пользовательский параметр MQTT

    UserParameter=mqtt[*],/usr/bin/mosquitto_sub -h 127.0.0.1 -t $1 -C 1 -N 2>/dev/null

    Сброс ошибок в /dev/null необходим из-за возможности их появления в случае запуска клиента от пользователя, у которого нет собственного домашнего каталога. В противном случае можно получить в довесок к выводу сопроводительное письмо со следующим текстом.

    Цитата

    Warning: Unable to locate configuration directory, default config not loaded.

    Переходим в панель управления Zabbix.

    Теперь нам доступна возможность создавать элементы данных содержащих ключи следующего вида.

    mqtt[адресс необходимого топика]
    mqtt[/room213/door1/lock/status]
    mqtt[/garage/smoke/level]
    mqtt[/room/sensors/temperature1]

    Каждый ключ соответствует адресу топика с которого нужно взять ту или иную информацию. И сама структура топика просто идеальна для иерархии оборудования или ветвления расположений объектов. Но Вы и так это видите.

    Создаем узел сети с ip адресом Zabbix сервера или просто 127.0.0.1, тип проверки  "Zabbix агент". Указываем интересующий нас топик и слушаем.

    ВАЖНО: Клиенты рассылающие сообщения должны использовать параметр "-r, --retain" для сохранения сообщения у брокера. Без этого параметра Zabbix не сможет получить данные т.к не поддерживает постоянную связь с брокером, а лишь забирает последние данные по установленному интервалу времени.

    Команда для отправки тестовой строки "message" в топик "test/string"

    /usr/bin/mosquitto_pub -h 127.0.0.1 -r -t test/string -m "message"

    Для начала мне потребовалось снимать показания температуры внутри и снаружи гермозон. Это экстренная необходимость т.к в случае ч.п, в зимнее время, температуры внутри может превышать 30 градусов Цельсия, а в летнее температура пола рядом со зданием в котором находится гермозона может превышать 70-80 градусов Цельсия, а про температуру оборудования я вообще молчу. И да, мы не конфеты делаем, к сожалению...

    Скрытый текст

    000.JPG

    Для меня удобнее создать шаблон, который будет добавлен к серверу с MQTT брокером. Это дает гибкость в случае замены самого брокера или миграции сервера на другую платформу. Интересующий нас ключ отмечен на рисунке, все остальное на Ваше усмотрение.

    zabbix_mqtt_1.png

    Все данные показанные ниже идут с тестового стенда, установленного за пределами экстремальных зон!

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

    zabbix_mqtt_2.png

    Текущие показания.

    zabbix_mqtt_3.png

    Ну и естественно график, куда без него. Прост и так скудный)

    zabbix_mqtt_4.png

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

    • Like 1
    • Thanks 1

  12. Доброе время суток.

    Сегодня мы будем собирать бесконтактный замок с использованием NFC контроллера PN532. Опираясь на опыт прошлого варианта (на контроллере MFRC522) и на отзывы тех, кто пытался повторить схему, были сделаны определенные выводы. Постараемся избавиться от старых подводных камней и поищем новые :)

    PN532.jpg

    Скрытый текст

    rfid___nfc_pn532_16.png

    И так, что мы знаем о PN532:

    • Очень компактный размер 42.7 x 40.4 мм
    • Поддерживает работу по SPI, i2C и HSU (высокоскоростной UART)
    • Читение/Запись RFID меток, может общаться с другими контроллерами PN532, и вроде как общаться с Android телефонами
    • Рабочая дистанция 5-7 см

    Поддерживаемые чипы

    • ISO 14443 Type A  - NXP Mifare 1k, 4k, Ultralight, Desfire
    • ISO 14443 Type B
    • ISO/IEC 14443-4-совместимые чипы
    • FeliCa
    • Jewel
    • TopaZ

    Чтение / Запись RFID меток

    Скрытый текст

    PN532-4.jpg

    Обмен данными P2P

    Скрытый текст

    PN532-5.jpg

    Передача данных смартфону

    Скрытый текст

    PN532-6.jpg

    Кстати, вроде как начиная с Androik 4.4 KitKat операционная система умеет эмулировать NFC метки программным способом. Это подразумевает, что мы можем на телефоне сделать копию проездного билета (БСК, Тройка) или просто обычной метки, и использовать смартфон в качестве ключа для замка. К сожалению, у меня пока нет под рукой аппарата с поддержкой NFC, а значит и проверить это мне не под силам. Оставляю эту задачу Вам! 

    Для сборки замка нам понадобятся:

    1. Arduino UNO или любой аналог с контроллером ATmega328
    2. Сам модуль сканера с контроллером PN532
    3. Китайский модуль реле с опторазвязкой (в программе предусмотрена инверсия управляющего сигнала на случай управления реле напрямую или замены его на транзисторный ключ / мосфет)
    4. Две кнопки для, одна для разблокировки замка изнутри помещения, а другая для сброса памяти микроконтроллера
    5. Два резистора 10kOm и 4.7kOm
    6. Танталовый конденсатор на 1uF
    7. Светодиод для индикации о попытках взлома замка с помощью брутфорса ключа
    8. Транзистор KT315 или его аналог для управления питанием PN532. Говорят, что война между Десептиконами и Автоботами началась именно из-за этих Советских транзисторов!

    pn532.png

    Зачем нужен транзистор? Он используется для управления питанием сканера, если по какой-либо причине Arduino пойдет на перезагрузку, то она потянет за собой и сканер. Таким образом мы лишний раз подстрахуем себя. Конденсатор в обвязке транзистора необходим для сглаживания пульсаций, у меня они были явно заметны при питании от USB. Конечно это все можно выкинуть из схемы и пустить на ножку VCC контроллера PN532 питание напрямую с 5V платы Arduino. Это уже на Ваш страх и риск.

    Критически важно обратить внимание на питание! Не поленитесь и возьмите отдельный блок питания, USB используйте только в качестве Serial монитора. На реле желательно подавать отдельное питание, на Китайских модулях для этого есть соответствующие пины (GND, VCC, JD-VCC). На схеме я это не отражено т.к каждый волен самостоятельно выбирать как управлять силовой частью замка. Может вы замените реле мосфетом.

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

    Так показано на схеме и так делает большинство. Все будет работать. 

    HL-52S-Relay-Module-Circuit-Schematics.png

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

    Relay-Module-Circuit-Schematics.png

    Выбор за Вами.

    Вернемся к сканеру. Уже упоминалось, что он имеет возможность общаться по одному из нескольких интерфейсов на выбор. Сам выбор интерфейса реализован на физическом уровне и представляет из себя сдвоенный переключатель. На изображении ниже выбран HSU (UART). В таком варианте модули приходят к нам из поднебесной.

    PN532-NFC-RFID-Module-V3.jpg

    Мы будем использовать i2C интерфейс. Возможно стоило бы SPI?

    PN532_i2C.JPGPN532_i2C_2.JPG

    Все подключения можно свести к одной таблицы

    PN532-Atmega328p - Arduino 1-6-12.png

    Как все устроено

    Часть функционала было позаимствовано из предыдущего варианта о котором говорилось в самом начале данного поста. При первом запуске Вам будет предложено создать мастер ключ, но не спешите это делать. Я советую Вам очистить EEPROM, для этого нажмите и удерживайте кнопку RESET до тех пор, пока не услышите звуковой сигнал. После очистки памяти контроллер будет перезапущен, замок разблокируется в ожидании первого поднесенного ключа (метки), может быть даже смартфона (ищите эмуляторы RFID меток и проверяйте).

    Первый поднесенный ключ станет мастером, советую его надежно спрятать дома т.к только с его помощью можно записывать новые ключи в память микроконтроллера. Кстати о памяти, вот схема как она используется, всего занято 1kB.

    PN532-Atmega328p - Arduino 1-6-12-2.png

    Первые 8 байт используются для хранения системной информации. Пока заняты только первые 2 байта, а остальные 6 зарезервированы под будущие улучшения. Возможно Вы что-то захотите добавить свое. Начиная с 9 байта идут ключи. Ключи бывают разного размера, но мы будем использовать только первые его 4 байта. Первый ключ всегда идет мастер, все последующие обычные. Всего можно иметь 1 мастер и 253 обычных ключа. То есть мы израсходуем весь объем EEPROM контроллера ATmega328. Вы конечно можете воспользоваться другим контроллером, с большим количеством памяти, но программа не даст Вам создать более 254 ключей. Оставшаяся память останется свободной.

    И так после создания мастер ключа замок перейдет в дежурный режим, разблокировать его можно кратковременным нажатием на кнопку OPEN или самим мастер ключом. Для добавления новых ключей необходимо поднести мастер ключ к сканеру и удерживать более 5 секунд. Замок перейдет в режим программирования оповестив Вас об этом звуковым сигналом. В этом состоянии замок будет в разблокированном состоянии и все поднесенные новые ключи будет записаны в память. Для выхода из режима программирования необходимо опять поднести мастер ключ к сканеру и удерживать более 5 секунд. Звуковой сигнал оповестит об этом и замок вернется в дежурный режим.

    После открытия двери ключом или кнопкой запускается таймер, который закроет замок через 5 секунд. Можно удерживать замок в открытом состоянии при удержании кнопки OPEN, но при её отпускании замок сразу закроется.

    Теперь немного про защиту

    В программе имеется счетчик ложных срабатываний. Если в течении минуты будут зарегистрированы 5 попыток подбора ключа, замок будет заблокирован на 1 минуту. Открыть дверь можно будет только с кнопки OPEN. Поднесения действующего ключа, даже мастера, будет проигнорировано замком. По истечению минуты доступ будет открыт, но на этом еще не конец. Счетчик даст только одну попытку разблокировать замок, если она потерпит неудачу, блокировка повторится. Замок будет давать по одной дополнительной попытки за каждую минуту ожидания, но не более 5 попыток. Таким образом скорость подбора ключа сводится к 1 ключу в минуту, а учитывая длину ключа даже в 4 байта, тот кто захочет этим заняться должен быть бессмертным. Проще ключ украсть или сделать копию, но от этого не застрахованы даже обычные замки, но в следующем варианте программы мы позаботимся и об этом.

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

    • 1 раз в секунду если была выявлена хотя бы одна блокировка
    • 2 раза в секунду если было выявлено более 5 блокировок
    • 3 раза в секунду если более 10 блокировок
    • 4 раза в секунду если выявлено более 20 попыток
    • Горит постоянно при более 50 попытках

    Есть два способа сбросить счетчик. Воспользоваться мастер ключом и перевести замок в режим программирования, после вернуть обратно в дежурный режим. Или удерживая активный ключ у сканера PN532 зажать кнопку OPEN на 5 секунд.

    В принципе на этом пока все. Для реализации Вам понадобятся следующие библиотеки:

    1. Bounce2 для программной защиты от дребезга
    2. Timer1 для удобной реализации прерываний
    3. Adafruit PN532 для связи с самим сканером

    Хотите помочь проект?

    Сама программа замка: PN532_lock_iT4iT.CLUB.7z

       

      • Like 2

    • В 09.02.2017 в 02:32, svchekalin сказал:

      кстати а почему там две кнопки ?

      Одна открывает дверь, а другая затирает EEPROM.

      @svchekalin Тяжело разобраться, но я могу точно сказать, что с кнопками уже косяки. Резисторы у кнопок в таком варианте абсолютно бесполезны т.к закорочены самой макетной платой. Я попытаюсь дальше понять по фото что к чему, но это не простая работа т.к из-за платы расширения уже возникает ряд вопросов. А какое напряжение она выдает после преобразователя? какое напряжение между пинами V и G этой платы?

      Еще момент с током потребления при нажатии на кнопку.

      В 08.02.2017 в 22:41, BOTASAN сказал:

      Кз полюбому так как ампер метр показывает при нажатии большое употребление ампер 1.7 а почти.

      На сколько мне известно, с вывода микроконтроллера нельзя снять ток выше 50мА, а ток в 1.7А скорее всего равен максимальному, который способен выдать Ваш источник питания. Это явный КЗ, и похоже в обход стабилизатора самой Arduino! Я так думаю, потому что Вы используете аналог NANO и на обратной стороне платы, скорее всего, расположен стабилизатор AMS1117. Он способен выдать не более 1А, а это намного меньше 1.7А при КЗ.

      1. Разберите всю схему
      2. Не используйте плату расширения на которой установлен Ваш микроконтроллер
      3. Соберите все внимательно, с нуля и без спешки
      4. Перепроверьте монтаж после сборки
      5. Питание возьмите от штатного USB разъема

      По зуммеру ничего добавить не могу, разве, что - возьмите другую, заведомо рабочую плату, и проверьте сам зуммер через функцию tone

      PS: это тот минимум который я могу Вам посоветовать в данной ситуации


    • Всем привет, в этой статье поговорим об уже надоевшей всем теме - "Метеостанция". Каждый пытается сделать что-то свое, вот и я не стал исключением и попытался материализовать свои эротические фантазии на контроллере ESP8266. Тема задумывалась уже давно как некое обновление для предыдущего проекта этой тематики, но из-за своей неспешности переросла в нечто самостоятельное.

      esp8266_wether_station_1.png

      esp8266_wether_station_2.png

      При всей привлекательности микроконтроллера ESP8266 с его большим объемом памяти, железной поддержкой Wi-Fi и массой разных плюшек, он не лишен недостатков. Самый основной - ограниченное количество поддерживаемых одновременных TCP соединений равное 5. Если превысить этот лимит, то контроллер потеряет связь с окружающим миром, при этом watchdog будет думать, что все в порядке, а следовательно, даже не попытается нам помочь. Будем стараться это помнить!

      Стоит начать с концепции

      1. Доступ к данным метеостанции нужно получать без установки внешних приложений и под любой операционной системой. Для этих целей подойдет практически любой современный браузер. Меня всем устраивает Chrome.
      2. Раз уж за основу взят HTTP протокол, стоит озаботиться экономией трафика и ограничением числа TCP соединений. Хорошим тоном будет передача всего необходимого для формирования страницы контента только при первом обращении, а все последующие операции, такие как отображение показаний с датчиков или настройку контроллера, производить через API. В этом нам поможет JQuery.
      3. А вот, чтобы ослабить болевые ощущения от передачи файлов с SPI Flash в браузер, стоит предусмотреть систему кэширования, например, Etag. Это позволит отдавать тяжелый контент единожды, а при последующих загрузках страницы просто подтверждать его актуальность на уровне Web сервера микроконтроллера и кэш браузера вступит в игру, неимоверно уменьшив время загрузки страницы! "Вы были правы в одном, Мастер: переговоры были недолгими." © Звездные войны. Эпизод 1
      4. Из-за того, что метеостанция с датчиками и контроллером должна располагаться на улице, жизненно необходимо предусмотреть возможность обновлять прошивку ESP через Web интерфейс.
      5. Аналогичным образом должны обновляться файлы Web сервера расположенные на SPI Flash. Этот и предыдущий пункт вкупе позволят обновлять функционал микроконтроллера из домашней сети или из интернета, если конечно в этом возникнет острая необходимость.
      6. Чтобы никто посторонний не могу вмешаться в работу устройства или изменить файлы Web сервера, последний должен хотя бы как-то себя защищать. Пускать в панель управления только после авторизации, блокировать доступ при попытках брутфорса пароля. В конце концов, контроллер обязан самостоятельно генерировать ключи (salt) для авторизации, дабы сделать алгоритм непредсказуемым и исключить потенциальный взлом, в случае если злодей завладеет исходниками проекта. Понятно, что кому она там нужна, эта метеостанция, если её не завязывать с умным домом, если только из-за спортивного интереса, но как говориться “Береженого Бог бережет”.
      7. Датчики стоит расположить по уму - в метеобудке, а вот контроллер в сухом и закрытом боксе. Объединить их между собой, как мне кажется, удобнее по I2C шине - минимум проводов, максимум удобства.
      8. Практически на всех вариантах плат ESP-xx имеется штатный светодиод, можно воспользоваться им как для индикации режимов и состояния микроконтроллера, так и для вывода какой-либо промежуточной информации.
      9. Что касаемо режимов работы ESP8266, как ни странно, но он должен находить домашнюю Wi-Fi сеть и подключаться к ней. Если вдруг звезды не были к нам благосклонны, и домашняя беспроводная сеть приказала долго жить, контроллер обязан перейти в режим точки доступа (AP) дабы к нему можно было подключиться с какого-либо устройства и перенастроить его на другую сеть. А вот пока последнее не произошло, ESP должен периодически сканировать эфир в поисках долгожданной домашней точки доступа и, если боги были к нам милосердны, и домашняя сеть появилась в эфире, незамедлительно переключиться в режим клиента (STA) и в пылу страсти воссоединиться с ней.
      10. Ну и естественно, как же без отправки данных на внешние ресурсы, сейчас без этого не обходится ни одна уважающая себя кофеварка, не говоря уже о метеостанции. Думаю, что основным блюдом станет протокол MQTT, это уже облегчает возможность интеграции с умным домом, стулом или той же кофеваркой. Ну а на закуску добавим поддержку "ThingSpeak" и "Народного мониторинга". При желании можно нарастить функционал, благо памяти у микроконтроллера еще много.

      Как я себе это представляю

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

      Перейдем к физической сборки устройства

      Как по мне, так самый оптимальный вариант, это воспользоваться отладочной платой NodeMCU V3 и базой для неё. Таким образом, мы получим отличный комплект с разведенной на его борту всей необходимой обвязкой и возможностью питать устройство от 5 до 24 Вольт.

      esp-nodemcu.jpg

      Отладочная плата на базе, и смотрится хорошо, и удобства хоть отбавляй.

      nodemcu_base3.jpgnodemcu_base5.jpg

      Заливаем прошивку, образ SPI Flash и подключаем четырьмя проводами датчики. Справится даже ребенок.

      Ссылки:

      1. Базовая плата для NodeMCU V3 с преобразователем питания 5-24V в 5V
      2. Отладочная плата ESP8266 от NodeMCU

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

      Датчики взятые за основу

      Скрытый текст

       

      Датчик уровня освещенности BH1750

      Скрытый текст

      GY-302-BH1750.jpg

      • Интерфейс шины I2C
      • Диапазон измерений от 1 до 65535 Lx
      • Фильтр световых шумов 50/60 Hz
      • Возможность смены адреса на шине
      • Не требует калибровки
      • Рабочая температура от -40 до 85 градусов C
      • Питание от 2.4 до 3.6 V

      Датчик атмосферного давления BMP085/180

      Скрытый текст

      bmp180.jpg

      • Интерфейс шины I2C
      • Диапазон измерения от 300 до 1100 hPa
      • Встроенный датчик температуры
      • Не требует калибровки
      • Питание от 1.8 до 3.6 V

      Датчик влажности SI7021-A20

      Скрытый текст

      A40-Industrial-High-Precision-Si7021-Humidity-Sensor-with-I2C-Interface-for-Arduino-Free-Shipping.jpg

      • Интерфейс шины I2C
      • Диапазон измерений от 0 до 100% RH
      • Погрешность измерения 3% RH в диапазоне от 0 до 80% RH
      • Рабочая температура от -40 до 125 градусов C
      • Встроенный датчик температуры с диапазоном измерения от -40 до 85 градусов C
      • Не требует калибровки
      • Питание от 1.9 до 3.6 V

      Альтернативные датчики

      Датчик влажности HDC1080

      Скрытый текст

      HDC1080-GY-213V.jpg

      • Интерфейс шины I2C
      • Диапазон измерений от 0 до 100% RH
      • Погрешность измерения 2%, устаревание (износ) 0.25% в год. На последнее значение могут влиять внешние факторы.
      • Рабочая температура от -20 до 70 градусов C
      • Встроенный датчик температуры с диапазоном измерения от -40 до 125 градусов C
      • Не требует калибровки
      • Питание от 2.7 до 5.5V

      Датчик влажности HTU21D

      Скрытый текст

      HTU21D.jpg

      • Интерфейс шины I2C
      • Диапазон измерений от 0 до 100% RH
      • Погрешность измерения 2%, устаревание (износ) 0.5% в год. На последнее значение могут влиять внешние факторы.
      • Рабочая температура от -40 до 125 градусов C
      • Встроенный датчик температуры с диапазоном измерения от -40 до 125 градусов C
      • Не требует калибровки
      • Питание 3V, максимум 3.6V

      Сборка 3 в 1 из датчиков BH1750, HTU21D и BMP180

      Скрытый текст

      HTU21D-BMP180-BH1750-HTU21D-3-IN-1-Temperature-Humidity-Pressure-Light-Sensor-Triad-Module.jpg

      • Все используемые датчики описаны выше
      • Очень компактные размеры

      Комплексный датчик BME280 для измерения температуры, влажности и атмосферного давления

      Скрытый текст

      BME280.jpg

      • Интерфейс шины I2C
      • Рабочая температура от -40 до 85 градусов C
      • Диапазон измерение влажности от 0 до 100% RH с точностью 3% в диапазоне от 20 до 80% RH. Устаревание (износ) 0.5% в год.
      • Диапазон измерения давления от 300 до 1100hPa
      • Диапазон измерения температуры от -40 до 85 градусов C
      • Напряжение питания от 1.7 до 3.6V

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

       

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

      В этот раз мы воспользуемся более серьезным вариантом – "Метеорологическая будка Стивенсона". Она способна защитить датчики от прямых воздействий окружающей среды, но при этом имеет открытую структуру со стенками в виде жалюзи. Удобно, красиво и самое главное – правильно!

      Будка печатается на 3D принтере по эскизам опубликованным на Thingiverse неким kowomike, спасибо добрый человек! Архив с эскизами можно будет скачать в конце поста.

      Stevenson1.jpgStevenson2.jpg

      Фото готовой будки

      IMG_0034.JPGIMG_0035.JPGIMG_0038.JPG

      Шпилька М8 крепится через зажимной хомут к мачте уличной антенны.

      Скрытый текст

      IMG_0031.JPGIMG_0033.JPG

      Примерка. Шпилька практически не укорачивалась, чтобы не закрывать будку параболической Wi-Fi антенной.

      Хотя в моем случае все это сделано не правильно т.к это солнечная сторона дома. Доступа на теневую сторону дома у меня нет, поэтому приходиться довольствоваться тем, что имеем. По прошлой метеостанции мне говорили "на солнечной стороне все эти измерения - сферический конь в вакууме, слепи %описание-многА-букАв% и закрепи на теневой стороне дома".

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

      IMG_0075.JPGIMG_0078.JPGIMG_0079.JPG

      Датчики располагаются на разных уровнях. В основании находится датчик освещенности BH1750 и смотрит ровно вниз. Мне кажется, так он будет меньше пачкаться и покрываться пылью и при этом смотреть наружу сквозь минимальное количество препятствий для солнечного света. Вообще размещение этого датчика, это целая головная боль. Как не крути, все будет не то. Оставил так, ведь по сути важны не сами показания, а тенденция изменения. Хотя кого я пытаюсь обмануть, точность важна всегда! Предлагайте свои варианты.

      Скрытый текст

      IMG_1513.JPG

      Намного проще обстоят дела с датчиком атмосферного давления BMP180 и влажности SI7021, кстати, с последнего мы также будем забирать данные о температуре. Их размещаем в оставшемся свободном пространстве будки, благо его там с избытком, но не в конусе т.к пространство в нем менее проветриваемое.

      IMG_1136.JPGIMG_1137.JPG

      Все хозяйство подключается между собой следующим образом

      NodeMCU | ESP 07/12 | Датчики
      -----------------------------
      D2      | GPIO 4    | SDA
      D1      | GPIO 5    | SCL
      3.3V    | 3.3V      | 3.3V
      GND     | GND       | GND

      ВАЖНО: при финальном монтаже устройства на его место службы, обязательно установите перемычку между пинами GPIO 0 (D3) и питанием 3.3 Вольта. Причины её установки описаны в закрепленном сообщении с описание обновления от 12.08.2017.

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

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

      1_esp8266_weather_station_v2.JPG2_esp8266_weather_station_v2.JPG

      Разъемы для подключения внешних датчиков и питающей линии установил на местах где была пара штатных заглушек. Закрепил все через переходную пластину, выпиленную из куска фольгированного текстолита. Естественно, предварительно пластина была протравлена, а вся медь искоренена, ибо в этом случае она нам не друг.

      Скрытый текст

      3_esp8266_weather_station_v2.JPG4_esp8266_weather_station_v2.JPG

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

      Производим примерку.

      Скрытый текст

      5_esp8266_weather_station_v2.JPG6_esp8266_weather_station_v2.JPG

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

      Скрытый текст

      8_esp8266_weather_station_v2.JPG7_esp8266_weather_station_v2.JPG

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

      9_esp8266_weather_station_v2.JPG10_esp8266_weather_station_v2.JPG

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

      11_esp8266_weather_station_v2.JPG12_esp8266_weather_station_v2.JPG

      Общий вид получился таким

      Скрытый текст

      13_esp8266_weather_station_v2.JPG14_esp8266_weather_station_v2.JPG15_esp8266_weather_station_v2.JPG

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

      16_esp8266_weather_station_v2.JPG17_esp8266_weather_station_v2.JPG18_esp8266_weather_station_v2.JPG

      19_esp8266_weather_station_v2.JPG20_esp8266_weather_station_v2.JPG21_esp8266_weather_station_v2.JPG

      Требования (!!!Читать обязательно!!!)

      1. Arduino IDE с поддержкой контроллера ESP8266, версия 2.6.2 (на версиях выше работоспособность не проверялась)
      2. Установленный модуль в Arduino IDE для загрузки файлов во Flash память микроконтроллера. Как установить описано тут.
      3. Для работы модуля загрузки файлов во Flash может понадобится последняя версия Python https://www.python.org/downloads/
      4. Любой модуль на базе ESP8266 c Flash 4MB (3MB выделяем под SPIFFS)
      5. В параметрах выставляем lwIP версии 2 и максимальную производительность (lwIP v2 Higher Bandwidth)
      6. Сам архив с последней версией проекта. Скачать можно в конце статьи или по этой ссылке.

      image.png image.png image.png

      Обязательные библиотеки (!!!Читать обязательно!!!)

      1. ArduinoJson (v5.13.5)
      2. PubSubClient

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

      Порядок установки (!!!Читать обязательно!!!)

      1. Изучите файлы проекта с примерами использования тех или иных сенсоров. Все файлы с примерами начинаются с префикса users_, это users_auto.h, users_bme280_x2.h и т.д. Загрузите необходимые Вам библиотеки или используйте эти файлы как пример для добавления иных датчиков.
      2. Выставите необходимые настройки для контроллера в среде разработки Arduino IDE. Пример настроек указан на скриншоте выше. Обязательно убедитесь, что выбрано правильное распределение места для внутренней файловой системы, это значит, что 3MB должно быть выделено под файловую систему. Также проверяем, чтобы использовался lwIP v2 в режиме максимальной производительности (lwIP v2 Higher Bandwidth).
      3. Произведите загрузку программы с помощью среды разработки (Ctrl + U).
      4. Произведите загрузку содержимого каталога data в файловую систему. Меню/Инструменты/ESP8266 Sketch Data Upload
      5. Перед тем как устанавливать метеостанцию на постоянное место жительства, подтянуть GPIO-0 (пин D3 на плате NodeMCU) к питанию 3.3V. Во время данной процедуры, питание на контроллере должно отсутствовать.

      Первый запуск (!!!Читать обязательно!!!)

      Помните, что вся конфигурация микроконтроллера производится исключительно через web интерфейс. Никаких изменений значений тех или иных параметров в коде не требуется, а подобную практику будем считать плохим тоном.

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

      Подключитесь к данной сети с любого удобного устройства и перейдите в панель управления (для этого имеется соответствующая иконка, запутаться невозможно), контроллер будет доступен по адресу http://espws.local или http://192.168.4.1 При попытке входа в панель управления будет запрошено имя пользователя и пароль, по умолчанию admin/admin. После входа в панель управления перейдите в раздел "Основные настройки WiFi" и укажите имя и пароль Вашей домашней сети, а также, при необходимости, укажите пароль для подключения к точке доступа поднимаемой контроллером в аварийном режиме. Если все сделано правильно, то контроллер подключится к домашней сети в течении 5-и минут.

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

      Хотите помочь проекту или спонсировать новый?

      Файлы

       

      • Like 5

    • Немного о том, как прошивать микроконтроллер по сети/wi-fi/воздуху, нужное подчеркнуть.

      Способов несколько, самый просто - воспользоваться библиотекой ArduinoOTA входящей в стандартный набор библиотек установленных при добавлении поддержки ESP8266 в Arduino IDE. Дополнительно необходимо доставить Phiton 2.x и перезапустить Arduino IDE

      Чтобы Ваша программа поддерживала OTA (Over the Air) Update, подключаем следующие библиотеки

      #include <ESP8266WiFi.h>
      #include <ESP8266mDNS.h>
      #include <WiFiUdp.h>
      #include <ArduinoOTA.h>

      ESP8266mDNS.h не обязательна и нужна только для добавления поддержки DNS запросов, если это для Вас необходимо.

      В Setup можно использовать следующие функции, обязательно является только begin.

      void setPort(uint16_t port);
      void setHostname(const char* hostname);
      void setPassword(const char* password);
      void begin();

      Дополнительно можно задать обработчики для разных событий на этапе прошивки

      void onStart(OTA_CALLBACK(fn));
      void onEnd(OTA_CALLBACK(fn));
      void onProgress(OTA_CALLBACK_PROGRESS(fn));
      void onError(OTA_CALLBACK_ERROR (fn));

      В loop используется только одна функция OTA

      handle();

      Также, при необходимости, можно получить текущее имя хоста (esp8266)

      String getHostname();

      Пример идущей с библиотекой

      Скрытый текст
      
      #include <ESP8266WiFi.h>
      #include <ESP8266mDNS.h>
      #include <WiFiUdp.h>
      #include <ArduinoOTA.h>
      
      const char* ssid = "..........";
      const char* password = "..........";
      
      void setup() {
        Serial.begin(115200);
        Serial.println("Booting");
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        while (WiFi.waitForConnectResult() != WL_CONNECTED) {
          Serial.println("Connection Failed! Rebooting...");
          delay(5000);
          ESP.restart();
        }
      
        // Port defaults to 8266
        // ArduinoOTA.setPort(8266);
      
        // Hostname defaults to esp8266-[ChipID]
        // ArduinoOTA.setHostname("myesp8266");
      
        // No authentication by default
        // ArduinoOTA.setPassword((const char *)"123");
      
        ArduinoOTA.onStart([]() {
          Serial.println("Start");
        });
        ArduinoOTA.onEnd([]() {
          Serial.println("\nEnd");
        });
        ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
          Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
        });
        ArduinoOTA.onError([](ota_error_t error) {
          Serial.printf("Error[%u]: ", error);
          if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
          else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
          else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
          else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
          else if (error == OTA_END_ERROR) Serial.println("End Failed");
        });
        ArduinoOTA.begin();
        Serial.println("Ready");
        Serial.print("IP address: ");
        Serial.println(WiFi.localIP());
      }
      
      void loop() {
        ArduinoOTA.handle();
      }

       

      После прошивки контроллера идем в "Инструменты" Arduino IDE и смотрим список доступных портов. Если все сделано правильно, то в списке появится ветка с доступными для прошивки по воздуху контроллерами.

      ota1.png

      Данный способ хорош тем, что позволяет шиться прямо из-под среды разработки.

      Все остальные способы используют HTTP протокол и подразумевают использования браузера или же самостоятельное подключение контроллера к серверу обновления в поисках свежего бинарника. Эти способы также имеются в примерах среды разработки.

      • Like 1

    • 12 часа назад, rivald сказал:

      Здравствуйте знающие люди. Подскажите где проинвертировать сигнал на реле.

      За управление реле отвечает пин указанный в описании константы

      #define PIN_RELAY 7

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

      digitalWrite(PIN_RELAY,

      и инвертировать устанавливаемые там значения LOW или HIGH. Таких позиций в начальном скетче всего 9

       

      • Like 1

    • @BOTASAN Очень странно т.к:

      17 часов назад, BOTASAN сказал:

      С внутренней стороны кнопка выхода срабатывала но кнопка рестар на ардуинке нано не реагировала

      Это говорит о том, что основной цикл программы, описанный в функции loop, продолжает "крутиться" (кнопки не завязаны на прерываниях) и ожидает логическую единицу от функции mfrc522.PICC_IsNewCardPresent(), что будет свидетельствовать о появление в зоне видимости ридера ключа/метки.

      А вот отсутствие реакции на рестарт контроллера наталкивает на мысль, что пир RESET продолжает быть подтянутым к плюсу питания, это как минимум настораживает и может говорить о физической неисправности или некачественном монтаже, т.к в логике работы замка не подразумевается вмешательство в работу 1 ножки (reset) контроллера.

      В программе также задействован сторожевой таймер, который не даст остановиться основному циклу

      wdt_enable(WDTO_8S);

      Если в течении 8 секунд не будет признаков жизни, watchdog вмешается и перезагрузит контроллер.

      17 часов назад, BOTASAN сказал:

      При сбросе питания загрузившись она работала нормально но теперь стремает надёжность такова рода замка в чём может быть причина ?

      Я бы посоветовал посмотреть в сторону монтажа. Уже ясно, что контроллер продолжал работать т.к была реакция на кнопку открытия изнутри. Но, по всей видимости, сам ридер не работал или на его работу что-то влияло. Соберите все "на коленке", тщательно проверьте монтаж и протестируйте в течение нескольких суток.

      PS: в данном варианте замок работает уже больше года у моих коллег и единственной проблемой стало выход из строя реле из-за отсутствия диода в цепи управления на Китайском модуле и естественно эдс самоиндукции её быстренько сожгло. Реле заменили, а в цепь добавили старый Советский диод, теперь все в норме.


    • @ribafei PN532 очень интересный чип, намного веселее чем RC522, использующийся в теме с замком

      В упомянутых выше метках используется чип NTAG203 использующий стандарт ISO/IEC 14443A и таким образом подпадающий под поддерживаемые чипы для PN532

      Скрытый текст

      NTAG203

      RF интерфейс (ISO/IEC 14443A)

      • Бесконтактная передача данных, бесконтактная подача энергии
      • Дальность чтения до 10 см (в зависимости от размера антенны и устройства)
      • Рабочая частота- 13,56 МГц
      • Скорость передачи данных- 106 кбит/с
      • Высокая целостность данных
      • Антиколлизия
      • 7 байтовый серийный номер (уровень 2 согласно ISO/IEC 14443-3)

      EEPROM

      • 168 байт памяти (разделена на 42 части по 4 байта)
      • 144 байта пользовательской read/write памяти
      • 32 битная одноразово программируемая память (OTP)
      • 16 разрядный счетчик
      • Хранение данных – 5 лет
      • 100 000 циклов перезаписи
      • Настройка полей только для чтения

       

      Что касаемо эмуляции метки самим чипом PN532, вот пример передачи NDEF тега https://github.com/elechouse/PN532/blob/PN532_HSU/PN532/examples/emulate_tag_ndef/emulate_tag_ndef.ino а вот с эмуляцией Mifare Classic 1K и 4K могут быть большие сложности.

      В общем нужно плотно изучать вопрос.

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

       


    • Если тема еще актуальна, то может попробовать разобраться. Нужно знать, что за железка и что она поддерживает.

      В идеале у неё должен быть поднят SNMP сервер поддерживающий IF-MIB::interfaces

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

      Для теста можно использовать шаблон от маршрутизаторов CISCO из этой темы 

       

      • Like 1

    • Я бы брал за основу механический счетчик воды с импульсным выходом.

      VLF-R-I.jpg

      Для меня они имеют следующие преимущества:

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

      И так, все довольно просто. Нам необходимо знать количество импульсов на 1 кубический метр жидкости проходящей через счетчик. Настроить прерывание ESP на срабатывание при переходе от высокого уровня с низкому. Импульсный выход счетчика использовать для подтягивания пина прерывания на землю (так мы можем использовать очень длинный кабель от счетчика, и на нем не будет никакого питания). Считать сколько было прерывания, при достижения числа равному количеству импульсов на 1 кубометр, увеличивать общий счетчик прошедшей воды, а счетчик прерываний обнулять. Данные с общего счетчика можно передавать в MySQL или по MQTT на сервер умного дома, ну или на худой конец просто выводить в браузер.


    • Всем привет!

      И так, имеется компьютер, которому предоставлен доступ в интернет через proxy сервер. Для обычной работы в браузере этого вполне достаточно, но возникла ситуация когда потребовалось выпустить в интернет (по протоколу HTTP/HTTPS) приложение не имеющее сетевых настроек прокси. Первой попыткой было завернуть трафик через Proxifier, но из-за специфики работы программы через Java VM она потерпела фиаско. Конечно, можно и нужно было попробовать разобраться с JVM, но хотелось здесь и сейчас!

      Принято решение завернуть http/s трафик windows в proxy сервер.

      netsh1.jpg

      В состав Windows (начиная с 2000) включена утилита netsh предназначенная для конфигурации сетевых параметров. Утилита имеет функционал от настройки ip адресов до конфигурации IPSec, но нас интересует настройка службы WinHTTP.

      Скрытый текст

      WinHTTP реализует стек клиента HTTP и обеспечивает разработчикам Win32 API и компонент автоматизации COM для отправки запросов HTTP и получения ответов. Кроме того, WinHTTP обеспечивает поддержку автоматического обнаружения конфигурации прокси через реализацию протокола WPAD (Web Proxy Auto-Discovery).

      netsh2.jpg

       

      Для конфигурации WinHTTP через командную строку (cmd), последнюю необходимо запускать с правами администратора.

      netsh3.jpg

      Добавление общей записи о прокси-сервере

      netsh winhttp set proxy proxy-server="10.10.10.1:3128"

      Добавление записи о прокси-сервере с указанием конкретных протоколов

      netsh winhttp set proxy proxy-server="http=10.10.10.1:3128;https=10.10.10.1:3129"

      Добавление записи о прокси-сервере с указанием конкретных протоколов и списка исключений

      netsh winhttp set proxy proxy-server="http=10.10.10.1:3128;https=10.10.10.1:3129" bypass-list="*.example.com"

      Импорт настроек из IE

      netsh winhttp import proxy source=ie

      Просмотр текущей конфигурации

      netsh winhttp show

      Сброс настроек

      netsh winhttp reset proxy

       

      • Like 1

    • Для того, чтобы motion стартовал автоматически при запуске системы, попробуйте добавить разрешение на запуск юнита в systemd

      systemctl enable motion

      или

      /lib/systemd/systemd-sysv-install enable motion

      перезапускаем систему и смотрим вывод

      service motion status
      Скрытый текст
      
      service motion status
       motion.service - LSB: Start Motion detection
         Loaded: loaded (/etc/init.d/motion; bad; vendor preset: enabled)
         Active: active (running) since Пн 2016-10-17 15:26:47 MSK; 2min 24s ago
           Docs: man:systemd-sysv-generator(8)
        Process: 568 ExecStart=/etc/init.d/motion start (code=exited, status=0/SUCCESS)
         CGroup: /system.slice/motion.service
                 └─1324 /usr/bin/motion
      
      окт 17 15:26:46 hostname systemd[1]: Starting LSB: Start Motion detection...
      окт 17 15:26:47 hostname motion[568]:  * Starting motion detection daemon motion
      окт 17 15:26:47 hostname motion[568]:    ...done.
      окт 17 15:26:47 hostname systemd[1]: Started LSB: Start Motion detection.
      окт 17 15:26:53 hostname motion[796]: [25567616] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
      окт 17 15:26:53 hostname motion[796]: [25567616] [NTC] [ALL] config_thread: Processing config file /etc/motion/thread1.conf
      окт 17 15:26:53 hostname motion[796]: [25567616] [NTC] [ALL] motion_startup: Motion 3.2.12+git20140228 Started with SDL support
      окт 17 15:26:53 hostname motion[796]: [25567616] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)

       

       

      • Like 3
    ×
    ×
    • Создать...