Как считать данные с клиента ESP8266-01?

Мне нужна помощь: мой Arduino не получает данные и не считывает их с ESP8266-01 как с клиента.

На самом деле, сервер ESP01 и клиент ESP01 успешно взаимодействуют друг с другом, но если я подключаю Arduino Uno для чтения данных с сервера, ничего не происходит. Он вообще не получает данные.

Любая помощь будет очень ценна.

NodeMCUPyFlasher использую ESplorer IDE Lua-сервер:

-- GMKSoft
--*************************
--    ESP8266 Server
--*************************

--*************************
--  Static Configuration
--*************************
cfg =
{
    ip="192.168.255.101",
    netmask="255.255.255.0",
    gateway="192.168.0.1"
}
wifi.ap.setip(cfg)

wifi.setmode(wifi.STATIONAP);
wifi.ap.config({ssid="GMKSoft",pwd="GMKSoftESP"});
print("Server IP Address:",wifi.ap.getip())

sv = net.createServer(net.TCP) 
sv:listen(8080, function(conn)
    conn:on("receive", function(conn, receivedData) 
        print("Received Data: " .. receivedData)         
    end) 
    conn:on("sent", function(conn) 
      collectgarbage()
    end)
end)

Клиентский lua:

-- GMKSoft
--*************************
--    ESP8266 Client
--*************************

--*************************
--  Static Configuration
--*************************
client_ip="192.168.255.102"
client_netmask="255.255.255.0"
client_gateway="192.168.0.1"

wifi.setmode(wifi.STATION)
wifi.setphymode(wifi.PHYMODE_N) 
wifi.sta.config("GMKSoft","GMKSoftESP") -- connecting to server
wifi.sta.connect()
if client_ip ~= "" then
    wifi.sta.setip({ip=client_ip,netmask=client_netmask,gateway=client_gateway})
end 

tmr.alarm(1, 2000, 1, function()

     if(wifi.sta.getip()~=nil) then
          tmr.stop(1)
          print("Connected!")
          print("Client IP Address:",wifi.sta.getip())
          cl=net.createConnection(net.TCP, 0)
          cl:connect(8080,"192.168.255.101")

          tmr.alarm(2, 5000, 1, function() 
            cl:send("Hello World!")                  
          end)

         tmr.stop(2)
         print("Going to sleep")
         wifi.sta.sleeptype(wifi.MODEM_SLEEP)
      else
         print("Connecting...")
      end
end)

Код Arduino:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // Открываем последовательную связь и ждем открытия порта:
  Serial.begin(115200);
  while (!Serial) {
    ; // дождитесь подключения последовательного порта. Требуется только для собственного USB-порта.
  }
  // установить скорость передачи данных для порта SoftwareSerial
  mySerial.begin(115200);
}

void loop() {
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

, 👍-1

Обсуждение

Я бы снизил скорость передачи данных на программном последовательном порту до 9600 бод. В других сообщениях на этом сайте говорится, что ESP-SoftwareSerial работает лучше на такой скорости. (Очевидно, вам также нужно снизить скорость последовательного порта ESP.), @Code Gorilla

Спасибо dda за ваш комментарий, я пытаюсь снизить скорость передачи данных до 9600 бит/с в программном обеспечении и надеюсь получить чтение данных с ESP8266-01., @GMK


1 ответ


1

Я успешно взаимодействую с двумя модулями esp01 в качестве AP и STATION.

ESP01 в качестве сервера, пожалуйста, прошейте его с помощью NodeMCU-PyFlasher-2.1 и используйте этот bin-файл nodemcu-master-7-modules-2017-11-23-15-58-17-integer.bin

Я собираю его отсюда

Вот код сервера, я использую скрипт lua ESPPlorer IDE:

cfg={}
cfg.ssid="GMKWiFi"
cfg.pwd="GMKSoft2627"

dhcp_config ={}
dhcp_config.start = "192.168.1.100"
wifi.ap.dhcp.config(dhcp_config)

print("ESP8266 Server")
wifi.setmode(wifi.STATIONAP);
wifi.ap.config(cfg);
print("Server IP Address:",wifi.ap.getip())

sv = net.createServer(net.TCP) 
sv:listen(80, function(conn)
    conn:on("receive", function(conn, receivedData) 
        print(receivedData)         
    end) 
    conn:on("sent", function(conn) 
      collectgarbage()
    end)
end)

Вот код клиента. Я использую Arduino IDE.

#include <ESP8266WiFi.h>
const char* ssid     = "yourSSID";         // SSID
const char* password = "yourpassword";     // Пароль
const char* host = "192.168.4.1";         // IP-адрес сервера
const int   port = 80;                    // Порт сервера
const int   watchdog = 5000;              // Частота сторожевого таймера
unsigned long previousMillis = millis(); 

void setup() {
  Serial.begin(115200);
  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");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  unsigned long currentMillis = millis();

  if ( currentMillis - previousMillis > watchdog ) {
    previousMillis = currentMillis;
    WiFiClient client;

    if (!client.connect(host, port)) {
      Serial.println("connection failed");
      return;
    }

    String url;
    url += "R1";

    client.print(url);
  }
}
,