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

Управление Ардуино через ESP01

cheva

New member
Доброго времени суток!

Купил недавно модуль ESP01, полазил в нем, даже скетч залил, чтобы включать и выключать светодиод ,вводя определенный адрес в браузер. Но всё не могу найти информацию по одному поводу: можно ли использовать этот вай фай модуль для того, чтобы связать ардуино с интернетом и управлять этим же ардуино через интернет.
Вообще ардуино я недавно купил и начал изучать программирование и всю электронику почти с нуля, поэтому немного сложновато пока что обрабатывать всю информацию. Надеюсь, что вы меня поймете и подскажете что и как.
 

shuraf

Member
Можно связать с интернетом. Управлять получится если роутер имеет белый айпи и проброшены порты есп.
 

cheva

New member
Можно связать с интернетом. Управлять получится если роутер имеет белый айпи и проброшены порты есп.
Скажи , пожалуйста, что ты имел в виду простому глупому человеку, что такое белый айпи и проброшенные порты есп?
 

CodeNameHawk

Moderator
Команда форума
Но всё не могу найти информацию по одному поводу: можно ли использовать этот вай фай модуль для того, чтобы связать ардуино с интернетом и управлять этим же ардуино через интернет.
Можно. белый айпи == внешний IP (постоянный или редко меняющийся)
При использовании стороннего сервиса (типа DynDNS или внешнего сервера ) важно только наличие интернета, все остальное можно сделать.
Начните с примеров в ArduinoIDE.
 

cheva

New member
Можно. белый айпи == внешний IP (постоянный или редко меняющийся)
При использовании стороннего сервиса (типа DynDNS или внешнего сервера ) важно только наличие интернета, все остальное можно сделать.
Начните с примеров в ArduinoIDE.
Я же написал, что уже начал. Но как я понял, то ардуино служит лишь переходником для подключения ESP к компьютеру и программирую я только ESP в этом случае. А мне же нужно запрограммировать ардуино , да еще таким образом, чтобы ардуино связывалась с интернетом через этот модулем и принимала и отправляла данные .
 

Сергей_Ф

Moderator
Команда форума
мне же нужно запрограммировать ардуино , да еще таким образом, чтобы ардуино связывалась с интернетом через этот модулем и принимала и отправляла данные .
А можно поинтересоваться, зачем Вам Ардуина? Просто реально таких задач, где бы она была необходима очень мало. Не думаю, что это Ваш случай.
 

cheva

New member
А можно поинтересоваться, зачем Вам Ардуина? Просто реально таких задач, где бы она была необходима очень мало. Не думаю, что это Ваш случай.
Хочу сделать что-то вроде умного дома, ну или её подобие. Купил уже ESP01 , а потом понял, что надо было сразу брать node mcu и не мучаться. Но так как уже купил эту, то теперь выбора нет, не выкидывать же её. Поэтому нужно несколько аналоговых входов и несколько цифровых использовать, а в ЕСП всего лишь 2 - этого не хватает для всех деталей.
 

Сергей_Ф

Moderator
Команда форума
так как уже купил эту, то теперь выбора нет, не выкидывать же её.
Если 150 руб плата за то что бы не мучится, это так критично в стоимости умного дома? Выкидывать не надо, умный дом на одной esp-01 не построишь все равно. Отложите для датчика какого нибудь, пригодится. А сейчас закажите нормальную плату.
 

cheva

New member
Если 150 руб плата за то что бы не мучится, это так критично в стоимости умного дома? Выкидывать не надо, умный дом на одной esp-01 не построишь все равно. Отложите для датчика какого нибудь, пригодится. А сейчас закажите нормальную плату.
Да мне в комнате пару датчиков поставить и несколько реле подключить. Заказать - это,конечно, выход, но ждать месяц не вариант. Поэтому я и хочу узнать как сделать основной управляющей платформой ардуино, а ESP посредником для передачи и получения информации.
 

