FTP یک پروتکل استاندارد برای انتقال فایل بین کلاینت و سرور میباشد. FTP توسعه پیدا کرده برای انتقال داده بین دو کامپیوتر بر بستر اینترنت. که یک کامپیوتر سرور می باشد و دیگری کلاینت. FTP به صورت عمومی از پورت 21 استفاده میکند.
حالا اصلا FTP در ESP8266 به چه دردی میخورد. در مطالب قبل در مورد SPIFFS صحبت کردیم. اگه اطلاعی ندارید به این مطلب مراجعه کنید. SPIFFS قسمتی از حافظهی ESP8266 بود که به فایلهای خودمون اختصاص میدادیم. فایلهایی با پسوند HTML و CSS و JS که برای طراحی یک سرور لازم داریم. همچنین در مطلب دیگری هم در مورد OTA صحبت کردیم. اگر هنوز در مورد OTA نمیدانید به این مطلب مراجعه کنید. از طریق OTA میتوانستیم بدون اتصال سخت افزاری ESP8266 به کامپیوتر خود برنامهی خود را داخل آن بارگذاری کنیم.
از مزیتهای OTA این بود که پس از اتمام پروژه دیگه لازم نبود ESP8266 خود را از پروژه خارج کنیم. و از طریق WiFi برنامه را داخلش بارگزاری میکردیم. خب حالا وقتی نتوانیم فایلهای داخل SPIFFS را هم به همین روش بارگزاری کنیم، پس عملا فایدهای ندارد. برای انتقال فایلهای خود از FTP استفاده می کنیم.
نصب FTPServer
برای استفاده از FTP در ESP8266 اول باید کتابخانهی آن را دانلود و در برنامهی آردوینو خود نصب کنیم. برای دانلود به این لینک مراجعه کنید. بعد از دانلود، آن را از قسمت Sketch > Include Library > add .zip Library نصب کنید.
استفاده در برنامه
برای استفاده در برنامه کار زیادی لازم نیست انجام بدهید. مراحل زیر را دنبال کنید:
- کتابخانه را صدا بزنید.
- یک نمونه از کلاس FTP ایجاد کنید.
- نمونهی ایجاد شده را با دستور begin راه بیاندازید.
- کنترل کنندهی آن را داخل لوپ برنامه قرار دهید.
#include <ESP8266WiFi.h> #include "FS.h" #include <ESP8266FtpServer.h> const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASS"; FtpServer ftpSrv; //set #define FTP_DEBUG in ESP8266FtpServer.h to see ftp verbose on serial void setup(void){ Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // 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.localIP()); /////FTP Setup, ensure SPIFFS is started before ftp; ///////// if (SPIFFS.begin()) { Serial.println("SPIFFS opened!"); ftpSrv.begin("esp8266","esp8266"); //username, password for ftp. set ports in ESP8266FtpServer.h (default 21, 50009 for PASV) } } void loop(void){ ftpSrv.handleFTP(); //make sure in loop you call handleFTP()!! // server.handleClient(); //example if running a webserver you still need to call .handleClient(); }
با برنامه هایی مانند FileZila و برنامه هایی که برای FTP است، می توانید به ESP8266 خود وصل شوید. و فایل های خود را انتقال دهید.
دیدگاه ها :