Как сделать свой собственный динамический DNS-сервер

     Перевел SaorY для mozgochiny.ru

Приветствую, мозгоинженеры! А не объединить ли нам наши интернет-устройства в доме с помощью DNS-сервера, сделанного своими руками из WiFi-модуля и интерфейса веб-камеры Foscam? Думаю будет интересно, поэтому поехали!

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server1

Выбранная для этой самоделки веб-камера Foscam управляется прямо со смартфона, имеет собственный веб-интерфейс, работает в любом браузере и на любом девайсе, даже с 3G-соединением вашего телефона, сторонних приложений не требует и защищается паролем.

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

Хочу предупредить сразу — Я НЕ НЕСУ ОТВЕТСТВЕННОСТИ за неправильное использование или ущерб, причиненный этим проектом, любым способом! Вы действуете на свой страх и риск!

Что для этого мозгопроекта необходимо:

  • веб-сервер с поддержкой PHP c доменным именем,
  • wi-fi модуль Esp8266 ESP-01,
  • нажимная кнопка — 2шт.,
  • подтягивающий резистор 2к2 или аналогичный — 2шт.,
  • адаптер USB-TTL (для программирования wi-fi модуля) и несколько пин-разъемов («мама»),
  • регулятор напряжения Ams1117 3.3В (для снижения напряжения 5В до 3.3В, чтобы запитать wi-fi модуль),
  • блок питания 5В 1-2А (желательно 2А ),
  • в первом варианте компоновки: если внутри корпуса блока питания есть достаточно места, то wi-fi модуль помещается внутрь этого корпуса,
  • во втором варианте компоновки: блок питания имеет USB-разъем «мама», тогда придется к плате модуля добавить USB-разъем «папа» и с помощью него подавать питание,
  • сломанная USB-флешка,
  • обновленная программа Arduino IDE
  • дополнительно: веб-камеры Foscam для работы с веб-интерфейсом
  • для обеспечения: мерцающий светодиод, для индикации успешной загрузки и ожидания загрузки
  • внутренний сервер разрешающий WAN IP (данная версия соединяется с внешним сайтом для получения IP: checkip.dyndns.org ).

 

Шаг 1: Подготовка Wi-Fi модуля для программирования

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server2

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server3

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server4

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server5

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

  • припаять два резистора — один к контакту CH-PD, второй к RST, оба свободных вывода резисторов припаять к контакту 3.3V,
  • припаять две нажимные кнопки — одну между контактами GPIO0 и Ground, а другую между RST и Ground.

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

В следующем шаге будет дорабатываться блок питания, но сразу предупреждаю: USB-выход вашего компьютера не подходит для запитывания модуля ESP!!!

 

Шаг 2: Доработка блока питания — понижение напряжения с 5 до 3.3В

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server6

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server7

5В-й блок питания должен выдавать «надежный» 1А, а лучше 2А, так как во время передачи Wi-Fi-сигнала модуль довольно «прожорлив».

В самоделке используем регулятор напряжения Ams1117 3.3В, потому что делитель напряжения, собранный из посредством резисторов, вероятней всего, «выдаст» слишком малый ток, и даже если для питания модуля мы получим 3.3В, то все равно будем разочарованы. А этот регулятор является недорогим и лучшим решением.

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

контакт 3 — 5В (оранжевый провод)
контакт 2 — 3.3В (желтый провод)
контакт 1 — GND (два синих провода)

К контактам можно припаять несколько проводов со штырьковыми разъемами, тем самым получить одновременно два источника напряжения на 5В и 3.3В, что весьма полезно при сборке на макетной плате. В таком случае не забываем добавить и два заземляющих провода, для +3 и +5В, а для надежности все проводки скрепить пластиковым хомутом-стяжкой.

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

 

Шаг 3: Подключение Wi-Fi модуля к USB-TTL-адаптеру и регулятору напряжения 3.3В

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server8

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server9

Соединения (модуль — адаптер — регулятор)

GND — — — — GND- — — — GND
ТХ — — — — — RX
RX — — — — — ТХ
3,3 — — — — — — — — — — — — — 3,3

