Обсуждаем контроллеры компании Atmel.
Ответить

Arduino UNO и ESP-link

Ср июл 08, 2020 13:30:39

Добрый день!
Возник вопрос по использованию прошивки ESP-link в связке с Arduino UNO. На Arduino UNO используется библиотека EL-client. К Arduino UNO подключен датчик BME280. Arduino UNO подключен по UART к ESP8266. При старте происходит передача показаний датчика от Ардуино к ESP8266, а далее на ESP8266 поднят web-сервер с загруженной web-страницей. Сначала показания на странице обновляются, при открытой странице в браузере, но потом происходит завтык
Изображение
После перезапуска Arduino UNO через web-интерфейс, данные идут, но потом происходит завтык.
Изображение
Кто использовал данную прошивку для ESP8266? В какую сторону копать?
После обновления страницы данные начинают идти какое-то время.

Re: Arduino UNO и ESP-link

Ср июл 08, 2020 14:48:08

А потому что нечего заливать web-страницы во всякие ESP8266.
web-страницы надо заливать в Arduino UNO.
А ещё лучше хранить web-страницы на ПК... телефоне... и т.д.
А подключаться лучше по AJAX. Тогда не будет никаких затыков)) И сами страницы при каждом подключении не перегружаются.
Я так и делаю. Никаких затыков))
дом_2.jpg
(196.83 KiB) Скачиваний: 308

Re: Arduino UNO и ESP-link

Ср июл 08, 2020 16:31:07

Ну страницу можно оставить и на сервере, я на роутере поднял ligthttpd. Просто не нашел документации по прошивке ESP-link вменяемой. А насчет загрузки web-страницы в Ардуино, то сомнительное удовольствие. Если не секрет, как реализовано взаимодействие и на чем на Вашем скриншоте, так сказать для общего развития.
Я так понимаю здесь тоже используется технология ajax
var loadVariables=function(){ajaxJson("GET",window.location.pathname+".json?reason=load",notifyResponse,function(){setTimeout(loadVariables,1000)
Так как данные на странице обновляются без нажатия кнопки "обновить"
ЗЫ: возможно есть какие-то ошибки в реализации либо прошивки ESP8266, либо библиотеки ESP-link

Re: Arduino UNO и ESP-link

Ср июл 08, 2020 17:44:04

Секретов никаких нет))
Сначала я хотел сделать так
схема_1.jpg
(196.87 KiB) Скачиваний: 322

на обычных модулях... на меги128...
модули.jpg
(146.4 KiB) Скачиваний: 264

или меги8...
1.jpg
(135.11 KiB) Скачиваний: 271

собрал несколько модулей... проверил как всё работает по AJAX... Нормально работает))
дом.jpg
(166.29 KiB) Скачиваний: 290

Получился простенький сервер. Простое управление по Интернет... Сервер работает ещё и как файлообменник на простой флешке)) На этой же флешке можно хранить web-страницы.

