Store and share experiences about robocon, IoT, Embedded...
  • Home
  • Linux
  • Window
    • Latex
    • Matlab
  • Embedded programming
    • Jetson Tx1
    • Raspberry Pi
    • Raspberry Pico
  • Internet of things
    • HTTP+MySQL cho IoT
    • Websocket+Nodejs
    • ESP32
  • Electronics and robots
    • Robocon
    • Arduino
    • RISCV
    • FPGA
  • Network and devices
    • Basic CCNA
  • IoT Server
  • Q&A (Hỏi đáp)
  • About
No Result
View All Result
  • Home
  • Linux
  • Window
    • Latex
    • Matlab
  • Embedded programming
    • Jetson Tx1
    • Raspberry Pi
    • Raspberry Pico
  • Internet of things
    • HTTP+MySQL cho IoT
    • Websocket+Nodejs
    • ESP32
  • Electronics and robots
    • Robocon
    • Arduino
    • RISCV
    • FPGA
  • Network and devices
    • Basic CCNA
  • IoT Server
  • Q&A (Hỏi đáp)
  • About
No Result
View All Result
Store and share experiences about robocon, IoT, Embedded...
No Result
View All Result
Home Điện tử- Robot Arduino

ESP32-CAMERA: Cài đặt môi trường Arduino IDE và nạp chương trình

Esp32-Cam là một module dựa trên SoC ESP32 mạnh mẽ, được thiết kế để có thể gắn Module Camera để thực hiện các dự án với thu thập hình ảnh, stream video chất lượng trung bình, phù hợp cho một số dự án IoT về giám sát và theo dõi.

admin by admin
December 27, 2019
in Arduino, ESP32
0 0
9

Main contents

  1. Các thành phần về phần cứng dùng cho lập trình ESP32-CAM
  2. Cài đặt môi trường, thư viện cho Arduino IDE lập trình ESP32-CAM
  3. Đấu nối, cách nạp chương trình cho ESP32 với Arduino IDE

Các thành phần về phần cứng dùng cho lập trình ESP32-CAM

+ Module ESP32-CAM

+ Module giao tiếp nối tiếp PL2303

Cài đặt môi trường, thư viện cho Arduino IDE lập trình ESP32-CAM

+ Các bạn hãy tải Arduino IDE tại trang chủ Arduino, ở đây tôi vẫn đang dùng bản 1.8.8, các bạn có thể tải các phiên bản cũ hơn của Arduino IDE ở đây

+ Khởi động Arduino IDE, và chọn Preferences như hình minh họa dưới đây

Trong mục Additional Boards Manager URLs, các bạn điền dòng sau: https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

Sử dụng URL như trên giúp chúng ta vừa dùng ESP8266 và ESP32

Tiếp theo các bạn chọn OK, sau đó tìm vào menu Tool-> Boards Manager như hình dưới

Trong ô nhập tìm kiếm, các bạn gõ chữ ESP32, sau đó chọn esp32-> install như hình dưới, của tôi đã được cài sẵn nên chữ install bị mờ đi.

Tiếp theo là kiểm tra xem board đã được cài đặt thành công chưa. Vào Tool->Boards->AI-Thinker ESP32-CAM

Đấu nối, cách nạp chương trình cho ESP32 với Arduino IDE

+ Đấu nối module ESP32-CAM với PL2303. ( Trong một số hướng dẫn khác trên mạng thường yêu cầu module FTDI, nhưng tôi thấy chỉ cần là module USBtoTTL vẫn thực hiện kết nối bình thường, vì vậy ở đây có sẵn PL2303 nên tôi dùng và PL2303 cũng tương đối ổn định)

Sơ đồ đấu nối ( chú ý chân IO0 phải được nối GND khi nạp, sau đó ngắt ra)

Sau khi đấu nối xong, cắm PL2303 vào Laptop, sẽ không thấy đèn báo nào trên Module ESP32 sáng. Ta có thể kiểm tra bằng cách nhấn nut RESET, sẽ thấy đèn Flash phía sau nháy sáng, lúc này cấp nguồn của chúng ta đến ESP32 đã OK.

Tiến hành nạp và chạy thử chương trình:

  • Tại cửa sổ của Arduino IDE, chọn File->Example->wifi->wifi scan

  • Kiểm tra PL2303 cắm vào PC được nhận là COM số mấy? 

Cách nạp chương trình:

