ESP32CAM连接阿里云物联网平台

2023-11-12

搭建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(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP32CAM连接阿里云物联网平台 的相关文章

  • 编译Linux内核获取LLVM bitcode (LLVM IR)

    最近要获取linux内核的llvm bitcode 以便后续进行分析 例如获取callgraph等等 尝试了很多提取llvm bitcode的方法 用build bom wllvm 过程中也出现了很多错误 最后用wllvm终于成功了 记录下
  • Docker容器与虚拟化技术:Docker资源控制、数据管理

    目录 一 理论 1 资源控制 2 Docker数据管理 二 实验 1 Docker资源控制 2 Docker数据管理 三 问题 1 docker容器故障导致大量日志集满 造成磁盘空间满 2 当日志占满之后如何处理 四 总结 一 理论 1 资

随机推荐

  • 【模电】0014 运放自激振荡和消除(补偿)

    一般我们讨论的负反馈放大电路多关注其幅频特性 也就是它的增益 而对其相频特性关注的不多 这主要是因为 一个放大电路如果它工作状态是稳定的 其输入和输出相差一定的相位对分析它的特性并不影响 只是相当于信号延迟了一点时间 注意这里有个前提条件
  • 关于IP网段间互访的问题——路由是根本

    文章出处 http blog csdn net dog250 archive 2010 02 09 5303291 aspx 之所以IP网段间可以互相访问 完全靠的就是路由 因此路由是IP通信的根本 IP是机器可以进行通信的资格证书 而路由
  • 【满分】【华为OD机试真题2023 JAVA&JS】工作安排

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 工作安排 知识点循环数组贪心动态规划 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 小明每周上班都会拿到自己的工作清单 工作清单内包含n项工作 每项工作都有对应的
  • Vue Baidu Map使用

    百度地图官方提供的是常规
  • DS单链表--类实现

    用C 语言和类实现单链表 含头结点 属性包括 data数据域 next指针域 操作包括 插入 删除 查找 注意 单链表不是数组 所以位置从1开始对应首结点 头结点不放数据 输入 n 第1行先输入n表示有n个数据 接着输入n个数据 第2行输入
  • 螺旋队列(由里向外)

    假设有如下排列 21 22 20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13 1的坐标是 0 0 3的坐标是 1 1 7的坐标是 1 1 分析 第1层之内有1个数 第2层之内有9个数 第3
  • Kafka Connect JNDI注入漏洞复现(CVE-2023-25194)

    漏洞原理 Apache Kafka Connect中存在JNDI注入漏洞 当攻击者可访问Kafka Connect Worker 且可以创建或修改连接器时 通过设置sasl jaas config属性为com sun security au
  • Qt界面刷新优化的一些心得

    背景 一个类似Windows任务管理器的性能界面 该界面有多个曲线图同时定时刷新 每个曲线图包括多条曲线更新 数据更新频率大概为一秒一次 程序中曲线图已封装为自定义的图表类 给出数据更新接口 初始方案 主程序设计方案上 采用数据收集和数据更
  • 《云计算与大数据技术应用》

    第一章 云计算概述 1 1什么是云计算 1 1 1云计算的定义 云计算是分布式计算的一种 指的是通过网络 云 将巨大的数据计算处理程序分解成无数个小程序 然后 通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户 云计算早期
  • javascript数组的直接量语言允许有可选的结尾的逗号

    var undefs 数组有2个元素 都是undefined 数组直接量的语法允许有可选的结尾的逗号 故 只有两个元素
  • OA会议管理系统之我的会议(会议排座&可拖拽座位&附源码)

    目录 一 前言 1 导读 二 我的会议功能实现 1 功能介绍 2 功能分析 3 功能实现 3 1 前期准备 3 2 dao层编写 3 3 jsp页面搭建 3 4 Web层编写 4 案例展示 一 前言 1 导读 OA会议管理系统之会议发布 内
  • RabbitMQ提供了6种消息模型介绍

    RabbitMQ提供了6种消息模型 但是第6种其实是RPC 并不是MQ 因此不予学习 那么也就剩下5种 但是其实3 4 5这三种都属于订阅模型 只不过进行路由的方式不同 一 基本消息模型 RabbitMQ是一个消息代理 它接受和转发消息 你
  • oracle删除重复数据保留第一条记录

    1 查找表中多余的重复记录 重复记录是根据单个字段 Id 来判断 select from 表 where Id in select Id from 表 group byId having count Id gt 1 2 删除表中多余的重复记
  • zoj 1201 Inversion

    题目意思 如果输入的是p类串 则输出i类串 如果输出的是i类 则输出p类串 p转i 寻找在p串中在j左边的比j大的数的个数 i串中的第j个数填为该数 i转p 从尾部开始 若第j个数的值为x 则说明在p串中j的左边有x个数大于j 通过从后到前
  • spring集成kafka,实现一个topic可以被多个group消费

    由于新公司是做物联网的 公司刚起步 没什么项目 就是在做一些基础的服务的搭建 现在微服务这么火 可想而知 Spring Boot Spring Cloud 是必须要会的技能 而做物联网 把各种智能设备的数据采集上来 也避免不了要用到消息系统
  • Linux 下qt creator 对c++ 和cuda混合编译生成.so 文件

    问题一 creator 上如何设置可以编译输出 so 文件 要做哪些工作呢 解决如下 1 TEMPLATE lib DEFINES TESTPCL LIBRARY 我的项目名 TARGET testPCL 2 在我要开放出去的接口类那里 做
  • JavaFX之Drag And Drop拖放操作

    声明 本博客文章原创类别的均为个人原创 版权所有 转载请注明出处 http blog csdn net ml3947 看到有网站直接copy不加链接 当然我的个人博客文章目前都是从我的CSDN博客转移上去的 大家好 新的JavaFX的教程又
  • 两个MySQL做双数据源如何配置_SpringBoot系列--Mysql、Sqlserver 双数据源配置

    在最近的项目开发中 需要用到Mysql和Sqlserverl两种数据库 也就是要进行双数据源的配置 网上看了下 大多比较繁琐 且不够明确 今天分享一个在SpringBoot 中简洁高效配置双数据源的方案 项目结构如下 application
  • Android之ProgressDialog与自定义LoadingDialog

    最近呢一直进行Android项目的开发 开发过程中发现 以前的好多知识点都想不起来了 都得先去Google一下 进展缓慢 耗时又耗力 所以决定将开发中的知识点慢慢总结下来 以便日后查验 大家在进行网络请求数据的时候 尤其是第一次 是不是也会
  • ESP32CAM连接阿里云物联网平台

    搭建arduino开发环境 这里不多说 网上有很多教程 简单说下我在搭建环境时踩的一些坑 1 在arduino库管理器中下载esp32的库出错 解决方法 搭个梯子下载就行了 2 上传项目报错 这个问题出现的原因是板子连线有问题 在烧录的时候