Я пытаюсь установить отношение передатчик-приемник между двумя NodeMCU (ESP-12e), используя WiFi.У меня один NodeMCU («передатчик») настроен как сервер, а другой («приемник») - как клиент.Передатчик считывает аналоговое значение и отправляет его на приемник, который выводит его в цифровом формате через 8 светодиодов.Передатчик говорит, что сеть активна, но клиент не может подключиться, и когда я смотрю в моем менеджере WiFi на ноутбуке, там тоже нет сети.Может кто-нибудь сказать мне, что я делаю не так?Это что-то в моем коде или как настроена плата?
Код передатчика / сервера:
#include <ESP8266WiFi.h>
#define PORT 8555
#define LED0 13
#define LED1 14
#define ADC 0
const char* NETWORK = "NodeMCU";
const char* PASSKEY = "asdf1234";
WiFiServer host(PORT);
WiFiClient node;
IPAddress IP(192,168,4,1);
IPAddress gateway(192,168,4,1);
IPAddress subnet(255,255,255,0);
void setup() {
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(ADC, INPUT);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
WiFi.disconnect();
WiFi.mode(WIFI_AP);
WiFi.softAP(NETWORK, PASSKEY);
WiFi.softAPConfig(IP, gateway, subnet);
delay(100);
WiFi.begin(NETWORK, PASSKEY);
delay(100);
host.begin();
delay(100);
digitalWrite(LED1, HIGH);
}
void loop() {
if (node.connected()) digitalWrite(LED0, HIGH);
else digitalWrite(LED0, LOW);
host.write(analogRead(ADC) / 4);
}
Код получателя / клиента:
#include <ESP8266WiFi.h>
#define PORT 8555
#define DAC0 16
#define DAC1 5
#define DAC2 4
#define DAC3 2
#define DAC4 14
#define DAC5 12
#define DAC6 13
#define DAC7 15
const char* NETWORK = "NodeMCU";
const char* PASSKEY = "asdf1234";
IPAddress hostIP(192,168,4,1);
WiFiClient node;
void setup() {
pinMode(DAC0, OUTPUT);
pinMode(DAC1, OUTPUT);
pinMode(DAC2, OUTPUT);
pinMode(DAC3, OUTPUT);
pinMode(DAC4, OUTPUT);
pinMode(DAC5, OUTPUT);
pinMode(DAC6, OUTPUT);
pinMode(DAC7, OUTPUT);
digitalWrite(DAC7, HIGH);
WiFi.disconnect();
WiFi.mode(WIFI_STA);
WiFi.begin(NETWORK, PASSKEY);
while (WiFi.status() != WL_CONNECTED) { // <-- gets stuck here
digitalWrite(DAC7, LOW);
delay(200);
digitalWrite(DAC7, HIGH);
delay(200);
}
if(node.connect(hostIP, PORT)) digitalWrite(DAC7, LOW);
}
void loop() {
if (node.available()) adcWrite(node.read());
}
void adcWrite(byte level) {
bool vals[8];
for (int i = 0; i < 8; i++) {
vals[i] = level % 2;
level /= 2;
}
digitalWrite(DAC0, vals[0]);
digitalWrite(DAC1, vals[1]);
digitalWrite(DAC2, vals[2]);
digitalWrite(DAC3, vals[3]);
digitalWrite(DAC4, vals[4]);
digitalWrite(DAC5, vals[5]);
digitalWrite(DAC6, vals[6]);
digitalWrite(DAC7, vals[7]);
}
ПортыLED0 и LED1 на TX и DAC0-7 на RX подключены к светодиодам, АЦП на TX подключен к потенциометру 10 кОм.Когда я запускаю код, LED0 выключен, LED1 включен, а DAC7 мигает бесконечно.