Selamat datang di indomaker.com, pada pembahasan kali ini admin akan mengupas tentang penggunaan ESP32-CAM. Module ini merupakan sebuah module WiFi yang sudah dilengkapi dengan kamera. Dari module ini kita bisa gunakan untuk berbagai keperluan, contoh untuk CCTV, mengambil gambar dan sebagainya. Fitur lain yaitu kita bisa mendeteksi wajah (face detection) dan pengenalan wajah (face recognition).

Oke langsung saja untuk menggunakan ESP-32 CAM alat dan bahan yang dibutuhkan sebagai berikut :

  • ESP32-CAM Module, BELI
  • FTDI FT232RL, BELI
  • Kabel mini USB, BELI
  • Kabel jumper female to female, BELI

Untuk yang baru pertama menggunakan FTDI silahkan instal dulu update dulu drivernya, caranya di postingan di bawah ini :

TUTORIAL UPLOAD PROGRAM ARDUINO MENGGUNAKAN FTDI

dan untuk yang belum instal board ESP32 silahkan instal dulu boardnya versi terbaru yaitu versi 1.0.4.  Cara instalnya di bawah ini :

MEMULAI MENGGUNAKAN ESP32 PADA ARDUINO IDE

Agar lebih memahami ESP32-CAM anda lihat dengan seksama pin out dari modul ini :

Rangkaian

Keterangan :

  • VCC FTDI dihubungkan ke 5V ESP32-CAM
  • GND FTDI dihubungkan ke GND ESP32-CAM
  • Pin TX FTDI dihubungkan ke UOR ESP32-CAM
  • Pin RX FTDI dihubungkan ke UOT ESP32-CAM
  • Pin GPIO_0 dihubungkan ke GND

Rangkaian di atas adalah mode flash atau rangkaian yang harus dirangkai pada saat proses upload program, silahkan rangkai sesuai gambar dan keterangan di atas.

Silahkan pilih Board pada menu Tools > Board : AI Thinker ESP32-CAM.

Jangan lupa ceklis Port yang muncul misalnya COM20.

Buka File > Examples > ESP32 > Camera > CameraWebServer

dan akan muncul sebuah program, perhatikan program di bawah ini :

Silahkan jadikan komentar pada code #define CAMERA_MODEL_WROVER_KIT, kemudian hilangkan komentar pada code #define CAMERA_MODEL_AI_THINKER sehingga menjadi seperti ini :

Jangan lupa untuk mengisi SSID dan password dari WiFi anda.

Selanjutnya silahkan upload programnya sampai done uploading.

Jika sudah lepas kabel GND dari Pin GPIO_0 pada ESP32-CAM ini merupakan Running mode (mode saat program berjalan).

Buka serial monitor dengan baudtrate 115200. Tekan tombol reset yang ada pada board ESP32CAM.

Maka akan muncul IP addres, kemudian coba ketikkan pada web browser. Maka akan muncul seperti gambar di bawah ini :

Di sini kita akan mencoba untuk streaming kamera dengan cara klik tombol Start Stream. Sedangkan untuk mengambil gambar/foto dengan cara klik tombol Get Still.

Demikian pembahasan kali ini, semoga bermanfaat dan sampai jumpa lagi di tutorial berikutnya. Terima kasih.

Kategori: NodeMCU

48 Komentar

Ingin tahu · Mei 8, 2020 pada 3:28 am

Bang saya stack di bagian uploading awal tanpa di lepas gnd dan GPI_0 katanya not connecting, masalahnya dimana ya bang ?

    ajie · Mei 8, 2020 pada 3:40 am

    tekan tombol reset kira-kira 2-3 detik setelah upload

      Ingin tahu · Mei 8, 2020 pada 3:52 am

      tekan tombol resetnya itu di bagian mana ya bang ?

      san · Mei 4, 2021 pada 2:51 pm

      mau nanya bang kalau esp32cam itu bisa dipakai ke nodemcu kan?

        ajie · Mei 17, 2021 pada 12:48 pm

        bisa mas, tp tanpa nodemcu jg bisa

Madina · Mei 15, 2020 pada 3:01 pm

kak, kalo malah muncul ini diakhir serial modenya brati kameranya ga bisa ya?

