Официальный сайт компании Arduino по адресу arduino.cc
ESP8266
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 28/04/2016 - 05:58
Добрый день. Помогите пожалуйста в моей хотелке))). Видел как на ethernet шилде поднимают сервера, и к ним обращаются по интернету, с любой точки мира. Можно ли такое реализовать на ESP8266? Хотел бы для начала помигать светодиодом через сайт. Можете подсказать, какой хостинг использовать, если он нужен и если не трудно ссылки на материал.
Пока что нашел только
http://www.cyberforum.ru/post5915692.html
http://forum.arduino.cc/index.php?topic=114436.msg1008272#msg1008272
http://ar2u.ru/index.php/article/datchiki-i-moduli/65-wi-fi-modul-esp826...
http://ar2u.ru/index.php/article/datchiki-i-moduli/65-wi-fi-modul-esp826...
Заранее спасибо...
Может я ошибаюсь, но тут придется создавать сайт и на него через esp, подключенный к интернет, отправлять GET запросы, о состоянии реле?
Правильное место для вопросов/обсуждений по этой микросхеме - http://esp8266.ru/
Спасибо, а если использовать ethernet шилд?
Мне просто хочется понять принцып работы ардуино с сайтами... Например, если я создам веб-сервер на шилде, то я смогу на него попасть из любой точки мира, где есть интернет? ТОгда как определить какой у него адрес?
Подскажите пожалуйста, кто как это делает?
Помогите ктонибудь!!! Пожалуйста!!! Хочу создать сайт и помигать светодиодом!!! Подключиться по вайфай сумел, вот пример: http://ar2u.ru/index.php/article/datchiki-i-moduli/65-wi-fi-modul-esp8266-esp-01
А вот как сделать сайт, недошел. Помогите плиз!!!
Все зависит от провайдера интернет. Если провайдер дает белый адрес - то все просто. Так как сам шилд к интернету подключить достаточно сложно - интернет скорее всего подключен через роутер. На роутере смотрим внешний адрес, настраиваем проброс порта до устройства. Внешний порт лучше выбирать из диапазона 8000...40000, внутренний порт любой(по умолчанию 80). Если внешний адрес динамический(выбирается первый доступный из списка адресов провайдера) то настраиваем DDNS сервис.
Если внешний адрес не известен(и нет доступа к натройке роутера) - тогда понадобится сайт, на который устройство будет переодически отправлять запрос, а сайт будет отвечать что делать устройству.
Спасибо! МОжно про ddns подробнее?
Я в правильном направлении?
http://www.noip.com/
Как вместо ПК привязть ардуино?
DDNS - это обновление ip адреса привязанного к dns имени в реальном времени.
Обычно роутеры поддерживают несколько сервисов dyndns.org no-ip.com - нужно зарегистрироваться на сервисе, выбрать имя, прописать учетные данные в роутер.
Ардуино уже должна работать как вебсервер и открываться с компа по адресу типа 192.168.0.130 - мы рассматриваем как высунуть это дело в инет.
Для доступа к устройствам во внутреней сети используется проброс портов - это когда роутер при подключении на внешнем адресе к определенному порту пробрасывает это подключение на выбраннный внутренний IP и порт.
Нужно знать внутренний адрес 192.168.0.130 и порт 80, а внешний порт пусть будет 8000.
Также в роутере надо разрешить в фаерволе подключения на внешнем интерфейсе на этот порт 8000.
после этого будет можно открыть c телефона(друго компа с инетом) адрес типа http://blabla.no-ip.org:8000/
и если ардуина включена и в нее залит вебсервер - то все будет работать.
Спасибо буду пробовать!
Можете ссылочку на код дать. Ну или примерно написать скетч. Для наглядности!
Вы есть ВК, я бы вам заплатил за инсрукцию...
https://vk.com/egrebennikov2013
Или вот твиттер: https://twitter.com/greben_evgeniy
Для поднятия WEB сервера у себя дома, неважно на какой железке - своем компе, мобильнике, утюге, микроволновке или Ардуино - Вам нужно только желание и умения.
Для доступности этого сервера из любой точки мира Вам нужен "статический IP". ДинДНС не всегда поможет, так как динамический IP провайдеры, чаще всего, дают из т.н. "приват" блоков, то есть типа таких 192.168.... или 10...., или 172.16....., подробнее смотрите в поиске по словам: "приватные блоки IP". Эти адреса специально сделаны так, что маршрутизация на них из "внешнего мира" невозможна.
Поэтому Вам следует купить у провайдера статик IP, если такой услуги у Вашего провайдера нет, то нужно купить VPS сервер с небольшим пулом (обычно 20 шт.) открытых портов и организовать туннель к себе домой. В поиске ищем "дешевый VPS" и "VPN туннель домой", возможно потребуется фантазия в запросах ;). Теперь у Вас на маршрутизаторе (нужен софтовый или хорошо продвинутый железный) есть статический IP. Это стартовая ситуация для поднятия серверов в своей внутренней сети. Ищите в поиске "проброс портов на роутере".
Да. И, в догонку, Ваш вопрос НИКАКОГО отношения к Ардуино не имеет. Примеры WEB сервера на 5100 или на WiFi плате есть прямо в примерах к соответствующим библиотекам. А доступность из "внешнего мира" - вопрос знания маршрутизации и туннелей в сетях IP, о чем я и написал выше. Если Вы не очень хорошо знаете структуру Интернет - задавайте вопросы в теметических форумах.
Все сложнее чем я думал.... Ну спасибо хоть ответили)))
Я всетаки попробую для начала использовать DinDNS...
DDNS - это обновление ip адреса привязанного к dns имени в реальном времени.
Обычно роутеры поддерживают несколько сервисов dyndns.org no-ip.com - нужно зарегистрироваться на сервисе, выбрать имя, прописать учетные данные в роутер.
Ардуино уже должна работать как вебсервер и открываться с компа по адресу типа 192.168.0.130 - мы рассматриваем как высунуть это дело в инет.
Для доступа к устройствам во внутреней сети используется проброс портов - это когда роутер при подключении на внешнем адресе к определенному порту пробрасывает это подключение на выбраннный внутренний IP и порт.
Нужно знать внутренний адрес 192.168.0.130 и порт 80, а внешний порт пусть будет 8000.
Также в роутере надо разрешить в фаерволе подключения на внешнем интерфейсе на этот порт 8000.
после этого будет можно открыть c телефона(друго компа с инетом) адрес типа http://blabla.no-ip.org:8000/
и если ардуина включена и в нее залит вебсервер - то все будет работать.
И вы не подскажите как собрать код. С каналом и внутренним IP, понял, но вот про порт не знаю как это сделать. Работать решил с ESP8266, но буду рад любому виду скетча. Меня, повторюсь, интересует именно, как сделать назначение порта (тот 8000 напр.).
Заранее спасибо.
Я зарегался в noip, но ничего не понял, как связть мое устройство с роутером(((. Помогите пожалуйста...
Я зарегался в noip, но ничего не понял, как связть мое устройство с роутером(((. Помогите пожалуйста...
А на Амперке вы прямо спец, да же за чужые проекты беретесь за денежку......
А тут - такой новичек, новичек :)
Я НИКОГДА НЕ ГОВОРИЛ ЧТО Я СПЕЦ!!! Я всегда учцсь чемуто новому!!! Если можете, помочь, то помогите пожалуйста, а если нет, то к чему этот воздух?
И можно ли как-то подключить устройство на прямую не через роутер?
Вам же ясно ответили, что данные вопрсы уже не имеют отношение к Ардуино и к ESP8266, спрашивайте на соответсвующих тематических форумах.
Спасибо что заметели, т.е. ничего существенного сказать не хотите? Пожалуйста если можете помочь - помогите. Я в курсе, что вы меня недолюбливаеете! Но я человек который просит помощи в конкретном вопросе.
И можно ли как-то подключить устройство на прямую не через роутер?
Напрямую к чему?
сервис на noip подключить напрямую к esp8266 или даже к арде?
сервис на noip подключить напрямую к esp8266 или даже к арде?
Как Вы себе это видите? Вы будете от "сервиса на noip" провод тянуть или оттуда wi-fi добивает?
сервис на noip подключить напрямую к esp8266 или даже к арде?
У Вас интернет через что? Кабель приходит и в компьютер вставляется? Или Wi-Fi есть? Или ADSL модем?
Можно, наверное, только в чем профит именно так вот "голой задницей в интернет"? :) Лавры ipv6 соблазняют? :)
Для общения с "сервером" - Вам нужен всего один порт, вот его и пробрасывайте на устройство внутри своей сети.
Вот и я тоже мучался над этим вопросом и наконец то решил его.
Вот скетч для esp 8266, esp-01 (заливать его нужно прямо в сам wi fi модуль, а не плату Ардуино):
Все сделано на подобие ArduinoPin Web server на ethernet enc28j60, модуль esp8266 подключается через uart к плате ардуино, а там уже сами напишите скетч. И не забываем понизить уровень Tx идущий от платы ардуино к wi fi модулю на rx esp 8266, до уровня 3,3 вольта.
Для доступа чрез интернет делаем проброс партов на вашем wi fi роутаре, кстати здесь для модуля esp8266 используется DHCP сервер на роутаре, а нам нужен статический ip, как это сделать в этом модуле я пока не понял, но это можно и на роутаре настроить привязку ip адреса к mac данного wi fi модуля.
Забудьте от ESP8266
Посмотрите это
http://www.seeedstudio.com/depot/LinkIt-Smart-7688-p-2573.html
за 16 баксов и интернет какой хочешь + atmega32u4
Спасибо Вам всем, особенно krepton85. Сейчас остановился на проброске портов)) И можете немного рассказать о том, как прошить esp из ардуино ИДЕ? В интернете, много реализаций, какой из них выбрать?
Данный метод, надеюсь подойдет? https://geektimes.ru/post/271754/
Я же Вам давал ссылку на сообщество фанатов этой микросхемы. У них про неё есть ВСЁ. Вот, например, как программировать её из среды Ардуино IDE - http://esp8266.ru/arduino-ide-esp8266/
>> .. роутеры поддерживают несколько сервисов dyndns.org ..
DynDNS два года назад перестал предоставлять бесплатные услуги. И умер для diy-сообщества, по моему скромному мнению.
http://dyn.com/blog/why-we-decided-to-stop-offering-free-accounts/
Извините что отвлекаю, но я тут недогнал, куда подключены светодиоды 1 и 2?
Светадиоды здесь ни куда не подключены, эти строки закоментированы, а светадиоды подключены к плате ардуино. Данный модуль через serial порт синхронизирован с платой ардуино.
Но работает криво этот скетчь, сервер зависает постоянно, данные идущие от платы ардуино не сразу обрабатываются поче му то, а только после обновления пару раз вебстраницы в браузере.
А как она может управлять ардуино, если скетч залит в а esp?
Нет, так яж написал что скетчь для ардуино напишете сами ну или в готовый проект включить поддержку управления по wi fi, это уже на ваше усмотрение.
Ведь от модуля первой версии ничего ожидать серьезного не стоит - пинов мало, только с ардуино можно использовать.
Не поможете со скетчем для ардуино? Мне бы принцып понять, взаимодействия этих скетчей!
Заранее спасибо.
Вот сделал такой скетч, но чето нефига не работает. В сериал выводит значения состояния при нажатии кнопки на сервере, но вот светодиод 13 не загорается.
В строках 18, 23 вместо = должно быть ==
Коллега правильно сказал, но этого недостаточно. Работать толком всё равно не будет.
Вы слишком неаккуратно работаете с потоком ввода. Вот смотрите, вот Вы вводите из монитора команды.
LED1-ON
LED1-OFF
Первая, допустим ввелась и всё сработало, а переменная searching стала пустой.
Далее в потоке символ перевода строки, который попадёт в начало новой searching и та уже никогда не будет равной "LED1-OFF". Приехали!
Можно, конечно, сказать монитору порта, чтобы он не передавал символы перевода строки и возврата каретки и тогда всё может и сработать, но любой случайный символ типа лишнего пробела, убьёт систему.
Попробуйте вводить как-то более интеллектуально.
Например,
1. игнорировать все символы, не являющиейся буквой, цифрой, минусом или переводом строки / возвратом каретки.
2. Если попался перевод строки / возврат каретки - тут же обновлять searching (делать её пустой).
Тогда по идее толжно сработать, а в случае ошибки в наборе всегда можно нажать Enter и начать ввод команды сначала.
Евгений, я честно не понял, в чем проблема, можете помочь, мне вывести, хотябы одно условие?
Ну, что значит, Вы не поняли в чём проблема? Запустите и попробуйте, она сразу себя проявит.
Вот смотрите , в потоке идут символы
L,E,D,1,-,O,N,\r,\n,L,E,D,1,-,O,F,F,\r,\n
запятые здесь просто раздлители для удобства чтения - в потоке их нет.
Ну и как будт работать Ваша программа?
Она будет накапливать в переменной searching символ за символом (L, E, D, и т.д.), пока переменная searching не станет равной "LED1-ON".
После этого сработает условие в строке 18 (если Вы его исправите, как Вам Andy написал), включится светодиод и переменная searching станет равной "" (пустой строке)
Следующий сивол, который Ваша программа прочитает из потока будет символ возврата каретки (\r), затем символ перевода строки (\n), затем она начнёт читать символы L, E, D, и т.д.
Получающаяся в переменной searching строка никогда не станет равна "LED1-OFF" потому что searching начинается с символов \r\n.
Допустим, Вы запретите монитору порта передавать символы \r\n. Тогад всё как бы заработает, но до первой опечатки. Любой неверный символ приведёт к тому, что переменная searching строка никогда не станет равна "LED1-OFF" и никакого способа сбросить её и нчачать сначала у Вас нет.
Вот собственно я и написал Вам как с этим бороться.
Вот изменил код, но до сих пор ничего не работает. Помогите плиз.(
Mestniy96, тут два варианта: либо проверяй каждый символ полученный при serialRead(); если получил '\r' или '\n', значит теперь можно сравнивать строку, но сами '\r' или '\n' к строке не добавляй, либо при получении любого символа проверяй не содержит ли строка искомую подстроку indexOf("LED1-ON"); Первый вариант предпочтительнее, во втором строка может разрастаться, её надо будет чистить даже если подстрока не найдена.
Можете помочь в скетче, я мало что понял. Помогите пожалуйста.