目录

  • 极简连接WIFI
  • 模拟设备连接阿里云
  • ESP32 连接阿里云

以下代码通过 Arduino 语言实现

极简连接WIFI

#include <WiFi.h>// 这里添加要连的wifi名称和密码
const char* ssid     = "";
const char* password = "";void setup() {Serial.begin(115200);WiFi.begin(ssid, password);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println("WIFI CONNECTED!");
}void loop() {}

模拟设备连接阿里云

参考:ESP32CAM连接阿里云物联网平台

通过模拟设备连接阿里云,是为了测试板子和云平台间的通信。

  • 前期准备

    • 在阿里云创建自己的项目:参考这篇
    • 下载 mqttfx 工具:参考这篇
    • 下载 技小新-MQTT单片机编程小工具
  • MQTT单片机编程小工具 上的操作
    • SN/MAC 不用管
    • 通过阿里云上的此界面(第三步的设备调试界面中有个“查看”测试设备的操作),获取 product_key、device_name、device_secret,并在小工具上修改,然后点击生成基本信息,获得 ClientID、UserName、Password

  • mqtt.fx 上的设置

    • 打开 Edit Connection Profiles 界面(Extras - Connection Profiles)
    • Broker Address (不用变):iot-as-mqtt.cn-shanghai.aliyuncs.com
    • Broker Port (不用变):1883
    • 剩下三行填写上一操作生成的

  • 下行通信(阿里云发送,MQTT.fx接收)

    • 在阿里云平台上查看发布和订阅的相关 Topic
    • 在 MQTT.fx 的 subscribe 输入框输入订阅的 topic 后,点击 subscribe
    • 在阿里云的在线调试界面发送指令,看 MQTT.fx 是否能收到


  • 下行通信(MQTT.fx发送,阿里云接收)

    • 在 MQTT.fx 的 publish 输入框输入发布的 topic 后,在文本框写入以下代码,然后点击 publish
{"params":{"brightness":78,}
}

“brightness” 根据标识符修改


在云平台上即可看到效果

ESP32 连接阿里云

报错:MQTT Connect err:2 处理方法

  • 修改库文件:C:\Users\Administrator\Documents\Arduino\libraries\PubSubClient\src\PubSubClient.h
  • 找到: MQTT_MAX_PACKET_SIZE,将256修改为1024,再找到MQTT_KEEPALIVE,将15修改为60。

参考:esp32(arduino)接入阿里云MQTT服务器
具体代码粘贴如下,注意修改define

#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>// 这里添加要连的wifi名称和密码
const char* ssid     = "";
const char* password = "";/* 设备证书信息,根据情况修改*/
#define PRODUCT_KEY       ""
#define DEVICE_NAME       ""
#define DEVICE_SECRET     ""
#define REGION_ID         ""#define CLIENT_ID         ""
#define MQTT_PASSWD       ""#define ALINK_BODY_FORMAT         "{\"params\":%s}"
#define ALINK_TOPIC_PROP_POST     "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"/* 线上环境域名和端口号,不需要改 */
#define MQTT_SERVER       PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"
#define MQTT_PORT         1883
#define MQTT_USRNAME      DEVICE_NAME "&" PRODUCT_KEYWiFiClient espClient;
PubSubClient  client(espClient);void WiFiInit()
{WiFi.begin(ssid, password);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println("WIFI CONNECTED!");
}// 连接MQTT,每隔5s自动重连
void mqttCheckConnect()
{while(!client.connected()){Serial.println("Connecting to MQTT Server ...");if(client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD)){Serial.println("MQTT Connected!");}else{Serial.print("MQTT Connect err:");Serial.println(client.state());delay(5000);}}
}// publish(ESP32发送,阿里云接收)
void mqttIntervalPost()
{char param[32];     // 存放参数数据char jsonBuf[128];  // 存放json格式数据sprintf(param, "{\"brightness\":%d}", 32); sprintf(jsonBuf, ALINK_BODY_FORMAT, param);Serial.println(jsonBuf);if(client.publish(ALINK_TOPIC_PROP_POST, jsonBuf)){Serial.println("Publish success!");}else{Serial.println("Publish error!");}
}// subscribe(ESP32接收,阿里云发送)
void callback(char *topic, byte *payload, unsigned int length)
{// 将收到的信息回传给串口Serial.print("Message arrived [");Serial.print(topic);Serial.print("] ");payload[length] = '\0';Serial.println((char *)payload);// 将 method、id、params 解析出来StaticJsonBuffer<400> jsonBuffer1;JsonObject& root1 = jsonBuffer1.parseObject((char *)payload);if (!root1.success()) {Serial.println("parseObject()1 failed");Serial.println("END");return;}const char* mmethod = root1["method"];Serial.println(mmethod);long mid = root1["id"];Serial.println(mid);String message = root1["params"];Serial.println(message);// 将 params中自定的参数解析出来StaticJsonBuffer<400> jsonBuffer2;JsonObject& root2 = jsonBuffer2.parseObject(message);if (!root2.success()) {Serial.println("parseObject()2 failed");Serial.println("END");return;}int brightness = root2["brightness"];Serial.println(brightness);
}void setup()
{Serial.begin(115200);WiFiInit();client.setServer(MQTT_SERVER, MQTT_PORT);client.setCallback(callback);
}void loop()
{if(!client.connected()){mqttCheckConnect();mqttIntervalPost();}client.loop();
}

