• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос ESP8266 в качестве wifi shielda arduino

lasthope

New member
Доброго времени суток, уважаемые комрады.
С головой нырнул в мир микроконтроллеров с нулевой базой знаний и столкнулся с проблемой, на которую не могу найти ответа (по причине слабой базы). Суть в чем: есть ардуино, к ней подключено много датчиков и пару шаговиков. Надо через wifi ей управлять и получать информацию с датчиков. Особой проблемы запрограммировать ардуино я не испытал, а вот с esp8266-01s были некоторые трудности.
По сути мне нужно чтобы ардуино через esp подключалась к текущей wifi сети и можно было ей управлять и принимать данные. Стандартную прошивку (с ат командами) я давно перезаписал, когда делал различные опыты. А с базовыми, которые есть в arduino IDE не получается получить что хочется.
Буду признателен за помощь и дельные советы.
 

gerkimuyda

New member
Делаете так:
ESP - отдельный модуль, который берет на себя все управление по WiFi и HTTP.
Arduino - исполнительный модуль, который берет на себя все, что связано непосредственно с периферией (датчиками, шаговыми двигателями, светодиодами, релюшками, кнопками от Першинг-Два)
Между ними организовываете обмен командами (например по Serial через выводы TX-RX согласовав уровни 5в-3.3в).
Профит o_O (Дети едят мороженное, взрослые пьют шампанское)
 

gerkimuyda

New member
kab, там можно было ардуйню заменить на esp. А тут я предполагаю, что у esp не хватит ножек для всего обвеса, или ее обслуживание вайфая будет мешать четкой обработке всего остального.
Да и тут атмеловский модуль уже готов и отлажен, зачем все переделывать и заново отлаживать на esp? Тут нужны только команды управления (которые легко делаются через esp).

lasthope, связать тремя проводками через UART. Прошивку для ESP8266 сами себе пишете в Arduino IDE и в ней-же заливаете. Все как с arduino uno.

. А с базовыми, которые есть в arduino IDE не получается получить что хочется.
Почему? В томже arduino ide есть примеры для esp и по датчикам, и по вайфаю, и по http клиенту, и по АП, и по web-серверу.
 

lasthope

New member
В томже arduino ide есть примеры для esp и по датчикам, и по вайфаю, и по http клиенту, и по АП, и по web-серверу.
Смотрите, управление будет происходить с помощью АТ команд (как самое простое), но я не могу в название прошивки для этих целей... С нуля я такое не напишу =) Полазив по форуму нашел прошивку в формате бин, буду с ней пробовать.

Но как лучше всего реализовать данную концепцию может быть у вас лучшее есть решение?
ссылку в предыдущем посте я сделал всё-таки для Вас
К сожалению 1 ноги не хватит и данное решение мне не подходит.
 

gerkimuyda

New member
управление будет происходить с помощью АТ команд (как самое простое)
Зачем?
Ну зачем вы цепляетесь за эти АТ? Для них вам нужна АТ-прошивка (бинарник, ибо к ардуино это никакого отношения не имеет). С АТ вам мало кто поможет, т.к. почти никто с такой древностью не работают. Она вообще создана (наверное), чтобы модуль поставлять не пустым, а показать, как просто подключив к ПК через com-порт из терминала мигать светодиодом и т.д.
Поэтому все, кто покупает esp8266 сразу сносят АТ и меняют на NodeMCU (Lua), Arduino IDE или Eclise/make.

А само проще как раз через UART. Создали подключение и слушаете его. Как только второй модуль в него что-то написал - обработали и ответили.
Например:
(esp) <-> (atmel)
(дёрни светодид лапой 2) "led2=1" <-> "ok"
(сколько температура?) "getTemp" <-> "12.6"
(закрой холодильник) "setMotor2=90" <-> "ok"
 

kab

New member
Она вообще создана (наверное)
Система АТ-команд создавалась для древних телефонных модемов. Предшественники "интернет"-эпохи с этим жили и радовались...
А тут тоже вроде как модем, только wifi-ный... В принципе, механизм удобный - но устаревший - однозначно.
 

kab

New member
Я свой первый 2400 модем пихал в IMB PC AT 286 @ 20Mhz :) и сидел в FidoNet 2:468/ еще задолго до холиваров OS/2 vs MustDie-95 :D
У меня первый модем был 1200 - но фидо прошло мимо меня. Занимался модемами чисто по производственной необходимости...
А PC вроде было XT, но точно не помню. Как-то пролетало быстро - как в калейдоскопе:)
 

lasthope

New member
я не знаю как лучше реализовать данный механизм. И начал, как я думал, с самого простого.
начнёт задавать вопросы по существу
хз даже, в кратце обрисовал ситуацию, может что то не так поняли.... Счас еще раз по пробую.

