Периодически возникает необходимость внесения каких-то незначительных косметических изменений файлы находящиеся файловой системе и каждый расспрашивать ютуб по меньшей мере не удобно хотя бы потому что прошивается она достаточно долго.
В то же время может возникнуть необходимость судить из файловой системы, например, на компьютер какие-либо файлы логов либо 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