Контакты заземления (Ground) регулятона напряжения, модуля и адаптера соединяем вместе, 3.3В идущие от регулятора соединяем ко входу ESP-модуля.

Ни в коем случае не соединяем модуль ESP c контактом 3.3В адаптера, даже если они на нем имеются, так как тем самым можно испортить USB-порт компьютера, ведь он не имеет защиты от тока такого номинала, которые используется в этой мозгоподелке! А для запитывания ESP-модуля всегда используйте источник питания с требуемыми параметрами.

Следует знать, что некоторые TTL-USB адаптеры имеют 5В-ю логическую схему, которая для нашей поделки не подходит, нужна только 3.3В-я логика, иначе повредится ESP-модуль. Тип логики можно определить с помощью вольтметра, подсоединив его щупы к контактам ТХ и Ground, и при необходимости понизить напряжение можно добавлением сдвига уровня или делителя напряжения.

 

Шаг 4: Настройка файлов на веб-хостинге

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server10

Создаем папку «/ip» (имя чувствительно к регистру) в корневом каталоге вашей папки public_html, и распаковываем в нее /ip файлы с разрешением 644.

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

input.php и input2.php генерируют согласно URL-адреса браузера ip.txt и ip2.txt с обновленным IP модуля ESP8266, текущий код поддерживает 2-е разных локации, и чтобы добавить что-то еще вам нужно лишь отредактировать эти файлы.

Для управления FOSCAM-камеры необходимо создать папку «/cam» (опять же, регистр чувствителен) в корневом каталоге папки public_html, и распаковать в нее /cam-файлы с разрешением 644. Эту папку защитить мозгопаролем, если на вашем сервере доступна cpanel, то можете найти иконку «защита паролем» и задать пароль, который будет запрашиваться при указании браузеру перейти на www.yourhost/cam, тогда в любой браузере будет всплывать диалоговое окно с запросом этого пароля, все это защитит доступ к камерам.

foscam.php содержит интерфейс камерр, а еще метку дата/время ip-файлов и текущий ip локации. По метке дата/время можно видеть работает ли модуль. При этом часовой пояс может отображаться не верно, так как он показываетт время на сервере.

IP можно изменить вручную, он будет записан в ip.txt и ip2.txt, и для этого нужно ввести ip в поле и нажать обновление ip.

interface.png и interface2.png это прозрачные изображения задающие интерфейсу как будет отображаться экран. Необходимо подредактировать foscam.php и задать значение, static или ptz, соответствующее вашей FOSCAM-камере. По умолчанию разрешение 320х240, но кликнув на центр управления, открывается только эта камера с лучшей частотой обновления при разрешении 640х480.

Для редактирования foscam.php можно воспользоваться редактором кода или HTML-редактором, который может работать в режиме WYSWYG.

Во время работы мозгоплаты будут автоматически записываться файлы ip.txt и ip2.txt, содержащие обновленные ip двух локаций, где могут работать две разные платы. Каждый час (или когда вы зададите) плата будет подключаться к роутеру по wi-fi, получать ip-адрес и прописывать его в txt-файле на сервере. И даже в случае потери соединения с интернетом или отключения питание, то после устранения этих неполадок, ip будет периодически обновляться.

dns_server

 

Шаг 5: Настройка FOSCAM-камер и роутера

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server11

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server12

На странице конфигурации TP-LINK-роутера:

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

Virtual servers (виртуальные серверы) — необходимо добавить локальные ip вашей камеры и соответствующие порты.

DHCP сервер выставляем включенным, а также проверяем включен ли UpnP.

Можно также настроить удаленное управление вашим роутером, для TP-Link-роутера есть соответствующий подпункт брандмауэра.

Не изменяйте логин по умолчанию, так как роутер должен быть публичен. Далее в соответствующих мозгополях следует выставить 255.255.255.255 и порт, как правило, 8080.
На странице настроек FOSCAM камер:

Имя и пароль — следует задать новое имя и пароль, и не забыть «найти и заменить» их в foscam.php вместо admin и password.

