Связь TX / RX с NodeMCU - PullRequest
       14

Связь TX / RX с NodeMCU

0 голосов
/ 24 февраля 2019

Я пытаюсь установить отношение передатчик-приемник между двумя 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 мигает бесконечно.

...