ESP-CAM的开发过程

  • ESP-CAM介绍
    • 先说说开发和搭环境遇到的问题(及时吐槽)
    • arduino IDE的开发环境搭建(百度其实很多一样的)
    • 安信可公司的烧写方法(这里记录一下,不是很方便我用的也少)
    • ESP-CAM硬件连接以及代码烧写
    • 最后ESP-CAM相机的代码

ESP-CAM介绍

esp-cam是由一个ESP32+OV2640组成的模块
这里ESP32是蓝牙,WIFI模块
OV2640是像素为200W的摄像头(分辨率现在看来有点低了啊)

先说说开发和搭环境遇到的问题(及时吐槽)

1、首先是在arduino IDE中下载esp32开发板
这个真的是迷惑啊,第一次下载速度很慢,查到有人说打开VPN后下载,打开了VPN以后点击下载就不能下载了???后来又把VPN关了速度又提上来了???发现好像是在github上下载的东西,那确实是不用挂什么VPN

2、ESP-CAM的固件或者代码死活是烧写不进去
不知道有多少小伙伴都是卡在下面这个界面

这个简直毒瘤,一直报这个错误,我查到大佬们说是在Connecting中按下上面RST按钮就可以正常烧入,可我拼命连续按,或者按住都是这个报错

这里说下我后来是怎么解决这个问题的,每个人的状况可能不同
这个ESP-CAM讲道理只需要一个串口转USB就可以烧写程序,我这里用的是CH340(用的多比较熟悉),那么我们想烧入ESP-CAM的接线方法是:
左边CH340,右边ESP-CAM
VCC ------ VCC
GND ------ GND
TX ------ RX
RX ------ TX

GND ------ GPIO0
问题就出在VCC接VCC这里,我用CH340的3.3V接上了ESP-CAM的3.3V,按理来说这样接肯定是没有问题的,然后就浪费了我一个上午的时间。。。
一直失败啊,那我想应该咋办呢,也不清楚是不是ESP-CAM坏了,干脆把3.3V拔了,接上5V供电吧,结果真就碰上了,代码写进去了。

人生如戏啊,不说了继续莽

arduino IDE的开发环境搭建(百度其实很多一样的)

1、先从arduino官网下载arduino IDE,下载地址:https://www.arduino.cc/en/Main/Software

2、下载完成以后打开arduino IDE–文件–首选项,在附加开发板管理器网址填入https://dl.espressif.com/dl/package_esp32_index.json后,点击好

3、在工具-开发板管理器中搜索ESP32,然后点击下载,我下载的是1.0.4也就是最新的,这里下载过程可能有的人需要挂VPN,下面图片是已经下载好的界面

4、不多废话按照下图红框里面的选项配置好,之后我们测试一下用例程代码写入ESP-CAM中

安信可公司的烧写方法(这里记录一下,不是很方便我用的也少)

1、首先打开网站:
http://wiki.ai-thinker.com/esp32-cam
2、翻到下面下载摄像头使用说明,大概9到10M的样子很小的

3、照着里面的使用说明来使用就行,这里偷懒就不详细说了

这里怕有些人下载不下来我丢百度网盘了,反正才10M不到
链接:https://pan.baidu.com/s/1RVH0UbOp_yF435xn6CA64Q
提取码:ub6a

ESP-CAM硬件连接以及代码烧写

这里比较特殊,要用这个模块的时候发现CH340没带来,正准备放弃,突然找到了机智云的底板也是CH340,正准备继续呢,突然又发现公母头杜邦线只有3条,命运多舛啊,然后又想到刚好可以把VCC的一个脚单独插啊,然后就有了下面这个图

不管了我们继续下一步,反正可以正常使用
打开一个arduino IDE自带的ESP32的示例程序,这里选了WIFIScan做一次测试,这个代码是查找附近的WIFI的


然后一定记得选择正确的串口还有GPIO0要接地,我们点击上传,可以看到上传成功

然后我们可以打开arduino IDE的串口监视器看看,打开监视器以后按下ESP-CAM上面的复位,出现下面的信息

哇靠,这是什么啊,代码出问题了???仔细看看意思就知道原来是自己GPIO0还接着地呢,笨,拔掉后再按下RST试试,现在下图显示的才是正常的,这不是找到10个wifi了嘛

最后ESP-CAM相机的代码