Потом я передумал делать web-сервер. Для простого управления по Интернет web-сервер не нужен.
Потом переделал всё на Java.
melandr писал(а):var loadVariables=function(){ajaxJson("GET",window.location.pathname+".json?reason=load",notifyResponse,function(){setTimeout(loadVariables,1000)

Похоже на AJAX...
А чтоб точно это знать включаем анализатор и смотрим как всё работает.
Ethernet_Screenshot.jpg
(179.9 KiB) Скачиваний: 296

После этого вопросов не будет))

Re: Arduino UNO и ESP-link

Ср июл 08, 2020 19:38:55

А потому что нечего заливать web-страницы во всякие ESP8266.
web-страницы надо заливать в Arduino UNO.

ESP8266 в разы быстрее и мощнее UNO.

И у ТС есть AJAX. На скринах тип запроса видно - xhr, это и есть т.н. AJAX (правильно XMLHttpRequest).

Добавлено after 35 seconds:
Зачем вам ардуино вообще? Ардуино ядро можно накатить сразу на ESP8266 и с него и юзать датчик. UNO не нужен.

Re: Arduino UNO и ESP-link

Чт июл 09, 2020 08:12:50

На ESP-01 нет нужного количества пинов, зато есть выход в Интернет. На ардуино, или на ATmega32 можно получить необходимое количество входов, выходов, подключить кнопки, экран. А для резервного и удаленного управления юзать web-интерфейс. Подключив один датчик, это проба пера, как правильно организовать. А далее уже можно использовать на полную. Просто мониторя реализация вывода микроконтроллера в Интернет, показалось что ESP8266 будет поинтересней Ethernet модулей. Сам вэб-сервер можно поднять или на роутере или на малинке. Проблема как состыковать микроконтроллер с этим сервером. Как варианты видел использование AT-команд, использование MQTT, кастомные прошивки на ESP, NodeMCU. Либо самому писать вэб-интерфейс для ESP8266, используя ArduinoIDE.
Просто используемая прошивка ESP-link не особо документирована, необходимо смотреть исходники и разбираться с кодом. А там используется C++, шаблоны и т.д.
Выше были скрины из браузера, подключенного из внешней сети. Ниже скрин из браузера в домашней сети. Проработало дольше, но все равно произошел завтык. Хочется понять, где проблема. На стороне вэб-сервера или на стороне Аруино.
Изображение

Добавлено after 8 hours 17 minutes 38 seconds:
roman.com, А модули использовали готовые, соединив проводами? Или делали материнскую плату с разъемами IDC? Или полностью разрабатывали печатную плату под ATmega128?

Re: Arduino UNO и ESP-link

Чт июл 09, 2020 10:45:03

Возьмите на ESP-1, а ESP-12 и будет больше выводов. А с помощью pcf8574 можно еще добавить их. И тогда не надо будет гадать, где затык.
Как стыковать - зависит от задачи. Но если вы датчики планируете подключать, то для таких вещей соб-но MQTT и придумывался.
А сейчас вы спрашиваете слишком абстрактно. Откуда ж нам знать, что там у вас глючит в этой связке.

Re: Arduino UNO и ESP-link

Чт июл 09, 2020 14:46:12

Да на обычной макетке спаял и соединил проводами... https://aliexpress.ru/item/32910834320. ... fd880b7f-3

Добавлено after 3 minutes 24 seconds:
ESP8266 и ESP32 это интересно... но мало документации и не видел нормального IDE. Всё через AT-команды... Это не то.
Надо качать даташит и писать всё самому. тогда всё будет гуд))
Поэтому лучше по проводам)) Ethernet проще и надёжней. Он не глючит))

Добавлено after 2 hours 7 minutes 27 seconds:
melandr писал(а):Просто мониторя реализация вывода микроконтроллера в Интернет, показалось что ESP8266 будет поинтересней Ethernet модулей. Сам вэб-сервер можно поднять или на роутере или на малинке.

Зачем вэб-сервер ? Вы делаете публичный сервер ? Хотите чтобы любой желающий из интернета мог подключиться к вашему серверу и управлял вашими устройствами ?

Я не передаю вэб-страницы по интернету.
Во-первых это не имеет смысла. Проще хранить вэб-страницы (особенно картинки - они большие по объёму) на ПК / телефоне.
Во-вторых это не безопасно. Не хочу чтобы любой желающий из интернета мог подключиться к моему серверу))
В-третьих я не хочу чтобы даже видели что именно я передаю по интернету)) Даже если кто-то перехватит мой трафик, то он просто увидит абсолютно бессмысленный набор байтов))

А зачем MQTT ? Обычно это сторонний сервис... И зачем издатель-подписчик ? А напрямую подключаться к своему серверу нельзя ? У Вас нет белого IP ?

Re: Arduino UNO и ESP-link

Чт июл 09, 2020 18:09:17

ESP8266 и ESP32 это интересно... но мало документации и не видел нормального IDE. Всё через AT-команды... Это не то.

На ESP ставится прекрасно Arduino Core (о чем я писал выше) и работается точно также, как с Arduino любой при желании.

Поэтому лучше по проводам)) Ethernet проще и надёжней. Он не глючит))

Письмами почтой еще надежнее. Не выдумайте. Прекрасно WiFi работает и не нужно никаких гребанных проводов.

Я не передаю вэб-страницы по интернету.
Во-первых это не имеет смысла. Проще хранить вэб-страницы (особенно картинки - они большие по объёму) на ПК / телефоне.
Во-вторых это не безопасно. Не хочу чтобы любой желающий из интернета мог подключиться к моему серверу))
В-третьих я не хочу чтобы даже видели что именно я передаю по интернету)) Даже если кто-то перехватит мой трафик, то он просто увидит абсолютно бессмысленный набор байтов))

А зачем MQTT ? Обычно это сторонний сервис... И зачем издатель-подписчик ? А напрямую подключаться к своему серверу нельзя ? У Вас нет белого IP ?

Еще какие-то глупости от непонимания что и как работает.
Про пароли и шифрование ничего не слышали?
У меня 3ий год уже управлялка ус-ом лежит на публичном сервере в Интернете. Чтобы я с любого места мог управлять. Просто стоит пароль и HTTPS. Всё. Никто еще левый не залез.

Re: Arduino UNO и ESP-link

Чт июл 09, 2020 20:48:11

