QA011 ESP32 كام الإصدار 1.0

../../_images/QA011-1.png

1.Introduction

ACEBOTT-ESP32-CAM-V1.0 هي وحدة الكاميرا الصغيرة الأكثر تنافسية في الصناعة، والتي يمكنها العمل بشكل مستقل كأصغر نظام.

يمكن استخدام ACEBOTT-ESP32-CAM-V1.0 على نطاق واسع في تطبيقات إنترنت الأشياء المختلفة، ومناسب للأجهزة الذكية المنزلية، والتحكم اللاسلكي الصناعي، والمراقبة اللاسلكية، والتعريف اللاسلكي QR، وإشارات نظام تحديد المواقع اللاسلكي وتطبيقات إنترنت الأشياء الأخرى.

يعتمد ACEBOTT-ESP32-CAM-V1.0 على حزمة DIP، والتي يمكن استخدامها مباشرة عند إدخالها في اللوحة السفلية لتحقيق الإنتاج السريع للمنتجات، وتزويد العملاء باتصال عالي الموثوقية، وتسهيل التطبيق في مختلف المناسبات الطرفية لأجهزة إنترنت الأشياء.

2.Features

وحدة SoC Wi-Fi 802.11b/g/n صغيرة الحجم للغاية

يمكن استخدام وحدة المعالجة المركزية ثنائية النواة 32 بت منخفضة الطاقة كمعالج للتطبيق

التردد الرئيسي يصل إلى 240 ميجا هرتز، قوة حوسبة تصل إلى 600 DMIPS

ذاكرة SRAM مدمجة بحجم 520 كيلو بايت، وذاكرة PSRAM خارجية بحجم 8 ميجا بايت

دعم واجهات UART / SPI / I2C / PWM / ADC / DAC

دعم لكاميرات OV2640 وOV7670، مع فلاش مدمج

دعم تحميل الصور عبر WiFI

يدعم أوضاع الخمول المتعددة

Lwip و FreeRTOS

يدعم وضع العمل STA / AP / STA + AP

دعم شبكة التوزيع بنقرة واحدة Smart Config / AirKiss

3.Specifications

المعلمات القيمة / الوصف
المقاس 27.1 × 47.1 (مم)
التغليف تراجع 20
مزود الطاقة نوع ج
واجهة الدعم UART/SPI/I2C/PWM
عدد منافذ الإدخال والإخراج 10
المنفذ التسلسلي معدل الباود دعم 110 ~ 4608000 بت في الثانية، الافتراضي 115200 بت في الثانية
SPI فلاش الافتراضي 32 ميغابت
تنسيق إخراج الصورة JPEG (مدعوم بواسطة OV2640 فقط)، BMP، GRAYSCALE
نطاق الطيف 2400 ~ 2483.5MHz
شكل هوائي هوائي PCB خارجي، مكسب 2 ديسيبل
استهلاك الطاقة أوقف تشغيل الفلاش: 180mA @ 5V
قم بتشغيل ضوء الفلاش وضبط السطوع إلى الحد الأقصى: 310 مللي أمبير عند 5 فولت
النوم العميق: يمكن أن يصل أدنى استهلاك للطاقة إلى 6 مللي أمبير عند 5 فولت
النوم الحديث: الحد الأدنى هو 20 مللي أمبير عند 5 فولت
النوم الخفيف: يمكن أن تصل القيمة الدنيا إلى 6.7 مللي أمبير عند 5 فولت
حماية WEP / WPA-PSK / WPA2-PSK
نطاق امدادات الطاقة 4.75-5.25V
درجة حرارة التشغيل -20 درجة مئوية ~ 70 درجة مئوية
بيئة التخزين -40 درجة مئوية ~ 1250 درجة مئوية،<90%رطوبة نسبية

../../_images/QA011-2.png../../_images/QA011-3.png

4. رمز العينة

قم بتوصيل اللوحة بالكمبيوتر باستخدام كابل بيانات Type-C: حدد "ESP32" -> "ESP32 Dev Module" من قائمة الأدوات > اللوحة. اختر المنفذ المناسب. وقم بتحميله إلى اللوحة باستخدام زر التحميل.

(1) مخطط الأسلاك

../../_images/QA011-4.png