做ESP-CAM也是心血来潮,突然看到B站的一个视频挺有意思的
Bilibili:https://www.bilibili.com/video/av78467733/
相机:https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/

ESP-CAM做相机代码:

/*********Rui SantosComplete project details at https://RandomNerdTutorials.com/esp32-cam-take-photo-save-microsd-cardIMPORTANT!!! - Select Board "AI Thinker ESP32-CAM"- GPIO 0 must be connected to GND to upload a sketch- After connecting GPIO 0 to GND, press the ESP32-CAM on-board RESET button to put your board in flashing modePermission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files.The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
*********/#include "esp_camera.h"
#include "Arduino.h"
#include "FS.h"                // SD Card ESP32
#include "SD_MMC.h"            // SD Card ESP32
#include "soc/soc.h"           // Disable brownour problems
#include "soc/rtc_cntl_reg.h"  // Disable brownour problems
#include "driver/rtc_io.h"
#include <EEPROM.h>            // read and write from flash memory// define the number of bytes you want to access
#define EEPROM_SIZE 1// Pin definition for 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     22int pictureNumber = 0;void setup() {WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detectorSerial.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_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; if(psramFound()){config.frame_size = FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGAconfig.jpeg_quality = 10;config.fb_count = 2;} else {config.frame_size = FRAMESIZE_SVGA;config.jpeg_quality = 12;config.fb_count = 1;}// Init Cameraesp_err_t err = esp_camera_init(&config);if (err != ESP_OK) {Serial.printf("Camera init failed with error 0x%x", err);return;}//Serial.println("Starting SD Card");if(!SD_MMC.begin()){Serial.println("SD Card Mount Failed");return;}uint8_t cardType = SD_MMC.cardType();if(cardType == CARD_NONE){Serial.println("No SD Card attached");return;}camera_fb_t * fb = NULL;// Take Picture with Camerafb = esp_camera_fb_get();  if(!fb) {Serial.println("Camera capture failed");return;}// initialize EEPROM with predefined sizeEEPROM.begin(EEPROM_SIZE);pictureNumber = EEPROM.read(0) + 1;// Path where new picture will be saved in SD CardString path = "/picture" + String(pictureNumber) +".jpg";fs::FS &fs = SD_MMC; Serial.printf("Picture file name: %s\n", path.c_str());File file = fs.open(path.c_str(), FILE_WRITE);if(!file){Serial.println("Failed to open file in writing mode");} else {file.write(fb->buf, fb->len); // payload (image), payload lengthSerial.printf("Saved file to path: %s\n", path.c_str());EEPROM.write(0, pictureNumber);EEPROM.commit();}file.close();esp_camera_fb_return(fb); // Turns off the ESP32-CAM white on-board LED (flash) connected to GPIO 4pinMode(4, OUTPUT);digitalWrite(4, LOW);rtc_gpio_hold_en(GPIO_NUM_4);delay(2000);Serial.println("Going to sleep now");delay(2000);esp_deep_sleep_start();Serial.println("This will never be printed");
}void loop() {}

如果你能配置完之前的开发环境,以及测试代码可以烧入,直接可以将上面这段代码复制到arduino IDE中直接上传

这代码就不做解释了,原文网站中就有提到如何将图片保存在内存卡排序问题以及其他的东西,ESP-CAM现在玩的人还是太少了,这里做一个博客的记录,有空去实现一些现有的github项目,二维码识别,以及人脸识别,监控摄像头这些。看完大佬们给个赞吧。

