์ง๋๋ฒ ๊ธ์์ ์์ฑํ๋ ๊ฒ ์ฒ๋ผ, ESP32-Cam ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ๋ก ์ผ๊ตด ๊ฒ์ถ, ์ธ์, ๋ฑ๋กํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๋ค. ํ์ง๋ง, ์กธ์ ์ํ ์ฃผ์ ๋ "๋ง์คํฌ ์ ๋ฌด์ ์ฒด์จ์ ํ์ธํ ์ ์๋ ๋ฌด์ธ ์ถ์ ๊ด๋ฆฌ ์์คํ " ์ด์๊ธฐ ๋๋ฌธ์, ๋ง์คํฌ ์ฐฉ์ฉ ์ ๋ฌด๋ฅผ ๊ฒ์ถํ๋ ๊ฒ์ด ์ค์ํ ํ์คํฌ์๋ค.
ESP32 ์์ ์ ๊ณต๋๋ ์์ ๋ก๋ ๋ง์คํฌ๋ฅผ ์ฐฉ์ฉํ ์ผ๊ตด์ ์ธ์ํ ์ ์์๊ธฐ ๋๋ฌธ์, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ค. ๋ง์คํฌ ์ฐฉ์ฉ ์ ๋ฌด๋ฅผ ํ๋จํ๊ธฐ ์ํด ๋จธ์ ๋ฌ๋์ ์ด์ฉํ๋ฏ๋ก Ubuntu ์๋ฒ๋ก ์ด๋ฏธ์ง๋ฅผ ์ ์กํ๋ ๊ฒ๋ถํฐ ์์ํด์ผํ๋ค.
ESP32 ์์ FTP ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด์๋ ESP32_FTPClient ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. FTP ์๋ฒ์ ๋๋ ํ ๋ฆฌ ์์ฑํ๊ธฐ, ํ์ผ ์ฐ๊ธฐ, ์ด๋ฏธ์ง ์ฐ๊ธฐ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ณ , ์์ ํ์ผ๋ก ์ ๊ณต๋๋ค.
ESP32-Cam ์ ์ด์ฉํด์ ์ฌ์ง์ ์ดฌ์ํ๊ณ FTP ์๋ฒ์ ์ ๋ก๋ ํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
-
FTPClient ์ ๊ด๋ จ๋ ๋ณ์์ ํจ์๋ค๋ง ๋จ๊ฒจ๋ ๊ฒ์ด๋ผ ์ฌ์ฉํ ๋์๋ ์ ์ ํ๊ฒ ์ถ๊ฐํด์ฃผ์ ์ผ ํฉ๋๋ค!
-
ํ์ฌ ์ฌ์ง์ด ์ดฌ์๋ ์๊ฐ์ผ๋ก ์ด๋ฆ์ ์ง์ ํ๊ธฐ ์ํด์ NTPClient ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ค.
ESP32_FTPClient ํด๋์ค์ instance ์ธ ftp ๋ฅผ ์์ฑํ๋ค.
-
FTP server ์ ip ํน์ domain ์ฃผ์, server ์ user id, password ๋ฅผ ์ธ์๋ก ๋๊ธด๋ค.
-
setup ํจ์ ๋ด์์ Wifi, ์นด๋ฉ๋ผ ์ธํ ์ ์งํํ ํ beginFTP ํจ์๋ฅผ ํตํด FTP ์ ์ก์ ์์ํ๋ค.
-
loop ํจ์๊ฐ ์๋ setup ํจ์ ๋ด์์ ์คํํ ์ด์ ๋ ๋ชจ์ ์ผ์๋ก ์ธํ ๋ถํ ์ ์ค์ ํด๋์๊ณ , ๋ถํ ์ดํ ๋์๋ค์ ์ํํ ํ ๋ค์ DeepSleep ๋ชจ๋๋ก ์ง์ ํ๊ธฐ ์ํด์์ด๋ค. (์ฝ๋ ๋ด์์๋ ์๋ต๋์ด ์๋ค.)
์ด๋ฏธ์ง๋ฅผ ์ ์กํ๊ธฐ ์ํ beginFTP ํจ์
-
๋จผ์ ftp.OpenConnection() ํจ์๋ฅผ ํตํด ์ฐ๊ฒฐ์ ์๋ํ๋ค.
-
ํ์ฌ ์๊ฐ์ ์ป๊ธฐ ์ํด getDateTime() ํจ์๋ฅผ ํธ์ถํ๊ณ , ์ด๋ฏธ์ง ํ์ผ๋ช ์ ์ง์ ํ๋ค.
-
ํด๋น ํจ์์ ๋ฐํ ๊ฐ์ 2020_10_4_14:55:55 ๊ฐ์ ํํ๊ฐ ๋๋๋ก ์์ฑํ๋ค.
-
-
์นด๋ฉ๋ผ๋ก๋ถํฐ ์ฌ์ง์ ์ดฌ์ํ๊ณ , FTP ์๋ฒ์ ์ ๋ก๋ํ๋ค.
-
esp_camera_fb_get() ํจ์๋ฅผ ํตํด ์บก์ณ๋ ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์๋ค.
-
FTPClient ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ Type I ๋ ์ด๋ฏธ์ง ํ์ผ์ ์๋ฏธํ๋ค.
-
-
ftp.CloseConnection() ํจ์๋ฅผ ํตํด ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ค.
#include <ESP32_FTPClient.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
/* FTP server settings */
char ftp_server[] = "ip";
char ftp_user[] = "id";
char ftp_pass[] = "pw";
ESP32_FTPClient ftp (ftp_server,ftp_user,ftp_pass, 5000, 2);
/* Define NTP Client to get time */
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "kr.pool.ntp.org");
void setup() {
/* Boot :: put your setup code here, to run once: */
Serial.begin(115200);
beginWiFi();
configCamera();
beginFTP();
}
String getDateTime() {
timeClient.begin();
timeClient.setTimeOffset(32400); // GMT+9
timeClient.update();
// Get a time structure
unsigned long epochTime = timeClient.getEpochTime();
struct tm *ptm = gmtime ((time_t *)&epochTime);
int monthDay = ptm->tm_mday;
int currentMonth = ptm->tm_mon+1;
int currentYear = ptm->tm_year+1900;
String currentDate = String(currentYear) + "_" + String(currentMonth) + "_" + String(monthDay);
String formattedTime = timeClient.getFormattedTime();
// Print complete date: 2020_10_4_14:55:55
String currentDateTime = currentDate + "_" + formattedTime;
//Serial.print("Current date time: "); Serial.println(currentDateTime);
return currentDateTime;
}
void beginFTP(){
camera_fb_t * fb = NULL;
ftp.OpenConnection();
// Image file name
String currentDateTime = getDateTime();
String tem_name = "cam_" + currentDateTime + ".jpg";
const char *fname = tem_name.c_str();
// Upload image
fb = esp_camera_fb_get();
ftp.InitFile("Type I");
ftp.NewFile(fname);
ftp.WriteData(fb->buf, fb->len);
ftp.CloseFile();
Serial.print("uploaded:");
Serial.println(tem_name);
ftp.CloseConnection();
esp_camera_fb_return(fb);
}
void loop() {}
์์ ์ฝ๋๋ฅผ ์์ฑํ ์ด๋ฏธ์ง๊ฐ ์์ด์ ์์ ๋ฅผ ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ผ ์ ๋ก๋๊ฐ ์งํ๋๋ค. TMP006 ์ด๋ผ๋ ์จ๋์ผ์ ์ธก์ ๊ณผ ํจ๊ป FTP ์ด๋ฏธ์ง ์ ๋ก๋๋ฅผ ์คํํ ๊ฒฝ์ฐ์ด๋ค.
์ฐธ๊ณ ํ ์ฌ์ดํธ
'๐ก EE's DEV > IoT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[IoT] ESP32-Cam ์จ๋์ผ์ ์ฐ๊ฒฐํ๊ธฐ, ๋น์ ์ด ์จ๋์ผ์ ๋น๊ต (2) | 2021.02.02 |
---|---|
[IoT] ESP32-Cam ์ผ๋ก ์ผ๊ตด ๊ฒ์ถ, ์ธ์, ๋ฑ๋กํ๊ธฐ (3) | 2020.12.16 |
[์ ๋ํค] ์ 4ํ ๋ํ์ ์ฐํฉ ํด์ปคํค ํ๊ธฐ (0) | 2017.02.18 |