ESP8266_Lib.h Does Not Exist Looked at Compilation Error Posts Cant See Whats Wrong

I had someone else him me fix a problem I was running into. They got the program to work but when I got the project back I cant seem to make it work. They have not responded to me because they are in school and tied up on another project. I need to find out how I can get my Serial Monitor to stop saying ESP8266_Lib.h Does Not Exists. I will worry about the next problem once this one is fixed. Can anyone take a look at this code and help me? Thank you.

#define BLYNK_TEMPLATE_NAME ""
#define BLYNK_AUTH_TOKEN "Hello"
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include "esp_camera.h"
#include <WiFi.h>

//
// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
//            Ensure ESP32 Wrover Module or other board with PSRAM is selected
//            Partial images will be transmitted if image exceeds buffer size
//
//            You must select partition scheme from the board menu that has at least 3MB APP space.
//            Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15 
//            seconds to process single frame. Face Detection is ENABLED if PSRAM is enabled as well

// ===================
// Select camera model
// ===================
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM
// ** Espressif Internal Boards **
//#define CAMERA_MODEL_ESP32_CAM_BOARD
#define CAMERA_MODEL_ESP32S2_CAM_BOARD
//#define CAMERA_MODEL_ESP32S3_CAM_LCD

#include "camera_pins.h"

// ===========================
// Enter your WiFi credentials
// ===========================
const char* ssid = "";
const char* password = "";

// Hardware Serial on Mega, Leonardo, Micro...
#define EspSerial Serial1

// or Software Serial on Uno, Nano...
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 38400

#define MOTION_SENSOR 7
#define MicrowaveLED 9
#define MotorPin 11

ESP8266 wifi(&EspSerial);

BlynkTimer timer;

void startCameraServer();
void setupLedFlash(int pin);

bool Capture_Check;
bool Switch_Check;

BLYNK_WRITE(V0)
{   
  int Value = param.asInt(); // Get value as integer

  // The param can contain multiple values, in such case:
  if(Value == HIGH)
    Switch_Check = HIGH;
  else if(Value == LOW)
    Capture_Check = HIGH;
  
}

void captureImage(){
  camera_fb_t* fb = esp_camera_fb_get();
  if (!fb) {
    Serial.println("Camera capture failed");
    return;
  }

  // Send the picture to Blynk
  Blynk.virtualWrite(V1, fb->buf, fb->len, "jpg");

  // Free the memory used by the picture
  esp_camera_fb_return(fb);
}

void setup() {
  Serial.begin(115200);
  
  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);
  //Blynk.begin(BLYNK_AUTH_TOKEN, wifi, ssid, pass);
  // You can also specify server:
  Blynk.begin(BLYNK_AUTH_TOKEN, wifi, ssid, pass, "blynk.cloud", 80);
  //Blynk.begin(BLYNK_AUTH_TOKEN, wifi, ssid, pass, IPAddress(192,168,1,100), 8080);
  //timer.setInterval(1000L, myTimerEvent);
  
  Serial.setDebugOutput(true);
  Serial.println();

  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.frame_size = FRAMESIZE_UXGA;
  config.pixel_format = PIXFORMAT_JPEG; // for streaming
  //config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition
  config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
  config.fb_location = CAMERA_FB_IN_PSRAM;
  config.jpeg_quality = 12;
  config.fb_count = 1;
  
  // if PSRAM IC present, init with UXGA resolution and higher JPEG quality
  //                      for larger pre-allocated frame buffer.
  if(config.pixel_format == PIXFORMAT_JPEG){
    if(psramFound()){
      config.jpeg_quality = 10;
      config.fb_count = 2;
      config.grab_mode = CAMERA_GRAB_LATEST;
    } else {
      // Limit the frame size when PSRAM is not available
      config.frame_size = FRAMESIZE_SVGA;
      config.fb_location = CAMERA_FB_IN_DRAM;
    }
  } else {
    // Best option for face detection/recognition
    config.frame_size = FRAMESIZE_240X240;
#if CONFIG_IDF_TARGET_ESP32S3
    config.fb_count = 2;
#endif
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  // camera init
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }

  sensor_t * s = esp_camera_sensor_get();
  // initial sensors are flipped vertically and colors are a bit saturated
  if (s->id.PID == OV3660_PID) {
    s->set_vflip(s, 1); // flip it back
    s->set_brightness(s, 1); // up the brightness just a bit
    s->set_saturation(s, -2); // lower the saturation
  }
  // drop down frame size for higher initial frame rate
  if(config.pixel_format == PIXFORMAT_JPEG){
    s->set_framesize(s, FRAMESIZE_QVGA);
  }

