Пиринговая коммуникация
Здравствуйте , ребята, я хочу выполнить ячеистую сеть между 3-4 модулями с помощью ESP8266 . У кого-нибудь есть идеи, как это сделать?
@girish kolte, 👍2
Обсуждение2 ответа
Вы не можете, это не так, как работает esp8266.
esp8266-это Wi-Fi, поэтому вам понадобится либо точка доступа, либо один модуль esp8266, который будет действовать в качестве точки доступа в режиме softap.
вы можете предоставить образец, @girish kolte
извините @girishkolte, но... Я никогда не пользовался esp8266, так что я новичок. Но если Майенко говорит: "вам нужно запустить esp8266 в режиме softap", я иду в Google (если вы этого не знаете, это поисковая система) и ищу "esp8266 softap". САМЫЙ ПЕРВЫЙ результат уже имеет пример. И второй тоже. И я не просматривал все остальные, но я предполагаю, что многие из них уже сделали это. Так что перестаньте ждать, пока другие сделают вашу работу, и ищите сами! Это также быстрее, потому что вы получите результаты мгновенно, а не будете ждать, пока другие люди будут искать их для вас, @frarugi87
Пример одноранговой связи
Автор: Стюарт Мейер (инженер, уволившийся из FAA).
Это первый раз, когда я даю ответ, надеюсь, вы сможете прочитать это:
ESP8266 может не только подключаться к сети Wi-Fi и взаимодействовать с Интернетом, но и создавать собственную сеть, позволяя другим устройствам подключаться непосредственно к ней. В этом примере показано, как превратить ESP8266 в точку доступа (точку доступа), также называемую сервером, и передавать данные любому подключенному клиенту, также называемому станцией.
Сервер (Точка доступа) Сначала мы рассмотрим сервер:
/* Сервер
* Сначала мы пишем сервер, потому что нам нужен его IP-адрес
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "Meyer"; // ssid сервера (точка доступа (точка доступа))
const char* password = ""; // пароль сервера (точка доступа (точка доступа))
WiFiServer server(80); // Порт службы
int ledPin = 2; // GPIO2 сервера ESP8266
void setup()
{
delay(1000);
Serial.begin(115200); // для использования инструментов->последовательный монитор
pinMode(ledPin, OUTPUT); // установите GPIO 2 в качестве выхода
WiFi.mode(WIFI_AP_STA); // Установите Wi-Fi в режим точки доступа и станции
// Подключение к сети Wi-Fi
Serial.println();
Serial.print("Connecting to: "); Serial.println(ssid);
WiFi.softAP(ssid, password);
// Отобразить адрес сервера
Serial.print("Connected, My address: ");
Serial.print("http://");
Serial.print(WiFi.softAPIP());
Serial.println("/");
// Попросите сервер начать прослушивание входящих подключений
server.begin();
Serial.println("Прослушивание сервером входящих подключений");
}
void loop()
{
// Проверьте, подключился ли клиент
WiFiClient client = server.available();
if (!client) // если недоступно, верните
{
return;
}
// Подождите, пока клиент не отправит какие-либо данные
Serial.println();
Serial.println("Клиент подключен");
while(!client.available())
{
delay(1);
}
// Прочитайте запрос
String request = client.readStringUntil('\r');
Serial.print("Request = "); Serial.println(request);
if (request.indexOf("/ON/") != -1)
{
digitalWrite(ledPin, LOW); // включите светодиод
}
if (request.indexOf("/OFF/") != -1)
{
digitalWrite(ledPin, HIGH); // выключите светодиод
}
client.flush();
Serial.println("Клиент отключен");
}
Клиент (Станция) Далее мы рассмотрим клиента:
/* Клиент
* Этот клиент будет включать или выключать светодиод каждые 5 секунд
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
const char* ssid = "Meyer"; // ssid точки доступа (Сервера)
const char* password = ""; // пароль точки доступа (Сервера)
int port = 80; // номер порта
byte ip[]= {192,168,4,1};
int LEDstatus = 0;
WiFiClient client; // Объявить клиента
void setup()
{
Serial.begin(115200);
delay(10);
WiFi.mode(WIFI_STA); // установите режим на станцию (клиент)
// Connect to wiFi
Serial.println(); Serial.println();
Serial.println("CONNECTING TO WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print("."); // печатайте точки до подключения
}
Serial.println();
Serial.println("WiFi CONNECTED");
}
void loop()
{
// Подключение клиента к серверу
Serial.println("ПОДКЛЮЧЕНИЕ КЛИЕНТА К СЕРВЕРУ");
if (client.connect(ip, port))
{
Serial.println("ПОДКЛЮЧЕН");
}
else
{
Serial.println("СБОЙ ПОДКЛЮЧЕНИЯ");
}
// Отправить сообщение для управления светодиодом
if (LEDstatus == 0)
{
client.println("/OFF/");
Serial.println("LED OFF");
LEDstatus = 1;
}
else
{
client.println("/ON/");
Serial.println("LED ON");
LEDstatus = 0;
}
client.println();
client.flush();
delay(1);
Serial.println("КЛИЕНТ ОТКЛЮЧЕН");
Serial.println();
delay(5000); // задержка 5 секунд
}
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- Проблемы с IP-адресом esp8266
- Как отправлять информацию о данных без работы Wi-Fi на LCD?
- AT-команда не отвечает на последовательный монитор
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- Arduino выводит значения мусора на serial monitor с ESP8266
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
@Stewart Mayer, ваш код выше (AP & ST) - это работа! Заранее спасибо! Приветствие от Индонезии, @Wahyu Exano
Стюарт, я новичок в ESP8266 и работаю над этим весь день. Я наткнулся на этот код клиента/сервиса, и он сработал с первого раза! Спасибо, что написали и отправили. Питер, @Peter Cogley