Trong các hướng dẫn khác, chỉ ra cách nạp khá nhiều bước, phải chờ xuất hiện kí tự gì gì đó rồi nhấn reset, nhưng về bản chất nó rất đơn giản. ( Khi các bạn cấp nguồn, đồng thời chân IO0 nối GND, nếu nhấn reset sau đó nhả ra, ESP32 hoặc ESP8266 đều rơi vào chế độ Flash, có nghĩa là lúc này chỉ là bắt tay giữa PC với ESP qua UART là tự động nạp chương trình vào bộ nhớ, chúng ta chỉ cần ngồi đợi cho nạp xong, không phải canh thời gian nhấn nút reset làm gì cho mất công!)

Kết quả sau khi nhấn nút reset như mô tả bên trên, đồng thời nhấn nút mũi tên màu vàng như hình dưới.

Sau khi nạp thành công 100%, các bạn hãy ngắt dây nối IO0 và GND ra. sau đó mở Serial Terminal, chọn tốc độ 115200 và quan sát kết quả.

Đến đây chúng ta đã thành công trong bước đầu tiên tiếp cận với ESP32-CAM, bài sau chúng ta sẽ làm một project nhỏ với module này: ” Lập trình ESP32-CAM chụp hình, lưu vào thẻ nhớ”

Số lượt xem: 2,560
Tags: esp cameraesp32esp32 arduino ideesp32 pl2303esp32-camlập trình esp32 cam

Related Posts

Giám sát nhiệt độ thời gian thực với ESP32/8266 sử dụng MQTT – Hiển thị dữ liệu với MQTT over WebSocket

Giám sát nhiệt độ thời gian thực với ESP32/8266 sử dụng MQTT – Hiển thị dữ liệu với MQTT over WebSocket

September 1, 2021
467
Viết PHP server điều khiển ESP32-CAM chụp hình, hiển thị ảnh lên trình duyệt  qua internet

Viết PHP server điều khiển ESP32-CAM chụp hình, hiển thị ảnh lên trình duyệt qua internet

March 9, 2021
2.5k
ESP32-CAM: Hướng dẫn khắc phục lỗi kết nối Wifi kém, tốc độ chậm,…

ESP32-CAM: Hướng dẫn khắc phục lỗi kết nối Wifi kém, tốc độ chậm,…

February 16, 2020
1.7k

