Как считать данные с клиента ESP8266-01?
Мне нужна помощь: мой Arduino не получает данные и не считывает их с ESP8266-01 как с клиента.
На самом деле, сервер ESP01 и клиент ESP01 успешно взаимодействуют друг с другом, но если я подключаю Arduino Uno для чтения данных с сервера, ничего не происходит. Он вообще не получает данные.
Любая помощь будет очень ценна.
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());
}
}
@GMK, 👍-1
Обсуждение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);
}
}
,
@GMK
Смотрите также:
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- esp8266 не отвечает на AT-команды
- Разница между этими двумя платами NodeMCU?
Я бы снизил скорость передачи данных на программном последовательном порту до 9600 бод. В других сообщениях на этом сайте говорится, что ESP-SoftwareSerial работает лучше на такой скорости. (Очевидно, вам также нужно снизить скорость последовательного порта ESP.), @Code Gorilla
Спасибо dda за ваш комментарий, я пытаюсь снизить скорость передачи данных до 9600 бит/с в программном обеспечении и надеюсь получить чтение данных с ESP8266-01., @GMK