Отключаемые счетчики электроэнергии на пульте. Все с документами пломбами, гарантией и без посредников!

LAN Control

LAN Control

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

  1. Устройство должно быть независимо от ПК.
  2. Управление функциями ПК (Винамп, курсор и т.д.) тоже бессмысленно.
  3. Уменьшить количество индикаторов.
  4. И самый важный критерий: полное удаленное управление на любом расстоянии (разумеется, через инет).

Еще писали, понравилось то, что такое многофункциональное устройство уместилось на односторонней плате, поэтому, и это я тоже постарался уместить на односторонней плате.

Какой интерфейс применить? Не долго думая, я выбрал Ethernet, а в качестве интерфейсной микросхемы –  ENC28J60. С момента появления этой микросхемы, уже создано много самоделок (например http://www.rlocman.ru/shem/schematics.html?di=55066), они подключаются к роутеру, и имеют WEB интерфейс, это значит, что с помощью браузера до устройства можно достучаться через его IP, к тому же, не только в пределах локальной сети, настроив в роутере проброс порта, можно получить доступ по IP роутера через  любое устройство, подключенное к инету. Но если такие устройства уже есть, зачем же мне разрабатывать еще одно? Если у Вас IP статический, то зная его, вы всегда можете получить доступ к устройству через инет, но статический есть далеко не у всех, а если вы используете GPRS/3G инет (как я, CDMA), то статический адрес приходится покупать за дополнительную плату. Но в моем устройстве нет этого недостатка, к нему можно получить доступ с помощью логина и пароля, не зная IP.

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

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

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

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

Схема 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 секунду и потухнет, если пока он горит, установить перемычку бутлоадера, то установляться стандартные настройки, это нужно обязательно сделать при первом включении. После их установки дважды мигнет светодиод. Стандартные настройки такие:

Если зайти в меню вашего роутера, то ВОЗМОЖНО там будет отображаться подключение этого устройства, но далеко не всегда (у меня он вообще его не показывал). Чтобы убедиться, что есть нормальная связь между компом и устройством (они должны быть в одной локальной сети, тоесть, подключены к одному роутеру), откройте Командную строку и напишите 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

Автор проекта: Бражников Михаил


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 5 + 9

Добавить изображение

Последние статьи