Comments 9

  1. Pingback: ESP32-CAMERA: Chụp ảnh và hiển thị hỉnh ảnh lên trình duyệt - Lưu và chia sẻ kiến thức robocon, IoT, Embedded...
  2. Pingback: ESP32-CAMERA: Điều khiển chụp hình ESP32-CAMERA qua ineternet, hiển thị hình ảnh lên trình duyệt - Lưu và chia sẻ kiến thức robocon, IoT, Embedded...
  3. Chadwick Simpelo says:
    3 years ago

    I am actually happy to glance at this website posts which includes plenty of helpful data, thanks for providing these kinds of statistics.|

    Reply
    • admin says:
      3 years ago

      Thanks and welcome 🙂

      Reply
  4. Hector says:
    3 years ago

    It’s really a great and helpful piece of info.
    I’m glad that you shared this helpful info with us.
    Please keep us informed like this. Thanks for sharing.

    Reply
  5. Carole says:
    2 years ago

    I absolutely love your blog.. Excellent colors & theme.
    Did you develop this amazing site yourself? Please reply back as I’m hoping to create
    my own site and would love to know where you got this from or what the theme is
    called. Appreciate it!

    Reply
    • admin says:
      2 years ago

      Thank you very much! This theme is Jnews.

      Reply
  6. soon says:
    2 years ago

    thanks for your post it was very helpful.
    I am working on a face recognition project using this esp32_cam, but after recognizing it controls relayPin to open the door, the signal it gives after I setup () for it, it can’t output or very weak and short wait. So let me ask how to handle it?
    Thank you for your interest.

    this is my program
    #include “esp_camera.h”
    #include “fd_forward.h”
    #include “fr_forward.h”
    #include “fr_flash.h”
    #define CAMERA_MODEL_AI_THINKER

    //khái báo kết nối relay và đèn
    #define trueled 4
    #define relayPin 14

    unsigned long currentMillis = 0;
    unsigned long openedMillis = 0;
    long interval = 5000; // mở khóa trong …..ms

    // khái báo chân kết nối với esp32_cam
    #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

    #define ENROLL_CONFIRM_TIMES 5
    #define FACE_ID_SAVE_NUMBER 7

    // cấu hình của mô hình MTMN (nhận diện khuôn mặt kích thước ngưỡng ứng viên, kim tự tháp
    static inline mtmn_config_t app_mtmn_config()
    {
    mtmn_config_t mtmn_config = {0};
    mtmn_config.type = FAST;
    mtmn_config.min_face = 80;
    mtmn_config.pyramid = 0.707;
    mtmn_config.pyramid_times = 4;
    mtmn_config.p_threshold.score = 0.6;
    mtmn_config.p_threshold.nms = 0.7;
    mtmn_config.p_threshold.candidate_number = 20;
    mtmn_config.r_threshold.score = 0.7;
    mtmn_config.r_threshold.nms = 0.7;
    mtmn_config.r_threshold.candidate_number = 10;
    mtmn_config.o_threshold.score = 0.7;
    mtmn_config.o_threshold.nms = 0.7;
    mtmn_config.o_threshold.candidate_number = 1;
    return mtmn_config;
    }
    mtmn_config_t mtmn_config = app_mtmn_config();

    // khai báo danh sách các khuôn mặt đc ghi nhớ
    static face_id_list id_list = {0};
    dl_matrix3du_t *image_matrix = NULL;
    camera_fb_t * fb = NULL;

    // gắn ảnh mới đc căn chỉnh vào kích thước của face đc cài đặt
    dl_matrix3du_t *aligned_face = dl_matrix3du_alloc(1, FACE_WIDTH, FACE_HEIGHT, 3);

    //hàm khởi tạo
    void setup() {
    Serial.begin(115200); //tốc độ boaud
    delay(3000);
    // đặt chế độ ban đầu vào cho chân relay và led
    pinMode(relayPin , OUTPUT);
    pinMode(trueled , OUTPUT);
    pinMode(33 , OUTPUT) ; // hoạt động ở mức thấp

    digitalWrite(relayPin ,LOW);
    digitalWrite(trueled , LOW);
    digitalWrite(33, HIGH);

    // khởi tạo camera và khai báo chân kết nối với esp
    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; // tần số ban camera sử dụng
    config.pixel_format = PIXFORMAT_JPEG; // khai báo chất lượng ảnh
    config.frame_size = FRAMESIZE_UXGA; // kích thước khung ảnh
    config.jpeg_quality = 10; // khung hình và chất lượng ảnh là jpeg
    config.fb_count = 2;

    //khởi tạo camera
    esp_err_t err = esp_camera_init(&config);
    if (err != ESP_OK) {
    Serial.printf(“Camera init failed with error 0x%x”, err);
    return;
    }

    // giảm kích thước khung hình để có tốc độ cao hơn
    sensor_t * s = esp_camera_sensor_get(); // lưu và cài đặt máy ảnh vào bộ nhớ không thay đổi
    s->set_framesize(s, FRAMESIZE_QVGA); // kích thước khung
    s->set_vflip(s, 1);

    face_id_init(&id_list, FACE_ID_SAVE_NUMBER, ENROLL_CONFIRM_TIMES); // khởi tạo danh sách khuôn mặt đc lưu và đăng kí
    read_face_id_from_flash(&id_list);// đọc dữ liệu khuôn mặt hiện tại từ flash trên bo mạch
    }

    // chương trình để mở khóa cửa và bật đèn led

    // hàm xác định nhận dạng khuôn mặt
    bool run_face_recognition() {
    bool faceRecognised = false;
    int64_t start_time = esp_timer_get_time();
    fb = esp_camera_fb_get();
    if (!fb) {
    Serial.println(“Camera capture failed”);
    return false;
    }

    int64_t fb_get_time = esp_timer_get_time();
    Serial.printf(“Get one frame in %u ms.\n”, (fb_get_time – start_time) / 1000); // đưa Cam vào khuôn mặt muốn nhận diện

    image_matrix = dl_matrix3du_alloc(1, fb->width, fb->height, 3); //ma trận khuôn mặt phát hiện so sánh kích thước của ảnh
    uint32_t res = fmt2rgb888(fb->buf, fb->len, fb->format, image_matrix->item);
    if (!res) {
    Serial.println(“to rgb888 failed”);
    dl_matrix3du_free(image_matrix);
    }

    esp_camera_fb_return(fb);

    box_array_t *net_boxes = face_detect(image_matrix, &mtmn_config);

    if (net_boxes) {
    // nếu thiết lập camera ok
    if (align_face(net_boxes, image_matrix, aligned_face) == ESP_OK) {

    int matched_id = recognize_face(&id_list, aligned_face); // khai báo biến trong list khuôn mặt
    if (matched_id >= 0) {
    Serial.printf(“Match Face ID: %u\n”, matched_id);
    faceRecognised = true; // nhận diện dúng
    } else {
    Serial.println(“No Match Found”); // khong xác định được khuôn mặt
    matched_id = -1;
    }
    } else {
    Serial.println(“Face Not Aligned”); // khuôn mặt chưa đc căn chỉnh
    }

    free(net_boxes->box);
    free(net_boxes->landmark);
    free(net_boxes);
    }

    dl_matrix3du_free(image_matrix);
    return faceRecognised;
    }
    void rzoCheckForFace(){
    currentMillis = millis();
    if (run_face_recognition()) {
    // nó trả về giá trị true
    Serial.println(“Face recognised”);
    digitalWrite(relayPin , HIGH); //relay hoạt động
    digitalWrite(trueled , HIGH); // led mở
    digitalWrite(33, LOW );
    openedMillis = millis(); //thời gian đóng lại của relay
    }
    if (currentMillis – interval > openedMillis) {
    // thời gian >5s thì đóng cửa
    digitalWrite(13 , HIGH); // mở relay
    digitalWrite(trueled, LOW); // tắt Flash
    digitalWrite(33 , HIGH); // bật led
    }
    }
    void loop() {
    rzoCheckForFace();
    }

    Reply
    • admin says:
      2 years ago

      That’s interesting project. Firstly, you need to make sure there is an output signal. It’easy to check, like a led. Then, checking your relay circuit, does it work well when have a trigger signal?

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Bài viết đọc nhiều