淘宝购买的ESP-CAM+SD内存卡做一个200W像素的相机arduino IDE开发过程相关推荐

  1. ecshop每个商品添加去淘宝购买链接

    如果单独设计的话,需要修改数据库,但是在商品属性里面有一个 商家备注,很少用到,因此可以将它修改成去淘宝购买的链接.以前有人写过,下面整理一下! 首先找到 includes/lib_goods.php ...

  2. ecshop商品页面附件下载,京东淘宝购买,自定义按钮自定义连接

    ecshop商品页自定义按钮自定义连接_附件下载,去京东淘宝购买,查看演示按钮,ecshop商品页面附件下载,京东淘宝购买,自定义按钮自定义连接,ecshop商品页增加多个连接按钮,可以设置自定义超链 ...

  3. 获取淘宝购买到的商品订单物流API,买家订单物流API接口,淘宝买家订单API接口

    一.获取淘宝购买到的商品订单物流API,买家订单物流API接口,淘宝买家订单API接口代码对接如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接 ...

  4. 一次淘宝购买MacBook Pro的经历,让我明白在正规渠道购买电子产品多么重要

    一次淘宝购买MacBook Pro的经历,让我明白在正规渠道购买电子产品多么重要 故事开端 作为一个开发者(程序猿,说到这就感觉满是泪啊),MacBook Pro可能是最能让自己满意的工具.当然,像我 ...

  5. 分享淘宝购买的一些送货单样式

    分享淘宝购买的送货单设计样式 分享淘宝购买的一些送货单样式,其中有设计不错的,也有设计一般的.如果大家有需要,都拿去吧!如果喜欢的小伙伴,麻烦回复一下不错,支持创作的动力! 送货单1 下载地址: ht ...

  6. 淘宝购买记录截图生成,制作淘宝我的已付款网页

    淘宝订单生成器是一个强大的工具,主要用于生成淘宝我的订单页面的假截图.下面介绍一下淘宝订单生成器的主要功能之一:淘宝购买记录截图制作. 淘宝购买记录截图在线生成器: https://taobaoord ...

  7. 淘宝怎么选品技巧秘籍,做淘宝7分靠选货品

    淘宝怎么选品技巧秘籍,做淘宝7分靠选货品#电商#电商创业#电商运营 做淘宝, 7 分靠选品, 3 分靠运营.视频一定能够缓解你现在缺产品,还不知道选产品的苦恼.通过跨平台选品,能够找到一些利润又高,同 ...

  8. 淘宝美工设计行业发展前景好嘛?做淘宝美工需要掌握什么知识

    本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 淘宝美工设计行业发展前景好嘛?做淘宝美工需要掌握什么知识?随着电子商务的迅猛发展,想创业自己开淘宝店的,或者看好这个 ...

  9. 淘宝省钱卡连续包月可以只用一个月就取消吗?

    原文来源:https://www.caochai.com/article-674.html 淘宝省钱卡连续包月可以只用一个月就取消:如果不想继续使用淘宝省钱卡连续包月功能扣费,可以打开我的支付宝设置内 ...

  10. 淘宝赚钱的方法有哪些?做淘宝要注意哪些?

    随着互联网的快速发展,淘宝成了人们生活中一款必不可少的购物平台,很多人通过淘宝购物,也有很多人通过淘宝赚钱,那么淘宝赚钱方法有哪些呢?做淘宝有要注意哪些呢?今天就让我们一起来了解下! 淘宝赚钱方法有哪 ...

最新文章

  1. 互联网金融投放获客优化的讨论(新用户引导流程)
  2. 2021年茅台销售现新套路,限价控价没有用?
  3. Matlab 常用运算符的用法和功能
  4. 万字长文教你看懂java G1垃圾回收日志
  5. C - Cats Gym - 102875C
  6. 智能驾驶板块_智能驾驶股票有哪些?智能驾驶股票一览
  7. java数据类型和运算优先级
  8. Redis积分排行榜设计与实现第二篇
  9. 杭电1425 sort
  10. 1.每天一个linux命令 ls
  11. 控制台接收信息转发_微信语音信息无法转发?原来这才是正确的转发姿势,看完涨知识了...
  12. 《深入理解计算机网络》读后小记 8、IP地址和子网
  13. 未来五年你永远不会忘记的最佳GameCube仿真器
  14. 苹果Mac3D建模软件SketchUp Pro很专业
  15. 计算机组装教程 ppt,电脑组装教程完整.ppt
  16. 豆豆趣事[2016年02月]
  17. mysql数据库读取数据,教你如何从 MySQL 数据库读取数据
  18. jQuery购物车 商品数量加减和小计
  19. 跟随器为何要加反馈电阻?
  20. php导出大数据scv

热门文章

  1. 刘易斯拐点对中国经济的影响
  2. 数据分析实战项目练习——物流行业数据分析
  3. android MVX杂谈
  4. 程序员学习资料分享---爱分享的程序员(新浪微博)
  5. C/C++实现的游戏角色名称名字随机生成代码
  6. 解决VMware下Win10主机和win7虚拟机实现文件共享问题
  7. 五年饮冰,难凉热血”,一名专科生的求学历程
  8. 计算机科学与工程本科,加州大学洛杉矶分校计算机科学与工程本科申请条件.pdf...
  9. Xshell连接新浪云服务器
  10. Microbiome:中国科学家完成鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)...