#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)
  s->set_vflip(s, 1);
  s->set_hmirror(s, 1);
#endif

#if defined(CAMERA_MODEL_ESP32S3_EYE)
  s->set_vflip(s, 1);
#endif

// Setup LED FLash if LED pin is defined in camera_pins.h
#if defined(LED_GPIO_NUM)
  setupLedFlash(LED_GPIO_NUM);
#endif

  WiFi.begin(ssid, password);
  WiFi.setSleep(false);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  startCameraServer();

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");
}

void loop() {
  Blynk.run();
  if (Switch_Check == HIGH) && (Capture_Check == HIGH){
    captureImage();
    Switch_Check = LOW;
    Capture_Check = LOW; 
  }
  
  //delay(10000);
}
  1. Search forum for similar topics
  2. Check http://docs.blynk.cc and http://help.blynk.cc/
  3. Add details :
    • Hardware model + communication type. For example: Arduino UNO with Ethernet Shield
    • Smartphone OS (iOS or Android) + version
    • Blynk server or local server
    • Blynk Library version
    • Add your sketch code. :point_up:Code should be formatted as example below.

Simply paste your code between ``` If you don’t format your code, your topic can be deleted by moderators.


void loop()

Your code is a mess.
It appears to be written for an ESP32 CAM module, but all of this…

Is written for an Arduino Uno with a ESP-01 as the WiFi modem.

You’ll never get this to compile if you’re selecting an ESP32 as your board type in the IDE (which is what you need to do to be able to use the ESP32 CAM board).

Pete.

I appreciate your honesty and your directness. I came to a hurdle on my project and paid a few Lawrence Tech students to help me get over my hurdle. They showed me a video of the code working but given what you are saying it must have been a different code,

I have a ESP32 Cam, a small CPU fan, and a microwave sensor that I am trying to get to work together in Blynk.Edgent.

The code you’ve posted isn’t Blynk Edgent code.
Why do you think you need to use Edgent? Are you looking for dynamic WiFi provisioning and Blynk.Air OTA functionality?

Pete.

Yes, I am looking for dynamic WiFi provisioning so that wherever I send my device they can connect it to the local WiFi. I want Blynk.Air OTA functionality so that I can update the firmware if needed.

Okay, is this going to be a commercial project?

How good are your C++ programming skills?

Have you considered how you plan to push the JPEG images to a publicly accessible location so that the Blynk Image Gallery widget can resolve the URL for the images? Are you going to use a script to purge the old images from this web server to ensure that the storage space doesn’t get too full?

Pete.

1 Like

Great questions. Hopefully it will be a commercial project. I am teaching myself C++ as I have been scammed a number of times by people purporting to help for money. As for getting the images so that they are publicly accessible I had been using Ngrok. I was able to write enough code to get a portion of the project to work. I just got to a hurdle that I could not overcome and started paying people to help me. I even saw the project work with the students that I ended up hiring after being scammed in more professional spaces. I did not think about a script to purge old images but that makes complete sense.

I am going to try from scratch again, adding in some of the elements the students said they implemented to get the sketch to work as intended. I will need to see what happens. Sorry for the delay in getting back but I have 6 kids under 9 in my household with a pregnant girlfriend, and I manage a business that struggles to find quality employees which means I am constantly triaging and working 6 to 7 days per week. I truly appreciate your taking the time to be honest and direct. It makes things efficient for me.

In that case you need to be aware that you’ll need a Blynk Pro subscription at that point, so factor that cost into your business plan.

That doesn’t sound like a scalable business solution to me.

If that means taking elements from the code you posted above, I wouldn’t bother - it will cause you too much pain for almost no gain.

You need to figure-out what’s causing that and put a stop to it! :grinning:

As far as moving forward is concerned, I’ve certainly seen a couple of projects posted on the forum that use stills with the Blynk image gallery widget, here’s one example…

Converting this from Blynk Legacy to Blynk IoT, and then getting it to work with Edgent would be far simpler than trying to make sense of the rubbish sketch you posted above.

Pete.

:thinking: Sometimes the cost is worth it. :sweat_smile:

I will take a look at that. I am also signing up for a Udemy course that purports to teach how to watch streamed videos using Blynk. I am not sure if it will use Edgent or not.

I have people asking about my device and looking forward to its being available. I have a researcher at a University waiting to get it to see if it does what I claim that it will do. Once he confirms that it works I have a marketing strategy for manufacturing demand and gaving the product ready.

1 Like