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

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

Discriminator

New member
И да - конкретно в скетче - там просто "прочитать информацию" "записать информацию"...
 

hort

New member
Ребята пожалуйста дайте ссылку на продавца с работающей платой на esp8266. купил nodemcu (жёлтую), чё тока не пробовал не заработала. Буду прогать только arduino ide. На плате нужен готовый usb-uart переходник, и чтобы от usb питалась. Вообщем нужна arduino uno, но только с esp8266=))
Такая? - http://ru.aliexpress.com/item/NodeM...n-ESP8266-Internet-of-things/32264797795.html
 

Discriminator

New member
:D Только-только заказал такую - тормозные фины еще таже трек трекать не начали (да-да я в курсе, что продавцы не всегда честно отправку отмечают)

hort, интересная штучка. а питание к ней как подводить?
либо USB, либо к ножкам - посмотрите на укрупненное фото - там есть ноги для питания
 

hort

New member
hort, интересная штучка. а питание к ней как подводить?
Использую её для отладки скетча, по этому подключаю по USB. Лапы для питания - тоже есть, как было сказано выше.
Единственная проблема - в постоянно отваливающимся порту (думаю у меня драйвера криво встают).
 

hort

New member
Вопрос от новичка знатокам. Как назначить прерывание на GPIO?
В документации на arduino -
attachInterrupt(interrupt, function, mode) , где interrupt - номер прерывания. Или в параметре interrupt можно указывать номер GPIO?
 

Discriminator

New member
Или в параметре interrupt можно указывать номер GPIO?
А это уже надо смотреть исходники - что там реализовано. Вообще анонсируют:
Arduino IDE для ESP8266: краткий обзор реализованных в настоящее время функций
Базовые функции языка Wiring
Управление GPIO осуществляется точно также, как и управление pin для arduino: pinMode, digitalRead, digitalWrite, analogWrite функционируют как обычно. GPIO нумеруются так, как мы уже привыкли: для чтения состояния GPIO2 нужно использовать команду digitalRead(2)

GPIO0-GPIO15 могут быть INPUT, OUTPUT, INPUT_PULLUP, и INPUT_PULLDOWN. GPIO16 может быть только INPUT, OUTPUT или INPUT_PULLDOWN. Команда analogRead(A0) считывает значение ADC (АЦП) с TOUT.

Команда analogWrite(pin,value) включает программный PWM (ШИМ) на указанном GPIO. Команда analogWrite(pin,0) отключает PWM. value может быть в диапазоне от 0 до PWMRANGE. Константа PWMRANGE в настоящее время равна 1023.

Поддержка прерываний обеспечивается функциями attachInterrupt, detachInterrupt. Прерывания могут быть назначены на любой GPIO, кроме GPIO16. Стандартные прерывания Arduino CHANGE, RISING, FALLING тоже поддерживаются.
 

kkozyrev

New member
Товарищи, а если в esp-01 не выведен ADC, то в каких ESP-шках его вывели на пины?
 

Discriminator

New member
ESP-12, ESP-8, ESP-7 - если не ошибаюсь все три типа одно и то же только разные типы антенн. ESP-201
 

Discriminator

New member
из-за проблем с sqr и pow
а вот это большой вопрос.
Потому как все "сторонние" библиотеки хорошо подходят для низкого уровня. Но как только дело доходит до математики - вылазят траблы...
Пока данная проблема не решена как таковая - выход только один - оставлять базовые вызовы, а остальную обработку выносить на другой уровень.
 

Vitaly

Member
Только я наблюдаю проблемы с работой через softAP когда модуль пытается и не может подключиться к другой точке доступа?
когда режим WIFI_AP_STA включен

софт ап то появится в эфире, то пропадет :/
 

pvvx

Активный участник сообщества
Только я наблюдаю проблемы с работой через softAP когда модуль пытается и не может подключиться к другой точке доступа?
когда режим WIFI_AP_STA включен

