• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Связка: МК->ESP8266->Wi-Fi роутер->ПК. Как организовать?

В каких сферах можно использовать esp8266

  • Только поиграться, так как вещь крайне ненадежная

    Голосов: 3 25.0%
  • В мелких бытовых (свет включить и прочие мелочи)

    Голосов: 4 33.3%
  • В "умных домах" (управление климатом, контроль аварийных ситуаций и т.д.)

    Голосов: 5 41.7%
  • В промышленности (управление элементами автоматизации производства и прочие серьезные задачи)

    Голосов: 0 0.0%

  • Всего проголосовало
    12

isx

New member
Добрый день, принимайте новичка в свои ряды :)
Понадобилось соединить микроконтроллер с ПК для обмена различной информацией. Выбор пал на модуль ESP8266, дабы организовать локальную связь через Wi-Fi (в дальнейшем, возможно обмен будет через глобальную сеть). Также необходимо исключить AT-команды и т.п, так как МК должен получать от модуля "голые" данные (т.е. что отправили с ПК, то и пришло на МК и наоборот).
Сразу скажу, что во всем, что касается сетей и IoT я новичок, поэтому буду признателен за информативные ссылки по по моей задаче.
Также интересует какие прошивки можно использовать для решения моей задачи (если будут с примерами, то вообще идеально).
Ушел курить мануалы :) .
 

isx

New member
Спасибо за ссылку... Сижу, читаю :)
Я правильно понимаю, что для такой связки можно соединить МК с ESP через UART, настроить модуль в режим клиента, обратиться к роутеру используя его ip и порт (которые нужно заранее прописать в модуль) и получить ip и порт для модуля. Далее, с помощью ПК можно обратиться к модулю по ip и порту (которые ему дал роутер) и передавать какие-либо данные.
Или я что-то путаю?
 

Юрий Ботов

Moderator
Команда форума
1. обеспечить необходимые "подтяжки ног" если их нет на используемой у вас плате
2. соединить через uart
3. залить из arduino ide в esp скетч, что то вроде: Arduino/BasicHttpClient.ino at master · esp8266/Arduino · GitHub (он получает ip от роутера по dhcp, но можно и фиксрованный ip в скетче прописать) ...
4.
Далее, с помощью ПК можно обратиться к модулю по ip и порту (которые ему дал роутер) и передавать какие-либо данные.
видимо путаете. поскольку раньше говорили о клиенте. Клиент сам должен к кому то подключаться. Если надо подключиться с компьютера к esp то esp должен быть сервером Arduino/AdvancedWebServer.ino at master · esp8266/Arduino · GitHub правда этот скетч немного не то делает... тут компьютер должен подключаться по wifi не к роутеру а к самому esp8266. Ну... это стандартный пример. Разобравшись думаю сможете немного его переделать.
 
Последнее редактирование:

isx

New member
1,2,3 - это само собой :) .Я с esp и сетями впервые работаю, а с МК и внешними компонентами уже не первый год ковыряюсь)
4. Ну ПК должен подключаться к esp через роутер.
Что-то я совсем запутался. Это получается, что у нас и роутер будет сервером и модуль тоже сервером? Но тогда получается, что ПК по той же схеме подключается к роутеру (который тоже присваивает ему некий ip и порт) и в сети у нас одни серверы??
 

pvvx

Активный участник сообщества
У модулей WiFi типа ESP8266 три основных режима:
  • SoftAP - неполноценная точка доступа, к которой подключаются станции WiFi. Кол-во подключенных станций сильно ограничено - 3..5 шт.
  • STA - (WiFi station) - WiFi клиент, который подключается к AP.
  • SoftAP+STA - одновременная работа в режиме SoftAP и STA.
 

isx

New member
А мне тогда как нужно настроить модуль, чтоб с помощью него обмениваться данными с ПК через роутер?
 

pvvx

Активный участник сообщества
А мне тогда как нужно настроить модуль, чтоб с помощью него обмениваться данными с ПК через роутер?
В режим Station ("WiFi клиент" по русски).
Роутер у вас работает в режиме AP ("WiFi точка доступа" по русски).
 
Последнее редактирование:

isx

New member
Ооо... Теперь стало понятнее. Спасибо) Пойду дальше шерстить Arduino-esp.
Вопросы которые назрели по ходу дела)
1. А как между собой общаются два ПК через интернет, каждый из которых подключен к своему роутеру (например два ноута из разных городов. подключенные к интернету через роутеры)? Как роутер определяет от какого подключенного устройства куда послать информацию и какую инфу передать какому из подключенных к нему устройств? Например я отправляю файл с ноута1, и в ноуте1 указываю, что данный файл отправляется по адресу 192.124.433.234 (адрес роутера2). Далее эта информация поступает в роутер1 и передается в сеть. Из сети эти данные поступают в роутер2. Как он определяет что файл предназначен именно ноуту2, а не, к примеру, телефону2 (тоже подключенному к роутеру2)?
2. Какую роль во всей этой цепочке (пример из пункта 1) играют порты?
3. Может ли esp, будучи клиентом и подключенная к серверу (роутеру) быть одновременно и сервором для другого клиента (например мобильного телефона)?
 

pvvx