Пишу немного на Ардуино... точнее пытаюсь)) Не важно. Всё равно не люблю Ардуино...
Подключить ESP к Ардуино и залить прошивку с АТ- командами не интересно... Я не люблю библиотеки. Они все глючные))
Вот если бы можно было бы работать с ESP как с обычной например АВР (с полным доступом ко всем блокам и регистрам через например машинные инструкции) то вот это было бы интересно... :roll:
NStorm писал(а):Про пароли и шифрование ничего не слышали?

Да что-то такое слышал...))
Сейчас использую блочное симметричное шифрование на одноразовых блокнотах - абсолютная криптографическая стойкость.))
NStorm писал(а):У меня 3ий год уже управлялка ус-ом лежит на публичном сервере в Интернете. Чтобы я с любого места мог управлять.

Тут два пороса... :roll:
А какое время отклика через публичный сервер ?
Допустим мне надо включить лампочку в доме. Сейчас у меня прямая связь с домом. Время реакции примерно равно... пингу))
А если делать через публичный сервер (с такой же малой задержкой) то тогда мне придётся непрерывно опрашивать публичный сервер ?
И сколько я сгенерирую трафика из дома... и с мобильного устройства ? Ну например за месяц ?))

Re: Arduino UNO и ESP-link

Чт июл 09, 2020 22:19:53

Вот если бы можно было бы работать с ESP как с обычной например АВР (с полным доступом ко всем блокам и регистрам через например машинные инструкции)

Через SDK и gcc можно писать "напрямик". Только полного ДШ нет, т.к. радиомодуль и wifi стек закрыты. Как и везде, в любом ус-ве с WiFi. Но писать без "библиотек" на голом bare meta вполне можно.

По остальному - мне не нужно быстрое время отклика. На деле меня хоть минута устроит. И трафик меня в 2020 году совсем не волнует. Но если нужно было бы, то есть Websockets. Там и отклики миллисекундные будут и трафика мало.
Вы как с луны свалились. Весь мир уже живет с облаками и IoT, а вас до сих пор трафик на это дело волнует.

Re: Arduino UNO и ESP-link

Чт июл 09, 2020 23:51:13

NStorm писал(а):трафик меня в 2020 году совсем не волнует. Но если нужно было бы, то есть Websockets. Там и отклики миллисекундные будут и трафика мало.

Websockets...
Да, ответ от публичного сервера через Websockets будет миллисекунды...
Помнится пытался делать Websockets.
Только...
Во-первых там помнится для защита от поддельных запросов надо вычислить значение MD5, а в последней версии бинарный хеш SHA-1... Класс))
Во-вторых как я понял надо поддерживать сокет всё время открытым. А для этого надо передавать данные (например пустые пакеты) или передавать типа всяких keep-alive.
Screenshot_1.jpg
(59.64 KiB) Скачиваний: 242

Короче что-то надо передавать, а то NAT удалит сокет из списка (из кеша)... )) Придётся переподключаться...
Чисто интересно... а сколько NAT хранит в кеше запись о сокете... какой там тайм-аут ))
Браузер через каждые 40 сек передаёт keep-alive... ARP хранится в кеше 2 минуты. А NAT... фиг его знает... Можно проверить))

Короче, не нравятся мне ваши всякие Websockets. Проще просто по таймеру опрашивать публичный сервер. Так будет проще))
И лучше по UDP. Там нет всяких keep-alive))

А трафик меня не пугает. Больше пугает надёжность ваших всяких keep-alive.))

И вообще... надо всем переходить на IPv6 и не морочить людям голову... с вашими публичными серверами))

МTС (Россия) вроде как раздаёт своим абонентам белые IPv6 и даже с привязкой к номеру и вроде бесплатно. Надо уточнить...

Re: Arduino UNO и ESP-link

Пт июл 10, 2020 08:31:25

Я бы в 2020 году за трафик keep-alive вот не подумал бы даже переживать. Меньше пары мегабайт в сутки - и похер.
UDP можно, но Websockets стандартное решение, как и MQTT. И не требуют изобретений велосипедов.
NAT - настройка зависит сугубо от провайдера и его оборудования. В Linux обычно по умолчанию 5 суток вообще:
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000
Но на всяких железных роутерах и коммутаторах L3+ может быть значительно меньше.

Re: Arduino UNO и ESP-link

Пт июл 17, 2020 15:30:14

5 суток это хорошо...))

На самом деле Websockets мне не нужен. У меня самодельный сервер и простое приложение на Java.
Оба они могут открыть обычный сокет по TCP и удерживать сокет открытым сколь угодно долго... при необходимости обмениваясь между собой данными...
Screenshot_2.jpg
(58.95 KiB) Скачиваний: 206

Сокет закрывается по нажатию кнопочки...)) Или закрывается автоматом при открытии нового сокета... Тут вариантов много))
Screenshot_3.jpg
(93.59 KiB) Скачиваний: 197

