ESP32에 FTP로 파일 전달

ESP32에 큰 파일을 건네주고 싶을 경우에, ESP32내에 FTP서버로서 시작해 두면, Windows의 익스플로러로부터 업로드나 다운로드가 편해집니다.

소스 코드를 GitHub로 올렸습니다.

poruruba/SimpleEsp32FtpServer

간단한 ESP32용 FTP 서버



ESP32 내에 FTP 서버를 시작하지만 매우 간단합니다.

· 하나의 파일 만 보관할 수 있습니다.
· 폴더를 만들 수 없습니다.
· 휘발이므로 재부팅하면 사라집니다.
· Windows 탐색기 만 시도합니다.

※WinSCP로 시험해 보았습니다만, 파일을 직접 편집하려고 했을 때만, 소켓을 다중으로 열려고 해서 절단되어 버렸습니다.

이하의 쪽이 만들어진 것을 거의 그대로 사용하고 있습니다. (감사합니다!)
SD를 전제로 하고 있었습니다만, 위와 같이 매우 간단하게 해, 메모리만으로 실현하도록(듯이) 하고 있습니다.

robo8080/ESP32_FTPServer_SD

사용법



src/main.cpp
#include "ESP32FtpServer.h"
FtpServer ftpSrv;

WiFi에 연결한 후,

src/main.cpp
  configTzTime("JST-9", "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
  ftpSrv.begin("esp32","esp32", buffer, sizeof(buffer));

포인트는 다음과 같습니다.

src/main.cpp
void    begin(String uname, String pword, unsigned char *p_buffer, unsigned long length);

받아들이는 유저명, 패스워드에 가세해, FTP로 송수신하는 데이터의 버퍼와 최대 사이즈를 지정하고 있습니다.

그리고는 loop() 중에서

src/main.cpp
  FTP_F_STATUS status = ftpSrv.handleFTP();        //make sure in loop you call handleFTP()!!   
  if( status != F_IDLE ){
    Serial.print("status="); Serial.println(status); Serial.println(ftpSrv.file_name); Serial.println((char*)buffer);
  }

FTP_F_STATUS에는 다음과 같은 유형이 있습니다.

· F_IDLE : 특히 변화 없음
· F_RETRIEVED : 파일이 검색되었습니다.
· F_STORED : 파일 수신 완료
· F_DELETED: 파일이 삭제됨
· F_RENAMED: 파일 이름이 변경됨

상기의 상태가 되었을 때에, 임의의 처리를 할 수 있도록(듯이) 하고 있습니다.

또, FTP 클라이언트측에 파일을 건네주고 싶을 때에는 이하를 호출합니다.
begin 으로 지정한 버퍼에, 돌려주고 싶은 데이터를 설정한 후에 호출합니다.

src/main.cpp
void setFile(const char *fname, unsigned long size);

Windows 탐색기에서 열기



Windows 탐색기의 주소 표시줄에 다음을 입력하여 연결할 수 있습니다.
ftp://ユーザ名:パスワード@IPアドレス/

사용자명과 패스워드는, ftpSrv.begin()에 지정한 것입니다.
IP 주소는 ESP32의 IP 주소입니다.



끝에



조금 불안정한가. . .

이상

좋은 웹페이지 즐겨찾기