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

Esp8266ex жопоруким новичкам...

dazmir

New member
В общем...
Прошивку вы прошили.
Теперь надо заливать скрипты
Обязательно должен быть скрипт инициализации init.lua
вот мой скрипт.
(можешь просто скопировать, сохранить в файл и дать ему имя init.lua)

wifi.setmode(wifi.STATIONAP) --режим работы станция/точка
wifi.sta.config("ИМЯ ТОЧКИ ДОСТУПА","ПАРОЛЬ") --подключаемся к точке доступа
cfg = {} --настройка точки доступа на модуле
cfg.ssid = "ESP_WIFI_AP" --имя точки
cfg.pwd = "789456123" --пароль
print(wifi.ap.config(cfg))
print('AP ip: ',wifi.ap.getip()) --ip адрес точки доступа
print('mem size: ',node.heap()/1000,'Kb') --оставшаяся память в киллобайтах
Вы уж меня извините. Можете мне пошагово от А и до Я расписать. В это деле у меня первые шаги. Я очень надеюсь на ваше понимание.
 

brig

New member
Пошагово (для новичков).

Если вы прошили свой модуль прошивкой NodeMCU (можно взять здесь и прошить вот этим), то:

1)
Проще всего начать работу с помощью LuaLoader. Скачайте эту программу и распакуйте в отдельный каталог.
2)
Запустите LuaLoader. Сразу можно будет попробовать взаимодействие с модулем нажатием кнопок:
- Heap - получить размер свободного ОЗУ;
- ChipID - получить серийный номер чипа ESP8266 вашего модуля;
- Restart - перезагрузка модуля...
3)
Кнопка Upload File позволяет выбрать на диске и записать во флеш-память модуля файл с программой (скриптами), который можно потом запустить на исполнение кнопкой DoFile. При запуске прошивка первым делом ищет и запускает на выполнение файл init.lua, который должен содержать набор команд, необходимых для выполнения при запуске модуля. Для примера можно взять файлы init.lua и LuaLoader.lua из каталога version, записать их во флеш-память модуля и выполнить перезагрузку.
4)
Изучить документацию и попробовать примеры, которые можно увидеть по ссылкам (LuaLoader -> меню Help -> NodeMCU Lua API).

В дальнейшем следует использовать более серьезную и универсальную программу Esplorer.
 

dazmir

New member
Пошагово (для новичков).

Если вы прошили свой модуль прошивкой NodeMCU (можно взять здесь и прошить вот этим), то:

1)
Проще всего начать работу с помощью LuaLoader. Скачайте эту программу и распакуйте в отдельный каталог.
2)
Запустите LuaLoader. Сразу можно будет попробовать взаимодействие с модулем нажатием кнопок:
- Heap - получить размер свободного ОЗУ;
- ChipID - получить серийный номер чипа ESP8266 вашего модуля;
- Restart - перезагрузка модуля...
3)
Кнопка Upload File позволяет выбрать на диске и записать во флеш-память модуля файл с программой (скриптами), который можно потом запустить на исполнение кнопкой DoFile. При запуске прошивка первым делом ищет и запускает на выполнение файл init.lua, который должен содержать набор команд, необходимых для выполнения при запуске модуля. Для примера можно взять файлы init.lua и LuaLoader.lua из каталога version, записать их во флеш-память модуля и выполнить перезагрузку.
4)
Изучить документацию и попробовать примеры, которые можно увидеть по ссылкам (LuaLoader -> меню Help -> NodeMCU Lua API).

В дальнейшем следует использовать более серьезную и универсальную программу Esplorer.
Спасибо большое!! Очень доходчиво.
 

TRO

Member
Дошла и моя очередь в освоении этого чуда.
Модуль ESP-01. Долго мучался пока не нашел что нужно подтянуть к питанию CH_PD. Все равно не пошло. Потом мучался с осцилографом и понял что в паре с pl2303 нужно подтягивать как выход PLки так и выход Esp8266, иначе ни туда ни сюда сигнал не проходил... Потом когда с АТ командами игратся надоело решил прошить NodeMCU, пока нарыл что нужно перед прошивкой еще и один из GPIO к земле прибить еще куча времени убежала. Прошился флешлоадером (тупо угадывая скорость перебором), и то несмотря на то что прошивается одной кнопкой, для прошивки последней версии пришлось её качать и вставлять во флешер, причем правильно ли я это делал было тоже совсем неочевидно.
Esplorer конечно крутотень, но пока освоился совсем утомился. В принципе меня пока хватило запустить пример веб сервера с кнопкой, и то выходной пин че то не меняет состояяние (подозреваю ему тоже подтяжка нужна). Поковырял этот код примера и справочник, нашел как внутренний АЦП в браузер выводить, думаю к мультиметру прикрутить чтобы удаленно видеть что он показывает (по работе часто нужно). Несколько раз при опросе АЦП бедняга ребутнулся. Теперь мечта менюшки и прочие красивости научится в браузере рисовать с нормальным ввод выводом из фрм и кучки кнопок, плюс динамическое обновление параметров, но поскольку ни в HTML ни в LUA я не шурупаю, затянется это ой как надолго.
 