Но меня больше интересует UDP. Он проще))

Последнее время по городу напихали кучу бесплатных Wi-Fi точек)) Идея в том чтоб гуляя по городу оставаться всегда на связи.
Сделать типа бесплатный Wi-Fi роуминг))
Вообще есть уже Wi-Fi 6 с готовым роумингом...
https://zen.yandex.ru/media/droider/cht ... 275bb8e4c7
Но у нас пока нет...

Ещё добавил что-то типа аналога STUN... для определения IP бесплатных Wi-Fi точек. Теперь я виду IP всех бесплатных Wi-Fi точек.
Одна проблема - это дебильные NAT бесплатных Wi-Fi точек, которые не пропускают мои UDP пакеты...

Дома проблем нет. Порты на роутере проброшены как надо. ))
А как быть с бесплатными Wi-Fi точками ? Или каждый раз заходя в кофе просить администратора пробросить порты на своём роутере ? :)))

Короче... надо как то придумать обход этих дебильных NAT...
Или ждать когда все бесплатные Wi-Fi точки будет раздавать белые IPv6))

Re: Arduino UNO и ESP-link

Пт июл 17, 2020 16:16:30

А как быть с бесплатными Wi-Fi точками ? Или каждый раз заходя в кофе просить администратора пробросить порты на своём роутере ? :)))

А вот никак. Этим и хорош HTTP(S)/WebSockets, что работает по стандартному протоколу, который никто не блочит.
Хотя странно, что блочат UDP трафик - значит никакие приложения, вроде телефонии, работать не будут.

Re: Arduino UNO и ESP-link

Сб июл 18, 2020 00:05:39

UDP трафик не блочат. Скайп и торенты работают...
Только мои UDP пакеты не проходят без проброски портов... Видать нет автоматической записи в таблице NAT.
У скайпа есть секрет видимо)) пока не знаю какой...))

Re: Arduino UNO и ESP-link

Сб июл 18, 2020 08:57:43

Скайп и торренты вполне себе по портам 80, 443 и т.д. могут работать. Если бы запись в табличке NAT не создавалась бы, то ничего бы не работало.

Re: Arduino UNO и ESP-link

Сб июл 18, 2020 22:59:36

Короче разобрался я со своим роутером)) Всё работает. Тут подсказали - https://gamedev.ru/code/forum/?id=50491&page=2

Для проверки я взял простой роутер и посмотрел как там работает UDP (проброска портов отключена). Измерил все тайминги))

Схема такая: сервер (10.0.0.1) --- (WAN | роутер | LAN) --- сервер (192.168.0.1)

1. Из внешней сети (10.0.0.1) во внутреннюю (192.168.0.1) попасть невозможно так как порты на роутере закрыты.
2. Из внутренней сети (192.168.0.1) во внешнюю сеть (10.0.0.1) попасть можно.))
3. Допустим сервер (192.168.0.1) отправляет UDP пакет серверу (10.0.0.1).
4. Роутер делает запись в таблице NAT (связка "порт == IP" ).
5. После отправки UDP пакета роутер включает таймер примерно на 20 секунд.
6. Если по истечении 20 секунд ответ так и не пришёл, роутер удаляет из таблицы NAT запись о сокете. После этого из внешней сети (10.0.0.1) во внутреннюю (192.168.0.1) попасть невозможно.
7. Допустим ответ пришёл. Тогда роутер устанавливает таймер примерно на 30 секунд.
Screenshot_1.jpg
(18.95 KiB) Скачиваний: 186

8. Далее идёт обмен данными между серверами... сервер (192.168.0.1) << >> сервер (10.0.0.1)...
Screenshot_2.jpg
(80.23 KiB) Скачиваний: 196

9. При каждом новом пакете роутер автоматически устанавливает таймер примерно на 2...3 минуты.
10. Если пакетов больше нет, то через 2...3 минуты срабатывает тайм-аут и роутер удаляет из таблицы NAT запись о сокете. После этого из внешней сети (10.0.0.1) во внутреннюю (192.168.0.1) попасть невозможно.
11. При передачи пакетов порты (Source port и Destination port) роутер не меняет. Роутер меняет только IP (Source IP и Destination IP).

12. Вывод: Для поддержания связи по UDP надо непрерывно что-то передавать... например пустые пакеты... не реже чем каждые 2...3 минуты )) Чтоб не срабатывал тайм-аут и роутер удаляет из таблицы NAT запись о сокете.

По сути это получается тот же самый keep-alive как в TCP... или как в браузере... или как в HTTP(S)/WebSockets....
Пипец))

Ну зато теперь я точно знаю как работает мой роутер))
Ответить