Сергей_Ф

Moderator
Команда форума
@cheva если Вы такие вопросы задаете, то это займет у Вас не один месяц :). Так что заказывайте, а пока тренеруйтесь на кошечках. Т.е. на esp-01.
А собственно, что Вас уговаривать? Не хотите, не заказывайте. Мучайтесь.
 

cheva

New member
@cheva если Вы такие вопросы задаете, то это займет у Вас не один месяц :). Так что заказывайте, а пока тренеруйтесь на кошечках. Т.е. на esp-01.
А собственно, что Вас уговаривать? Не хотите, не заказывайте. Мучайтесь.
Так я сюда и пишу,чтобы тренироваться. А именно - получения информации или ссылок на информацию, с поцощью которой я могу достичь поставленной цели.
 

view24

Member
Надо покупать esp8266 с 'обвязкой', т.е. с питанием от usb-micro и c возможностью программировать через этот же usb-micro. Это то, что содержит слово NodeMcu. Практически это любая плата, которую выпускает WEMOS. А потом уже идете на сайт Chart on-line monitoring fermenter's measurement by free OPC и через 5 минут будете управлять Вашей esp8266 с любым ip и без регистрации.
 

=AK=

New member
Купил недавно модуль ESP01, полазил в нем, даже скетч залил, чтобы включать и выключать светодиод ,вводя определенный адрес в браузер. Но всё не могу найти информацию по одному поводу: можно ли использовать этот вай фай модуль для того, чтобы связать ардуино с интернетом и управлять этим же ардуино через интернет.
ESP01 можно использовать в качестве "связующего звена" между Ардино и интернетом. Однако это нерационально. Дело в том, что ESP01 сам может выполнять ардуиновские скетчи, поэтому внешняя Ардуина ему не нужна. Просто рассматривайте ESP01 как разновидность Ардуиновского модуля, в котором стоит мощный 32-битный процессор, много памяти и есть встроенный WiFi.

Для того, чтобы программировать ESP01 как Ардуино, надо в среду Ардуино IDE добавить поддержку ESP8266. Для этого в Ардуино IDE открываете Tools/Board/Boards manager, находите там ESP8266 и инсталлируете. После этого в примерах появится много скетчей для ESP.

Чтобы связать ваше устройство с интернетом, проще всего использовать MQTT. В интернете есть много бесплатных MQTT серверов (раньше их называли MQTT брокеры). Заведите себе там аккаунт. Для ESP в Arduino IDE есть библиотеки для работы с MQTT, тоже с примерами. При помощи одной из этих библиотек свяжитесь с MQTT сервером, заведите себе топики и подпишитесь на них. Скажем, один топик будет получать данные от сервера и выполнять их как команды, другой топик будет пересылать данные от ESP к серверу, и т.п. Другие ваши устройства (компьютер, мобильник, и т.п) тоже свяжите с этим MQTT сервером и через него посылайте команды в ESP и получайте ответы.
 

cheva

New member
ESP01 можно использовать в качестве "связующего звена" между Ардино и интернетом. Однако это нерационально. Дело в том, что ESP01 сам может выполнять ардуиновские скетчи, поэтому внешняя Ардуина ему не нужна. Просто рассматривайте ESP01 как разновидность Ардуиновского модуля, в котором стоит мощный 32-битный процессор, много памяти и есть встроенный WiFi.

Для того, чтобы программировать ESP01 как Ардуино, надо в среду Ардуино IDE добавить поддержку ESP8266. Для этого в Ардуино IDE открываете Tools/Board/Boards manager, находите там ESP8266 и инсталлируете. После этого в примерах появится много скетчей для ESP.