IoT Webserver- ESP8266/ESP32 gửi dữ liệu lên Cloud, hiển thị ra trình duyệt web với MySQL và PHP

IoT Webserver- ESP8266/ESP32 gửi dữ liệu lên Cloud, hiển thị ra trình duyệt web với MySQL và PHP

January 30, 2023
16.9k
Điều khiển ESP8266/ESP32 từ xa qua internet, không cần mở Port modem

Điều khiển ESP8266/ESP32 từ xa qua internet, không cần mở Port modem

November 7, 2019
10.1k
ESP32-CAMERA: Cài đặt môi trường Arduino IDE và nạp chương trình

ESP32-CAMERA: Cài đặt môi trường Arduino IDE và nạp chương trình

December 27, 2019
6.9k
IoT webserver- Gửi thông báo bằng email từ ESP8266 không dùng IFTTT

IoT webserver- Gửi thông báo bằng email từ ESP8266 không dùng IFTTT

November 19, 2020
5.5k
Store and share experiences about robocon, IoT, Embedded…

Lưu và chia sẻ những gì đã đọc, đã làm, đã nghiên cứu về vi điều khiển, hệ thống nhúng, internet of things, kiến trúc máy tính và hệ điều hành.

Liên hệ với quản trị viên

Chủ đề

  • Arduino
  • CCNA cơ bản
  • Cisco
  • Điện tử- Robot
  • ESP32
  • FPGA
  • HTTP+MySQL cho IoT
  • IoT Server
  • Jetson Tx1
  • Lập trình nhúng
  • Latex
  • Linux
  • Mạng và thiết bị mạng
  • Raspberry Pi
  • Raspberry Pico
  • RISCV
  • Robocon
  • Web of things
  • Window
  • WordPress

Quản trị trang

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

© 2019- 2023 luuvachiase.net - Phát triển và quản trị bởi Đỗ Ngọc Tuấn và Nguyễn Văn Tuấn ***Vui lòng ghi rõ nguồn khi trích dẫn bài viết từ Website này. DMCA.com Protection Status

No Result
View All Result
  • Trang chủ
  • Linux
  • Window
  • Lập trình nhúng
    • Jetson Tx1
    • Raspberry Pi
  • Web of things
    • HTTP+MySQL cho IoT
    • Websocket+Nodejs
  • Điện tử- Robot
    • Robocon
    • Arduino
    • RISCV
    • FPGA
  • Mạng và thiết bị mạng
    • CCNA cơ bản
  • IoT Server
  • Giới thiệu
  • Q&A (Hỏi đáp)

© 2019- 2023 luuvachiase.net - Phát triển và quản trị bởi Đỗ Ngọc Tuấn và Nguyễn Văn Tuấn ***Vui lòng ghi rõ nguồn khi trích dẫn bài viết từ Website này. DMCA.com Protection Status

Login to your account below

Forgotten Password?

Fill the forms bellow to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In