RIX

New member
Честно когда читал, слаживалось впечатление будь-то у вас только мануал на китайском языке на руках и все :)))
Все нюансы что вы писали есть в сети и быстро находятся, причем по первым ссылкам....
А с хтмл вообще вопросов не возникнет если потратите немного времени :)
 

tms320

New member
Пытаюсь написать свою прошивку, используя "Unofficial Development Kit for Espressif ESP8266" (http://programs74.ru/udkew.html). Плата работает в режиме STA. При подключении платы к точке доступа (роутеру) сетевое имя платы выводится как "ESP_FE9D2B". Вопрос: как изменить это имя?
 

tms320

New member
Пока мой код делает только подключение к точке доступа (вывод отладочной информации в UART я для читабельности не привожу):
Код:
void ICACHE_FLASH_ATTR user_init()
{
    // Инициализация uart0 и uart1 со скоростью 115200
    uart_init(BIT_RATE_115200, BIT_RATE_115200);
    os_delay_us(1000);

    // Отключаем автоконнект
    wifi_station_set_auto_connect(0);

    WiFi_Connect();
}
Функция WiFi_Connect реализована в отдельном файле:
Код:
typedef enum
{
    WIFI_DISCONNECTED = 0,
    WIFI_CONNECTING,
    WIFI_CONNECTED,
    WIFI_SETMODE_ERROR,
    WIFI_CONNECTING_ERROR
} TWiFiState;

TWiFiState WiFiState = WIFI_DISCONNECTED;

static ETSTimer WiFiTimer;

static void ICACHE_FLASH_ATTR WiFi_Check(void* arg)
{
    struct ip_info ipConfig;
    os_timer_disarm(&WiFiTimer);

    if (WiFiState == WIFI_DISCONNECTED)
    {
        wifi_station_connect();
    }

    switch(wifi_station_get_connect_status())
    {
        case STATION_GOT_IP:
            wifi_get_ip_info(STATION_IF, &ipConfig);
            if (ipConfig.ip.addr != 0)
            {
                WiFiState = WIFI_CONNECTED;
            }
            break;
        case STATION_WRONG_PASSWORD:
            WiFiState = WIFI_CONNECTING_ERROR;
            break;
        case STATION_NO_AP_FOUND:
            WiFiState = WIFI_CONNECTING_ERROR;
            break;
        case STATION_CONNECT_FAIL:
            WiFiState = WIFI_CONNECTING_ERROR;
            break;
        default:
            WiFiState = WIFI_CONNECTING;
    }
    os_timer_setfn(&WiFiTimer, (os_timer_func_t *)WiFi_Check, NULL);
    os_timer_arm(&WiFiTimer, WIFI_CHECK_PERIOD, 0);
}


void ICACHE_FLASH_ATTR WiFi_Connect()
{
    // Структура с информацией о конфигурации STA (в режиме клиента AP)
    struct station_config staConfig;
    char info[150];

    // При необходимости переводим плату в режим клиента AP
    if (wifi_get_opmode() != STATION_MODE)
    {
        wifi_set_opmode_current(STATION_MODE);
    }

    if (wifi_get_opmode() == STATION_MODE)
    {
            wifi_station_get_config(&staConfig);
            os_memset(staConfig.ssid, 0, sizeof(staConfig.ssid));
            os_memset(staConfig.password, 0, sizeof(staConfig.password));
            os_sprintf(staConfig.ssid, "%s", WIFI_AP_NAME);
            os_sprintf(staConfig.password, "%s", WIFI_AP_PASSWORD);
            wifi_station_set_config(&staConfig);
            // Включаем автоконнект
            wifi_station_set_auto_connect(1);
            // Запускаем таймер проверки соединения по Wi-Fi
            os_timer_disarm(&WiFiTimer);
            os_timer_setfn(&WiFiTimer, (os_timer_func_t *)WiFi_Check, NULL);
            os_timer_arm(&WiFiTimer, WIFI_CHECK_PERIOD, 0);
    }
    else
    {
        WiFiState = WIFI_SETMODE_ERROR;
    }
}
Всё работает, всё подключается. Когда я на роутере (точка доступа, к которой подключилась плата) смотрю список устройств в WiFi-сети, то плата имеет сетевое имя "ESP_FE9D2B".
 
Сверху Снизу