Приветствую, мозгоинженеры! А не объединить ли нам наши интернет-устройства в доме с помощью DNS-сервера, сделанного своими руками из WiFi-модуля и интерфейса веб-камеры Foscam? Думаю будет интересно, поэтому поехали!
Выбранная для этой самоделки веб-камера 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 модуля для программирования
Для того, чтобы модуль можно было программировать его нужно слегка доработать:
- припаять два резистора - один к контакту CH-PD, второй к RST, оба свободных вывода резисторов припаять к контакту 3.3V,
- припаять две нажимные кнопки — одну между контактами GPIO0 и Ground, а другую между RST и Ground.
Пайку лучше вести с верхней стороны платы модуля, чтобы контакты нижней стороны оставить для монтажа пин-раъемов. При желании схему можно собрать с помощью макетной платы, но мозгопайка все же долговечней, хотя смотрите сами.
В следующем шаге будет дорабатываться блок питания, но сразу предупреждаю: USB-выход вашего компьютера не подходит для запитывания модуля ESP!!!
Шаг 2: Доработка блока питания — понижение напряжения с 5 до 3.3В
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В
Соединения (модуль — адаптер - регулятор)
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: Настройка файлов на веб-хостинге
Создаем папку «/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 будет периодически обновляться.
Шаг 5: Настройка FOSCAM-камер и роутера
На странице конфигурации 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
Шаг 7: Монтаж плат в корпус
После проверки самоделки на работоспособность необходимо поместить ее электронику в корпус, сделав тем самым самостоятельный завершенный девайс.
Если в выбранном вами корпусе для мозгоподелки есть достаточно свободного пространства, то резисторы и кнопки можно подключить так, как показано на фото, но если позднее вы планируете ее перепрограммировать, то размещать плату внутри корпуса не стоит.
Первый вариант: Размещение внутри корпуса
Для этого нужно вскрыть корпус старого блока питания, выпаять черный (выходящий) провод с разъемом, а затем поместить в корпус плату модуля и регулятор напряжения, предварительно заизолировав их, и «запитать» от тех контактов, к которым был припаян выходящий провод. Заизолировать компоненты можно с помощью подходящей пористой ленты или горячего клея.
В итоге должен получиться блок питания, без каких-либо проводов, и в данном варианте блок питания может быть 5В 1А.
Вариацией данного способа компоновки может быть размещение плат внутри блока питания, имеющего на выходе USB-разъем «мама». Тогда платы также следует закрепить внутри корпуса, заизолировать, и запитать их от контактов USB-разъема. Тем самым посредством этого доработанного блока питания вы все еще сможете заряжать свой телефон, но правда блок питания должен выдавать 5В 2А.
Вариант 2: Размещение снаружи
Если у вас есть нерабочая флешка, в корпус которой могут поместиться платы самоделки, то можно использовать ее.
Нужно разобрать флешку, вынуть плату памяти, а на ее место поместить WiFi-модуль и регулятор напряжения, и запитать их через USB-разъем этой флешки. При этом понадобится еще подрезать штырьковые контакты модуля, чтобы он поместился в корпус флешки. И НИКОГДА НЕ ПОДКЛЮЧАЙТЕ эту доработанную флешку к USB-порту компьютера!
Затем флешку с модулем внутри нужно подключить к блоку питания и проверить наличие WiFi сигнала с помощью вашего смартфона. А в целом проверить работоспособность готовой мозгоподелки можно посредством вашего брузера зайдя на /cam/foscam.php вашего сервера. И еще, следует обновится с текущим ip и меткой дата/времени.
На этом все, надеюсь информация этой мозгостатьи будет вам полезна!
( Специально для МозгоЧинов #Free-Dynamic-DNS-Server-With-Esp8266-and-OSD-FOSCA