• Система автоматизации с открытым исходным кодом на базе 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, которые приходят от пользователя (с вашей же веб-страницы).
В общих чертах понял, попытаюсь реализовать. Спасибо за помощь.
Пока отвлекаетесь от платы ардуино и в программе ардуино иде устанавливаете плату есп:
эти примеры делал....
 
Сверху Снизу