LAN Control

Почти 2 года назад, я разработал устройство Universal Device, но, как оказалось, оно слишком многофункциональное, вторая его проблема была в том, что он очень зависим от ПК. Мне присылали много писем, в которых пользователи устройства перечисляли плюсы и минусы. Теперь я решил разработать устройство, которое будет подходить большинству критериев:

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

    Какой интерфейс применить? Не долго думая, я выбрал Ethernet, а в качестве интерфейсной микросхемы —  ENC28J60. С момента появления этой микросхемы, уже создано много самоделок, они подключаются к роутеру, и имеют WEB интерфейс, это значит, что с помощью браузера до устройства можно достучаться через его IP, к тому же, не лишь в районе локальной сети, настроив в роутере проброс порта, можно получить доступ по IP роутера через любое устройство, подключенное к инету. Но если такие устройства уже есть, зачем же мне разрабатывать ещё одно? Если у Вас IP статический, то зная его, вы всегда можете получить доступ к устройству через инет, но статический есть далеко не у всех, а если вы используете GPRS/3G инет (как я, CDMA), то статический адрес приходится покупать за дополнительную плату. Но в моем устройстве нет этого недостатка, к нему можно получить доступ с помощью логина и пароля, не зная IP.

    Я разработал устройство с такими характеристиками:

  • Подключение к роутеру с помощью витой пары.
  • Количество выходящих каналов: 7 (максимальный ток 500мАна каждый), выходящее напряжение равно напряжению питания.
  • Количество входящих каналов: 4.
  • Сеть 1-wire, к которой можно подключить до 20 датчиков DS18B20.
  • Управление и настройка устройства с помощью браузера.
  • Возможность управления выходящими каналами с помощью пульта с RC5.
  • Возможность устанавливать имя для каналов и датчиков, сохраняется в энергонезависимой памяти.
  • Обновление прошивки через USB.
  • К сожалению, ENC28J60 требует обвес, у меня так и не получилось сделать для него одностороннюю плату, поэтому, я решил купить готовый модуль:

    Купить можно AliExpress. Цена 3-4$ с учетом доставки. Но при этом, у нас уже есть сама микра и разъем с трансформатором с светодиодами, если покупать это по отдельности, то цена будет точно выше.

    Схема 1. Питание:

    Питание 6-35В постоянного тока, понижается до 5В с помощью импульсного стабилизатора MC34063A. Дроссель советую брать минимум на 1А.

    Схема 2:

    Микроконтроллер Atmega32, память AT24C64, в качестве ключей выходных каналов используется микросхема ULN2003. Питание Ethernet модуля требует 3,3В, поэтому, установлен стабилизатор REG1117-3.3. Для приема сигналов с пульта установлен TSOP1736, перемычкой возле него можно отключить возможность приема комманд с ПДУ. 2 транзистора 2N7002 используются для 1-wire, рядом 2 диода защищают линию от напряжения, выше напряжения питания (если будет длинный провод, то будут наводки), ещё установлен один датчик DS18B20. PORT6 для подключения Ethernet модуля. Ну и паръем USB для подключения к ПК. Перемычка BOOTLOADER предназначена для перевода устройства в режим обновления прошивки.

    Получилась вот такая плата:

    Я здесь забыл поставить перемычку бутлоадера. Вверху слева показано, куда надо подключать модуль. Выходящие замыкаются на землю, тоесть, если Вы хотите подключить светодиод, то его «+» надо подключит к VCC а «-» к одному из каналов. Входящие каналы считаются активными, если замкнуты на землю (GND). Дополнительные датчики DS18B20 подключаются разъему U4.

    Теперь надо прошить МК. Прошейте его файлом bootloader.hex, далее выставьте фьюзы LOW=0x3F, HIGH=0xDA, если программа вашего программатора не позволяет просто выставить верхний и нижний байты, тогда зайдите сюда http://avr.roboforum.ru/calc.html?part=ATmega32, слева введите эти 2 байта и увидите, как правильно надо расставить фьюзы. Бутлоадер прошит, теперь программатор не нужен. Вставьте МК в устройство, подключите кабель USB, установите перемычку бутлоадера, и далее подключите питание, комп должен найти новое HID устройство и установить его (драйверы не нужны), устройств успешно переведено в режим прошивки. Для прошивки используются 3 файла: bootloadHID.exe – программа хоста, boot.bat файл и командами и LAN_Control.hex – это сама прошивка, когда будете обновлять прошивку, то замените этот файл новым. Все 3 файла должны лежать в одной директории. Запустите boot.bat, должно выскочить черное окно, в нем пару минут будут бегать цифры и оно закроется, прошивка завершена.

    Отключите перемычку, подключите питание, загорится D6 на 1 секунду и потухнет, если пока он горит, установить перемычку бутлоадера, то установляться стандартные настройки, это нужно обязательно сделать при первом включении. После их установки дважды мигнет светодиод. Стандартные настройки такие:

    • IP: 192.168.1.170
    • MAC: 84.85.88.16.0.41
    • Порт: 80

    Если зайти в меню вашего роутера, то ВОЗМОЖНО там будет отображаться подключение этого устройства, но далеко не всегда (у меня он вообще его не показывал). Чтобы убедиться, что есть нормальная связь между компом и устройством (они должны быть в одной локальной сети, тоесть, подключены к одному роутеру), откройте Командную строку и напишите ping 192.168.1.170, должно прийти 4 ответа:

    Это значит, что связь нормальная.

    Откройте браузер и перейдите по адресу http://192.168.1.170/, должно появиться примерно такое окно:

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

    И задайте для каждого компонента имя(латинскими буквами). Для этого, выберите Термодатчик, номер 1 и введите какое то имя, далее для каждого термодатчика, после этого, для 7 выходных и 4 входных каналов. Теперь нажмите Выходящие каналы.

    Как видите, у меня для первого канала установлено имя «one», для второго – «two» и т.д. Если выход активный, то возле него будет ON, если не активный – OFF. Чтобы изменить состояние, нажмите «Изменить».

    Примерно так же выглядит вкладка «Входящие каналы»:

    Продолжаем настройку устройства. Для этого, нужно зайти в панель администрирования. Для этого, при включенном устройстве нужно установить перемычку бутлоадера и перейти по адресу http://192.168.1.170/admin

    Здесь можно изменить IP адрес, МАС и порт(остальное пока что не нужно). Установленные изменения применяются лишь после перезагрузки устройства. Имейте ввиду, что порт 80 – это стандартный порт сервера, если он будет не 80, а к примеру, 200, то в адресной строке после IP надо через двоеточие указывать порт, тоесть http://192.168.1.170:200/.

    Теперь попробуем достучаться к устройству через инет, зная его IP.

    Для начала, нужно настроить проброс порта на IP устройства. После этого, его кто-то перейдет с внешней сети IP:порт_устройства, то запрос перейдет на само устройство.

    Настройка проброса порта не вызывает никаких трудностей, у меня роутер WR1043 с прошивкой OpenWrt. Для настройки проброса нужно зайти в веб-интерфейс роутера (обычно http://192.168.1.1), далее Сеть->Межсетевой экран, там найдите Перенаправления и нажмите Добавить.

    Имя введите любое, Протокол TCP+UDP или просто TCP, Внешний порт – это порт устройства, Внутренний IP адрес – это IP устройства, Внутренний порт можете оставить пустым. Сохраните и примените настройки. Попробуйте достучаться к устройству через инет(можно делать и в локальной сети). Узнайте IP роутера во внешней сети, для этого можно открыть http://speedtest.net/, в самом большом окне внизу слева будет отображаться ваш IP. Теперь откройте в браузере этот IP, и через двоеточие порт (к примеру, у меня http://130.185.30.125:80/), должно отобразиться то же самое что и при переходе по IP устройства.

    Теперь наше устройство доступно через инет. Но мы подключались к нему зная IP, а если мы его не знаем?
    Для этого, я создал небольшой сервис, принцип его работы в том, что пользователь на нем регистрируется, далее вводит логин и пароль в панели администрирования, и устройство с установленной периодичностью отправляет логин, пароль и порт на этот сервис, сервис вычисляет IP, откуда пришли дынные (это будет IP роутера во внешней сети) и сохраняет данные в базе данных. Затем, пользователь заходит на сайт, вводит логин и пароль, после чего отображается страница с фреймом, в котором переход по IP:port. Теперь более подробно.

    Регистрируется на сайте http://kibermaster.net/, далее открываем http://lc.kibermaster.net/, «Регистрация» и вводим те же самые логин, пароль и имейл, которые на http://kibermaster.net/. Теперь заходим в админ-панель устройства (у меня http://192.168.1.170/admin), вводим там логин, пароль, частоту репорта (как часто отправлять данные на сервис) и IP роутера по внутренний сети (обычно 192.168.1.1), сохраняем, вытягиваем перемычку бутлоадера и перезагружаем устройство. Если частота репорта не равна 0, тогда при включении будет отправлять на сервис данные устройства, так же, они будут отправляться через установленный интервал времени (частота репорта).

    Внимание! Автор проекта принимает заказы на разработку устройств на микроконтроллерах, обращайтесь на devices2000 {собака} ya.ru


    Список радиоэлементовОбозначение
    Тип
    Номинал
    Количество
    ПримечаниеМагазинМой блокнот

    Схема 1. Питание
    DC/DC импульсный конвертерMC34063A1

    Выпрямительный диод1N40071

    Диод18121

    Конденсатор470 пФ1

    Конденсатор0.1 мкФ5

    Электролитический конденсатор10 мкФ1

    Электролитический конденсатор100 мкФ1

    Электролитический конденсатор1000 мкФ1

    Резистор680 Ом1

    Резистор1.5 кОм1

    Резистор4.7 кОм1

    Светодиод1

    Дроссель220 мкГн1
    Минимальный ток 1 А
    Разьем для подключения питанияDG301-5.0-02P1
    Схема 2
    МК AVR 8-битATmega321
    32-16PI
    Линейный регуляторREG1117-331

    МикросхемаM24C64MN11

    Датчик температурыDS18B201

    Составной транзисторULN20031

    MOSFET-транзистор2N70022

    Стабилитрон3.6 В2
    Защита USB
    Диод12064

    Диод18122

    Конденсатор22 пФ2

    Конденсатор0.1 мкФ2

    Резистор68 Ом2

    Резистор1 кОм8

    Резистор1.5 кОм1

    Резистор2.4 кОм3

    Резистор4.7 кОм3

    Резистор100 кОм1

    Кварцевый резонатор16 МГц1

    Кварцевый резонатор1
    LED
    Светодиод1

    USB-разьем1

    РазьемDG301-5.0-02P1

    РазьемDG301-5.0-03P5

    РазьемPORT22

    РазьемPORT31

    РазьемPORT61
    Добавить все

    Скачать список элементов (PDF)

    Прикрепленные файлы:

    Добавить комментарий

    Ваш адрес email не будет опубликован.