ESP32开发路程WIFI篇——极简连接WIFI,模拟设备连接阿里云,ESP32连接阿里云相关推荐

  1. 推荐基于.Net6+Furion +iView开发的一套极简的进销存管理系统

    今天给大家推荐一个极简的进销存管理系统,推荐理由:功能强大.代码结构清晰. 项目简介 这是一个基于.Net Core构建的简单.跨平台.模块化的小程序考试系统.前端采用Vue+iView框架,后端采用 ...

  2. 【科普向】LaTeX简介(一篇极简的 LaTeX 介绍文章)

    文章目录 LaTeX诞生背景 TeX和LaTeX LaTeX主要功能 文档结构 数学公式 公式块 我们平时在word里新建一个doc(x)文件后,输入内容,调整页边距.字体大小.行间距等待,然后交给打 ...

  3. ESP32-C3入门教程 WiFi篇⑦——基于SoftAP 的 WiFi 智能配网

    文章目录 一.前言 二.WiFi配网方式 三.功能简述 四.源码实现 一.前言 本文基于VS Code IDE进行编程.编译.下载.运行等操作 基础入门章节请查阅:ESP32-C3入门教程 基础篇①- ...

  4. ESP32开发板 V1.0.0 Rev1 wifi 蓝牙4MB FLASH MicroPython

    简 介: 本文给出了对于ESP32开发板下载相关的MicroPython,使用Thony编程环境完成对于ESP32开发板的一些基础实验.详细的实验命令解释可以结合MicroPython的官方网站. 关 ...

  5. Django Web 开发极简实战

    课程介绍 本课程是一个系列基础教程,目标是带领读者上手实战 Django Web 开发,课程以 Django 1.10 为基础,通过一个在线视频网站的构建,实战化的介绍 Django Web 开发中涉 ...

  6. 极简工具,Tekla二次开发--构件图标注工具

    第三篇:Tekla二次开发--极简工具,构件图标注工具 关于极简工具 功能介绍 以下是功能视频节选 完整的视频演示地址 C# Tekla二次开发开发教学视频 关于极简工具 Tekla和AutoCAD二 ...

  7. 超便利!教你用ESP32开发板DIY掌上网页服务器!

    本文作者:默.默是铁熊的创客好友,经常与铁熊分享创意项目. 前段时间有个老师对我说:每到开学季,学校就要印刷学生的录取名单并进行张贴,为此学校每年都要耗费大量的人力物力.学校里面教学活动很多,传统的通 ...

  8. NDPIC极简昼夜瀑布流图片WordPress主题

    介绍: NDPIC极简昼夜瀑布流图片主题是暖岛站长(阿叶)开发的一款极简免费wordpress瀑布流图片主题,这款主题可以说是为图片站长量身定做,瀑布流设计,界面优美大气,久看不腻. NDPIC主题在 ...

  9. 物联网开发笔记(53)- 使用Micropython开发ESP32开发板之蓝牙BLE通信

    一.目的 这一节我们学习如何使用我们的ESP32开发板通过蓝牙和手机进行通信. 二.环境 ESP32 + 手机(笔者用的小米10) + Thonny IDE 三.蓝牙介绍 这个知识大家自行百度吧,这里 ...

最新文章

  1. 制作模拟器和真机通用静态库
  2. JavaScript函数大全
  3. java 手动编译打包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...
  4. python 分班_Python学习作业一
  5. Javascript基础回顾 之(一) 类型
  6. 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...
  7. 万圣节后的早晨九数码游戏——双向广搜
  8. linux驱动编写(看门狗)
  9. 某医院信息化硬件平台建设方案
  10. 矩形覆盖-----批了外皮的亲蛙跳
  11. Ubuntu 16.04中zabbix显示 :Zabbix server is not running:te information displayed may not be current.
  12. atitit.提高开发效率---mda 革命性的软件开发方法
  13. 25行代码实现定时自动发送微信消息!
  14. 数学建模十大算法01-蒙特卡洛算法(Monte Carlo)
  15. 元宵节快乐 | 谈心
  16. strtok用法详解
  17. 深股通,沪股通,港股通
  18. 基于Django的驾校在线考试系统
  19. Mac系统运行“exe”文件最简单的解决办法
  20. 什么是jdk的java运行工具_下面( )是 JDK 中的 JAVA 运行工具。

热门文章

  1. 数据结构 - 主席树
  2. python输入n个数、输出最小的数字_程序查找最少的斐波纳契数以在Python中加到n?...
  3. 页面文件太小,无法解决/BrokenPipeError: [Errno 32] Broken pipe问题解决
  4. 已解决vue-router4路由报“[Vue Router warn]: No match found for location with path“
  5. excel排序求和:如何统计前几名数据合计 上篇
  6. 如何具有更好的凝聚力,我的团队
  7. csdn账号密码重置成功
  8. vue项目-后台管理系统
  9. 【技术干货】详解BGP4+的负载分担
  10. 怎么用计算机把浓度转换成PH,ph浓度换算(ph怎么换算OH浓度)