Чтобы связать ваше устройство с интернетом, проще всего использовать MQTT. В интернете есть много бесплатных MQTT серверов (раньше их называли MQTT брокеры). Заведите себе там аккаунт. Для ESP в Arduino IDE есть библиотеки для работы с MQTT, тоже с примерами. При помощи одной из этих библиотек свяжитесь с MQTT сервером, заведите себе топики и подпишитесь на них. Скажем, один топик будет получать данные от сервера и выполнять их как команды, другой топик будет пересылать данные от ESP к серверу, и т.п. Другие ваши устройства (компьютер, мобильник, и т.п) тоже свяжите с этим MQTT сервером и через него посылайте команды в ESP и получайте ответы.
Спасибо большое, очень помогли!!!

У меня тут возникла еще одна проблема небольшая, может и с этим сталкивались.
Вчера сделал такую схему, чтобы через ВайФай включать и выключать компьютер. Так как питания у выключенного компьютера не оказалось, то решил попробовать на батарейках. В итоге за ночь сели две мизинчиковые батарейки ААА. Сейчас посмотрел, что есть режим сна DeepSleep, но там модуль просыпается через определенное время, чтобы отправить сообщение. Можно ли настроить режим сна, чтобы он просыпался только тогда, когда приходит сигнал?
 

Сергей_Ф

Moderator
Команда форума
Можно ли настроить режим сна, чтобы он просыпался только тогда, когда приходит сигнал?
как он узнает что пришел сигнал, если спит? Можете сделать просыпание раз в секунду и опрос состояния- не знаю что у Вас опрашивается. Тогда должен проработать год, если правильно сделать.
 

cheva

New member
как он узнает что пришел сигнал, если спит? Можете сделать просыпание раз в секунду и опрос состояния- не знаю что у Вас опрашивается. Тогда должен проработать год, если правильно сделать.
через телефон или комп, подключенный к этому роутеру я отправляю такой сигнал : http://server_ip/gpio/1 и он включает реле и через секунду выклюачет. ( Кстати еще реле 5В питается от этих 3,3В).
не подскажешь как сделать состояние опроса ?

Еще я думал вместо батареек поставить два АКБ и припаять к ним зарядную плату , чтобы заряжались от блока питания пока комп включен, тогда прослужит в разы дольше.

П.С вот код, который в ESP


Код:
#include <ESP8266WiFi.h>

const char* ssid = "ssid";
const char* password = "*******";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1)
    val = 0;
  else if (req.indexOf("/gpio/1") != -1)
    val = 1;
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);
  delay(1000);
  digitalWrite(2,LOW);

  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val)?"high":"low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");
}
 
Последнее редактирование:

=AK=

New member
Вчера сделал такую схему, чтобы через ВайФай включать и выключать компьютер. Так как питания у выключенного компьютера не оказалось, то решил попробовать на батарейках. В итоге за ночь сели две мизинчиковые батарейки ААА. Сейчас посмотрел, что есть режим сна DeepSleep, но там модуль просыпается через определенное время, чтобы отправить сообщение.
Вам что, если комп включать через WiFi, то необходимо это сделать прям сию секунду? Настраиваете DeepSleep чтобы он просыпался, например, раз в минуту и отправлял вопрос "команда есть?". Если нет команды, пусть дальше спит. Если есть команда, тогда и включит ваш комп. Уж минуту-то потерпите. Или насколько настроите. Если минуту ждать невтерпеж, настройте, скажем, на 10 сек, но батарейку будет сажать быстрее.
 

cheva

New member
Вам что, если комп включать через WiFi, то необходимо это сделать прям сию секунду? Настраиваете DeepSleep чтобы он просыпался, например, раз в минуту и отправлял вопрос "команда есть?". Если нет команды, пусть дальше спит. Если есть команда, тогда и включит ваш комп. Уж минуту-то потерпите. Или насколько настроите. Если минуту ждать невтерпеж, настройте, скажем, на 10 сек, но батарейку будет сажать быстрее.
Можете помочь с кодом, который проверял бы состояние и включал бы, если бы была дана команда включить?
 
Сверху Снизу