ESP32CAM连接阿里云物联网平台

本文介绍了使用ESP32CAM通过Arduino环境连接阿里云物联网平台的过程,包括解决库下载错误、上传项目报错和文件过大问题。在MQTT连接中提到了MQTT.fx工具的使用,并详细说明了物联网平台的配置步骤。在图片数据上传部分,作者发现图片分包大小限制在800字节内,提出了灰度处理以减小数据大小的思路。完整代码中涉及GPIO15的按键设置。
摘要由CSDN通过智能技术生成

搭建arduino开发环境

这里不多说,网上有很多教程。简单说下我在搭建环境时踩的一些坑。

1.在arduino库管理器中下载esp32的库出错

解决方法:搭个梯子下载就行了

2.上传项目报错

在这里插入图片描述
这个问题出现的原因是板子连线有问题,在烧录的时候必须使用3.3V电压供电。上传后运行之前,断开GPIO0与GND的连接,并且使用5V电压供电,就可以跑起来了。

3.文件太大无法上传

工具-Partition Scheme-Huge APP,选这个就可以上传了

MQTT连接阿里云物联网平台

建议使用mqtt fx工具,方便模拟设备连接平台。
在设置的过程中要填一些id,密码之类的东西。
Broker Address是阿里云官方给出的,用上海这个就可以。
Broker Port填1883。
后面那三个推荐一个工具,技小新-MQTT单片机编程小工具。直接用这个工具可以计算出来。
在这里插入图片描述
在这里插入图片描述
SN/NAC随便填,product_key、device_name、device_secret这三个是物联网平台创建设备就会给出的信息复制过来就行,点生成基本信息,后面的数据就计算出来了,直接在mqtt fx中填就行了。

连接成功的话mqtt fx灯的颜色是绿色的。这样就可以模拟板子给平台上报或者订阅属性,目的是用来测试通信的。

图片数据上传

esp32cam抓拍的图片数据先保存在sd卡中,再上传。图片数据必须分包发送,要不然板子会崩溃,直接复位。data[4104]差不多是板子内存的极限了,我设置的物联网平台接收的数据格式是字符串,范围是0-2048字节,所以每次分包的大小必须在2048字节之下。但是,在上传的过程中,经过多次试验,每次数据大小只能在800字节,超过800字节就只上传最后一个包的数据,其余数据全部无法上传。

另一种方法是把jpg图片的数据大小降下来,导师说试试灰度处理。我感觉大小这方面已经是极限了,再降图片可能就无法看了。如果有更好的方法,可以私信我哦 ^ _ ^

最终完整代码

按键设置:GPIO15

#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>  
#include"camera_pins.h"
#include <WiFi.h>
#include <ArduinoJson.h>
#include <aliyun_mqtt.h>

#define EEPROM_SIZE 1
int pictureNumber = 0;
String msg;
int buttonState =0;
int btnHold=0;

// 你的wifi账号密码
const char* ssid     = "";
const char* password = "";

//阿里云三元组
#define PRODUCT_KEY "a1mAaYPL2Qf"
#define DEVICE_NAME "haote216"
#define DEVICE_SECRET "YgQ5MMv4wgnROBLQqInLpj6eZy0UTAkZ"

//订阅和发布时所需的主题
#define ALINK_BODY_FORMAT "{\"id\":\"1189401707\",\"version\":\"1.0.0\",\"method\":\"%s\",\"params\":%s}"
#define ALINK_TOPIC_PROP_POST "/sys/a1mAaYPL2Qf/haote216/thing/event/property/post"
#define ALINK_TOPIC_PROP_POSTRSP "/sys/a1mAaYPL2Qf/haote216/thing/event/property/post_reply"
#define ALINK_TOPIC_PROP_SET "/sys/a1mAaYPL2Qf/haote216/thing/service/property/set"
#define ALINK_METHOD_PROP_POST "thing.event.property.post"

//创建WiFiClient实例
WiFiClient espClient;

//创建MqttClient实例
PubSubClient mqttClient(espClient);

//连接Mqtt订阅属性设置Topic
void mqttCheckConnect()
{
   
    bool connected = connectAliyunMQTT(mqttClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET);
    if (connected)
    {
   
        Serial.println("MQTT connect succeed!");
        
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值