Ошибка компиляции для платы wemos d1 r2 mini

Коллеги, помогите разобраться. При компиляции скетча вылезает ошибка:

Arduino: 1.8.12 (Windows 10), Плата:»LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 921600″

In file included from C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:33,
from C:UsersProfessionalDownloadsFireFX-masterFireFX-masterfirmwareАдрескаfireLinefireLine.ino:25:
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h: In function ‘void WS2812B_sendData(uint8_t*, uint16_t, uint8_t, uint8_t*, uint8_t*, uint8_t)’:
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:51:12: error: ‘SREG’ was not declared in this scope
51 | sreg_prev=SREG;
| ^~~~
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:97:26: error: expected ‘)’ before ‘DELAY
97 | «brcc to_end nt» // перейти если уже вывели low
| ^
| )
98 | DELAY // основная задержка
|

~~~~                
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'counter'
  105 |    );
      |     ^
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'set_hi'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'data'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'set_lo'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'data'
C:Program Files (x86)ArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand 'counter'
In file included from sketchfireLine.ino.cpp:1:
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h: In constructor 'microLED::microLED(LEDdata*, int, byte)':
C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:201:60: error: cannot convert 'volatile uint32_t*' {aka 'volatile unsigned int*'} to 'const volatile uint8_t*' {aka 'const volatile unsigned char*'} in assignment
  201 | #define portOutputRegister(port)    (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO))
      |                                     ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

| |
| volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:186:16: note: in expansion of macro ‘portOutputRegister’
186 | ws2812_port = portOutputRegister(digitalPinToPort(pin));
| ^~~~~~~~~~~~~~~~~~
C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:203:60: error: cannot convert ‘volatile uint32_t*’ {aka ‘volatile unsigned int*’} to ‘volatile uint8_t*’ {aka ‘volatile unsigned char*’} in assignment
203 | #define portModeRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16E):((volatile uint32_t*) &GPE))
|

~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                            |
      |                                                            volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:187:20: note: in expansion of macro 'portModeRegister'
  187 |  ws2812_port_reg = portModeRegister(digitalPinToPort(pin));
      |                    ^~~~~~~~~~~~~

C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h: In constructor ‘microLED::microLED(LEDdata*, byte, byte, byte, M_type, M_connection, M_dir)’:
C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:201:60: error: cannot convert ‘volatile uint32_t*’ {aka ‘volatile unsigned int*’} to ‘const volatile uint8_t*’ {aka ‘const volatile unsigned char*’} in assignment
201 | #define portOutputRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO))
|

~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                            |
      |                                                            volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:195:16: note: in expansion of macro 'portOutputRegister'
  195 |  ws2812_port = portOutputRegister(digitalPinToPort(pin));
      |                ^~~~~~~~~~~~~~~

C:UsersProfessionalAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2coresesp8266/Arduino.h:203:60: error: cannot convert ‘volatile uint32_t*’ {aka ‘volatile unsigned int*’} to ‘volatile uint8_t*’ {aka ‘volatile unsigned char*’} in assignment
203 | #define portModeRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16E):((volatile uint32_t*) &GPE))
|

~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                            |
      |                                                            volatile uint32_t* {aka volatile unsigned int*}
C:Program Files (x86)ArduinolibrariesmicroLED/microLED.h:196:20: note: in expansion of macro 'portModeRegister'
  196 |  ws2812_port_reg = portModeRegister(digitalPinToPort(pin));
      |                    ^~~~~~~~~~~~~

exit status 1
Ошибка компиляции для платы LOLIN(WEMOS) D1 R2 & mini.

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»

Причем на плату ардуино уно заливается и работает. А здесь нет. Что и где нужно изменить?

Добрый день.

При компиляции для WEMOS D1 mini возникают следующие ошибки. Библиотеки все вроде бы свежие, копировал с полной заменой скачаные с гитхаба. Просьба помочь с решением:

In file included from C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:33:0,

             from C:Usersev.utkin-nbDocumentsArduinofireLinePerlinfireLinePerlin.ino:22:

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h: In function ‘void WS2812B_sendData(uint16_t*, uint16_t, uint8_t, uint8_t*, uint8_t*, uint8_t)’:

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:51:12: error: ‘SREG’ was not declared in this scope

sreg_prev=SREG;

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:98:4: error: expected ‘)’ before ‘DELAY

_DELAY_                      // основная задержка

^

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘counter’

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘set_hi’

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘data’

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘set_lo’

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘data’

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/ws2812_send.h:105:5: error: undefined named operand ‘counter’

In file included from C:Usersev.utkin-nbDocumentsArduinofireLinePerlinfireLinePerlin.ino:22:0:

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h: In constructor ‘microLED::microLED(LEDdata*, int, byte)’:

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:186:14: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘const volatile uint8_t* {aka const volatile unsigned char*}’ in assignment

ws2812_port = portOutputRegister(digitalPinToPort(pin));

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:187:18: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘volatile uint8_t* {aka volatile unsigned char*}’ in assignment

ws2812_port_reg = portModeRegister(digitalPinToPort(pin));

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h: In constructor ‘microLED::microLED(LEDdata*, byte, byte, byte, M_type, M_connection, M_dir)’:

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:195:14: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘const volatile uint8_t* {aka const volatile unsigned char*}’ in assignment

ws2812_port = portOutputRegister(digitalPinToPort(pin));

C:Usersev.utkin-nbDocumentsArduinolibrariesmicroLED/microLED.h:196:18: error: cannot convert ‘volatile uint32_t* {aka volatile unsigned int*}’ to ‘volatile uint8_t* {aka volatile unsigned char*}’ in assignment

ws2812_port_reg = portModeRegister(digitalPinToPort(pin));

exit status 1

Решил сделать умную комнату под управлением Wemos d1 pro mini.

видео в YouTube как работать с esp8266. 

сделал всё, как показано на видео.

C: Users Documents Arduino hardware esp8266com esp8266 cores esp8266 / Arduino.h: 302: 26: фатальная ошибка: pins_arduino.h: такого файла или каталога нет

компиляция прекращена.

Ошибка компиляции для платы LOLIN (WEMOS) D1 mini Pro.

Библиотеки есть все, вставленные ссылки в настройках Arduino IDE, установил пакет с платами, в менеджере плат, сделал всё.

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <ESP8266mDNS.h>
#include <EEPROM.h>
#include <ArduinoOTA.h>
extern "C" {
#include "user_interface.h";
}
bool ESP8266ControllerWifiClient_HRD = 0;
bool ESP8266ControllerWifiClient_status = 1;
bool ESP8266ControllerWifiClient_isDHCP = 1;
bool ESP8266ControllerWifiClient_IsNeedReconect = 0;
bool ESP8266ControllerWifiClient_workStatus = 1;
char ESP8266ControllerWifiClient_SSID [40] = "Nahim43";
char ESP8266ControllerWifiClient_password [40] = "55672184";
IP-адрес ESP8266ControllerWifiClient_ip (0, 0, 0, 0);
 IP-адрес ESP8266ControllerWifiClient_dns (0, 0, 0, 1);
 IP-адрес ESP8266ControllerWifiClient_gateway (0, 0, 0, 1);
