Периодически возникает необходимость внесения каких-то незначительных косметических изменений файлы находящиеся файловой системе и каждый расспрашивать ютуб по меньшей мере не удобно хотя бы потому что прошивается она достаточно долго.

В то же время может возникнуть необходимость судить из файловой системы, например, на компьютер какие-либо файлы логов либо gps треки либо показания датчиков и удобнее всего использовать для этих целей протокол ftp ftp это протокол передачи файлов и у нас есть возможность поднять на базе ESP8266 ftp-сервер. 

#include <ESP8266WiFi.h>                  // Библиотека для создания Wi-Fi подключения (клиент или точка доступа)
#include <FS.h>                           // Библиотека для работы с файловой системой
#include <ESP8266FtpServer.h>             // Библиотека для работы с SPIFFS по FTP

const char* ssid = "........";            // Указываем имя WiFi-сети, к которой будет подключаться ESP8266 для доступа в Интернет
const char* password = "........";        // Указываем пароль для подключения к WiFi-сети

FtpServer ftpSrv;                         // Создаём объект для работы с FTP

void setup() {
  Serial.begin(9600);                     // Инициализируем вывод данных на серийный порт со скоростью 9600 бод
  
  WiFi.begin(ssid, password);             // Соединяемся с WiFi-сетью
  while (WiFi.status() != WL_CONNECTED)   // Пока соединение не установлено
    delay(500);                           //  делаем задержку в пол секунды, пока соединение не установится

  Serial.print("\n\nLocal IP: ");         // Выводим на монитор серийного порта сообщение о том, что сейчас будем выводить локальный IP
  Serial.println(WiFi.localIP());         // Выводим локальный IP-адрес ESP8266

  SPIFFS.begin();                         // Инициализируем работу с файловой системой

/*
  if (SPIFFS.format())                    // Если удалось отформатировать файловую систему
    Serial.println("File System Formated"); // Выводим уведомление об этом
  else                                    // иначе
    Serial.println("File System Formating error");  // Выводим сообщение об ошибке
*/

  ftpSrv.begin("login","password");       // Инициализируем FTP-сервер (на 21-й порт)
}

void loop() {
  ftpSrv.handleFTP();                     // Отслеживаем обращения по FTP 
}


В первых двух строчках мы подключаем библиотеки входящий стандартный пакет ESP8266. Перваяе библиотека необходима для подключения к существующей вайфай сети, либо создания точки доступа вторая библиотека необходимо для работы с файловой системой модуля третье библиотека - ftp сервер не входит стандартный пакет  но скачать ее вы можете по ссылке вниизу. Эта библиотека и поможет нам поднять ftp сервер на нашем модуле.

Далее мы определяем две константы константе иди необходимо указать название точки доступа wi-fi сети который мы подключаемся и в константу password необходимо забить пароль для подключения к сети.

После этого мы создаем объект для работы с библиотекой ftp в блоке со так мы в начале инициализируем вывод данных на монитор серийного порта со скоростью 9600 бод, после чего инициализируем подключение к сети и после того как модуль успешно к ней подключиться выводим на монитор серийного порта локальная IP нашего модуля.

Далее инициализируем работу с файловой системой модулям и здесь у меня за камень china несколько строк которые форматируют файловую систему
если их раскомментировать то при запуске модуля файловая система будет форматировать и очищаться то есть все данные находящиеся файловой системе будут уничтожены если вам это необходимо то можете эти строки раскомментировать.

Далее мы инициализируем начало работы с ftp сервером и здесь нам необходимо указать логин и пароль для подключения к модулю по этому протоколу в блоке loop мы просто отлавливаем обращение к модулю по протоколу ftp.

После прошивки модуля он выдеёт монитор серийного порта свой локальный IP,  берем его и воспользовавшись ftp клиентом подключаемся к модулям. Удобно использовать для этих целей программу WinScp она бесплатная и достаточно удобная но по сути подойдет практически любому типу клиента.

На примере программы WinScp необходимо при подключении в протоколе передачи данных указать ftp. Будьте внимательны потому что по умолчанию здесь выбран с ftp в имени хоста указываем IP модуля и в имени пользователя и пароля указываем те данные которые зашиты в скетч то есть логин и пароль нажимаем на кнопку войти. Программа соединяется с модулем и можете видеть те файлы которые находятся файловой системе модуля мы его в настоящий момент.

Здесь необходимо уточнить несколько деталей:

  • Файловая система модуля устроен достаточно своеобразно она не поддерживает каталоге либо директории но при этом допускает в названии файла наличие косой черты то есть слыша. Однако же подавляющее большинство ftp клиентов наличие косой черты в названии файла принимают за ошибку поэтому оперировать такими файлами не удастся собственно вам необходимо это учитывать когда вы генерируете файлы с помощью ваших скетчей постарайтесь избежать наличие название косой черты.
  • Редактировать файлы непосредственно из в тепле клиенты не удастся поэтому файл целесообразно сначала слить на компьютер внести какие-то изменения сохранить и после этого заново залить его на модуль.

Пример скетча: https://yadi.sk/d/hNbGw5SLdte6Wg

Библиотека ESP8266FTPServer: https://yadi.sk/d/SDRX9CA8IDbtRQ