(2) رمز العينة

  1#include "esp_camera.h"
  2#include <WiFi.h>
  3#include "esp_timer.h"
  4#include "img_converters.h"
  5#include "Arduino.h"
  6#include "fb_gfx.h"
  7#include "soc/soc.h" //disable brownout problems
  8#include "soc/rtc_cntl_reg.h" //disable brownout problems
  9#include "esp_http_server.h"
 10
 11const char *ssid = "ESP32-CAM";
 12const char *password = "12345678";
 13WiFiServer server(100);
 14WiFiClient client;
 15
 16#define PART_BOUNDARY "123456789000000000000987654321"
 17// #define CAMERA_MODEL_AI_THINKER
 18#define PWDN_GPIO_NUM     32
 19#define RESET_GPIO_NUM    -1
 20#define XCLK_GPIO_NUM      0
 21#define SIOD_GPIO_NUM     26
 22#define SIOC_GPIO_NUM     27
 23#define Y9_GPIO_NUM       35
 24#define Y8_GPIO_NUM       34
 25#define Y7_GPIO_NUM       39
 26#define Y6_GPIO_NUM       36
 27#define Y5_GPIO_NUM       21
 28#define Y4_GPIO_NUM       19
 29#define Y3_GPIO_NUM       18
 30#define Y2_GPIO_NUM        5
 31#define VSYNC_GPIO_NUM    25
 32#define HREF_GPIO_NUM     23
 33#define PCLK_GPIO_NUM     22
 34
 35#define RXD2 14 
 36#define TXD2 13  
 37
 38static const char* _STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY;
 39static const char* _STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n";
 40static const char* _STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n";
 41httpd_handle_t stream_httpd = NULL;
 42
 43static esp_err_t stream_handler(httpd_req_t *req){
 44  camera_fb_t * fb = NULL;
 45  esp_err_t res = ESP_OK;
 46  size_t _jpg_buf_len = 0;
 47  uint8_t * _jpg_buf = NULL;
 48  char * part_buf[64];
 49  res = httpd_resp_set_type(req, _STREAM_CONTENT_TYPE);
 50  if(res != ESP_OK){
 51    return res;
 52  }
 53while(true){
 54    fb = esp_camera_fb_get();
 55    if (!fb) {
 56      Serial.println("Camera capture failed");
 57      res = ESP_FAIL;
 58    } else {
 59      if(fb->width > 400){
 60        if(fb->format != PIXFORMAT_JPEG){
 61          bool jpeg_converted = frame2jpg(fb, 80, &_jpg_buf, &_jpg_buf_len);
 62          esp_camera_fb_return(fb);
 63          fb = NULL;
 64          if(!jpeg_converted){
 65            Serial.println("JPEG compression failed");
 66            res = ESP_FAIL;
 67          }
 68        } else {
 69          _jpg_buf_len = fb->len;
 70          _jpg_buf = fb->buf;
 71        }
 72      }
 73}
 74if(res == ESP_OK){
 75  size_t hlen = snprintf((char *)part_buf, 64, _STREAM_PART, _jpg_buf_len);
 76  res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen);
 77    }
 78if(res == ESP_OK){
 79  res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len);
 80    }
 81if(res == ESP_OK){
 82  res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY));
 83    }
 84
 85if(fb){
 86    esp_camera_fb_return(fb);
 87    fb = NULL;
 88    _jpg_buf = NULL;
 89    } else if(_jpg_buf){
 90    free(_jpg_buf);
 91    _jpg_buf = NULL;
 92  }
 93  if(res != ESP_OK){
 94    break;
 95  }
 96    //Serial.printf("MJPG: %uB\n",(uint32_t)(_jpg_buf_len));
 97  }
 98  return res;
 99}