IP-адрес ESP8266ControllerWifiClient_subnet (255, 255, 255, 0);
 uint8_t ESP8266ControllerWifiClient_mac [6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
bool ESP8266ControllerWifi_isNeededRestsrt = 0;
WiFiServer ESP8266ControllerWifi_tspWebServer (80);
WiFiClient ESP8266ControllerWifi_tspWebServer_client;
String ESP8266ControllerWifi_tspWebServer_client_buffer = "";
char * _ESP8266WebInterfacePagesNamesArray [] = {"Главная", "WIFI-KLIENT"}; 
char * _ESP8266WebInterfacePagesAddressesArray [] = {"../MY_SMART_ROOM", "../MY_SMART_ROOM/wifi-klient"}; 
String webSettingPageHeader1 = "HTTP / 1.1 200 OK  r  nКонтент-тип: text / html  r  n  r  n <! DOCTYPE HTML>  r  n <meta charset = " utf-8  ">  r  п <HTML>  г  п ";
String webSettingPageFooterString = "Разработано специально для собственного пользования";
String webSettingPageHeaderString = "Умная комната";
String _ESP8266WebInterfacePageButton_save = "<input type = " submit  "class = " buttonFlp  "value = " Сохранить  "> </ form>";
String _ESP8266WebInterfacePageButton_reset = "<form action = "  "method = " POST  "> <input type = " hidden  "name = " resetController  "value = " reset  "> <input type = " submit  "class = " buttonFlp  "value = " Перезагрузить  "> </ form>";
String webSettingPageMainStyle = ".menu {float: left; padding: 1%; отступ: 1%; ширина: 16%; граница: 1px сплошной черный; border-radius: 8px;} .menuItem {font-weight: 600; font- семейство: 'Times New Roman', Times, serif;} .header {отступ: 10px; слева: 0px; справа: 0px; верх: 0px; фон: # 00FFFF; выравнивание текста: по центру; font-weight: 600; шрифт -семейство: 'Times New Roman', Times, с засечками; размер шрифта: 250%;} .content {float: right; ширина: 78%;} .footer {float: left; отступ: 1%; ширина: 98% ; background: # 00FFFF; margin-top: 1%; выравнивание текста: по центру; font-weight: 600; семейство шрифтов: 'Times New Roman', Times, serif; размер шрифта: 150%;}. buttonFlp { ширина: 150px; радиус границы: 20px; фон: # 459DE5; цвет: #fff; размер шрифта: 12px; курсор: указатель; float: left; отступ: 1%; поле: 1%;}. buttonFlp: hover { фон: # 358DE5;} buttonFlp: фокус {контур: нет;} ";.
bool isNeededCommitESP8266EEprom = 0;
void setup ()
{
 EEPROM.begin (86);
if (((readByteFromEEPROM (0, 0, 0x0)))! = 148) {
(updateByteToEEPROM (0, 0, 0x0, (148)));
(updateBooleanToEEPROM (1, 0, 0x0, (1)));
(updateUnsignedLongToEEPROM (2, 0, 0x0, (0)));
(updateStringToEEPROM (6, 40, 0x0, ("55672184")));
(updateStringToEEPROM (46, 40, 0x0, ("Nahim43")));
 EEPROM.commit ();
}
ESP8266ControllerWifiClient_isDHCP = readBooleanFromEEPROM (1, 0, 0x0);
ESP8266ControllerWifiClient_ip = _ipAddressFromUnsignetLong (readUnsignedLongFromEEPROM (2, 0, 0x0));
(readStingFromEEPROM (6, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_password, 40);
(readStingFromEEPROM (46, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_SSID, 40);
ArduinoOTA.setHostname ("СМАРТ-КОМНАТА");
ArduinoOTA.setPassword ((const char *) "0686401742");
 ArduinoOTA.begin ();
WiFi.mode (WIFI_STA);
_esp8266WifiModuleClientReconnect ();
ESP8266ControllerWifi_tspWebServer.begin ();
}
void loop ()
{ESP8266ControllerWifi_tspWebServer_client = ESP8266ControllerWifi_tspWebServer.available ();
if (ESP8266ControllerWifi_tspWebServer_client) {
String _WSCReqest = "";
int _WSCPageNumber = 0;
задержка (5);
while (ESP8266ControllerWifi_tspWebServer_client.available ())
 {
  _WSCReqest.concat (символ (ESP8266ControllerWifi_tspWebServer_client.read ()));
}
ESP8266ControllerWifi_tspWebServer_client.flush ();
 _WSCPageNumber = _parseWebServerReqest (_WSCReqest);
   _sendWebServerPage (_WSCPageNumber);
}
if (isNeededCommitESP8266EEprom) {EEPROM.commit (); isNeededCommitESP8266EEprom = 0; }
if (ESP8266ControllerWifi_isNeededRestsrt) {ESP.restart ();}
if (ESP8266ControllerWifiClient_IsNeedReconect) {_esp8266WifiModuleClientReconnect (); ESP8266ControllerWifiClient_IsNeedReconect = 0; }
ArduinoOTA.handle ();
ESP8266ControllerWifiClient_status = WiFi.status () == WL_CONNECTED;
if (ESP8266ControllerWifiClient_status) {if (! ESP8266ControllerWifiClient_HRD) {ESP8266ControllerWifiClient_ip = WiFi.localIP ();
ESP8266ControllerWifiClient_subnet = WiFi.subnetMask ();
ESP8266ControllerWifiClient_gateway = WiFi.gatewayIP ();
ESP8266ControllerWifiClient_dns = WiFi.dnsIP ();
WiFi.macAddress (ESP8266ControllerWifiClient_mac);
ESP8266ControllerWifiClient_HRD = 1;
}} else {ESP8266ControllerWifiClient_HRD = 0;}





// Плата: 1




}
bool _isTimer (unsigned long startTime, unsigned long period)
  {
  unsigned long currentTime;
currentTime = миллис ();
if (currentTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period));}
  }
void _sendWebServerPage (int sendPageNumber)
{
if (sendPageNumber == -1) {
вернуть;
 }
if (sendPageNumber == 1) {_sendWebServerPage1 (); вернуть; }
if (sendPageNumber == 2) {_sendWebServerPage2 (); вернуть; }
 _sendWebServerSend404Page ();
}
void _sendWebServerSend404Page (void)

{
  ESP8266ControllerWifi_tspWebServer_client.print ("HTTP / 1.0 404 не найден  r  nContent-Type: text / html  r  n  r  n <! DOCTYPE HTML> <html> <body> <p> 404 - страница не найдена </ р> </ тело> </ HTML>  г  п ");
  задержка (1);
  ESP8266ControllerWifi_tspWebServer_client.flush ();
  ESP8266ControllerWifi_tspWebServer_client.stop ();

}
int _parseWebServerReqest (String reqestAddres)
{
int index;
int result = 0;
if ((reqestAddres.indexOf ("POST")) == 0) {
 _parsePostWebServerReqest (reqestAddres);
возврат -1;
 }
Индекс = reqestAddres.indexOf ( "/");
  reqestAddres = reqestAddres.substring (index + 1);
index = reqestAddres.indexOf ("");
reqestAddres = reqestAddres.substring (0, index);
if (reqestAddres == "MY_SMART_ROOM") {result = 1;}
if (reqestAddres == "MY_SMART_ROOM / wifi-klient") {result = 2;}
вернуть результат;
}
void _parsePostWebServerReqest (String reqestAddres)
{
 int index = reqestAddres.indexOf (" r  n  r  n");
 String paramsValue;
 String params = reqestAddres.substring (index + 4);
  while (params.length ()> 0) {
 index = params.indexOf ("&");
 if (index == -1) {
   paramsValue = params;
     params = "";
   } еще {
    paramsValue = params.substring (0, index);
    params = params.substring (индекс + 1);
  }
 _processingPostWebServerReqestData (paramsValue);
 }
 index = reqestAddres.indexOf ("Referer:");
 paramsValue = reqestAddres.substring (index + 8);
  index = paramsValue.indexOf (" r");
 paramsValue = paramsValue.substring (0, index);
 params = "HTTP / 1.0 200 OK  r  nContent-Type: text / html  r  n  r  n <! DOCTYPE HTML> <html> <head> <script type = " text / javascript  "> документ .location.replace ( "";
 params = params + paramsValue;
 params = params + ""); </ script> </ head> <body> </ body> </ html>  r  n ";
ESP8266ControllerWifi_tspWebServer_client.print (PARAMS);
  задержка (1);
ESP8266ControllerWifi_tspWebServer_client.flush ();
ESP8266ControllerWifi_tspWebServer_client.stop ();
 }
