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 :
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.
Bang saya stack di bagian uploading awal tanpa di lepas gnd dan GPI_0 katanya not connecting, masalahnya dimana ya bang ?
tekan tombol reset kira-kira 2-3 detik setelah upload
tekan tombol resetnya itu di bagian mana ya bang ?
baca di sini aja kak error upload esp32
mau nanya bang kalau esp32cam itu bisa dipakai ke nodemcu kan?
bisa mas, tp tanpa nodemcu jg bisa
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
cek kabel data yang mengarah ke kamera. Barangkali koneksinya aja
Terimakasih kak, sudah bisa tersambung kameranya, ternyata karena belum tersambung dengan wifinya
Kak, mau nanya.. kalo alamat IP nya gak keluar itu kenapa ya ?
coba cek wifi hotspotnya, apakah sudah disetting DHCP? kalo sudah, berarti cek sisi programnya apakah nama SSID hotspot dan passwordnya sudah benar?
Sama gan seperti saya tapi saya masih tetep seperti itu
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.
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.
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?
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
min, kalo esp nya gak bisa terhubung ke internet itu gimana ?
coba cek wifi hotspotnya, apakah sudah ada koneksi internet atau belum. Yang kedua cek di programnya apakah sudah benar SSID dan password WIFI nya?
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
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
bisa karena programmingnya error, atau wiring camera nya kendor/lepas, atau power supply nya kurang besar arusnya atau kemungkinan terburuknya esp nya rusak
min kalau dia eror seperti ini ‘box_array_t {aka struct tag_box_list}’has no member named ‘score’
Kak saya bertanya kalau cameranya blur itu kenapa ya kak, jadi buram gitu kak langkahnya udah saya ikuti kak pas start stream cameranya ngeblur
coba diatur jarak fokusnya
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
yg ditanyakan bikin qrcode-nya, decoding qrcode-nya, atau cara uploadnya?
cara deteksi qrcodenya bang bagaimana bang ?
untuk mudahnya bisa pake library, bisa coba https://github.com/alvarowolfx/ESP32QRCodeReader atau https://github.com/donny681/ESP32_CAMERA_QR
bang kalo masih eror wifi pengaruh ?
harusnya ngga ada hubungannya dengan wifi
kalo gak ada hubungannya dengan wifi terus bagaimana bang?
ituu pasti bisa bang ?
bisa
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…..
dilihat dulu errornya apa, kemudian coba cari solusinya di internet
min mau tanya, saat memakai face detection atau recognition selalu erorr, itu masalahny apa ya min???
errornya apa ya?
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
baca artikel ini dl mas, kemungkinan belum ditekan aja tombolnya saat upload Memulai Menggunakan Esp32 Arduino IDE (Erorr Uploading)
di esp cam 32 saya g ada boot nya, cuma ada reset aj,,trus gmn om?
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
harus lihat programnya dulu. Atau untuk troubleshooting coba run program example, kalo bisa berarti program Anda yang ada bug-nya
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);
}
}
}
}
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
oh gitu ya, oke makasih ya atas masukannya
izin tanya ka kenapa koneksi ke telegram conecction to failed yh ka
errornya apa?
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.
iya, bisa
Bang izin nanya, kalo waktu sudah di web ip kamera sempat muncul waktu tekan start stream 3-5 detik kemudian hilang cuma tinggal tombol gimana mengatasinya? mhn petunjuknya bang trima kasih bnyak.
coba programnya dihilangin dikit2 kmd dianalisa perubahannya apa aja stlh dihilangkan
Halo kak, kalau erornya begini apa yang salah kak.
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
bisa cek artikel Memulai Menggunakan Esp32 Arduino IDE (Erorr Uploading) untuk solusinya
Halo kak, kenapa esp32 cam saya tidak bisa connect ke ip address wifi ny ya kalo pake daya dari batre 18650 yang saya hubungkan ke motor driver l298n, sedangkan kalo langsung colok ke setrum listrik pake charger hp bisa connect ke ip address wifi nya, penasaran saya coba test ke power bank juga ga mau connect
coba cari powerbank yang output arusnya besar, minimal 2A
Mau tanya bang caranya bisa konek esp32-cam lewat nodemcu gmn bang?
kenapa harus pake nodemcu mas? esp32 kan ‘kakaknya’ nodemcu?
Permisi mas mau tanya, saya menggalammi kendala sewaktu mau memakai face detection untuk menyimpan data wajah saya, esp32-cam reboot dengan sendirinya, sebelum reboot streaming nya lag dan kotak pembaca wajah tidak muncul, itu kenapa ya mas?
coba cek koneksi internetnya, yang kedua coba cek pemakaian RAM-nya, kalo overload suka begitu
error nya gini mas,
CORRUPT HEAP: Bad head at 0x3ffe25c8. Expected 0xabba1234 got 0x00000008
abort() was called at PC 0x4008a64d on core 1
HEAP = static RAM (SRAM), coba cek scriptnya, jangan sampai banyak menghabiskan RAM. Contoh yang menghabiskan SRAM: penggunaan variabel global (ganti variabel lokal), hindari variabel string (ganti dengan char array)
Saya hanya menggunakan script/program dari example dan tidak ada sedikitpun yg saya ubah dari program CameraWebServer,
Bagian mana yang harus saya ubah?
bisa jadi hardware-nya yang bermasalah. Kalo ada esp32-cam satu lagi bisa dicoba running example script dan dibandingkan bedanya
Mau tanya sekali lagi mas, kalo semisal kita restart esp32-cam nya apakah untuk face detection dan face recognation wajah tidak tersimpan dan harus membaca wajah kembali?
iya mas, tidak tersimpan kecuali dibikin dulu script-nya (script untuk menyimpan data wajah)
Pada saat menyalakan face detection dan face recognition, kenapa serialprint saya selalu “dl_matrix3du_alloc failed” ya? mohon bantuannya ya. terima kasih..