• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Общие вопросы по Arduino IDE для ESP8266

Vitalii9999

New member
Добрый день, подскажите пожалуйста пытаюсь подружить esp8266 с arduino ide делаю все как в первой странице темы (устанавливаю плату esp8266 через менеджер плат, выбираю ее ) но при компиляции любого скетча (даже blink из примеров по esp) выдает ошибку компиляции
In file included from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\string:41:0,

from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\random:41,

from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:65,

from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:62,

from C:\Documents and Settings\Admin\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Arduino.h:255,

from sketch\Blink.ino.cpp:1:

c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\allocator.h:46:75: fatal error: bits/c++allocator.h: No such file or directory

#include <bits/c++allocator.h> // Define the base class to std::allocator.
^

compilation terminated.

exit status 1
Ошибка компиляции для платы NodeMCU 0.9 (ESP-12 Module).

пробовал на трех версиях ide 1.8.5 1.6.4 1.8.6 с разными скетчами результат один и тот же.
система windows XP
 

nikolz

Well-known member
Добрый день, подскажите пожалуйста пытаюсь подружить esp8266 с arduino ide делаю все как в первой странице темы (устанавливаю плату esp8266 через менеджер плат, выбираю ее ) но при компиляции любого скетча (даже blink из примеров по esp) выдает ошибку компиляции
In file included from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\string:41:0,

from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\random:41,

from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:65,

from c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:62,

from C:\Documents and Settings\Admin\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Arduino.h:255,

from sketch\Blink.ino.cpp:1:

c:\documents and settings\admin\local settings\application data\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\allocator.h:46:75: fatal error: bits/c++allocator.h: No such file or directory

#include <bits/c++allocator.h> // Define the base class to std::allocator.
^

compilation terminated.

exit status 1
Ошибка компиляции для платы NodeMCU 0.9 (ESP-12 Module).

пробовал на трех версиях ide 1.8.5 1.6.4 1.8.6 с разными скетчами результат один и тот же.
система windows XP
bits/c++allocator.h: No such file or directory - не нашел allocator.h
 

Vitalii9999

New member
Всем спасибо вопрос решил. Видимо дело было в пробелах и длинных именах к папке arduino15. Решение нашел на
суть в том что в папку где установлена arduino c:\ProgramFiles\arduino
создаем папку portable и в нее переносим все содержимое в месте с папкой ...Application Data/Arduino15.
Запускаем IDE и все прекрасно работает
 

pd1971

New member
У меня не получается зарегистрироваться в WiFi сети.
Так все работает :
#include <string.h>
#include <Wire.h>
#include "ESP8266WiFi.h"

#ifndef STASSID
#define STASSID "tochka1"
#define STAPSK "passvorrdtochka1"
#endif
const char* ssid = STASSID;
const char* pass = STAPSK;

void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
}

void loop() {
}

А вот так когда я загружаю ssid и pass из сохраненного файла не работает:
#include <string.h>
#include <Wire.h>
#include "ESP8266WiFi.h"

char filestring[9][50];

void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin(filestring[1],filestring[3]);
}

void loop() {
}

При этом если я вывожу через Serial.print filestring[1],filestring[3] отображает правильное имя ssid и pass ?
помогите )
 

Сергей_Ф

Moderator
Команда форума
я загружаю ssid и pass из сохраненного файла
а где тут файл?
В первом случае, вы передаёте указатель на массивы символов определенной длинны. Во втором - на массивы символов длинной 50. А имя и пароль у вас сколько?
 

pd1971

New member
а где тут файл?
В первом случае, вы передаёте указатель на массивы символов определенной длинны. Во втором - на массивы символов длинной 50. А имя и пароль у вас сколько?
Я просто всего текста не стал выкладывать я из
SPIFFS библиотекой FS.h из файла считываю строки
char filestring[9][50]
вывожу на OLED там считанный файл можно пролистать вверх вниз для проверки и обзора собержимого
а по нажатию кнопки пытаюсь зарегится в сети и не выходит.

