Esp8266 D1 Mini连接阿里云IOT

这几天没事看到我还有Esp8266在哪里吃灰,想着马上5G了也得搞搞IOT是吧,然后翻阅些资料自己整理下防止以后忘了哈哈······

这里我主要做了一个连接订阅阿里IOT而已,主要是手上也就一个8266板子然后啥都没有,过几天买些硬件在数据上传和发布数据。

废话不多说先上硬件


这是在某宝上买的(好便宜啊),买来的时候上面已经标注固件已经刷了ModeMcu所以我没刷固件,刷固件教程也不少,推荐哔哩哔哩 哈哈暴露了·····

下来我们先注册阿里IOT根据图示操作

第一次使用的画应该是立即使用好像,这里很简单注册认证就好

下来我们创建一个产品,产品定义通俗的来讲就是一个有许多功能的设备,比如网络摄像机(可能有舵机,摄像头,红外线等等····)

我用的8266所以联网方式是WIFI,有些设备是直接通过网关连接阿里的

然后开始创建设备,设备顾名思义就是一台机器。产品和设备就属于一种一对多关系,一个产品就会有多个运行的设备对吧,这样是不是好理解点。

主要就是选择对应产品;DeviceName如果不想输入会默认生成,DeviceName就是方便你查看设备的状态,比如你有100台设备你想知道某一台设备的情况就需要DeviceName去查询;备注就随意看你自己需求

创建完成后会生成一条设备,可以查看MQTT连接所需要的KEY


上面所指的三个信息也是连接最主要的东西了

接下来阿里还是开发环境好,为我们提供了在线编译器,省去了我们下载IDE配置环境等一些麻烦的操作



怎么样感觉是不是很开森

接下来我们创建项目


这里注意下这个ini文件,这个文件就是配置项目依赖的配置文件

打开ini配置些依赖,

是不是想问依赖怎么加的?



然后在页面下方有个build选项点击会加载所需要的库


加载完后需要改些参数,这个很重要哦,不然会运行失败的。

接下来开始编写代码,也就是官方提供的实例代码很简单没什么太多改动。

创建main.ino文件,名字自己随意没啥区别,粘贴下面代码填入自己对应的参数

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <aliyun_mqtt.h>

// Wifi名称和密码,你WemosD1Mini上网时需要接入的Wifi账号和密码
#define WIFI_SSID "自家WIFI账号"
#define WIFI_PASSWD "自家WIFI密码"

// LP的设备三元组(PK/DN/DS)根据你云端创建的设备三码进行更改
#define PRODUCT_KEY "阿里云ProductKey"
#define DEVICE_NAME "阿里云DeviceName"
#define DEVICE_SECRET "阿里云DeviceSecret"

// Alink协议格式和Topic定义 这个部分是固定格式不用进行修改
#define ALINK_BODY_FORMAT "{\"id\":\"123\",\"version\":\"1.0\",\"method\":\"%s\",\"params\":%s}"
#define ALINK_TOPIC_PROP_POST "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
#define ALINK_TOPIC_PROP_POSTRSP "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post_reply"
#define ALINK_TOPIC_PROP_SET "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/service/property/set"
#define ALINK_METHOD_PROP_POST "thing.event.property.post"

// 创建WiFiClient实例
WiFiClient espClient;

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

//连接Wifi
void initWifi(const char *ssid, const char *password)
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.println("WiFi does not connect, try again ...");
    delay(3000);
  }

  Serial.println("Wifi is connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}


 //监听云端下发的指令
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);

    if (strstr(topic, ALINK_TOPIC_PROP_SET))
    {
        StaticJsonBuffer<200> jsonBuffer;
        JsonObject &root = jsonBuffer.parseObject(payload);
        if (!root.success())
        {
            Serial.println("parseObject() failed");
        } else {
            Serial.println("parseObject() success");
            //下一步对收到的云端指令进行处理
        }
    }
}

//连接Mqtt
void mqttCheckConnect()
{
    bool connected = connectAliyunMQTT(mqttClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET);
    if (connected) {
        Serial.println("MQTT connect succeed!");
        // client.subscribe(ALINK_TOPIC_PROP_POSTRSP);
        mqttClient.subscribe(ALINK_TOPIC_PROP_SET); // 订阅属性设置Topic
        Serial.println("subscribe done");
    }
}

void setup() {
    Serial.begin(115200);

    initWifi(WIFI_SSID, WIFI_PASSWD); // 连接Wifi

    mqttClient.setCallback(callback); // 设置回调监听云端下发的指令
}

void loop() {
    mqttCheckConnect(); // MQTT上云
    mqttClient.loop();

    delay(3000); // 每1秒连接一次
}

再次运行Build看下有没有异常,应该是没有,有的话检查下依赖是不是正确,最好和我上面依赖相同,之前发现阿里有的官方代码是不支持Json v6只能用v5,看下异常log就知道

没问题的话还需要在下载设备驱动,用于我们联机刷程序进去

下载完后解压就好

在刷系统前先看下串口驱动是否正常,CH340就是8266,如果没有的小伙伴需要去下载驱动

没问题后打开我们解压出来的run-win.bat

可不要吧这个关了,不然网页编辑器识别不到设备

接着打开在网页中点击run选择自己的设备串口就等待烧录成功咯


然后打开阿里云IOT平台就能看到设备已激活

下次等我买些硬件就做消息订阅推送,这就就这样

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

推荐阅读更多精彩内容