void _processingPostWebServerReqestData (String paramData)
{
индекс байта = paramData.indexOf ("=");
если (индекс <0) {возвращение;}
Ключ строки = paramData.substring (0, индекс);
Строковое значение = convertPostData (paramData.substring (index + 1));
if (key.equals (String ("resetController"))) {ESP8266ControllerWifi_isNeededRestsrt = 1; вернуть;}
if (key.equals (String ("parSetPage162179339E"))) {if (ESP8266ControllerWifiClient_isDHCP! = (value.equals (String ("on")))) {; ESP8266ControllerWifiClient_isDHCP = value.equals (String) (value) (string () on) (string) (value) (string
ESP8266ControllerWifiClient_IsNeedReconect = 1;
 updateBooleanToEEPROM (1, 0, 0x0, ESP8266ControllerWifiClient_isDHCP);
}
}
if (key.equals (String ("parSetPage222532213E"))) {if (checkIPAdressString (value)) {
 if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) {
ESP8266ControllerWifiClient_IsNeedReconect = 1;
ESP8266ControllerWifiClient_ip.fromString (значение);
 updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip)));
}}
}
if (key.equals (String ("parSetPage114204552E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_password)))) {
ESP8266ControllerWifiClient_IsNeedReconect = 1;
value.toCharArray (ESP8266ControllerWifiClient_password, 40);
 updateStringToEEPROM (6, 40, 0x0, значение);
}
}
if (key.equals (String ("parSetPage226564620E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_SSID)))) {
ESP8266ControllerWifiClient_IsNeedReconect = 1;
value.toCharArray (ESP8266ControllerWifiClient_SSID, 40);
 updateStringToEEPROM (46, 40, 0x0, значение);
}
}
if (key.equals (String ("parSetPage264864222E"))) {if (checkIPAdressString (value)) {
 if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) {
ESP8266ControllerWifiClient_IsNeedReconect = 1;
ESP8266ControllerWifiClient_ip.fromString (значение);
 updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip)));
}}
}
}
String convertPostData (String value)
{
  String result = "";
  символ чар;
  байт-код;
  int i = 0;
  String codeString;
  while (i <value.length ()) {
    символ = значение. charAt (i);
    if (symbol == '+') {
      result.concat ('');
    } еще {
      если (символ == '%')
      {
        codeString = "";
        я ++;
        codeString.concat (значение [I]);
        я ++;
        codeString.concat (значение [I]);
        code = hexStrToInt (codeString);
         Serial.println (codeString);
        Serial.println (код, HEX);
        result.concat (символ (код));
      } еще {
        result.concat (символ);
      }
    }
    я ++;
  }

  вернуть результат;
}