софт ап то появится в эфире, то пропадет :/
Это нормально. Такова задумка китайцев :)
 

Stepan

New member
Здравствуйте

Пропадает wi-fi при заливке скетча..

Есть esp-01, подключен так: GPIO 0,2 и Reset на + через резисторы. Питание от DC-DC конвертора 3.6вольт.
Выключаю (CH PD), ставлю GPIO на GND, потом включаю CH PD на +, заливаю прошивку через esp8266_flasher,
появляется точка доступа.
Через ком-порт ответчает на АТ команды, и вроде как все ок.

Ставлю IDE 1.6.5
добавляю как в шапке Board Manager
Прошиваю таким-же образом скетч "esp_standalone" в ESP8266 модуль.
В скетче прописываю свои ssid, pass и идинтефикатор для BLINK-сервера(шью через ардуино нано, закоротив reset and GND).
Прошивается.
И вот тут возникает проблема - wi-fi не работает. Просто не находит. АТ команды тоже очевидно не поддерживаются.
Обратно прошиваю обычную прошивку через esp8266_flasher - wi-fi появляется.
Снова IDE - скетч - пропадает.

Да, шью просто BLINK через IDE светодиод моргает.
PS
Заметил небольшую особенность
- у меня IDE начинает заливку скетча с 0x00000000
а в шапке с 0x00040000
Имеет ли это значение?
Что не так?)
 

lex

New member
в среде ардуино есть ограничение на размер исходника как в луа? Если можно ссылку где можно почитать об етом поподробней, можно на английском. А то я чета не совсем вьеду где исполняется код в ардуино(на скоко я понял - в луа в флеш пишется операционка а скрипты грузятся в RAM).
 

lex

New member
Здравствуйте

Пропадает wi-fi при заливке скетча..

Есть esp-01, подключен так: GPIO 0,2 и Reset на + через резисторы. Питание от DC-DC конвертора 3.6вольт.
Выключаю (CH PD), ставлю GPIO на GND, потом включаю CH PD на +, заливаю прошивку через esp8266_flasher,
появляется точка доступа.
Через ком-порт ответчает на АТ команды, и вроде как все ок.

Ставлю IDE 1.6.5
добавляю как в шапке Board Manager
Прошиваю таким-же образом скетч "esp_standalone" в ESP8266 модуль.
В скетче прописываю свои ssid, pass и идинтефикатор для BLINK-сервера(шью через ардуино нано, закоротив reset and GND).
Прошивается.
И вот тут возникает проблема - wi-fi не работает. Просто не находит. АТ команды тоже очевидно не поддерживаются.
Обратно прошиваю обычную прошивку через esp8266_flasher - wi-fi появляется.
Снова IDE - скетч - пропадает.

Да, шью просто BLINK через IDE светодиод моргает.
PS
Заметил небольшую особенность
- у меня IDE начинает заливку скетча с 0x00000000
а в шапке с 0x00040000
Имеет ли это значение?
Что не так?)
не знаю степ че у тя тама неработает, вот простой рабочий скетч
Код:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "..............";
const char* password = "................";

String form = "<form action='led'>"
              "<input type='radio' name='state' value='1' checked>On"
              "<input type='radio' name='state' value='0'>Off"
              "<input type='submit' value='Submit'>"
              "</form>";

String imagepage = "<img src='/led.png'>";