if(SPIFFS.exists("/configtbl.txt")) // проверка есть ли файл
{
int i=0;
int j=0;
Serial.println("File exists");
f = SPIFFS.open("/configtbl.txt", "r");
if(f) // проверка открылся ли файл
{
Serial.println("File open");
if(f.size()) // если файл не пустой, тогда читаем
{
while(f.available())
{
c = char(f.read()); // чтение посимвольно
filestring[j]=c;
if( c == 10 ) // концы строк контролирую по символу 10
{
i=i+1;
j=0;
}
else
{
j=j+1;
}
}
}
else Serial.println("File empty");
f.close(); // закрыли файл
}
else Serial.println("File not open");
i=0;
j=0;
while ( knopka4 == 0 )
{
oporosknopok();
strcpy(stringd[1],filestring);
strcpy(stringd[2],filestring[i+1]);
strcpy(stringd[3],filestring[i+2]);
strcpy(stringd[4],filestring[i+3]);
strcpy(stringd[5],filestring[i+4]);
displaytextscreen();
if ( knopka2 and i > 0 )
{
i=i-1;
}
if ( knopka3 and i < 4 )
{
i=i+1;
}
delay(300);
}
}
else { Serial.println("NOT file"); }
WIFIAP_Client();
........
....... тут дальше уже идет работа самого устройства
........
А этой подпрограммой программой я хочу войти в сеть

void WIFIAP_Client(void) {
WiFi.mode(WIFI_STA);
WiFi.begin(filestring[1], filestring[3]);
Serial.println(filestring[1]);
Serial.println(filestring[3]);
Serial.print(" IP address: ");
Serial.println(WiFi.localIP());
int i = 0;
while (WiFi.status() != WL_CONNECTED ) {
delay(500);
i++;
Serial.print(".");
Serial.println();
Serial.println(WiFi.localIP());

}
}
 

Сергей_Ф

Moderator
Команда форума
@pd1971 это вы видимые символы посмотрели. Выведите в hex виде и проверьте что вы шлете. А для оформления кода в тексте сообщения используйте тег [соde][/соde].
 

pd1971

New member
@pd1971 это вы видимые символы посмотрели. Выведите в hex виде и проверьте что вы шлете. А для оформления кода в тексте сообщения используйте тег [соde][/соde].
вопрос а какими символами надо заполнить не содержательную часть строки символов .
Например ssid = "tochka1" а строка символов 50 соответственно:
filestring[1][0]=t
filestring[1][1]=o
filestring[1][2]=c
filestring[1][3]=h
filestring[1][4]=k
filestring[1][5]=a
filestring[1][6]=1
filestring[1][7]= ? какой символ должен быть тут ?
filestring[1][8]=? какой символ должен быть тут ?

........
filestring[1][49]? какой символ должен быть тут ?
Также и в строк пароля какими символами должна быть заполнена оставшееся часть после пароля.
 

pd1971

New member
@pd1971
Смотри, сейчас я поищу в Яндексе вместо тебя
Ещё раз повторю: оформляйте код тегом. Иначе ничего непонятно.
В вопросе кода не было ) я просто спросил что часть строки символов длинной 50 содержит символы пароля или ssid какими символами заполнить оставшеюся часть строки символов.
 

CodeNameHawk

Moderator
Команда форума
pd1971, Попробуйте заполнить нулями (не спутайте с символом нуля), но есть ограничение на длину пароля или ssid.
  • ssid - a character string containing the SSID of Access Point we would like to connect to, may have up to 32 characters
  • password to the access point, a character string that should be minimum 8 characters long and not longer than 64 characters
Station Class — ESP8266 Arduino Core 2.5.0-66-gf139519 documentation
 

pd1971

New member
pd1971, Попробуйте заполнить нулями (не спутайте с символом нуля), но есть ограничение на длину пароля или ssid.

Station Class — ESP8266 Arduino Core 2.5.0-66-gf139519 documentation
Нашел в чем была ошибка она когда читает из файла в конце каждой строки добавляет DEC 13 и DEC 10 я их в 0 сбросил и все заработало ) Спасибо за подсказку !
 

Pasha30

New member
работал с esp8266 с ссылкой http://arduino.esp8266.com/staging/package_esp8266com_index.json . Все было отлично, кучу плат запрограммировал. А как вышел новый релиз http://arduino.esp8266.com/stable/package_esp8266com_index.json на трех компьютерах ( с разными ОС ) пробовал, везде "ошибка компиляции для платы esp8266". Что не так, что произошло?
 

Jon

Member
IDE ver 1.8.12 была такая же проблема. Сегодня залетело обновление на Win10 и все стало компилироваться.
 

Pasha30

New member
Где упоминание о переустановке поддержки платы?

Удалите папки вручную, те где есть упоминание esp8266.
Установите по новой.
Покажите лог установки платы.
Удаление вручную всех файлов и папок с названием esp8266 из папки Arduino15 помогло.
 
Сверху Снизу