Активный участник сообщества
Ооо... Теперь стало понятнее. Спасибо) Пойду дальше шерстить Arduino-esp.
Вопросы которые назрели по ходу дела)
1. А как между собой общаются два ПК через интернет, каждый из которых подключен к своему роутеру (например два ноута из разных городов. подключенные к интернету через роутеры)?
Через местные NAT.
Как роутер определяет от какого подключенного устройства куда послать информацию и какую инфу передать какому из подключенных к нему устройств?
По IP и динамическим таблицам NAT местной интрасети.
Например я отправляю файл с ноута1, и в ноуте1 указываю, что данный файл отправляется по адресу 192.124.433.234 (адрес роутера2). Далее эта информация поступает в роутер1 и передается в сеть. Из сети эти данные поступают в роутер2. Как он определяет что файл предназначен именно ноуту2, а не, к примеру, телефону2 (тоже подключенному к роутеру2)?
По IP и определиться.
2. Какую роль во всей этой цепочке (пример из пункта 1) играют порты?
Порт в IP - это номер порта на каждом IP от 0 до 65535. :)
Учебник по интернет я набивать в посту не буду. Сами найдете описание...
3. Может ли esp, будучи клиентом и подключенная к серверу (роутеру) быть одновременно и сервором для другого клиента (например мобильного телефона)?
Может. В режиме AP+STA.
Но передавать инет от роутера своему клиенту не может в базовом варианте. По тому и SoftAP.
У SoftAP обычно отсутствует связь между клиентами.
Для связи одной части подсети AP или STA надо установить программную поддержку NAT или сделать шлюз/прокси...
 

isx

New member
Спасибо за ответ)
С портами вроде как разобрался, надо ещё NUT покурить.
Проблема возникла на ровном месте - модуль не хочет коннектиться с программой для прошивки. АТ команды отрабатывает (сначала не хотел, а потом сам по себе начал).
Есть одна особенность - на модуле (кстати, это esp-01) вместо стандартного rst выведен io16. Для того, чтоб вогнать модуль в режим прошивки отключаю его от питания и сажаю io0 на землю.
Можно ли как-то через терминал проверить находится он в режиме прошивки или нет?
 

Сергей_Ф

Moderator
Команда форума
@isx, режим работы модуля выводится в терминал при загрузке на скорости 74880. Вы бы хоть документацию почитали вначале.
 
Последнее редактирование:

isx

New member
Вообщем какая-то странная фигня с этим модулем. Пытался его прошить, но ни одна программа не хотела этого делать, потом каким-то чудом загрузилась прошивка nodeMcu через esp8266flasher.
Теперь пытаюсь вернуть родную прошивку. Скачал пару прошивок с АТ. Загружаются один раз из трёх поппыток, но после загрузки реакции никакой нет.
Как мне наконец-то заставить модуль хотябы нормально отвечать на АТ команды?
 

isx

New member
Прошил. Все проблемы ушли, когда я поменял свой шнурок USB-SERIAL на Ардуино. Капец просто, пол дня из-за этого потратил.
Но проблемы не кончились. Загрузил стандартную прошивку (перед этим залил пустой файл на 512МБ) с этого сайта (at024esp8266ru.bin) и при включении стали выходить строки:
ets Jan 8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 25020, room 16
tail 12
chksum 0xef
ho 0 tail 12 room 4
load 0x00000000, len 0, room 12
tail 0
chksum 0xef
load 0x00000000, len 0, room 4
tail 0
chksum 0xef
csum 0xef
csum err
ets_main.c
если перед включение посадить io0 на землю, то просто:

ets Jan 8 2013,rst cause:1, boot mode:(1,7)
На АТ команды по прежнему не реагирует, точку доступа не создает.
 

isx

New member
Какую бы прошивку я не залил везде len не нулевое значение только в строке с rom16.
Смотрел у дригих голи на форуме - там и в остальных rom не нули.
От чего такое может быть? Прошивку заливаю с адреса 0x0.
 

isx

New member
Поборол таки проблему :)
Сей косяк описали здесь: ESP-01 V3 flashing issues - Let's Control It
Проблема, как я понял именно с черным модулем ESP-01 на 4Mbit v.3. Вывод RST у него отсутствует и чтоб запустить его в режим программирования нужно: отключить питание->замкнуть io0->подать питание. В принципе, после этого io0 можно отключать от земли (у меня замыкание сделано кнопкой и все работает). И САМОЕ ГЛАВНОЕ - в настройках прошивальщика нужно выставить spiMode DOUT. Эта хрень убила у меня два дня, и нигде об этом не пишут!
На всякий случай, прикладываю спасательный набор, с помощью которого я заставил модуль реагировать на AT команды и отображаться в списке сетей Wi-Fi в мобилке :) .
 

Вложения

=AK=

New member
Прошил.
...
Проблема, как я понял именно с черным модулем ESP-01 на 4Mbit v.3.
Советую купить модуль NodeMCU, типа такого, и играться с ним. Зашивать в него можете что хотите, хоть АТ, хоть Lua, хоть Ардуино скетчи. Просто в нем "в одном флаконе" собрано все что нужно для прошивки, очень удобно.
 

isx

New member
Я уже макету для своих спаял. Для прошивки только одну кнопку нажать :)
Щас новая проблема, но уже программная. Решил для своей задачи поюзать ESP-link Программируем Ардуино "по воздуху" через ESP-link - самопал.pro
Прошил, появилась сеть, зашёл на страницу. Все работает отлично, но когда устанавливаю статический ip и подключаюсь к роутеру, то сеть пропадает и по старому и по статическому ip модуль не отвечает. Пробовал прошивку новее - один фиг.
При рестарте модуль вываливает в терминал по UART инфу о том, что получен ip, который я указывал как статический.
Для того чтоб связаться опять с модулем приходится заново его прошивать.
В чем может быть причина?
 

isx

New member
Хотел проверить, но пароль для входа в роутер так и не вспомнил. Седня попробую сбросить. Я так понимаю, что раз в уарт идёт инфа о том, что модулю присвоен адрес, то я должен его там увидеть.
А это нормально, что при этом точка доступа, которую создавал сам модуль пропадает?
 
Сверху Снизу