// This is a png file (led.png)
const char image[] = {
    0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
    0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x91, 0x68,
    0x36, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00,
    0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 0x00,
    0x00, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x00, 0x00, 0x7a, 0x26, 0x00, 0x00, 0x80, 0x84, 0x00, 0x00,
    0xfa, 0x00, 0x00, 0x00, 0x80, 0xe8, 0x00, 0x00, 0x75, 0x30, 0x00, 0x00, 0xea, 0x60, 0x00, 0x00,
    0x3a, 0x98, 0x00, 0x00, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x00, 0x00, 0x00, 0x18, 0x74, 0x45,
    0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x50, 0x61, 0x69, 0x6e, 0x74,
    0x2e, 0x4e, 0x45, 0x54, 0x20, 0x76, 0x33, 0x2e, 0x33, 0x36, 0xa9, 0xe7, 0xe2, 0x25, 0x00, 0x00,
    0x00, 0x57, 0x49, 0x44, 0x41, 0x54, 0x38, 0x4f, 0x95, 0x52, 0x5b, 0x0a, 0x00, 0x30, 0x08, 0x6a,
    0xf7, 0x3f, 0xf4, 0x1e, 0x14, 0x4d, 0x6a, 0x30, 0x8d, 0x7d, 0x0d, 0x45, 0x2d, 0x87, 0xd9, 0x34,
    0x71, 0x36, 0x41, 0x7a, 0x81, 0x76, 0x95, 0xc2, 0xec, 0x3f, 0xc7, 0x8e, 0x83, 0x72, 0x90, 0x43,
    0x11, 0x10, 0xc4, 0x12, 0x50, 0xb6, 0xc7, 0xab, 0x96, 0xd0, 0xdb, 0x5b, 0x41, 0x5c, 0x6a, 0x0b,
    0xfd, 0x57, 0x28, 0x5b, 0xc2, 0xfd, 0xb2, 0xa1, 0x33, 0x28, 0x45, 0xd0, 0xee, 0x20, 0x5c, 0x9a,
    0xaf, 0x93, 0xd6, 0xbc, 0xdb, 0x25, 0x56, 0x61, 0x01, 0x17, 0x12, 0xae, 0x53, 0x3e, 0x66, 0x32,
    0xba, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
  };
 
// HTTP server will listen at port 80
ESP8266WebServer server(80);

const int led = 13;
void handle_adc() {
  float val = analogRead(0);
  server.send(200, "text/plain", String(val));
}
void handle_led() {
  // get the value of request argument "state" and convert it to an int
  int state = server.arg("state").toInt();
 
  digitalWrite(led, state);
  server.send(200, "text/plain", String("LED is now ") + ((state)?"on":"off"));
}

void handle_image() {
  server.send(200, "image/png", "");
  WiFiClient client = server.client();
  client.write(image, sizeof(image));
}

void handle_webpage_with_image() {
  server.send(200, "text/html", imagepage);
}
void setup(void) {
  Serial.begin(115200);
  Serial.println("");
  pinMode(led, OUTPUT);
 
  // Connect to WiFi network
  //WiFi.begin(ssid, password);
  WiFi.softAP(ssid);
  // Wait for connection
  /*
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  */
  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP());
 
  // Set up the endpoints for HTTP server
  //
  // Endpoints can be written as inline functions:
  server.on("/", [](){
   server.send(200, "text/html", form);
  });
 
  // And as regular external functions:
  server.on("/adc", handle_adc);
  server.on("/led", handle_led);
  server.on("/led.png", handle_image);
  server.on("/showled", handle_webpage_with_image);
 
  // Start the server
  server.begin();
  Serial.println("HTTP server started");
}
void loop(void) {
  // check for incomming client connections frequently in the main loop:
  server.handleClient();
}
шьеш ето дело а есп, смотриш в бепроводные подключения, ищиш " ssid = ".............." ", подключаешся, в браузере вбиваеш "http://192.168.4.1/" или подобное(передает в порт при ресете
lu.png
)
 

Discriminator

New member
в среде ардуино есть ограничение на размер исходника как в луа?
Как такового ограничения на размер исходника нет. Все что написано в Arduino IDE компилируется в двоичный формат Arduino или ESP-шки и заливается напрямую в устройство. Ограничение есть на размер готовой прошивки, а это уже ищите информацию по своему модулю/плате.
 

Stepan

New member
lex, Спасибо, с твоим скетчем сразу все заработало.
А главное я нашел ошибку, по которой не коннектилось в моем случае - название своей wi-fi сети важно вводить с соблюдением размера букв.
:confused:
 
Сверху Снизу