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

Нужна помощь ESP8866(Client) + ESP8866(Server)

SergEgois

New member
Как сделать что бы платы могли обмениваться сообщениями через WIFI?
Поделитесь исходниками пожалуйста
 

NeoroN

Member
По моему в документации все понятно расписанно как для Arduino так и для Nodemcu - нет техзадания = нет кода.
 

SergEgois

New member
По моему в документации все понятно расписанно как для Arduino так и для Nodemcu - нет техзадания = нет кода.
Мне нужно что бы при нажатию кнопки на одной Esp8266 на второй загорался светодиод. Дайте хоть какой то исходник - буду курить его.
 

NeoroN

Member
Сервер для включения светодиода
и примерно такой клиент для кнопки
Код:
wifi.setmode(wifi.STATION)
wifi.sta.config({ssid="test",pwd="12345678"})
gpio.mode(1, gpio.INT, gpio.PULLUP)
function button_cb(level, timeout)
http.get("http://192.168.4.1/?pin="+(level == gpio.HIGH  and "OFF" or "ON"), nil, function(code, data) print(code, data) end)
gpio.trig(1, level == gpio.HIGH  and "down" or "up")
end
gpio.trig(1, "down", button_cb)
 

SergEgois

New member
Сервер для включения светодиода
и примерно такой клиент для кнопки
Код:
wifi.setmode(wifi.STATION)
wifi.sta.config({ssid="test",pwd="12345678"})
gpio.mode(1, gpio.INT, gpio.PULLUP)
function button_cb(level, timeout)
http.get("http://192.168.4.1/?pin="+(level == gpio.HIGH  and "OFF" or "ON"), nil, function(code, data) print(code, data) end)
gpio.trig(1, level == gpio.HIGH  and "down" or "up")
end
gpio.trig(1, "down", button_cb)

А есть код как обмениваться данными не через веб сервер а как через точку доступа?
 

NeoroN

Member
нету, мне его лень писать...
Точнее не понятно что хочет автор.
Код точкадотупа+вебсервер и клиент+гетзапрос - ему не нравятся, хотя для кнопки и светодиода вполне хватит. Вот пусть сам разберется что он хочет и напишет подробно что, для чего чем управлять - может он терорист какой и бомбы там собирает, с кнопками смертника.
 
Последнее редактирование:

SergEgois

New member
автор хочет халявы, так как сегодня суббота.
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>

const char *ssid = "ssid";
const char *password = "12345678";
const char *host = "192.168.7.1";
int channel = 5;

WiFiServer server(8008);
long qqq = 0;

void setup() {
  WiFi.persistent(false);
  Serial.begin(9600);
  delay(10);
  Serial.println();
  initWiFi();
  server.begin();
}


void loop() {
  yield();
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    Serial.println("new client");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        currentLine = client.readStringUntil('\r');
        Serial.println(currentLine);
         Serial.println(client.read());
        initWiFi();
        ESP.wdtFeed();
        yield();
      }
    }
    // close the connection:

    client.flush();
    client.stop();
    Serial.println("client disonnected");
  } 
}

void initWiFi(void) {

  IPAddress Ip(192, 168, 1, 1);
  IPAddress NMask(255, 255, 255, 0);

  WiFi.mode(WIFI_AP);
  Ip.fromString(host);
  WiFi.softAPConfig(Ip, Ip, NMask);
if (!WiFi.softAP( ssid, password,channel,0))
  {
   Serial.println("WiFi.softAP failed.(Password too short?)");
   return;
  }
  IPAddress myIP = WiFi.softAPIP();
  Serial.println();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  long rssi = WiFi.RSSI();
  long qqq = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm"); 

}
вот код сервера, принимает без веба. а клиент как сделать?

то есть если кнопка значит террорист? мне текст нужно передавать, за кнопку так написал чтобы вопросов не было, думал проще будет
 

NeoroN

Member
на Lua я бы еще написал - там пару строк всего писать, на сишнике - точно нет - слишком много писанины (не интересно). Если ардуинщики не сжалются - то все есть в стандартных примерах.
 

Grem_line

New member
Самое простое - один делаешь SoftAP, а другой к нему подключается. После этого в цикле передаешь от одного к другому UDP-пакеты на какой-нибудь порт, скажем, 10 раз в секунду. На втором принимаешь эти пакеты. Ну и в первом байте нулевым битом (например) каждого пакета передаешь состояние кнопки. Нужно только знать IP-адрес того, кто принимает пакеты. Лучше принимать в AP - там IP-адрес будет всегда один и тот-же.
 

Grem_line

New member
Вот пример SoftAP, работающая как приемник (зажигает светодиод при нажатии кнопки на передатчике:
Код:
#include <ESP8266WiFi.h>
#include <WiFiUDP.h> 

const char* ssid = "TEST";
const char* password = "Gacdert123";
WiFiUDP Udp;

void setup() {
  // будем мигать встроенным светодиодом
  pinMode(LED_BUILTIN, OUTPUT); 
  Serial.begin(115200);
  Serial.printf("\nStart of program\n");
 
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  Udp.begin(12345);
}

unsigned char Buf[1500]; // Буфер для приема пакета

void loop() {
 Udp.parsePacket();
 int sz = Udp.available();
 if (sz)
 {
  Udp.read(Buf,sz);
  digitalWrite(LED_BUILTIN, Buf[0]);
}
 
  • Like
Реакции: kab

Grem_line

New member
А вот пример передатчика с кнопкой на D0 (все в среде Ардуино)
Как видите - примеры совсем простые.
Код:
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
const char* ssid = "TEST";
const char* password = "Gacdert123";
WiFiUDP Udp;
IPAddress ip_host (192, 168, 4, 1); // Нужно подставить адрес AP

void setup() {
  pinMode(D0, INPUT);
  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("\nConnecting to "); Serial.println(ssid);
  while (WiFi.status() != WL_CONNECTED)
  delay(500);
  Serial.print(".");
  }
  Serial.println("\nConnected!");
  delay(1000);
  Serial.print("Local IP = ");
  Serial.println(WiFi.localIP());
  Udp.begin(12345);
}
void loop(){
   uint8_t data = digitalRead(D0); // Считываем состояние входа
   Udp.beginPacket(ip_host,12345); // Формируем пакет на порт 12345
   Udp.write(data);
   Udp.endPacket(); // Выдаем пакет
   delay(100);
}
 
  • Like
Реакции: kab

thoicb12

New member
А вот пример передатчика с кнопкой на D0 (все в среде Ардуино)
Как видите - примеры совсем простые.
Код:
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
const char* ssid = "TEST";
const char* password = "Gacdert123";
WiFiUDP Udp;
IPAddress ip_host (192, 168, 4, 1); // Нужно подставить адрес AP

void setup() {
  pinMode(D0, INPUT);
  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("\nConnecting to "); Serial.println(ssid);
  while (WiFi.status() != WL_CONNECTED)
  delay(500);
  Serial.print(".");
  }
  Serial.println("\nConnected!");
  delay(1000);
  Serial.print("Local IP = ");
  Serial.println(WiFi.localIP());
  Udp.begin(12345);
}
void loop(){
   uint8_t data = digitalRead(D0); // Считываем состояние входа
   Udp.beginPacket(ip_host,12345); // Формируем пакет на порт 12345
   Udp.write(data);
   Udp.endPacket(); // Выдаем пакет
   delay(100);
}
hi Grem_line
Can you give me examples of switched on off leds. Your post is enabled but not disabled
 
Сверху Снизу