[E][camera.c:1049] camera_probe(): Detected camera not supported.
[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004

    ajie · Mei 15, 2020 pada 3:08 pm

    cek kabel data yang mengarah ke kamera. Barangkali koneksinya aja

      Madina · Juni 10, 2020 pada 3:38 pm

      Terimakasih kak, sudah bisa tersambung kameranya, ternyata karena belum tersambung dengan wifinya

    Dana · Desember 26, 2020 pada 3:35 am

    Kak, mau nanya.. kalo alamat IP nya gak keluar itu kenapa ya ?

      ajie · Desember 27, 2020 pada 9:59 pm

      coba cek wifi hotspotnya, apakah sudah disetting DHCP? kalo sudah, berarti cek sisi programnya apakah nama SSID hotspot dan passwordnya sudah benar?

    andi · Februari 9, 2021 pada 7:09 am

    Sama gan seperti saya tapi saya masih tetep seperti itu

AHMAD YOVI NURULFAHMI · Agustus 17, 2020 pada 4:11 pm

Mau tanya gan, jadi gini kan esp32 cam saya udah connect jaringan wifi dan bisa di akses melalui link website yg muncul di serial monitor dan bisa di lihat melalui hand phone atau laptop, ketika saya coba jaringan hand phone yg semula memakai jaringan wifi rumah saya pindah ke jaringan data seluler pribadi kenapa link website yg tadinya muncul pas saya pakai jaringan wifi rumah dan saya alihkan ke data seluler pribadi tidak bisa ya?padahal saya sudah cek untuk kuota data saya sudah isi ulang juga, mohon bantuannya terimakasih.

    ajie · September 18, 2020 pada 8:55 am

    karena ESP32-Cam hanya mendapat IP lokal dari hotspot/router WIFI yang ada di rumah (jaringan intranet WLAN). Kalau diakses dari luar (misal pake jaringan data operator GSM) tidak akan bisa, karena ini sudah menggunakan jaringan internet (bukan intranet lagi). Kalo ingin bisa diakses dari internet, WIFI router dirumah harus diset port forwarding-nya, dan syaratnya router tersebut harus memiliki IP public.

andi · Agustus 30, 2020 pada 4:49 am

esptool.py v2.6
Serial port COM5
Traceback (most recent call last):
File “esptool.py”, line 2959, in
File “esptool.py”, line 2952, in _main
File “esptool.py”, line 2652, in main
File “esptool.py”, line 222, in __init__
File “site-packages\serial\__init__.py”, line 88, in serial_for_url
File “site-packages\serial\serialwin32.py”, line 62, in open
serial.serialutil.SerialException: could not open port ‘COM5’: WindowsError(433, ‘A device which does not exist was specified.’)
Failed to execute script esptool
the selected serial port Failed to execute script esptool
does not exist or your board is not connected

mas aku erorr disini tau gak kira kira kenapa?

    ajie · September 18, 2020 pada 8:45 am

    cek port USB to serial FTDI nya lewat Control Panel – Device Manager. Cek apakah sudah benar COM Port-nya. Jika belum, ubah nomor COM port di arduino IDE. Jika belum muncul COM port di device manager berarti belum diinstal drivernya

Joko · Desember 27, 2020 pada 2:54 am

min, kalo esp nya gak bisa terhubung ke internet itu gimana ?

    ajie · Desember 27, 2020 pada 10:00 pm

    coba cek wifi hotspotnya, apakah sudah ada koneksi internet atau belum. Yang kedua cek di programnya apakah sudah benar SSID dan password WIFI nya?

Zaka · Januari 4, 2021 pada 7:40 am

14:37:00.965 -> eׁJ]8⸮0L⸮0’⸮:MSH
!⸮t’⸮⸮ ⸮]E⸮⸮}RQ⸮⸮⸮b⸮⸮:⸮⸮3BSPReS⸮e1A*⸮%=OU⸮
14:37:00.965 -> +⸮h⸮⸮ad*⸮r ⸮0⸮
⸮⸮_[⸮ni⸮3S
⸮eׁJ]8⸮0L⸮0’&⸮5SH
!⸮t’⸮⸮0 IE
W⸮ITC%SQU⸮⸮o⸮⸮xL&BS⸮}FP*⸮e1S⸮%=OU⸮
14:37:01.325 -> ⸮˙i֥p’⸮,⸮AI⸮⸮xYVHck}d.⸮⸮⸮⸮0)}d.⸮⸮⸮⸮0⸮}dr⸮⸮x0bcs⸮⸮r⸮⸮x⸮,⸮}d.⸮⸮x⸮,}d.⸮⸮x⸮
⸮⸮e’T⸮ ,⸮k V⸮⸮1C!⸮d:⸮⸮f⸮⸮01blYK⸮
!⸮d’⸮⸮f⸮⸮0L,⸮⸮n⸮⸮1SHh⸮ W⸮l⸮2⸮⸮om⸮
!⸮d’⸮⸮0⸮80⸮,⸮⸮:N⸮⸮
!⸮0⸮⸮⸮l⸮2⸮⸮o[⸮
!⸮d’⸮⸮00⸮4⸮bleK⸮3M⸮He⸮⸮y⸮x⸮⸮0⸮⸮

14:37:03.085 -> [E][camera.c:1049] camera_probe(): Detected camera not supported.
14:37:03.085 -> [E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004

mas saya eror begitu, kenapa yah

Zaka · Januari 4, 2021 pada 8:06 am

15:03:41.608 ->
15:03:41.608 -> rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
15:03:41.608 -> configsip: 0, SPIWP:0xee
15:03:41.608 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
15:03:41.608 -> mode:DIO, clock div:1
15:03:41.608 -> load:0x3fff0018,len:4
15:03:41.608 -> load:0x3fff001c,len:1216
15:03:41.608 -> ho 0 tail 12 room 4
15:03:41.608 -> load:0x40078000,len:9720
15:03:41.608 -> ho 0 tail 12 room 4
15:03:41.608 -> load:0x40080400,len:6352
15:03:41.608 -> entry 0x400806b8
15:03:43.288 ->
15:03:44.048 -> ⸮⸮⸮⸮⸮сdetector was triggered
15:03:44.088 ->
15:03:44.088 -> ets Jun 8 2016 00:22:57
15:03:44.088 ->
15:03:44.088 -> rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
15:03:44.088 -> configsip: 0, SPIWP:0xee
15:03:44.088 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp

mas ip nya ga muncul sama keterangan camera ready use nya, kenapa yah

    ajie · Januari 4, 2021 pada 8:30 am

    bisa karena programmingnya error, atau wiring camera nya kendor/lepas, atau power supply nya kurang besar arusnya atau kemungkinan terburuknya esp nya rusak

Okta · Februari 12, 2021 pada 3:37 pm

min kalau dia eror seperti ini ‘box_array_t {aka struct tag_box_list}’has no member named ‘score’

Renaldi pranata · April 28, 2021 pada 4:02 pm

Kak saya bertanya kalau cameranya blur itu kenapa ya kak, jadi buram gitu kak langkahnya udah saya ikuti kak pas start stream cameranya ngeblur

    ajie · April 28, 2021 pada 10:07 pm

    coba diatur jarak fokusnya

alifsyabaniputra · Mei 18, 2021 pada 2:59 am

bang saya mau tanya..
kalo buat qrcode bagaiman ya bang esp32 camnya ?
setelah di upload erorr trs .
email : alifsyabanip@gmail.com
mohon penjelasanny abang…..terima kasih

    ajie · Mei 18, 2021 pada 3:12 am

    yg ditanyakan bikin qrcode-nya, decoding qrcode-nya, atau cara uploadnya?

alifsyabaniputra · Mei 18, 2021 pada 1:45 pm

cara deteksi qrcodenya bang bagaimana bang ?

alifsyabaniputra · Mei 19, 2021 pada 4:12 am

ituu pasti bisa bang ?

    ajie · Mei 19, 2021 pada 6:28 am

    bisa

      alifsyabaniputra · Mei 22, 2021 pada 6:35 am

      bang saya sudah mencoba cara tersebut gak bisa upload codenya , tapi setelah di upload malah error bang. itu bagaimana solusinya lagi ? kalo bisa share nome whatsaapnya bang makasih sebelumnyaaa…..

        ajie · Mei 23, 2021 pada 1:14 am

        dilihat dulu errornya apa, kemudian coba cari solusinya di internet

dian · Juni 3, 2021 pada 4:37 pm

min mau tanya, saat memakai face detection atau recognition selalu erorr, itu masalahny apa ya min???

    ajie · Juni 3, 2021 pada 10:53 pm

    errornya apa ya?

ludfi · Juni 16, 2021 pada 4:42 pm

min timbul ini gmna solusinya?

Sketch uses 2594098 bytes (82%) of program storage space. Maximum is 3145728 bytes.

Global variables use 56280 bytes (17%) of dynamic memory, leaving 271400 bytes for local variables. Maximum is 327680 bytes.

esptool.py v3.0-dev

Serial port COM4

Connecting…….._____….._____….._____….._____….._____….._____….._____

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

A · Juni 25, 2021 pada 9:14 pm

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6360
entry 0x400806b4

Connecting to wifi
…..
ES

misi kak mau tanya, di bagian connecting to wifi kenapa muncul nya ES ya? cara ngatasinya gimana ya kak? makasihh

    ajie · Juni 26, 2021 pada 1:34 am

    harus lihat programnya dulu. Atau untuk troubleshooting coba run program example, kalo bisa berarti program Anda yang ada bug-nya

      A · Juni 27, 2021 pada 1:00 am

      kalau untuk run program example udah bisa kok, ip nya udah dapet juga. saya pakai sketch ini mas dan pas di run udah done compiling cuma saat diupload tidak mendapatkan ip nya.

      #include
      #include
      #include “WiFiClientSecure.h”
      #include “soc/soc.h”
      #include “soc/rtc_cntl_reg.h”
      #include “esp_camera.h”
      #include
      #include
      #include
      #include

      const char* ssid = “AR707”;
      const char* password = “1234567N”;
      String BOTtoken = “1844138839:AAG51VTd0nTPCQb8j0G6gsVow9ToIbjb2JU”;
      String CHAT_ID = “1343264587”;

      bool sendPhoto = false;
      bool playSong = false;
      bool offSong = false;
      boolean lockLow = true;
      bool takeLowTime;

      int pos =0;
      int calibrationTime = 10;
      long unsigned int lowIn;
      //long unsigned int lockLow;
      long unsigned int a = 5000;

      WiFiClientSecure clientTCP;
      Servo myservo;

      UniversalTelegramBot bot(BOTtoken, clientTCP);

      #define FLASH_LED_PIN 4
      #define pirPin 2
      #define pirPos 3
      bool flashState = LOW;
      bool flag = 0;

      int botRequestDelay = 1000;
      unsigned long lastTimeBotRan;

      //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

      void configInitCamera(){
      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;

      //init with high specs to pre-allocate larger buffers
      if(psramFound()){
      config.frame_size = FRAMESIZE_UXGA;
      config.jpeg_quality = 10; //0-63 lower number means higher quality
      config.fb_count = 2;
      } else {
      config.frame_size = FRAMESIZE_SVGA;
      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();
      }

      // Drop down frame size for higher initial frame rate
      sensor_t * s = esp_camera_sensor_get();
      s->set_framesize(s, FRAMESIZE_CIF); // UXGA|SXGA|XGA|SVGA|VGA|CIF|QVGA|HQVGA|QQVGA
      }

      void handleNewMessages(int numNewMessages) {
      Serial.print(“Handle New Messages: “);
      Serial.println(numNewMessages);

      for (int i = 0; i len;
      uint16_t extraLen = head.length() + tail.length();
      uint16_t totalLen = imageLen + extraLen;

      clientTCP.println(“POST /bot”+BOTtoken+”/sendPhoto HTTP/1.1”);
      clientTCP.println(“Host: ” + String(myDomain));
      clientTCP.println(“Content-Length: ” + String(totalLen));
      clientTCP.println(“Content-Type: multipart/form-data; boundary=RandomNerdTutorials”);
      clientTCP.println();
      clientTCP.print(head);

      uint8_t *fbBuf = fb->buf;
      size_t fbLen = fb->len;
      for (size_t n=0;n<fbLen;n=n+1024) {
      if (n+10240) {
      size_t remainder = fbLen%1024;
      clientTCP.write(fbBuf, remainder);
      }
      }

      clientTCP.print(tail);

      esp_camera_fb_return(fb);

      int waitTime = 10000;
      long startTimer = millis();
      boolean state = false;

      while ((startTimer + waitTime) > millis()){
      Serial.print(“.”);
      delay(100);
      while (clientTCP.available()) {
      char c = clientTCP.read();
      if (state==true) getBody += String(c);
      if (c == ‘\n’) {
      if (getAll.length()==0) state=true;
      getAll = “”;
      }
      else if (c != ‘\r’)
      getAll += String(c);
      startTimer = millis();
      }
      if (getBody.length()>0) break;
      }
      clientTCP.stop();
      Serial.println(getBody);
      }
      else {
      getBody=”Connected to api.telegram.org failed.”;
      Serial.println(“Connected to api.telegram.org failed.”);
      }
      return getBody;
      }

      void setup(){
      WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
      // Init Serial Monitor
      Serial.begin(115200);

      // Set LED Flash as output
      pinMode(FLASH_LED_PIN, OUTPUT);
      digitalWrite(FLASH_LED_PIN, flashState);

      // Config and init the camera
      configInitCamera();

      // Connect to Wi-Fi
      WiFi.mode(WIFI_STA);
      Serial.println();
      Serial.print(“Connecting to “);
      Serial.println(ssid);
      WiFi.begin(ssid, password);
      clientTCP.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
      while (WiFi.status() != WL_CONNECTED) {
      Serial.print(“.”);
      delay(500);
      }
      Serial.println();
      Serial.print(“ESP32-CAM IP Address: “);
      Serial.println(WiFi.localIP());

      // dorongan void setup
      myservo.attach (13); //pin 13 ke servo
      Serial.begin (9600); // memulai komunikasi serial
      pinMode (pirPin, INPUT);
      pinMode (pirPos, OUTPUT);
      digitalWrite (pirPos, LOW);

      //memberi waktu sensor untuk kalibrasi
      Serial.println (“sensor kalibrasi”);
      for (int i=0; i lastTimeBotRan + botRequestDelay) {
      int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
      while (numNewMessages) {
      Serial.println(“got response”);
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
      }
      lastTimeBotRan = millis();
      }

      if (flag) {
      delay(1000);
      if (digitalRead (pirPin)== HIGH) {
      for (pos=0; pos 0; pos-= 1) //dari 180 ke 0
      {
      myservo.write (pos);
      delay(15);
      }
      if (lockLow) {

      lockLow = false;
      Serial.println (“—“);
      Serial.print (“gerakaan terdeteksi di”);
      Serial.print (millis()/1000);
      Serial.println (“detik”);
      delay(50);
      }

      takeLowTime = true;

      }
      if (digitalRead(pirPin) ==LOW) {
      if(takeLowTime) {
      lowIn =millis();
      takeLowTime =false;
      }

      if (! lockLow && millis ()- lowIn> a) {

      lockLow=true;
      Serial.print (“gerakan berakhir pada”);
      Serial.print((millis() – a)/ 1000);
      Serial.println (“detik”);
      delay (50);
      }
      }
      }

      }

        ajie · Juni 27, 2021 pada 2:10 am

        susah bagi kita untuk menganalisa mas, karena tetap harus dilakukan sendiri di sana di depan hardwarenya. Gini aja, coba dari program example tambahkan sedikit demi sedikit tambahan programnya, nanti pasti ketemu di mana kesalahannya. Atau dari program di atas coba dikurangi sedikit demi sedikit programnya, nanti pasti akan ketemu kesalahannya. Jangan lupa bikin flow chart untuk memudahkan pemrograman. Good luck ya

A · Juni 27, 2021 pada 2:13 am

oh gitu ya, oke makasih ya atas masukannya

fiqih alfiaizin · Juli 3, 2021 pada 1:56 pm

izin tanya ka kenapa koneksi ke telegram conecction to failed yh ka

    ajie · Juli 17, 2021 pada 6:15 am

    errornya apa?

firza · Juli 17, 2021 pada 6:07 am

kak esp32 cam slot kartu sd maksimal 4 gb kan ya, kalo saya isi lebih 4 gb gpapa kan? mungkin cuma 4 gb doang yang keiisi.

    ajie · Juli 17, 2021 pada 6:15 am

    iya, bisa

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Scroll Up