100void startCameraServer(){
101  httpd_config_t config = HTTPD_DEFAULT_CONFIG();
102  config.server_port = 80;
103  httpd_uri_t index_uri = {
104    .uri       = "/",
105    .method    = HTTP_GET,
106    .handler   = stream_handler,
107    .user_ctx  = NULL
108  };
109if (httpd_start(&stream_httpd, &config) == ESP_OK) {
110    httpd_register_uri_handler(stream_httpd, &index_uri);
111  }
112}
113
114void setup() {
115  // WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
116  Serial.begin(115200);
117  Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
118
119  // Serial.setDebugOutput(false);
120
121  camera_config_t config;
122  config.ledc_channel = LEDC_CHANNEL_0;
123  config.ledc_timer = LEDC_TIMER_0;
124  config.pin_d0 = Y2_GPIO_NUM;
125  config.pin_d1 = Y3_GPIO_NUM;
126  config.pin_d2 = Y4_GPIO_NUM;
127  config.pin_d3 = Y5_GPIO_NUM;
128  config.pin_d4 = Y6_GPIO_NUM;
129  config.pin_d5 = Y7_GPIO_NUM;
130  config.pin_d6 = Y8_GPIO_NUM;
131  config.pin_d7 = Y9_GPIO_NUM;
132  config.pin_xclk = XCLK_GPIO_NUM;
133  config.pin_pclk = PCLK_GPIO_NUM;
134  config.pin_vsync = VSYNC_GPIO_NUM;
135  config.pin_href = HREF_GPIO_NUM;
136  config.pin_sccb_sda = SIOD_GPIO_NUM;
137  config.pin_sccb_scl = SIOC_GPIO_NUM;
138  config.pin_pwdn = PWDN_GPIO_NUM;
139  config.pin_reset = RESET_GPIO_NUM;
140  config.xclk_freq_hz = 20000000;
141  config.frame_size = FRAMESIZE_UXGA;
142  config.pixel_format = PIXFORMAT_JPEG; // for streaming
143  //config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition
144  config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
145  config.fb_location = CAMERA_FB_IN_PSRAM;
146  config.jpeg_quality = 12;
147  config.fb_count = 1;
148  
149  // if PSRAM IC present, init with UXGA resolution and higher JPEG quality
150  //                      for larger pre-allocated frame buffer.
151  if(config.pixel_format == PIXFORMAT_JPEG){
152    if(psramFound()){
153      config.jpeg_quality = 10;
154      config.fb_count = 2;
155      config.grab_mode = CAMERA_GRAB_LATEST;
156    } else {
157      // Limit the frame size when PSRAM is not available
158      config.frame_size = FRAMESIZE_SVGA;
159      config.fb_location = CAMERA_FB_IN_DRAM;
160    }
161  } else {
162    // Best option for face detection/recognition
163    config.frame_size = FRAMESIZE_240X240;
164#if CONFIG_IDF_TARGET_ESP32S3
165    config.fb_count = 2;
166#endif
167  }
168  // camera init
169  esp_err_t err = esp_camera_init(&config);
170  if (err != ESP_OK)
171  {
172    Serial.printf("Camera init failed with error 0x%x", err);
173    return;
174  }
175  sensor_t *s = esp_camera_sensor_get();
176  //drop down frame size for higher initial frame rate
177  //s->set_framesize(s, FRAMESIZE_SXGA); //Byte length sampling value:60000                 #9 (High picture quality)  1280x1024
178  s->set_framesize(s, FRAMESIZE_SVGA); //Byte length sampling value:40000                   #7 (Medium picture quality)  800x600
179  //s->set_framesize(s, FRAMESIZE_QVGA); //Byte length sampling value:10000                #4 (Poor picture quality)  320x240
180
181  s->set_vflip(s, 1);   //Image orientation Settings (up and down)
182  s->set_hmirror(s, 1); //Image orientation Settings (left and right)
183
184  WiFi.setTxPower(WIFI_POWER_19_5dBm);
185  WiFi.mode(WIFI_AP);
186  WiFi.softAP(ssid, password, 5);
187  // WiFi.softAP(ssid, password);
188  Serial.print("\r\n");
189  startCameraServer();
190  Serial.print("\r\n");
191  Serial.print("Camera Ready! Use 'http://");
192  Serial.print(WiFi.softAPIP());
193  Serial.println("' to connect");
194
195  server.begin();          // Starting the server
196  delay(100);
197
198}
199void loop() {
200  delay(1);
201
202}

5. نتيجة الاختبار

بعد تحميل البرنامج، سيتم عرض تأثير التصوير على نهاية الويب. أولاً، يجب توصيل الجهاز الطرفي بشبكة WiFi الصادرة عن وحدة الكاميرا.

../../_images/QA011-7.jpg

تلميح

يمكن تخصيص اسم WiFi وكلمة المرور في البرنامج.

../../_images/QA011-5.png

عنوان IP لوحدة الكاميرا في وضع AP هو: 192.168.4.1، ثم أدخل عنوان IP في شريط العنوان في متصفح المحطة الطرفية للوصول إلى صفحة الويب الخاصة بصورة الكاميرا. من خلال تحريك اتجاه الكاميرا، يمكنك رؤية تأثير التصوير المباشر لوحدة الكاميرا على صفحة الويب.

../../_images/QA011-6.png

6. الموارد ذات الصلة

PDF والرمز

الوظائف ذات الصلة

اترك التعليق الأول

تقدم بطلب للحصول على نسخة تجريبية مجانية

تم منح تجربة هذا المنتج الأولوية للمعلمين والمؤسسات الأكاديمية.

من خلال ملء هذا النموذج وإرساله، فإنك توافق على
شروط وأحكام تجربة منتج Acebott.

احصل على خصم التعليم الحصري الخاص بك اليوم

املأ هذا النموذج لتقديم طلب للحصول على خصومات خاصة مصممة خصيصًا للمعلمين والمؤسسات. استمتع بخصم لا يقل عن 5% على مجموعات STEM الخاصة بنا - لأن التعليم يستحق المكافأة!

من فضلك قم بملء النموذج أعلاه، وسوف يقوم فريقنا بالتواصل معك على الفور!
😊🚀

احصل على عرض أسعار مجاني! 🎉

هل لا تستطيع العثور على مجموعة STEM المثالية؟ هل تريد الحصول على أفضل أسعار الجملة؟
هل أنت مهتم بأن تصبح موزعًا؟

فقط قم بملء النموذج أعلاه، وسنتصل بك في أقرب وقت ممكن بكل المعلومات التي تحتاجها! 😊🚀

هذا الموقع محمي بواسطة خدمة reCAPTCHA، وتُطبق عليه سياسة الخصوصية   شروط الخدمة بشركة Google.