• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
Хотел проверить, но пароль для входа в роутер так и не вспомнил. Седня попробую сбросить. Я так понимаю, что раз в уарт идёт инфа о том, что модулю присвоен адрес, то я должен его там увидеть.
А это нормально, что при этом точка доступа, которую создавал сам модуль пропадает?
 
Сверху Снизу