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

C чего начать

safari

New member
Добрый всем день.
Купил вот такой модуль , чтобы:
1) Познакомиться с новой платформой (более года более-менее успешно осваиваю ардуино).
2) Сделать проект для брата, для удаленного мониторинга температуры в квартире и включения кондея через IR. Знаю, как сделать его на arduino, но хочется объединить 1) и 2)

Теперь проблема. Модуль завелся и виден в ESPlorer:
AT+GMR

AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK

Прежде чем пытаться делать скетчи в ардуино, решил попробовать modemcu + lua, загрузить учебный скрипт-мигалку в через ESPlorer по этой вот мурзилке
Споткнулся на шаге Save to ESP:
file.remove("init.lua");

ERROR
file.open("init.lua","w+");

ERROR
w = file.writeline

ERROR
w([[lighton=0]]);

ERROR
w([[pin=4]]);

ERROR
w([[gpio.mode(pin,gpio_OUTPUT)]]);

ERROR
w([[tmr.alarm(1,2000,1,function()]]);

ERROR
w([[ if lighton==0 then]]);

ERROR
w([[ lighton=1]]);

ERROR
w([[ gpio.write(pin,gpio.HIGH)]]);

ERROR
w([[ else]]);

ERROR
w([[ lighton=0]]);

ERROR
w([[ gpio.write(pin,gpio.LOW)]]);

ERROR
w([[ end]]);

ERROR
w([[end)]]);

ERROR
file.close();

ERROR
dofile("init.lua");

ERROR

Что не так?
 

Victor

Administrator
Команда форума
в пункте 1. Качаем прошивку - ошибка 404
да, статья немного устарела, сорри
начните с этой Releases · nodemcu/nodemcu-firmware · GitHub (берите integer) но только для первых шагов (собрана на старом SDK)
потом, когда поймете, какие модули вам нужны, соберете здесь свою NodeMCU custom builds
 

safari

New member
Да, спасибо большое, вчера разобрался, и встроенную загружал и "integer".
Пример с мигалкой сработал нормально, а вот с web-сервером не очень.
Сервер коннектится к AP (на айфоне) нормально, адрес получает и с айфона пингуется. Но web-страничка не открывается.
Еще в консоль выдается вот такое: init.lua:8: only one tcp server allowed
 

voodjuk

New member
Еще в консоль выдается вот такое: init.lua:8: only one tcp server allowed
Это значит веб сервер уже запущен, нужен рестарт модуля:
1. из ESPlorer кнопкой 'RESET'
2. подав низкий уровень на ножку rst
3. вкл/выкл питания
 
Последнее редактирование:

safari

New member
о чем-то таком я догадался, но reset не помог, web-страница не открывается.
а как включить/посмотреть вывод/логи LUA скрипта в ESPlorer?
 
Последнее редактирование:

voodjuk

New member
А в консоле еще что-нибудть говорит?
Скрипт ваш проверил, у меня работает.
 

safari

New member
если консоль, это то, что справа от скрипта (под настройками com-порта), то нет, тишина.
зашел через telnet 80 на айфоне
сервер запускается, страница отдается. видимо, встроенный браузер имеет особенности.
на работе wifi корпоративный, с авторизацией в домене. ESP-шка наверное только WPA2 PSK поддерживает?
 

Вложения

safari

New member
Ну да, дома в нормальной wi-fi сети всё заработало. Проблема в браузере айфона, видимо.
 

safari

New member
Теперь у меня вот какой вопрос. Попробовал прошивать через Arduino IDE. Все нормально прошивается (только долго очень), но вот диагностику в штатный com-порт не отдает (в Serial ничего не пишет). Почему?
 

Victor

Administrator
Команда форума
Теперь у меня вот какой вопрос. Попробовал прошивать через Arduino IDE. Все нормально прошивается (только долго очень), но вот диагностику в штатный com-порт не отдает (в Serial ничего не пишет). Почему?
скорость можно повыше поставить (зависит от USB-TTL) - у меня нормально шьется на 250000 и это не предел
в сериал будет писать, если вы в программе сделаете вывод в сериал :)
как включить/посмотреть вывод/логи LUA скрипта в ESPlorer?
 

safari

New member
скорость можно повыше поставить (зависит от USB-TTL) - у меня нормально шьется на 250000 и это не предел
в сериал будет писать, если вы в программе сделаете вывод в сериал :)
Стоит 115200, шьется нормально, но в выод не пишет.
скетч вот такой, сам по себе прекрасно отрабатывает, но без вывода в Serial
Код:
/*
*  This sketch demonstrates how to set up a simple HTTP-like server.
*  The server will set a GPIO pin depending on the request
*  http://server_ip/gpio/0 will set the GPIO2 low,
*  http://server_ip/gpio/1 will set the GPIO2 high
*  server_ip is the IP address of the ESP8266 module, will be
*  printed to Serial when the module is connected.
*/

#include <ESP8266WiFi.h>

const char* ssid = "your-ssid";
const char* password = "your-password";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

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

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
  return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
  delay(1);
  }

  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1)
  val = 0;
  else if (req.indexOf("/gpio/1") != -1)
  val = 1;
  else {
  Serial.println("invalid request");
  client.stop();
  return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);

  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val)?"high":"low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}
 

Victor

Administrator
Команда форума
скетч вот такой, сам по себе прекрасно отрабатывает, но без вывода в Serial
у этого скетча весь вывод в setup, а это значит, что вывод происходит еще до того, как вы подключили к ESP8266 терминал (это занимает несколько миллисекунд).
Попробуйте при подключенном терминале перегрузить ESP8266 так, чтобы USB-TTL оставался подключенным к компьютеру - увидите лог загрузки модуля и то, что выводится у вас в setup
 

safari

New member
ну в loop'e тоже Serial.println-ов хватает...
вечером попробую модуль т.о. перегрузить.
 

safari

New member
действительно, Serial нормально отрабатывает только после перезагрузки reset-ом на плате.
у ардуины даже при заходе в меню (и вызове терминала) атоматический ресет происходит, потому и не сообразил сам, спасибо большое за подсказки.

подскажите ещё как с IR LED и TSOP в lua работать? может примеры есть, подобные IRRemote из ардуины. Мне надо считать IR RC-код с пульта и отправить его из ESP-шки в кондей.
 
Сверху Снизу