Для «Основных параметров сети (Basic Network settings)» задать: «Obtain IP from DHCP Server» (Получать IP от DHCP-сервера).
В пункте Http Port задать: 8081, 8082 8083 последовательно на ваши камеры.
В UPnP Settings выставить: Using UPnP to Map Port. Это поможет восстановить соединение после отключения питания.

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

Если камеры и роутер настроены верно, то к ним можно удаленно получить доступ с вашего Wan IP-адреса, например такого: http://187.34.157.22:8081. Свой Wan IP можно проверить на https://www.whatismyip.com/

 

Шаг 6: Кодирование и программирование модуля ESP8266 с помощью Arduino IDE

Для программинга самоделки необходимо в Arduino IDE открыть прилагаемый скетч, и в соответствующих строках задать ssid «//your wifi ssid» и пароль «//your wifi pwd» вашего WiFi-роутера, а также имя вашего хоста «//your host without /IP» и путь к папке «/ip», содержащей файлы сервера, ее менять не нужно.

Возможно понадобится изменить строку

url += «input.php?ip=»;

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

Перед началом загрузки кода необходимо правильно выставить тип платы, для этого подменю инструментов следует выбрать «Generic ESP8266», а если такого нет, то в предпочтениях добавить дополнительные платы.

Для загрузки нужно, удерживая нажатой кнопку GPIO0, быстро нажать кнопку RST, а потом отпустить и предыдущую (кнопку GPIO0). Далее в IDE запустить компиляцию и мозгозагрузку.

Если все идет правильно, то открыв монитор последовательного порта со скоростью 9600 бод (бит/с), вы увидите следующее:

Connected To: <SSID>
IP address: 192.168.0.103 (LAN IP)
Connected — Acquiring WAN IP:
<xxx.xxx.xxx.xxx>
connecting to <yourhost>
Requesting IP Update: /ip/input.php?ip=xxx.xxx.xxx.xxx
Ok

dns_server_sketch

 

Шаг 7: Монтаж плат в корпус

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server13

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server14

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server15

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server16

kak-sdelat-besplatnyiy-dinamicheskiy-dns-server17

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

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

Первый вариант: Размещение внутри корпуса
Для этого нужно вскрыть корпус старого блока питания, выпаять черный (выходящий) провод с разъемом, а затем поместить в корпус плату модуля и регулятор напряжения, предварительно заизолировав их, и «запитать» от тех контактов, к которым был припаян выходящий провод. Заизолировать компоненты можно с помощью подходящей пористой ленты или горячего клея.
В итоге должен получиться блок питания, без каких-либо проводов, и в данном варианте блок питания может быть 5В 1А.

Вариацией данного способа компоновки может быть размещение плат внутри блока питания, имеющего на выходе USB-разъем «мама». Тогда платы также следует закрепить внутри корпуса, заизолировать, и запитать их от контактов USB-разъема. Тем самым посредством этого доработанного блока питания вы все еще сможете заряжать свой телефон, но правда блок питания должен выдавать 5В 2А.

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

Нужно разобрать флешку, вынуть плату памяти, а на ее место поместить WiFi-модуль и регулятор напряжения, и запитать их через USB-разъем этой флешки. При этом понадобится еще подрезать штырьковые контакты модуля, чтобы он поместился в корпус флешки. И НИКОГДА НЕ ПОДКЛЮЧАЙТЕ эту доработанную флешку к USB-порту компьютера!

Затем флешку с модулем внутри нужно подключить к блоку питания и проверить наличие WiFi сигнала с помощью вашего смартфона. А в целом проверить работоспособность готовой мозгоподелки можно посредством вашего брузера зайдя на /cam/foscam.php вашего сервера. И еще, следует обновится с текущим ip и меткой дата/времени.
На этом все, надеюсь информация этой мозгостатьи будет вам полезна!

(A-z Source)

ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ!


3 Replies to “Как сделать свой собственный динамический DNS-сервер”

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Copy This Password *

* Type Or Paste Password Here *