Пиринговая коммуникация

Здравствуйте , ребята, я хочу выполнить ячеистую сеть между 3-4 модулями с помощью ESP8266 . У кого-нибудь есть идеи, как это сделать?

, 👍2

Обсуждение

@Stewart Mayer, ваш код выше (AP & ST) - это работа! Заранее спасибо! Приветствие от Индонезии, @Wahyu Exano

Стюарт, я новичок в ESP8266 и работаю над этим весь день. Я наткнулся на этот код клиента/сервиса, и он сработал с первого раза! Спасибо, что написали и отправили. Питер, @Peter Cogley


2 ответа


4

Вы не можете, это не так, как работает esp8266.

esp8266-это Wi-Fi, поэтому вам понадобится либо точка доступа, либо один модуль esp8266, который будет действовать в качестве точки доступа в режиме softap.

,

вы можете предоставить образец, @girish kolte

извините @girishkolte, но... Я никогда не пользовался esp8266, так что я новичок. Но если Майенко говорит: "вам нужно запустить esp8266 в режиме softap", я иду в Google (если вы этого не знаете, это поисковая система) и ищу "esp8266 softap". САМЫЙ ПЕРВЫЙ результат уже имеет пример. И второй тоже. И я не просматривал все остальные, но я предполагаю, что многие из них уже сделали это. Так что перестаньте ждать, пока другие сделают вашу работу, и ищите сами! Это также быстрее, потому что вы получите результаты мгновенно, а не будете ждать, пока другие люди будут искать их для вас, @frarugi87


5

Пример одноранговой связи
Автор: Стюарт Мейер (инженер, уволившийся из 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 секунд
}
,