void _sendWebServerPage1 (void)
{
printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);

 printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<div class = " header  ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ((_ eSP8266SettingWebPageCreateMenu (0)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<div class = " content  ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ((_eSP8266SettingWebPageATextVisualElement ("", "IP-адрес", (ESP8266ControllerWifiClient_ip.toString ()), 1, 1), & ESP8266ControllerWifi_tspWebServer_clier_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer
printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<div class = " footer  ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
 printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
}
void _sendWebServerPage2 (void)
{
printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);

 printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<div class = " header  ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ((_ eSP8266SettingWebPageCreateMenu (1)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<div class = " content  ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<form action = "  "method = " POST  ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "SSID", ESP8266ControllerWifiClient_SSID, "parSetPage226564620E", "20", 0, 1)), & ESP8266ControllerWifi_vererWerWerSWWSWWSWWSWWSWWS_W_W_W_W_W_W_W_W_W_W_W_P_W
printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "PASS", ESP8266ControllerWifiClient_password, "parSetPage114204552E", "20", 0, 1)), & ESP8266ControllerWifi_verererWentWerSWWSWWSWWSWWS_W_W_Wer_Wer_Wer_W_W_W_W_W_W_P
printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("," IP-адрес ", (ESP8266ControllerWifiClient_ip.toString ())," parSetPage222532213E "," 20 ", 1, 1;
printToClient ((_eSP8266SettingWebPageCheckBoxVisualElement ("", "DHCP", ESP8266ControllerWifiClient_isDHCP, "parSetPage162179339E")), & ESP8266ControllerWifi_tspWebServerff_Wer_Wer_Wer_Wer_Wer_Server_Cr
printToClient (_ESP8266WebInterfacePageButton_save, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient (_ESP8266WebInterfacePageButton_reset, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("<div class = " footer  ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
 printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer);
}
void printToClient (строковое значение, WiFiClient * sendClient, String * sendBuffer)
{
  for (int i = 0; i <value.length (); i ++)
  {
    if (sendBuffer-> length ()> 800)
    {
      sendClient-> печать (* sendBuffer);
      * sendBuffer = "";
    }
    sendBuffer-> CONCAT (value.charAt (я));
  }
}

void commitClient (WiFiClient * sendClient, String * sendBuffer)
{
  if ((sendBuffer-> length ())> 0) {
    sendClient-> печать (* sendBuffer);
  }
  * sendBuffer = "";
  sendClient-> заподлицо ();
  sendClient-> остановки ();
}
 byte readByteFromEEPROM (int адрес, байт bitAddres, байт chipAddres)
{
вернуть EEPROM.read (адреса);
}
void updateByteToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение байта)
{
isNeededCommitESP8266EEprom = 1;
вернуть EEPROM.write (адрес, значение);
}
 bool readBooleanFromEEPROM (int адрес, байт bitAddres, байт chipAddres)
{
byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres);
return bitRead (temp, bitAddres);
}
 void updateBooleanToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение bool)
{
byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres);
bitWrite (temp, bitAddres, value);
updateByteToEEPROM (addres, bitAddres, chipAddres, temp);
}
 unsigned long readUnsignedLongFromEEPROM (int адрес, байт bitAddres, байт chipAddres)
{
байт х [4];
for (байт i = 0; i <4; i ++) {x [i] = readByteFromEEPROM ((адреса + i), bitAddres, chipAddres);}
длинная без знака * y = (длинная без знака *) & x;
вернуть y [0];
}
 void updateUnsignedLongToEEPROM (int адрес, байт bitAddres, байт chipAddres, длинное значение без знака)
{
байт * x = (байт *) & значение;
for (байт i = 0; i <4; i ++) {updateByteToEEPROM ((адрес + i), bitAddres, chipAddres, x [i]);}
}
 char readCharFromEEPROM (int адрес, байт bitAddres, байт chipAddres)
{
вернуть readByteFromEEPROM (адреса, битовые адреса, чиповые адреса);
}
 void updateCharToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение символа)
{
updateByteToEEPROM (адреса, bitAddres, chipAddres, значение);
}
 Строка readStingFromEEPROM (int addres, int dataLength, byte chipAddres)
{
String result = "";
char tempChar;
for (int i = 0; i <dataLength; i ++) {
 tempChar = readCharFromEEPROM ((адреса + i), 0, chipAddres);
 if (byte (tempChar) == 0) {
  вернуть результат;
 }
 result.concat (tempChar);
 }
вернуть результат;
}
 void updateStringToEEPROM (int addres, int dataLength, byte chipAddres, String value)
{
char tempChar;
for (int i = 0; i <dataLength; i ++) {
 if (i <value.length ()) {
 tempChar = value.charAt (i);
 } еще {
 tempChar = char (0);
 }
 updateCharToEEPROM ((адреса + i), 0, chipAddres, tempChar);
 }
}
String _eSP8266SettingWebPageAllVisualElementsHeader (стиль строки, метка строки)
{
String result = "<div";
if (style.length ()> 0) {
result.concat ("class = " ");
result.concat (стиль);
result.concat ( "" ");
}
result.concat ("> <p>");
result.concat (метка);
result.concat ( "<br>");
вернуть результат;
}
String _eSP8266SettingWebPageATextVisualElement (стиль строки, метка строки, значение строки, bool isIP, bool isClient)
{
String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label);
if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP && (! ESP8266ControllerWifiClient_status)) {result.concat ("??. ??. ??. ??");} else {result.concat (value);}
result.concat ( "</ p> </ DIV>");
вернуть результат;
}
Строка _eSP8266SettingWebPageCreateMenu (int pageIndex)
{
String result = "<div";
result.concat ( "класс = " меню  "");
result.concat ( ">");
для (int i = 0; i <2; i ++) {
result.concat ("<div");
result.concat ( "класс = " MENUITEM  "");
result.concat ( ">");
if (i == pageIndex) {result.concat (_ESP8266WebInterfacePagesNamesArray [i]);} else {
result.concat ("<a href = " ");
result.concat (_ESP8266WebInterfacePagesAddressesArray [I]);
result.concat ( ""> ");
result.concat (_ESP8266WebInterfacePagesNamesArray [I]);
result.concat ( "</a>");
}
result.concat ( "</ DIV>");
}
result.concat ( "</ DIV>");
вернуть результат;
}
String _eSP8266SettingWebPageInputFieldVisualElement (стиль строки, метка строки, значение строки, имя строки, максимальная длина строки, bool isIP, bool isClient)
{
if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP) {return _eSP8266SettingWebPageATextVisualElement (стиль, метка, значение, isIP, isClient);}
String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label);
result.concat ("<input type = " text  "name = " ");
result.concat (имя);
result.concat ("" value =  "");
result.concat (значение);
result.concat ("" maxlength =  "");
result.concat (maxlength);
result.concat (""> </ p> </ div> ");
вернуть результат;
}
String _eSP8266SettingWebPageCheckBoxVisualElement (стиль строки, метка строки, значение bool, имя строки)
{
String result = "<div";
if (style.length ()> 0) {
result.concat ( "класс = " ");
result.concat (стиль);
result.concat ( "" ");
}
result.concat ("> <label> <input type = " checkbox  "id = " ");
result.concat (имя);
result.concat ( "1 " ");
if (value) {result.concat ("флажок");}
result.concat ( "/>");
result.concat (метка);
result.concat ("</ label> <input type = " hidden  "name = " ");
result.concat (имя);
result.concat ("" id =  "");
result.concat (имя);
result.concat ( "2");
result.concat ("" value =  "");
if (value) {result.concat ("on");} else {result.concat ("off");}
 result.concat (""> <script> var el ");
result.concat (имя);
 result.concat ("= document.querySelector ('#");
result.concat (имя);
result.concat ( "1");
result.concat ("'); el");
result.concat (имя);
 result.concat (".onclick = function () {if (el");
result.concat (имя);
 result.concat (".checked) {document.getElementById ('");
result.concat (имя);
result.concat ( "2");
result.concat ("'). value =' on ';} else {document.getElementById ('");
result.concat (имя);
result.concat ( "2");
result.concat ("'). value =' off ';}} </ script> </ div>");
вернуть результат;
}
int hexStrToInt (String instring)
{
  byte len = instring.length ();
  if (len == 0) вернет 0;
  int result = 0;
  for (байт i = 0; i <8; i ++) // только первые 8 цыфар влезуть в uint32
  {
    char ch = instring [i];
    if (ch == 0) перерыв;
    результат << = 4;
    if (isdigit (ch))
      результат = результат | (ch - '0');
    иначе результат = результат | (ch - 'A' + 10);
  }
  вернуть результат;
}
 void _esp8266WifiModuleClientReconnect ()
{
 if (_checkMacAddres (ESP8266ControllerWifiClient_mac)) {wifi_set_macaddr (0, const_cast <uint8 *> (ESP8266ControllerWifiClient_mac));}
if (ESP8266ControllerWifiClient_isDHCP) {WiFi.config (0U, 0U, 0U, 0U, 0U); } еще {
WiFi.config (ESP8266ControllerWifiClient_ip, ESP8266ControllerWifiClient_gateway, ESP8266ControllerWifiClient_subnet, ESP8266ControllerWifiClient_dns, ESP8266ControllerWifiClient_dns);
}
 WiFi.begin (ESP8266ControllerWifiClient_SSID, ESP8266ControllerWifiClient_password);
}
IPAddress _ipAddressFromUnsignetLong (длинное значение без знака)
{
  IP-адрес результата;
  байт * x = (байт *) & значение;
  for (байт i = 0; i <4; i ++) {
    результат [i] = x [i];
  }
  вернуть результат;
}

bool checkIPAdressString (String value)
{
IP-адрес temp;
вернуть temp.fromString (значение);
}

IPAddress _ipAddressFromString (String value)
{
IP-адрес temp;
 temp.fromString (значение);
вернуть темп;
}

unsigned long _unsignetLongFromIPAdress (значение IPAddress)
{
  байтовый буфер [4] = {0, 0, 0, 0};
 for (байт i = 0; i <4; i ++) {
    buufer [i] = значение [i];
  }
  unsigned long * y = (unsigned long *) & buufer;
  вернуть y [0];
}
bool _checkMacAddres (байтовый массив [])
{
  результат bool = 0;
  for (байт i = 0; i <6; i ++)
  {
    if (array [i] == 255) {
      вернуть 0;
    }
    if (array [i]> 0) {
      результат = 1;
    }
  }
  вернуть результат;
}

Решил сделать умную комнату под управлением Wemos d1 pro mini.

видео в YouTube как работать с esp8266. 

сделал всё, как показано на видео.

C: Users Documents Arduino hardware esp8266com esp8266 cores esp8266 / Arduino.h: 302: 26: фатальная ошибка: pins_arduino.h: такого файла или каталога нет

компиляция прекращена.

Ошибка компиляции для платы LOLIN (WEMOS) D1 mini Pro.

Библиотеки есть все, вставленные ссылки в настройках Arduino IDE, установил пакет с платами, в менеджере плат, сделал всё.

#include <ESP8266WiFi.h> #include <WiFiUdp.h> #include <ESP8266mDNS.h> #include <EEPROM.h> #include <ArduinoOTA.h> extern "C" { #include "user_interface.h"; } bool ESP8266ControllerWifiClient_HRD = 0; bool ESP8266ControllerWifiClient_status = 1; bool ESP8266ControllerWifiClient_isDHCP = 1; bool ESP8266ControllerWifiClient_IsNeedReconect = 0; bool ESP8266ControllerWifiClient_workStatus = 1; char ESP8266ControllerWifiClient_SSID [40] = "Nahim43"; char ESP8266ControllerWifiClient_password [40] = "55672184"; IP-адрес ESP8266ControllerWifiClient_ip (0, 0, 0, 0); IP-адрес ESP8266ControllerWifiClient_dns (0, 0, 0, 1); IP-адрес ESP8266ControllerWifiClient_gateway (0, 0, 0, 1); IP-адрес ESP8266ControllerWifiClient_subnet (255, 255, 255, 0); uint8_t ESP8266ControllerWifiClient_mac [6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; bool ESP8266ControllerWifi_isNeededRestsrt = 0; WiFiServer ESP8266ControllerWifi_tspWebServer (80); WiFiClient ESP8266ControllerWifi_tspWebServer_client; String ESP8266ControllerWifi_tspWebServer_client_buffer = ""; char * _ESP8266WebInterfacePagesNamesArray [] = {"Главная", "WIFI-KLIENT"}; char * _ESP8266WebInterfacePagesAddressesArray [] = {"../MY_SMART_ROOM", "../MY_SMART_ROOM/wifi-klient"}; String webSettingPageHeader1 = "HTTP / 1.1 200 OK r nКонтент-тип: text / html r n r n <! DOCTYPE HTML> r n <meta charset = " utf-8 "> r п <HTML> г п "; String webSettingPageFooterString = "Разработано специально для собственного пользования"; String webSettingPageHeaderString = "Умная комната"; String _ESP8266WebInterfacePageButton_save = "<input type = " submit "class = " buttonFlp "value = " Сохранить "> </ form>"; String _ESP8266WebInterfacePageButton_reset = "<form action = " "method = " POST "> <input type = " hidden "name = " resetController "value = " reset "> <input type = " submit "class = " buttonFlp "value = " Перезагрузить "> </ form>"; String webSettingPageMainStyle = ".menu {float: left; padding: 1%; отступ: 1%; ширина: 16%; граница: 1px сплошной черный; border-radius: 8px;} .menuItem {font-weight: 600; font- семейство: 'Times New Roman', Times, serif;} .header {отступ: 10px; слева: 0px; справа: 0px; верх: 0px; фон: # 00FFFF; выравнивание текста: по центру; font-weight: 600; шрифт -семейство: 'Times New Roman', Times, с засечками; размер шрифта: 250%;} .content {float: right; ширина: 78%;} .footer {float: left; отступ: 1%; ширина: 98% ; background: # 00FFFF; margin-top: 1%; выравнивание текста: по центру; font-weight: 600; семейство шрифтов: 'Times New Roman', Times, serif; размер шрифта: 150%;}. buttonFlp { ширина: 150px; радиус границы: 20px; фон: # 459DE5; цвет: #fff; размер шрифта: 12px; курсор: указатель; float: left; отступ: 1%; поле: 1%;}. buttonFlp: hover { фон: # 358DE5;} buttonFlp: фокус {контур: нет;} ";. bool isNeededCommitESP8266EEprom = 0; void setup () { EEPROM.begin (86); if (((readByteFromEEPROM (0, 0, 0x0)))! = 148) { (updateByteToEEPROM (0, 0, 0x0, (148))); (updateBooleanToEEPROM (1, 0, 0x0, (1))); (updateUnsignedLongToEEPROM (2, 0, 0x0, (0))); (updateStringToEEPROM (6, 40, 0x0, ("55672184"))); (updateStringToEEPROM (46, 40, 0x0, ("Nahim43"))); EEPROM.commit (); } ESP8266ControllerWifiClient_isDHCP = readBooleanFromEEPROM (1, 0, 0x0); ESP8266ControllerWifiClient_ip = _ipAddressFromUnsignetLong (readUnsignedLongFromEEPROM (2, 0, 0x0)); (readStingFromEEPROM (6, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_password, 40); (readStingFromEEPROM (46, 40, 0x0)). toCharArray (ESP8266ControllerWifiClient_SSID, 40); ArduinoOTA.setHostname ("СМАРТ-КОМНАТА"); ArduinoOTA.setPassword ((const char *) "0686401742"); ArduinoOTA.begin (); WiFi.mode (WIFI_STA); _esp8266WifiModuleClientReconnect (); ESP8266ControllerWifi_tspWebServer.begin (); } void loop () {ESP8266ControllerWifi_tspWebServer_client = ESP8266ControllerWifi_tspWebServer.available (); if (ESP8266ControllerWifi_tspWebServer_client) { String _WSCReqest = ""; int _WSCPageNumber = 0; задержка (5); while (ESP8266ControllerWifi_tspWebServer_client.available ()) { _WSCReqest.concat (символ (ESP8266ControllerWifi_tspWebServer_client.read ())); } ESP8266ControllerWifi_tspWebServer_client.flush (); _WSCPageNumber = _parseWebServerReqest (_WSCReqest); _sendWebServerPage (_WSCPageNumber); } if (isNeededCommitESP8266EEprom) {EEPROM.commit (); isNeededCommitESP8266EEprom = 0; } if (ESP8266ControllerWifi_isNeededRestsrt) {ESP.restart ();} if (ESP8266ControllerWifiClient_IsNeedReconect) {_esp8266WifiModuleClientReconnect (); ESP8266ControllerWifiClient_IsNeedReconect = 0; } ArduinoOTA.handle (); ESP8266ControllerWifiClient_status = WiFi.status () == WL_CONNECTED; if (ESP8266ControllerWifiClient_status) {if (! ESP8266ControllerWifiClient_HRD) {ESP8266ControllerWifiClient_ip = WiFi.localIP (); ESP8266ControllerWifiClient_subnet = WiFi.subnetMask (); ESP8266ControllerWifiClient_gateway = WiFi.gatewayIP (); ESP8266ControllerWifiClient_dns = WiFi.dnsIP (); WiFi.macAddress (ESP8266ControllerWifiClient_mac); ESP8266ControllerWifiClient_HRD = 1; }} else {ESP8266ControllerWifiClient_HRD = 0;} // Плата: 1 } bool _isTimer (unsigned long startTime, unsigned long period) { unsigned long currentTime; currentTime = миллис (); if (currentTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period));} } void _sendWebServerPage (int sendPageNumber) { if (sendPageNumber == -1) { вернуть; } if (sendPageNumber == 1) {_sendWebServerPage1 (); вернуть; } if (sendPageNumber == 2) {_sendWebServerPage2 (); вернуть; } _sendWebServerSend404Page (); } void _sendWebServerSend404Page (void) { ESP8266ControllerWifi_tspWebServer_client.print ("HTTP / 1.0 404 не найден r nContent-Type: text / html r n r n <! DOCTYPE HTML> <html> <body> <p> 404 - страница не найдена </ р> </ тело> </ HTML> г п "); задержка (1); ESP8266ControllerWifi_tspWebServer_client.flush (); ESP8266ControllerWifi_tspWebServer_client.stop (); } int _parseWebServerReqest (String reqestAddres) { int index; int result = 0; if ((reqestAddres.indexOf ("POST")) == 0) { _parsePostWebServerReqest (reqestAddres); возврат -1; } Индекс = reqestAddres.indexOf ( "/"); reqestAddres = reqestAddres.substring (index + 1); index = reqestAddres.indexOf (""); reqestAddres = reqestAddres.substring (0, index); if (reqestAddres == "MY_SMART_ROOM") {result = 1;} if (reqestAddres == "MY_SMART_ROOM / wifi-klient") {result = 2;} вернуть результат; } void _parsePostWebServerReqest (String reqestAddres) { int index = reqestAddres.indexOf (" r n r n"); String paramsValue; String params = reqestAddres.substring (index + 4); while (params.length ()> 0) { index = params.indexOf ("&"); if (index == -1) { paramsValue = params; params = ""; } еще { paramsValue = params.substring (0, index); params = params.substring (индекс + 1); } _processingPostWebServerReqestData (paramsValue); } index = reqestAddres.indexOf ("Referer:"); paramsValue = reqestAddres.substring (index + 8); index = paramsValue.indexOf (" r"); paramsValue = paramsValue.substring (0, index); params = "HTTP / 1.0 200 OK r nContent-Type: text / html r n r n <! DOCTYPE HTML> <html> <head> <script type = " text / javascript "> документ .location.replace ( ""; params = params + paramsValue; params = params + ""); </ script> </ head> <body> </ body> </ html> r n "; ESP8266ControllerWifi_tspWebServer_client.print (PARAMS); задержка (1); ESP8266ControllerWifi_tspWebServer_client.flush (); ESP8266ControllerWifi_tspWebServer_client.stop (); } void _processingPostWebServerReqestData (String paramData) { индекс байта = paramData.indexOf ("="); если (индекс <0) {возвращение;} Ключ строки = paramData.substring (0, индекс); Строковое значение = convertPostData (paramData.substring (index + 1)); if (key.equals (String ("resetController"))) {ESP8266ControllerWifi_isNeededRestsrt = 1; вернуть;} if (key.equals (String ("parSetPage162179339E"))) {if (ESP8266ControllerWifiClient_isDHCP! = (value.equals (String ("on")))) {; ESP8266ControllerWifiClient_isDHCP = value.equals (String) (value) (string () on) (string) (value) (string ESP8266ControllerWifiClient_IsNeedReconect = 1; updateBooleanToEEPROM (1, 0, 0x0, ESP8266ControllerWifiClient_isDHCP); } } if (key.equals (String ("parSetPage222532213E"))) {if (checkIPAdressString (value)) { if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; ESP8266ControllerWifiClient_ip.fromString (значение); updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))); }} } if (key.equals (String ("parSetPage114204552E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_password)))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; value.toCharArray (ESP8266ControllerWifiClient_password, 40); updateStringToEEPROM (6, 40, 0x0, значение); } } if (key.equals (String ("parSetPage226564620E"))) {if (! (value.equals (String (ESP8266ControllerWifiClient_SSID)))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; value.toCharArray (ESP8266ControllerWifiClient_SSID, 40); updateStringToEEPROM (46, 40, 0x0, значение); } } if (key.equals (String ("parSetPage264864222E"))) {if (checkIPAdressString (value)) { if ((_unsignetLongFromIPAdress (_ipAddressFromString (value)))! = (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))) { ESP8266ControllerWifiClient_IsNeedReconect = 1; ESP8266ControllerWifiClient_ip.fromString (значение); updateUnsignedLongToEEPROM (2, 0, 0x0, (_unsignetLongFromIPAdress (ESP8266ControllerWifiClient_ip))); }} } } String convertPostData (String value) { String result = ""; символ чар; байт-код; int i = 0; String codeString; while (i <value.length ()) { символ = значение. charAt (i); if (symbol == '+') { result.concat (''); } еще { если (символ == '%') { codeString = ""; я ++; codeString.concat (значение [I]); я ++; codeString.concat (значение [I]); code = hexStrToInt (codeString); Serial.println (codeString); Serial.println (код, HEX); result.concat (символ (код)); } еще { result.concat (символ); } } я ++; } вернуть результат; } void _sendWebServerPage1 (void) { printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " header ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_ eSP8266SettingWebPageCreateMenu (0)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " content ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_eSP8266SettingWebPageATextVisualElement ("", "IP-адрес", (ESP8266ControllerWifiClient_ip.toString ()), 1, 1), & ESP8266ControllerWifi_tspWebServer_clier_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer_Wer printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " footer ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); } void _sendWebServerPage2 (void) { printToClient (webSettingPageHeader1, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<head> <style>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((webSettingPageMainStyle + ""), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("" </ style> ", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ head>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<body>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " header ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageHeaderString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_ eSP8266SettingWebPageCreateMenu (1)), & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " content ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<form action = " "method = " POST ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "SSID", ESP8266ControllerWifiClient_SSID, "parSetPage226564620E", "20", 0, 1)), & ESP8266ControllerWifi_vererWerWerSWWSWWSWWSWWSWWS_W_W_W_W_W_W_W_W_W_W_W_P_W printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("", "PASS", ESP8266ControllerWifiClient_password, "parSetPage114204552E", "20", 0, 1)), & ESP8266ControllerWifi_verererWentWerSWWSWWSWWSWWS_W_W_Wer_Wer_Wer_W_W_W_W_W_W_P printToClient ((_eSP8266SettingWebPageInputFieldVisualElement ("," IP-адрес ", (ESP8266ControllerWifiClient_ip.toString ())," parSetPage222532213E "," 20 ", 1, 1; printToClient ((_eSP8266SettingWebPageCheckBoxVisualElement ("", "DHCP", ESP8266ControllerWifiClient_isDHCP, "parSetPage162179339E")), & ESP8266ControllerWifi_tspWebServerff_Wer_Wer_Wer_Wer_Wer_Server_Cr printToClient (_ESP8266WebInterfacePageButton_save, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (_ESP8266WebInterfacePageButton_reset, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("<div class = " footer ">", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient (webSettingPageFooterString, & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ div>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); printToClient ("</ body> </ html>", & ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); commitClient (& ESP8266ControllerWifi_tspWebServer_client, & ESP8266ControllerWifi_tspWebServer_client_buffer); } void printToClient (строковое значение, WiFiClient * sendClient, String * sendBuffer) { for (int i = 0; i <value.length (); i ++) { if (sendBuffer-> length ()> 800) { sendClient-> печать (* sendBuffer); * sendBuffer = ""; } sendBuffer-> CONCAT (value.charAt (я)); } } void commitClient (WiFiClient * sendClient, String * sendBuffer) { if ((sendBuffer-> length ())> 0) { sendClient-> печать (* sendBuffer); } * sendBuffer = ""; sendClient-> заподлицо (); sendClient-> остановки (); } byte readByteFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { вернуть EEPROM.read (адреса); } void updateByteToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение байта) { isNeededCommitESP8266EEprom = 1; вернуть EEPROM.write (адрес, значение); } bool readBooleanFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres); return bitRead (temp, bitAddres); } void updateBooleanToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение bool) { byte temp = readByteFromEEPROM (addres, bitAddres, chipAddres); bitWrite (temp, bitAddres, value); updateByteToEEPROM (addres, bitAddres, chipAddres, temp); } unsigned long readUnsignedLongFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { байт х [4]; for (байт i = 0; i <4; i ++) {x [i] = readByteFromEEPROM ((адреса + i), bitAddres, chipAddres);} длинная без знака * y = (длинная без знака *) & x; вернуть y [0]; } void updateUnsignedLongToEEPROM (int адрес, байт bitAddres, байт chipAddres, длинное значение без знака) { байт * x = (байт *) & значение; for (байт i = 0; i <4; i ++) {updateByteToEEPROM ((адрес + i), bitAddres, chipAddres, x [i]);} } char readCharFromEEPROM (int адрес, байт bitAddres, байт chipAddres) { вернуть readByteFromEEPROM (адреса, битовые адреса, чиповые адреса); } void updateCharToEEPROM (int адрес, байт bitAddres, байт chipAddres, значение символа) { updateByteToEEPROM (адреса, bitAddres, chipAddres, значение); } Строка readStingFromEEPROM (int addres, int dataLength, byte chipAddres) { String result = ""; char tempChar; for (int i = 0; i <dataLength; i ++) { tempChar = readCharFromEEPROM ((адреса + i), 0, chipAddres); if (byte (tempChar) == 0) { вернуть результат; } result.concat (tempChar); } вернуть результат; } void updateStringToEEPROM (int addres, int dataLength, byte chipAddres, String value) { char tempChar; for (int i = 0; i <dataLength; i ++) { if (i <value.length ()) { tempChar = value.charAt (i); } еще { tempChar = char (0); } updateCharToEEPROM ((адреса + i), 0, chipAddres, tempChar); } } String _eSP8266SettingWebPageAllVisualElementsHeader (стиль строки, метка строки) { String result = "<div"; if (style.length ()> 0) { result.concat ("class = " "); result.concat (стиль); result.concat ( "" "); } result.concat ("> <p>"); result.concat (метка); result.concat ( "<br>"); вернуть результат; } String _eSP8266SettingWebPageATextVisualElement (стиль строки, метка строки, значение строки, bool isIP, bool isClient) { String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label); if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP && (! ESP8266ControllerWifiClient_status)) {result.concat ("??. ??. ??. ??");} else {result.concat (value);} result.concat ( "</ p> </ DIV>"); вернуть результат; } Строка _eSP8266SettingWebPageCreateMenu (int pageIndex) { String result = "<div"; result.concat ( "класс = " меню ""); result.concat ( ">"); для (int i = 0; i <2; i ++) { result.concat ("<div"); result.concat ( "класс = " MENUITEM ""); result.concat ( ">"); if (i == pageIndex) {result.concat (_ESP8266WebInterfacePagesNamesArray [i]);} else { result.concat ("<a href = " "); result.concat (_ESP8266WebInterfacePagesAddressesArray [I]); result.concat ( ""> "); result.concat (_ESP8266WebInterfacePagesNamesArray [I]); result.concat ( "</a>"); } result.concat ( "</ DIV>"); } result.concat ( "</ DIV>"); вернуть результат; } String _eSP8266SettingWebPageInputFieldVisualElement (стиль строки, метка строки, значение строки, имя строки, максимальная длина строки, bool isIP, bool isClient) { if (isClient && isIP && ESP8266ControllerWifiClient_isDHCP) {return _eSP8266SettingWebPageATextVisualElement (стиль, метка, значение, isIP, isClient);} String result = _eSP8266SettingWebPageAllVisualElementsHeader (style, label); result.concat ("<input type = " text "name = " "); result.concat (имя); result.concat ("" value = ""); result.concat (значение); result.concat ("" maxlength = ""); result.concat (maxlength); result.concat (""> </ p> </ div> "); вернуть результат; } String _eSP8266SettingWebPageCheckBoxVisualElement (стиль строки, метка строки, значение bool, имя строки) { String result = "<div"; if (style.length ()> 0) { result.concat ( "класс = " "); result.concat (стиль); result.concat ( "" "); } result.concat ("> <label> <input type = " checkbox "id = " "); result.concat (имя); result.concat ( "1 " "); if (value) {result.concat ("флажок");} result.concat ( "/>"); result.concat (метка); result.concat ("</ label> <input type = " hidden "name = " "); result.concat (имя); result.concat ("" id = ""); result.concat (имя); result.concat ( "2"); result.concat ("" value = ""); if (value) {result.concat ("on");} else {result.concat ("off");} result.concat (""> <script> var el "); result.concat (имя); result.concat ("= document.querySelector ('#"); result.concat (имя); result.concat ( "1"); result.concat ("'); el"); result.concat (имя); result.concat (".onclick = function () {if (el"); result.concat (имя); result.concat (".checked) {document.getElementById ('"); result.concat (имя); result.concat ( "2"); result.concat ("'). value =' on ';} else {document.getElementById ('"); result.concat (имя); result.concat ( "2"); result.concat ("'). value =' off ';}} </ script> </ div>"); вернуть результат; } int hexStrToInt (String instring) { byte len = instring.length (); if (len == 0) вернет 0; int result = 0; for (байт i = 0; i <8; i ++) // только первые 8 цыфар влезуть в uint32 { char ch = instring [i]; if (ch == 0) перерыв; результат << = 4; if (isdigit (ch)) результат = результат | (ch - '0'); иначе результат = результат | (ch - 'A' + 10); } вернуть результат; } void _esp8266WifiModuleClientReconnect () { if (_checkMacAddres (ESP8266ControllerWifiClient_mac)) {wifi_set_macaddr (0, const_cast <uint8 *> (ESP8266ControllerWifiClient_mac));} if (ESP8266ControllerWifiClient_isDHCP) {WiFi.config (0U, 0U, 0U, 0U, 0U); } еще { WiFi.config (ESP8266ControllerWifiClient_ip, ESP8266ControllerWifiClient_gateway, ESP8266ControllerWifiClient_subnet, ESP8266ControllerWifiClient_dns, ESP8266ControllerWifiClient_dns); } WiFi.begin (ESP8266ControllerWifiClient_SSID, ESP8266ControllerWifiClient_password); } IPAddress _ipAddressFromUnsignetLong (длинное значение без знака) { IP-адрес результата; байт * x = (байт *) & значение; for (байт i = 0; i <4; i ++) { результат [i] = x [i]; } вернуть результат; } bool checkIPAdressString (String value) { IP-адрес temp; вернуть temp.fromString (значение); } IPAddress _ipAddressFromString (String value) { IP-адрес temp; temp.fromString (значение); вернуть темп; } unsigned long _unsignetLongFromIPAdress (значение IPAddress) { байтовый буфер [4] = {0, 0, 0, 0}; for (байт i = 0; i <4; i ++) { buufer [i] = значение [i]; } unsigned long * y = (unsigned long *) & buufer; вернуть y [0]; } bool _checkMacAddres (байтовый массив []) { результат bool = 0; for (байт i = 0; i <6; i ++) { if (array [i] == 255) { вернуть 0; } if (array [i]> 0) { результат = 1; } } вернуть результат; }

wemosПодробный обзор Arduino совместимого контроллера WeMos D1 R2 на базе ESP8266.

На днях получил посылку из Китая с платой контроллера WeMos D1 R2 на базе ESP8266. На мой взгляд, этот девайс заслуживает особого внимания, так как такого функционала за смешную цену я больше нигде не встречал. Наконец-то появился бюджетный вариант со встроенным Wi-Fi.

Внешний вид WeMos D1 R2

wemos

wemos

Технические характеристики WeMos D1 R2 на ESP8266

  • 11 цифровых входов / выходов. Все выводы  поддерживают interrupt/pwm/I2C/one-wire (за исключением D0)
  • 1 аналоговый вход (максимальное входное напряжение 3,3 В)
  • Micro USB разъем
  • Разъем питания (9-24 В)
  • Поддержка Arduino IDE
  • Микроконтроллер ESP-8266EX
  • Частота микроконтроллера 80MHz/160MHz
  • Flash память 4 Мб
  • Программирование через Serial или OTA (беспроводная загрузка программного кода по Wi-Fi)
  • Наличие WI-FI модуля

Назначение выводов WeMos D1 R2

wemos

Драйвера для WeMos D1 R2

Подключаем контроллер к USB порту компьютера micro USB кабелем.

Скачиваем архив с драйверами:

ch341ser_win.zip (178,9 KiB, 9 280 hits)

Добавлено: драйвера WeMos под Windows 10

wemos-driver-win10.zip (6,9 MiB, 5 189 hits)

После установки драйверов проверяем состояние в диспетчере устройств.

wemos

Настройка Arduino IDE для работы с WeMos D1 R2

Запускаем Arduino IDE 1.6.5 или выше (у меня 1.6.7).

wemos

Заходим в настройки

wemos

wemos

В строке “Дополнительная ссылка для Менеджера плат” вводим URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json и жмем на кнопку в конце строки, чтобы убедиться, что адрес был добавлен.

wemos

wemos

Жмем кнопку OK в этом окне, а затем в окне настроек.

Заходим в Менеджер плат через меню Инструменты

wemos

wemos

Ищем наш контроллер

wemos

Жмем на кнопку Установить

Начнется загрузка необходимых модулей. Придется немного подождать.

wemos

После окончания загрузки жмем на кнопку Закрыть

wemos

Установка модулей завершена.

Теперь можем выбрать наш контроллер для работы.

wemos

Я пока без понятия, как работать с этим контроллером, поэтому решил добавить примеры исходных кодов.

D1_mini.zip (23,4 KiB, 6 403 hits)

Скачайте архив и распакуйте его содержимое в arduino-1.6.7examples

Перезапустите Arduino IDE.

Теперь в примеры появились примеры использования:

wemos

Перед загрузкой скетчей через Serial не забудьте выбрать режимы работы контроллера:

Настройка WeMos D1 R2 на ESP8266

Загрузка скетчей:

wemos

Частота:

wemos

Размер памяти:

wemos

Скорость передачи данных 921600

wemos

Номер COM порта:

wemos

Проверка работы WeMos D1 R2

Для теста я залил скетч из примера сканирования Wi-Fi.

wemos

#include «ESP8266WiFi.h»

void setup() {
Serial.begin(115200);

// Set WiFi to station mode and disconnect from an AP if it was previously connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);

Serial.println(«Setup done»);
}

void loop() {
Serial.println(«scan start»);

// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
Serial.println(«scan done»);
if (n == 0)
Serial.println(«no networks found»);
else
{
Serial.print(n);
Serial.println(» networks found»);
for (int i = 0; i < n; ++i)
{
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(«: «);
Serial.print(WiFi.SSID(i));
Serial.print(» («);
Serial.print(WiFi.RSSI(i));
Serial.print(«)»);
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?» «:»*»);
delay(10);
}
}
Serial.println(«»);

// Wait a bit before scanning again
delay(5000);
}

Результат работы скетча:

wemos

Возможные проблемы

Ошибка компиляции для платы WeMos D1 R2 & mini

При появлении сообщения Ошибка компиляции для платы WeMos D1 R2 & mini необходимо в Arduino IDE зайти в меню Файл — Настройки

Нажать на путь к папке размещения скаченных дополнений (отмечен на картинке)

Ошибка компиляции для платы WeMos D1 R2 & mini
В открывшемся проводнике заходим в папку packages
Ошибка компиляции для платы WeMos D1 R2 & mini
Удаляем из нее папку esp8266
Ошибка компиляции для платы WeMos D1 R2 & mini
После этого перезапускаем Arduino IDE и заново через меню Инструменты — Плата…. — Менеджер плат устанавливаем дополнение для работы с Wemos.
Ошибка компиляции для платы WeMos D1 R2 & mini

Справочная информация по WeMos

  • Официальный сайт WeMos

Спасибо, что прочитали :)

Понравилась статья? Поделить с друзьями:
  • Ошибка компиляции для платы nodemcu
  • Ошибка компиляции для платы lgt8f328p lqfp32 minievb
  • Ошибка компиляции для платы lgt8f328
  • Ошибка компиляции для платы generic stm32f103c series
  • Ошибка компиляции microsoft vbscript предполагается наличие идентификатора