From 60625c51ee88c1d2af10714eb03dd16c38f526d5 Mon Sep 17 00:00:00 2001 From: hms-11 Date: Tue, 13 Jul 2021 16:07:44 -0400 Subject: [PATCH 1/2] Create TestCodeCoopCam Testing New Blynk Code --- TestCodeCoopCam | 316 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 TestCodeCoopCam diff --git a/TestCodeCoopCam b/TestCodeCoopCam new file mode 100644 index 0000000..2e377f7 --- /dev/null +++ b/TestCodeCoopCam @@ -0,0 +1,316 @@ +// Fill-in information for your Blynk connection here + + +#define BLYNK_TEMPLATE_ID "TMPL-flCABCq" +#define BLYNK_DEVICE_NAME "CoopCommand" +#define BLYNK_HEARTBEAT 30 +#define BLYNK_FIRMWARE_VERSION "0.1.6" +#define BLYNK_PRINT Serial +//#define BLYNK_DEBUG +#define APP_DEBUG + +// Pin Defines + +#define PHOTOCLICK V5 +#define LED 4 +#define DOORUP V7 +#define DOORDOWN V6 + + +// Uncomment your board, or configure a custom board in Settings.h +//define USE_WROVER_BOARD + +// Libraries + +#include "BlynkEdgent.h" +#include "esp_camera.h" +#include "Arduino.h" +#include +#include "soc/soc.h" // Disable brownout problems +#include "soc/rtc_cntl_reg.h" // Disable brownout problems + +// Blynkv LED setup + +WidgetLED led1(V1); +WidgetLED led2(V2); +WidgetLED led3(V3); +WidgetLED led4(V4); + +// Pin definition for CAMERA_MODEL_AI_THINKER + +#define PWDN_GPIO_NUM 32 +#define RESET_GPIO_NUM -1 +#define XCLK_GPIO_NUM 0 +#define SIOD_GPIO_NUM 26 +#define SIOC_GPIO_NUM 27 + +#define Y9_GPIO_NUM 35 +#define Y8_GPIO_NUM 34 +#define Y7_GPIO_NUM 39 +#define Y6_GPIO_NUM 36 +#define Y5_GPIO_NUM 21 +#define Y4_GPIO_NUM 19 +#define Y3_GPIO_NUM 18 +#define Y2_GPIO_NUM 5 +#define VSYNC_GPIO_NUM 25 +#define HREF_GPIO_NUM 23 +#define PCLK_GPIO_NUM 22 + +//FTP server information and setup + +char ftp_server[] = "files.000webhost.com"; +char ftp_user[] = "coopcommandimages"; +char ftp_pass[] ="Speedway*1"; +ESP32_FTPClient ftp (ftp_server,ftp_user,ftp_pass, 5000, 2); // you can pass a FTP timeout and debbug mode on the last 2 arguments + +// Variables + +bool takePhoto = false; +bool loading = false; +bool newImage = false; +bool newDisplay = false; +String displayImage = "https://coopcommandimages.000webhostapp.com/uploads/1.png"; +String coopImageURL = "https://coopcommandimages.000webhostapp.com/uploads/1.png"; +String coopImage = "coopPic.jpg"; +int i = 1; +int ic = 1; +int imageFlip = 1; +char coopRx; // Info received from CoopCommand +bool newDataRx = false; //has CoopCam received new data from CoopCommand + + +void setup() { + + // Startup Serial, Blynk, Blynk Timers and initial imamge. Disable brownout detector + Serial.begin(115200); + delay(50); + BlynkEdgent.begin(); + pinMode(LED, OUTPUT); + timer.setInterval(1000,coopCom); + timer.setInterval(250,loadingImage); + Blynk.setProperty(V0, "url", 1, coopImageURL); + Blynk.virtualWrite(V0, 1); + WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector + + // Configure the Camera + + camera_config_t config; + config.ledc_channel = LEDC_CHANNEL_0; + config.ledc_timer = LEDC_TIMER_0; + config.pin_d0 = Y2_GPIO_NUM; + config.pin_d1 = Y3_GPIO_NUM; + config.pin_d2 = Y4_GPIO_NUM; + config.pin_d3 = Y5_GPIO_NUM; + config.pin_d4 = Y6_GPIO_NUM; + config.pin_d5 = Y7_GPIO_NUM; + config.pin_d6 = Y8_GPIO_NUM; + config.pin_d7 = Y9_GPIO_NUM; + config.pin_xclk = XCLK_GPIO_NUM; + config.pin_pclk = PCLK_GPIO_NUM; + config.pin_vsync = VSYNC_GPIO_NUM; + config.pin_href = HREF_GPIO_NUM; + config.pin_sscb_sda = SIOD_GPIO_NUM; + config.pin_sscb_scl = SIOC_GPIO_NUM; + config.pin_pwdn = PWDN_GPIO_NUM; + config.pin_reset = RESET_GPIO_NUM; + config.xclk_freq_hz = 20000000; + config.pixel_format = PIXFORMAT_JPEG; + +// Image settings depending on PSRAM availability + + if(psramFound()){ + config.frame_size = FRAMESIZE_SVGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA + config.jpeg_quality = 20; + config.fb_count = 2; + } + else { + config.frame_size = FRAMESIZE_VGA; + config.jpeg_quality = 20; + config.fb_count = 1; + } + // Initialize Camera + esp_err_t err = esp_camera_init(&config); + if (err != ESP_OK) { + return; + } + +} + + +// Changes image in Blynk app depending on camera state +void loadingImage( void ) { +if (loading) { + displayImage= "https://coopcommandimages.000webhostapp.com/uploads/"; + displayImage+= i; + displayImage+= ".png"; + Blynk.setProperty(V0, "url", 1, displayImage); + if (i <= 6) { + i ++; + } + else if (i > 6) { + i = 1; + } +} +else if (!loading) { + if (ic == 1) { + coopImageURL = "https://coopcommandimages.000webhostapp.com/uploads/coopPic5.jpg"; + } + else if (ic == 2) { + coopImageURL = "https://coopcommandimages.000webhostapp.com/uploads/coopPic6.jpg"; + } + else if (ic == 3) { + coopImageURL = "https://coopcommandimages.000webhostapp.com/uploads/coopPic7.jpg"; + } + if (newImage) { + Blynk.setProperty(V0, "url", 1, coopImageURL); + Blynk.virtualWrite(V0, 1); + newImage = false; +} +i = 1; +} +} + +// Sends a new image to the FTP server + +void sendPhoto ( void ) { + if (takePhoto) { + + camera_fb_t * fb = NULL; + + // Take Picture with Camera + fb = esp_camera_fb_get(); + digitalWrite(LED, LOW); + delay (50); + if(!fb) { +// Serial.println("Camera capture failed"); + ESP.restart(); + return; + } + +if (imageFlip == 1) { + ftp.OpenConnection(); + // Create the new file and send the image + ftp.ChangeWorkDir("/public_html/uploads/"); + ftp.InitFile("Type I"); + ftp.NewFile("coopPic5.jpg"); + ftp.WriteData( fb->buf, fb->len ); + ftp.CloseFile(); + ftp.CloseConnection(); + takePhoto = false; + imageFlip = 2; + ic = 1; + esp_camera_fb_return(fb); + Serial.print('N'); + } +else if (imageFlip == 2) { + ftp.OpenConnection(); + // Create the new file and send the image + ftp.ChangeWorkDir("/public_html/uploads/"); + ftp.InitFile("Type I"); + ftp.NewFile("coopPic6.jpg"); + ftp.WriteData( fb->buf, fb->len ); + ftp.CloseFile(); + ftp.CloseConnection(); + takePhoto = false; + imageFlip = 3; + ic = 2; + esp_camera_fb_return(fb); + Serial.print('N'); + } +else if (imageFlip == 3) { + ftp.OpenConnection(); + // Create the new file and send the image + ftp.ChangeWorkDir("/public_html/uploads/"); + ftp.InitFile("Type I"); + ftp.NewFile("coopPic7.jpg"); + ftp.WriteData( fb->buf, fb->len ); + ftp.CloseFile(); + ftp.CloseConnection(); + takePhoto = false; + imageFlip = 1; + ic = 3; + esp_camera_fb_return(fb); + Serial.print('N'); + } +} +} + +// Serial communication with CoopCommand board + +void coopCom ( void ) { + + if (Serial.available() > 0) { + coopRx = Serial.read(); + newDataRx = true; + } + if (newDataRx == true) { + if (coopRx == 'O') { //If CoopCommand says the door is up + led1.on(); + led2.off(); + led3.off(); + led4.off(); + newDataRx = false; + } + if (coopRx == 'S') { //If CoopCommand says the door is down + + led1.off(); + led2.on(); + led3.off(); + led4.off(); + newDataRx = false; + } + if (coopRx == 'U') { //If CoopCommand says the door is opening + led1.off(); + led2.off(); + led3.on(); + led4.off(); + newDataRx = false; + } + if (coopRx == 'D') { //If CoopCommand says the door is closing + led1.off(); + led2.off(); + led3.off(); + led4.on(); + newDataRx = false; + } + } +} + +// Put the door up + +BLYNK_WRITE(DOORUP) { +Serial.print('U'); +} + +// Put the door down + +BLYNK_WRITE(DOORDOWN) { +Serial.print('D'); +} + +// Take a photo and display it in the app + +BLYNK_WRITE(V5) { +digitalWrite(LED, HIGH); +Serial.print('L'); +takePhoto = true; +loading = true; +newImage = true; +loadingImage(); +timer.setTimeout(250, sendPhoto); +timer.setTimeout(3000, []() +{ + loading = false; + loadingImage(); +}); +} + +// Sync app and device when connected + +//BLYNK_CONNECTED() { +// Blynk.syncAll(); +//} + +void loop() { + BlynkEdgent.run(); +} From a6bc66fbc91645036c479d4d92ab6afad91d9a4d Mon Sep 17 00:00:00 2001 From: hms-11 Date: Wed, 14 Jul 2021 06:59:59 -0400 Subject: [PATCH 2/2] Update TestCodeCoopCam Update - Functioning Properly --- TestCodeCoopCam | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/TestCodeCoopCam b/TestCodeCoopCam index 2e377f7..1904ac7 100644 --- a/TestCodeCoopCam +++ b/TestCodeCoopCam @@ -4,7 +4,7 @@ #define BLYNK_TEMPLATE_ID "TMPL-flCABCq" #define BLYNK_DEVICE_NAME "CoopCommand" #define BLYNK_HEARTBEAT 30 -#define BLYNK_FIRMWARE_VERSION "0.1.6" +#define BLYNK_FIRMWARE_VERSION "0.2.0" #define BLYNK_PRINT Serial //#define BLYNK_DEBUG #define APP_DEBUG @@ -69,9 +69,7 @@ bool takePhoto = false; bool loading = false; bool newImage = false; bool newDisplay = false; -String displayImage = "https://coopcommandimages.000webhostapp.com/uploads/1.png"; -String coopImageURL = "https://coopcommandimages.000webhostapp.com/uploads/1.png"; -String coopImage = "coopPic.jpg"; +String coopImageURL; //= "https://coopcommandimages.000webhostapp.com/uploads/1.png"; int i = 1; int ic = 1; int imageFlip = 1; @@ -86,11 +84,12 @@ void setup() { delay(50); BlynkEdgent.begin(); pinMode(LED, OUTPUT); - timer.setInterval(1000,coopCom); - timer.setInterval(250,loadingImage); - Blynk.setProperty(V0, "url", 1, coopImageURL); - Blynk.virtualWrite(V0, 1); - WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector + timer.setInterval(500,coopCom); + timer.setInterval(150,loadingImage); + Blynk.virtualWrite(V0, 3); + + //disable brownout detector + WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // Configure the Camera @@ -139,15 +138,12 @@ void setup() { // Changes image in Blynk app depending on camera state void loadingImage( void ) { -if (loading) { - displayImage= "https://coopcommandimages.000webhostapp.com/uploads/"; - displayImage+= i; - displayImage+= ".png"; - Blynk.setProperty(V0, "url", 1, displayImage); - if (i <= 6) { +if (loading) { + Blynk.virtualWrite(V0, (i+2)); + if (i <= 9) { i ++; } - else if (i > 6) { + else if (i > 9) { i = 1; } } @@ -162,8 +158,8 @@ else if (!loading) { coopImageURL = "https://coopcommandimages.000webhostapp.com/uploads/coopPic7.jpg"; } if (newImage) { - Blynk.setProperty(V0, "url", 1, coopImageURL); - Blynk.virtualWrite(V0, 1); + Blynk.setProperty(V0, "url", (ic-1), coopImageURL); + Blynk.virtualWrite(V0, (ic-1)); newImage = false; } i = 1; @@ -182,7 +178,6 @@ void sendPhoto ( void ) { digitalWrite(LED, LOW); delay (50); if(!fb) { -// Serial.println("Camera capture failed"); ESP.restart(); return; } @@ -305,11 +300,6 @@ timer.setTimeout(3000, []() }); } -// Sync app and device when connected - -//BLYNK_CONNECTED() { -// Blynk.syncAll(); -//} void loop() { BlynkEdgent.run();