I saw these videos Arduino IDE + ESP32 CAM | ESP32-CAM Capture and Send Photos to Telegram | Plus with PIR Sensor - YouTubeESP32 Cam Motion Alert | Send Image to Telegram - YouTube where you made a detection system where you could let a telegram bot send images to you that were detected by your pir-sensor and esp32-cam and i dont know why but i keep getting the same message no serial data received i tried every forum or place with the same problem and nothing worked in the video they use ai thinker i use esp32-cam s version does it matter also they use in arduino ide -> tools programmer many choices but i can only choose esptool how do they get the other options? hope someone can help need this for school
Thank You,
Abdul
As your query does not relate directly to the operation of the IDE it has been moved to the Programming category of the forum
Please post your sketch here, using code tags when you do
In my experience the easiest way to tidy up the code and add the code tags is as follows
Start by tidying up your code by using Tools/Auto Format in the IDE to make it easier to read. Then use Edit/Copy for Forum and paste what was copied in a new reply. Code tags will have been added to the code to make it easy to read in the forum thus making it easier to provide help.
I'm going to ask you to post the full verbose output from an upload attempt.
This procedure is not intended to solve the problem. The purpose is to gather more information.
Please do this:
Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
The "Preferences" dialog will open.
Uncheck the box next to Show verbose output during: ☑ compilation in the "Preferences" dialog.
Check the box next to Show verbose output during: ☐ upload.
Click the "OK" button.
The "Preferences" dialog will close.
Attempt an upload, as you did before.
Wait for the upload to fail.
You will see a "Upload error: ..." notification at the bottom right corner of the Arduino IDE window. Click the "COPY ERROR MESSAGES" button on that notification.
Open a forum reply here by clicking the "Reply" button.
Click the <CODE/> icon on the post composer toolbar.
This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
This will paste the error output from the upload into the code block.
Move the cursor outside of the code block markup before you add any additional text to your reply.
Click the "Reply" button to post the output.
No.
Please post a link to the exact timestamp in the video when they use that.
It shouldn't matter. The Tools > Programmer menu selection is only used when you are doing Tools > Burn Bootloader or "Upload Using Programmer". When you're doing a standard "Upload", the Tools > Programmer menu selection is completely ignored. So it makes no difference at all what you have selected from the Tools > Programmer menu.
Hey I have done the exact steps Tools/Auro Format and Edit/Copy for Forum let me know if u are able to help with this is is my first code with how I cabled the esp32-cam with my Ftdi Programmer with this code [code]
// Viral Science www.viralsciencecreativity.comwww.youtube.com/c/viralscience
// ESP32 Cam Motion Alert | Send Image to Telegram
// Enter your WiFi ssid and password
const char* ssid = "---------"; //WIFI SSID
const char* password = "---------"; //WIFI password
String token = "-----------------------------";
String chat_id = "-------";
if (psramFound())
{
config.frame_size = FRAMESIZE_VGA;
config.jpeg_quality = 10; //0-63 lower number means higher quality
config.fb_count = 2;
}
else
{
config.frame_size = FRAMESIZE_QQVGA;
config.jpeg_quality = 12; //0-63 lower number means higher quality
config.fb_count = 1;
}
// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK)
{
Serial.printf("Camera init failed with error 0x%x", err);
delay(1000);
ESP.restart();
}
sensor_t * s = esp_camera_sensor_get();
s->set_framesize(s, FRAMESIZE_XGA);
}
void loop()
{
pinMode(gpioPIR, INPUT_PULLUP);
int v = digitalRead(gpioPIR);
Serial.println(v);
if (v == 1)
{
alerts2Telegram(token, chat_id);
delay(10000);
}
delay(1000);
#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_M5STACK_UNITCAM // No PSRAM
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
//#define CAMERA_MODEL_XIAO_ESP32S3 // Has PSRAM
// ** Espressif Internal Boards **
//#define CAMERA_MODEL_ESP32_CAM_BOARD
//#define CAMERA_MODEL_ESP32S2_CAM_BOARD
//#define CAMERA_MODEL_ESP32S3_CAM_LCD
//#define CAMERA_MODEL_DFRobot_FireBeetle2_ESP32S3 // Has PSRAM
//#define CAMERA_MODEL_DFRobot_Romeo_ESP32S3 // Has PSRAM
#include "camera_pins.h"
// ===========================
// Enter your WiFi credentials
// ===========================
const char* ssid = "**********";
const char* password = "**********";
void startCameraServer();
void setupLedFlash(int pin);
void setup() {
Serial.begin(115200);
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_sccb_sda = SIOD_GPIO_NUM;
config.pin_sccb_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() {
// Do nothing. Everything is done in another task by the web server
delay(10000);
}
The diagram shows the jumper on the FTDI module in the 5 V position:
If it is wired this way with the jumper in that position then you exposed the ESP32 microcontroller and other components to 5 V, while they are rated for 3.3 V. This will likely cause permanent damage to the ESP32 and other components, which could definitely be the cause of the upload failure. If so, you will need to replace the damaged ESP32-CAM.
Hey ptillisch,
Yes, I made that connection if u look here
and I then connected my FTDI Programmer to my computer, and it showed the errors even though i connected everything like it should, has it something to do with that the code contains ESP32-cam AI thinker while I have the normal version?
the box for show verbose output is unchecked already before my upload attempt or should it normally stay with a checked box for compilation?
and i will reply again with the error copy
Wait what? What 5v the diagram show they are both connected to 3.3V that's what u meant right? and that failure i got also the first time i used the 3.3 volt if i were to use 5 volt i would have used this diagram
only here i used 5v and this was after many failures with the fdti and my esp32-cam can still light up it's white light when i press the reset button idk if that matters what do u think?
Also, this is my error `Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "ESP32 Wrover Module, Huge APP (3MB No OTA/1MB SPIFFS), QIO, 80MHz, 921600, None, Disabled"
Sketch uses 1468449 bytes (46%) of program storage space. Maximum is 3145728 bytes.
Global variables use 60292 bytes (18%) of dynamic memory, leaving 267388 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.5.1
Serial port COM3
Connecting......................................
A fatal error occurred: Failed to connect to ESP32: No serial data received.
In which position was the voltage selector jumper on the FTDI module? I can't see it in your picture. I'm referring to the thing I circled in blue here:
There are three pins on the voltage selector header. If the jumper is shorting the pin marked "5V" with the central pin of the header, then the module outputs 5 V on the VCC pin and also uses 5 V I/O levels. If the jumper is shorting the pin marked "3.3V" with the central pin of the header, then the module outputs 3.3 V on the VCC pin and also uses 3.3 V I/O levels.
The diagram of the FTDI module connections to the ESP32-CAM shows the "VCC" pin on the FTDI module connected to the "3V3" pin on the ESP32-CAM. They put a "VCC=3.3 V" label next to the "VCC" pin on the FTDI module, but that is only true if the jumper on the voltage selector header on the module is in the 3.3V position. In the picture, the jumper is in the 5V position, in which case the label is incorrect and the VCC pin on the FTDI module is instead outputting 5 V, not 3.3 V.
So ye the problem is with the hardware? Okay well u can see here a better picture focus on the colours it should absolutely have the same wiring as in the diagram.
Also, i didn't know about voltage selector jumper on the FTDI module i am not sure how i can change the vcc between 5v and 3.3v how can i tell what VCC I set it ?
Update i think i know what u mean if i place a jumper on the 5v it gives 5v on the vcc and same for 3.3 but i didnt place any jumper there so it means my computers gives power to my esp32-cam right? Is my cam still fried because of this or are there any other mistakes I should know about before working with a newly ordered esp32-cam?
I'm not sure exactly what happens in this case. I tried it and found that the voltage on the VCC pin of the FTDI module was only 1.2 V when I attempted to power the ESP32-CAM from it. The ESP32-CAM won't work when powered at such a low voltage so this could definitely explain the upload failure. The voltage on the VCC pin went up to the expected ~3.3 V once I connected a jumper between the "3.3V" pin and the center pin on the FTDI module's voltage selector header.
Please connect a jumper between the "3.3V" pin and the center pin on your FTDI module's voltage selector header. The module should have come with a little plastic-encased jumper for this purpose:
If you don't have that jumper, you can use a female to female jumper wire instead. Something like this:
I don't think so. The important thing is to avoid exposing it to 5 V. It is also not good to power it at too low a voltage (e.g., 1.2 V), because in this case the 3.3 V logic levels of the FTDI module's TX pin are still too high, but I think the ESP32-CAM probably survived it OK.
Hey I did it again with the jumper going from 3.3 to the middle pin as u can see
but i got another error `Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "ESP32 Dev Module, Disabled, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None, Disabled"
Sketch uses 858765 bytes (65%) of program storage space. Maximum is 1310720 bytes.
Global variables use 58980 bytes (17%) of dynamic memory, leaving 268700 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.5.1
Serial port COM3
Connecting......................................
A fatal error occurred: Failed to connect to ESP32: No serial data received.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
` Any idea where this error is coming from? I made the right connections right?
I think I found the problem. On some ESP32-CAM boards, the pin next to the large LED marked "GND" in the diagrams you are using as a reference is not actually a ground pin. My board has this issue and I notice that the pin is labeled "GND/R" instead of just "GND" as shown in your diagrams and other images of ESP32-CAM boards I find online. Contrary to what your diagrams show, if you have one of the non-standard ESP32-CAM boards, you must connect the "GND" pin of the FTDI module to the pin on the ESP32-CAM marked "GND" that is on the other side of the board:
So move that wire and then try uploading again. Hopefully this time it will work.
Hey I did move the that GND wire to the other GND on the other side, but it still didn't work, u think it may be a hardware problem like it came broken when i ordered it? But i am afraid it wil still not work this is for school and is important so i ordered a new one in the meantime but u think getting a wroom version will help the situation?
This is the error `Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "ESP32 Dev Module, FTDI Adapter, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 115200, Core 1, Core 1, None, Disabled"
Sketch uses 922185 bytes (70%) of program storage space. Maximum is 1310720 bytes.
Global variables use 49064 bytes (14%) of dynamic memory, leaving 278616 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.5.1
Serial port COM3
Connecting......................................
A fatal error occurred: Failed to connect to ESP32: No serial data received.
But what if it still doesn’t work do u think the problem lies elsewhere? In on of the codes i used it states it is for a esp32-cam ai thinker would it matter if i have a esp32-cam s version?
can you load and run a simple program such as blink, e.g.
// blink for ESP32-CAM
// red LED is GPIO 33 flash is GPIO4
#define LED_BUILTIN 33
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}