ESP32是乐鑫在ESP8266后推出的一款集成WiFi功能的微控制器,相较于ESP8266,ESP32拥有更强大的性能,可用于复杂应用的开发。
ESP32CAM在ESP32的基础上扩展了摄像头模组,体积极小,可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、QR无线识别,无线定位系统信号以及其它物联网应用,是物联网应用的理想解决方案。
MQTT是一种基于发布/订阅模式的轻量级通讯协议,它的特点是可使用极少的代码与有限的带宽为远程连接的设备提供实时可靠的消息订阅服务,被广泛应用于物联网运用。MQTT单条报文允许的最大体积为 256 M,ESP32CAM拍摄的图片的体积大小远小于这个数值,可以考虑使用MQTT协议来传输图片。
需要使用的零件如下:
序 | 零件名称 | 数量 |
---|---|---|
1 | ESP32CAM 开发板 | 1 |
2 | USB-TTL模块 | 1 |
3 | 杜邦线 | 若干 |
那么,要如何将ESP32CAM获取的图片通过MQTT进行传输呢?可参考以下信息进行设置。
使用Arduino IDE 编译并上传以下Arduino程序。该程序使用的是esp32开发板,需要在Arduino IDE中添加安装该开发板环境,并在编译时选择开发板环境为ESP32系列开发板。在Arduino IDE中添加ESP32开发板环境。注意烧录时ESP32CAM的开发板中IO0
针脚需要进行接地操作,否则会导致刷写失败。
#include "WiFi.h"
#include "esp_camera.h"
#include "esp_timer.h"
#include "img_converters.h"
#include "Arduino.h"
#include "soc/soc.h" // Disable brownour problems
#include "soc/rtc_cntl_reg.h" // Disable brownour problems
#include "driver/rtc_io.h"
//#include "StringArray.h"
#include <PubSubClient.h>
#include <base64.h>
#include <libb64/cencode.h>
//esp32-cam针脚定义 拍照相关
constexpr int kCameraPin_PWDN = 32;
constexpr int kCameraPin_RESET = -1; // NC
constexpr int kCameraPin_XCLK = 0;
constexpr int kCameraPin_SIOD = 26;
constexpr int kCameraPin_SIOC = 27;
constexpr int kCameraPin_Y9 = 35;
constexpr int kCameraPin_Y8 = 34;
constexpr int kCameraPin_Y7 = 39;
constexpr int kCameraPin_Y6 = 36;
constexpr int kCameraPin_Y5 = 21;
constexpr int kCameraPin_Y4 = 19;
constexpr int kCameraPin_Y3 = 18;
constexpr int kCameraPin_Y2 = 5;
constexpr int kCameraPin_VSYNC = 25;
constexpr int kCameraPin_HREF = 23;
constexpr int kCameraPin_PCLK = 22;
// 此处需替换连接的无线网络为自己使用的无线网络
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// 此处需替换MQTT服务端为自己使用的服务端
const char* mqtt_server = <