Есть ардуино нано. К ней будут подключены датчик газа, датчик угарного газа, 4 шаговика, ик приемник, датчик температуры и влажности, датчик движения. Так же будет висеть управление освещением. Я хотел бы управлять этим всем по wifi (данные будут отправляться на сервер, им обрабатываться и выводится в HTML, в дальнейшем еще на телефон. На свою голову выбрал самый дешевый модуль esp (да, почитав информацию в сети, понял что самое элегантное решение это все повесить на контроллер в самом модуле), и приходится использовать его. Так подскажите пожалуйста, как осуществить данный механизм?
p.s. зная скорость обмена данных по wifi и смотрю на скорость общения ардуины с esp, становится грустно и не понятно как еще повесить на это потоковое изображение с вебкамеры...
 

gerkimuyda

New member
я не знаю как лучше реализовать данный механизм. И начал, как я думал, с самого простого.
Для того, чтобы подавать АТ команды модулю ESP, а также читать его ответы - вам всеравно надо ПОДКЛЮЧИТЬ его к UART ардуины. Т.е. - тоже самое подключение, тоже самое чтение и запись. Только на другой стороне не АТ-прошивка, а ваша программа, которую вы сами пишете как будто это у вас вторая ардуина, но уже с WiFi на борту.

p.s. зная скорость обмена данных по wifi и смотрю на скорость общения ардуины с esp, становится грустно и не понятно как еще повесить на это потоковое изображение с вебкамеры...
Тут уже ESP не потянет. Смотрите на что-то более мощное... RTL как минимум, или всякие роутеры/клубники/малины/киви/бананы/кокосы/помидоры/картошки/цибули ;)
 

lasthope

New member
вам все равно надо ПОДКЛЮЧИТЬ его к UART ардуины.
Если я правильно Вас понял, то вы говорите что:
1. в скетч для нано можно залить все команды и ответы на них для работы с esp.
2. esp и так будет постоянно подключена к ардуине.
3. Я понимаю, что это примитивное решение (АТ команды), но что то я не смог в гугл и поиска другого решения. единственное что находил это метеостанция....
Я готов выслушать Ваши предложения, желательно с примерами, чтобы сделать менее индусский код)
 

gerkimuyda

New member
lasthope, ок. Еще раз подробнее объясню.
Ардуина у вас уже работает и на ней навешано куча датчиков и прописана логика? Правильно? Вам просто надо внешнее управление этой системой?
Если это так - тогда нет смысла переделывать существующее, тем-более это не так просто, как перенести светодиод с arduino на esp.
В таком случае подключаете по uart esp, в котором реализуете именно управление (подключение/создание вайфая, http сервер, html и javascript код).
Общаются модули между собой так: ардуина постоянно проверяет, что там в serial пришло что-то от esp? если нет - дальше крутим наш главный цикл или висим на прерываниях.
Если пришло - обрабатываем входящую команду (а это вы уже сами придумываете что:
"T1" - отдать показания температуры первого датчика (или "get_ds18b20=28ffd05267160413" - отдать показания температуры с ds18b20 датчика с адресом "28ffd05267160413" - как вам нравится)
"L2=0" - выключить второй светодиод, "R3=1" - включить третье реле, "P1" - отдать давление с первого датчика, "M2=-300" - повернуть второй мотор назад на 300 шагов. "S" - заполучить строку всех состояний (показания всех датчиков)... ну и т.д. в таком-же духе. Т.е. ардуина у вас в этой роли как исполнительный механизм, который отвечает на команды.

А в ESP пишете код создания АП, код веб-сервера, и обработку команд HTTP, которые приходят от пользователя (с вашей же веб-страницы). А вместо навешанных датчиков и механизмов на модуль и вместо управления ими, мы все это делегируете ардуине, и общаетесь с ней выше написанными командами. А ответы на команды преобразуете в результат, который отображаете пользователю в ответной html странице.

Т.е. получив "GET /" от пользователя, запрашиваете у ардуины "S" все значения, парсите их, подставляете в html и отдаете ответ в виде главной страницы с показателями и кнопками.
Если нажали кнопку "LED1 ON", по приходит (например) запрос "GET /led1=1", на что отсылаем ардуине "L1=1" и получив "ok" (или "L1=1" как текущий статус), отображаем это пользователю и ждем следующей комады. Также можем через ajax сделать обновление показаний на странице, путем посылки запроса "GET /status?ajax", на что модуль запрашивает у ардуины "S", и полученный ответ преобразует в JSON и отдает ajax'у в ответ.

Куда подробнее? o_O
Блок-схемы я рисовать не люблю, т.к. научился программировать еще раньше, чем узнал о блок-схемах и алгоритмическом языке. Мне проще сразу прогу писать в FAR'е, чем план рисовать в paint'e :D
 

kab

New member
Я готов выслушать Ваши предложения
:) А я бы предложил несколько более длинный, но простой для освоения путь:
- Пока отвлекаетесь от платы ардуино и в программе ардуино иде устанавливаете плату есп:

https://esp8266.ru/arduino-ide-esp8266/

Далее по этой ссылке проверяете пример. Это даст общее представление о работе с есп. Можете начать на плате есп, но с самых простых примеров для платы ардуино. Это Вы проскочите быстро, т.к. навыки у Вас уже есть. Тогда можно посмотреть и примеры для есп, появивщиеся в ардуино иде при установке платы есп.

- набравши таким образом несколько скилов на примерах, возвращаетесь к своей задаче. Вы сами удивитесь, как много для Вас станет более понятным. А обращаться при конкретных затруднениях на форум - никто не запрещает.
 

lasthope

New member
А в ESP пишете код создания АП, код веб-сервера, и обработку команд HTTP, которые приходят от пользователя (с вашей же веб-страницы).
В общих чертах понял, попытаюсь реализовать. Спасибо за помощь.
Пока отвлекаетесь от платы ардуино и в программе ардуино иде устанавливаете плату есп:
эти примеры делал....
 
Сверху Снизу