esp32-cam+sim800L搭建图片上报mini型产品思路

一、产品介绍

1、esp32-cam拍照模块

image.png

安信可基于乐鑫esp32出品的esp32-cam,支持图片和视频流,价格便宜到只要40几块钱。
跟m5stacm的cam版本结构原理一样。
通过摄像头的库接口捕获frame数据形成图片。


image.png
image.png

image.png

2、sim800L数据传输模块

image.png

sim800l是芯讯通出品的2g通讯模组。淘宝带转接板的多的是,才20几块。


image.png

二、拍照测试

1、搭建编译环境

https://github.com/donny681/ESP32_CAMERA_QR/wiki
下载安信可的lubuntu系统加载接口。

image.png

image.png

觉得不方便可以自行配置xshell和winscp配合操作;
image.png

默认esp库在此,也可以自行git clone最新版,需要执行add_path.sh才能顺利编译固件。

2、下载示例代码

切换root账户

ai-thinker@aithinker:~$ 
ai-thinker@aithinker:~$ su
密码: 
root@aithinker:/home/ai-thinker# 


下载代码

root@aithinker:/home/ai-thinker# ls
1  esp  esp_demo  share  system  公共的  模板  视频  图片  文档  下载  音乐  桌面
root@aithinker:/home/ai-thinker# git clone https://github.com/donny681/ESP32_CAMERA_QR.git
正克隆到 'ESP32_CAMERA_QR'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 648 (delta 1), reused 6 (delta 1), pack-reused 633
接收对象中: 100% (648/648), 2.30 MiB | 1.03 MiB/s, 完成.
处理 delta 中: 100% (106/106), 完成.
root@aithinker:/home/ai-thinker# cd ESP32_CAMERA_QR/
root@aithinker:/home/ai-thinker/ESP32_CAMERA_QR# git submodule update --init
root@aithinker:/home/ai-thinker/ESP32_CAMERA_QR# 

3、配置及生成固件

root@aithinker:/home/ai-thinker/ESP32_CAMERA_QR# make menuconfig

configuration written to /home/ai-thinker/ESP32_CAMERA_QR/sdkconfig

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

GENCONFIG
root@aithinker:/home/ai-thinker/ESP32_CAMERA_QR# 

配置需要连接的wifi


image.png

改成自己的wifi连接方式。
开始编译固件

root@aithinker:/home/ai-thinker/ESP32_CAMERA_QR# make
WARNING: Toolchain version is not supported: 1.22.0-73-ge28a011
Expected to see version: 1.22.0-80-g6c4433a
Please check ESP-IDF setup instructions and update the toolchain, or proceed at your own risk.
WARNING: Toolchain version is not supported: 1.22.0-73-ge28a011
Expected to see version: 1.22.0-80-g6c4433a
Please check ESP-IDF setup instructions and update the toolchain, or proceed at your own risk.
CC build/bootloader/bootloader_support/src/bootloader_flash.o
CC build/bootloader/bootloader_support/src/efuse.o
CC build/bootloader/bootloader_support/src/secure_boot.o
CC build/bootloader/bootloader_support/src/bootloader_clock.o



LD build/esp32-cam-demo.elf
esptool.py v2.5.1
To flash all build output, run 'make flash' or:
python /home/ai-thinker/esp/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 /home/ai-thinker/ESP32_CAMERA_QR/build/bootloader/bootloader.bin 0x10000 /home/ai-thinker/ESP32_CAMERA_QR/build/esp32-cam-demo.bin 0x8000 /home/ai-thinker/ESP32_CAMERA_QR/build/partitions_singleapp.bin


最后呈现的是可以刷入固件的命令,以及固件位置。


image.png

image.png

4、刷固件

可以用linux环境的命令行刷入,也可以更方便的用在win方式刷入。
我们采用esp tools
https://www.espressif.com/en/support/download/other-tools?keys=&field_type_tid%5B%5D=13

image.png

image.png
image.png

刷入文件及刷入地址
0x1000 bootloader.bin
0x10000 esp32-cam-demo.bin
0x8000 partitions_singleapp.bin
刷固件步骤;
板子供电,数据线接usb-ttl,刷入需要下拉,如图,用根杜邦线把绿框内的两个直接连接即可(很重要),运行时拔掉。


image.png

选择com口,然后点板子上reset即可自动刷入。

5、测试效果

用串口工具连接esp32-cam

[0;32mI (30) boot: ESP-IDF v3.0.7 2nd stage bootloader�[0m
�[0
[07:38:26.378] ;32mI (30) boot: compile time 15:33:25�[0m
�[0;32mI (30) boot: Enabling RNG early entropy source...�[0m
�[0;32mI (35) boot: SPI Speed      : 40MHz�[0m
�[0;32mI (39) boot: SPI Mode       : DIO�[0m
�[0;32mI (43) boot: SPI Flash Size : 4MB�[0m
�[0;32mI (47) boot: Partition Table:�[0m
�[0;32mI (51) boot: ## Label            Usage          Type ST Offset   Length�[0m
�[0;32mI (58) boot:  0 nvs              WiFi data        01 02 00009000 00006000�[0m
�[0;32mI (65) boot:  1 phy_init         RF data          01 01 0000f000 00001000�[0m
�[0;32mI (73) boot:  2 factory          factory app      00 00 00010000 00100000�[0m
�[0;32mI (80) boot: End of partition table�[0m
�[0;32mI (85) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x13d90 ( 81296) map�[0m
[07:38:26.409] �[0;32mI (122) esp_image: segment 1: paddr=0x00023db8 vaddr=0x3ffb0000 size=0x02ce0 ( 11488) load�[0m
�[0;32mI (127) esp_image: segment 2: paddr=0x00026aa0 vaddr=0x40080000 size=0x00400 (  1024) load�[0m
�[0;32mI (129) esp_image: segment 3: paddr=0x00026ea8 vaddr=0x40080400 size=0x09168 ( 37224) load�[0m
�[0;32mI (153) esp_image: segment 4: paddr=0x00030018 vaddr=0x400d0018 size=0x63ad4 (408276) map�[0m
[07:38:26.584] �[0;32mI (296) esp_image: segment 5: paddr=0x00093af4 vaddr=0x40089568 size=0x01fd8 (  8152) load�[0m
�[0;32mI (300) esp_image: segment 6: paddr=0x00095ad4 vaddr=0x400c0000 size=0x00000 (     0) load�[0m
�[0;32mI (310) boot: Loaded app from partition at offset 0x10000�[0m
�[0;32mI (310) boot: Disabling RNG early entropy source...�[0m
�[0;32mI (315) cpu_start: Pro cpu up.�[0m
�[0;32mI (318) cpu_start: Starting app cpu, entry point is 0x40080fa4�[0m
�[0;32mI (0) cpu_start: App cpu up.�[0m
�[0;32mI (329) heap_init: Initializing. RAM available for dynamic allocation:�[0m
�[0;32mI (336) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM�[0m
�[0;32mI (342) heap_init: At 3FFB8148 len 00027EB8 (159 KiB): DRAM�[0m
�[0;32mI (348) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM�[0m
�[0;32mI (354) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM�[0m
�[0;32mI (361) heap_init: At 4008B540 len 00014AC0 (82 KiB): IRAM�[0m
�[0;32mI (367) cpu_start: Pro cpu start user code�[0m
[07:38:26.679] �[0;32mI (161) cpu_start: Starting scheduler on PRO CPU.�[0m
�[0;32mI (0) cpu_start: Starting scheduler on APP CPU.�[0m
[07:38:26.698] �[0;32mI (206) I2S: DMA Malloc info, datalen=blocksize=256, dma_buf_count=8�[0m
�[0;32mI (206) I2S: PLL_D2: Req RATE: 78125, real rate: 78125.000, BITS: 16, CLKM: 8, BCK: 8, MCLK: 20000000.000, SCLK: 2500000.000000, diva: 64, divb: 0�[0m
�[0;32mI (216) camera_xclk: PIN_CTRL before:3ff,78125�[0m
�[0;32mI (216) camera_xclk: PIN_CTRL after:7fff�[0m
[07:38:30.779] �[0;32mI (4286) camera_demo: Detected OV2640 camera, using JPEG format�[0m
[07:38:30.997] �[0;32mI (4506) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE�[0m
�[0;32mI (4506) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE�[0m
[07:38:31.089] �[0;32mI (4556) phy: phy_version: 3663, 1d88daa, Aug  6 2018, 10:31:06, 0, 0�[0m
�[0;32mI (4566) camera_demo: Connecting to "HI-WOOYA_471D"�[0m
[07:38:36.039] �[0;32mI (9506) event: sta ip: 192.168.1.126, mask: 255.255.255.0, gw: 192.168.1.182�[0m
�[0;32mI (9506) camera_demo: Connected�[0m
�[0;32mI (9506) camera_demo: Open http://192.168.1.126/jpg for single image/jpg image�[0m
�[0;32mI (9516) camera_demo: Open http://192.168.1.126/jpg_stream for multipart/x-mixed-replace stream of JPEGs�[0m
�[0;32mI (9526) camera_demo: Free heap: 77972�[0m
�[0;32mI (9526) camera_demo: Camera demo ready�[0m

给出ip地址和访问url;
http://192.168.1.126/jpg
http://192.168.1.126/jpg_stream
请求图片会出现,实际也是esp32捕捉ov2640的数据生成一个frame,视频原理也如此;100多毫秒响应一张图片。

[07:40:09.827] �[0;32mI (103296) camera: Frame 0 done in 94 ms�[0m
[07:40:15.027] �[0;32mI (108496) camera: Frame 1 done in 132 ms�[0m
�[0;33mW (108496) http_server: Expected response size: 28000, actual: 0�[0m
[07:44:22.283] �[0;32mI (355756) camera: Frame 105 done in 83 ms�[0m
[07:44:22.441] �[0;32mI (355916) camera: Frame 106 done in 103 ms�[0m
[07:44:22.603] �[0;32mI (356076) camera: Frame 107 done in 94 ms�[0m
[07:44:22.766] �[0;32mI (356236) camera: Frame 108 done in 105 ms�[0m
[07:44:22.924] �[0;32mI (356396) camera: Frame 109 done in 115 ms�[0m
[07:44:23.083] �[0;32mI (356556) camera: Frame 110 done in 118 ms�[0m
[07:44:23.240] �[0;32mI (356716) camera: Frame 111 done in 114 ms�[0m
[07:44:23.403] �[0;32mI (356876) camera: Frame 112 done in 107 ms�[0m
[07:44:23.563] �[0;32mI (357036) camera: Frame 113 done in 124 ms�[0m
[07:44:23.720] �[0;32mI (357196) camera: Frame 114 done in 118 ms�[0m
[07:44:23.879] �[0;32mI (357356) camera: Frame 115 done in 118 ms�[0m
[07:44:24.039] �[0;32mI (357516) camera: Frame 116 done in 120 ms�[0m
[07:44:24.200] �[0;32mI (357676) camera: Frame 117 done in 119 ms�[0m
[07:44:24.359] �[0;32mI (357836) camera: Frame 118 done in 121 ms�[0m
[07:44:24.519] �[0;32mI (357996) camera: Frame 119 done in 116 ms�[0m
[07:44:24.680] �[0;32mI (358156) camera: Frame 120 done in 113 ms�[0m
[07:44:24.839] �[0;32mI (358316) camera: Frame 121 done in 119 ms

image.png

电压电流不足够有水波纹产生,解决电压电流稳定即可。

三、esp32cam开发参考

https://github.com/espressif/esp32-camera
安信可官网代码;
m5stack中文
https://github.com/1zlab/1ZLAB_ESP32_Wifi_Camera
如何固定ip地址;
https://qiita.com/dinosauria123/items/c8ce027f1c23dc916609

四、esp32cam 通讯模块参考。

可以把sim800l当modem功能。
https://www.esp32.com/viewtopic.php?f=17&t=1496&sid=2eaa519a30be6d4c6d5567132ef9320a
https://github.com/loboris/ESP32-PPPOS-EXAMPLE
通过pppos拨号上网。

image.png

https://debugdump.com/t_2005.html

五、其他思路

esp32 mqtt
https://github.com/tuanpmt/esp32-mqtt
可以通过esp32cam定时抓拍图片,然后通过sim800L拨号连接,通过mqtt或者http把图片数据传给服务器。

此方案思路适合2g信号地区,在运营商大量裁撤2g基站情况下,建议采用nb_iot方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容