600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > [arduino]ESP8266配置连接IoT阿里云平台(arduino D1 mini)

[arduino]ESP8266配置连接IoT阿里云平台(arduino D1 mini)

时间:2022-11-25 11:50:58

相关推荐

[arduino]ESP8266配置连接IoT阿里云平台(arduino D1 mini)

[arduino]ESP8266配置连接IoT阿里云平台(arduino D1 mini)

前言ESP8266配置(基础)ESP8266头文件配置安装AliyunIoTSDK库安装ArduinoJson库安装PubSubClient库安装Crypto库阿里云的准备工作创建项目添加功能添加设备项目实现巨人的肩膀

前言

本篇文章主要是讲如何零基础配置ESP8266到连接上阿里云IoT平台进行简单的数据交互。由于想要照顾一些新人所以文章写的比较详细,有很多东西对于一些已经有了解的人来说是废话请谅解。

后面是我的个人感想,想看干货的请跳过。

自己很早之前入了一块esp8266,当时是在网络上看见有人用这个做了一个电子时钟,我很喜欢于是自己很感兴趣但是我不喜欢拿来主义,于是自己用arduino编译器自己写底层,也是经历了很多困难踩了很多的坑,最后只是完成了点亮灯带显示时间(每10分钟联网对时),然后就再也没动过了。最近老师建议我说可以连到阿里云上,我也就又开始研究如何连接到阿里云,踩了很多坑,有的巨人的肩膀有点老了(的文献就已经老了),导致踩了更多的坑,而且好不容易研究出来点门道,无意间浏览网页的时候发现教程人家早就已经做出来了,我在查资料的时候关键字是esp8266但是他的标题是arduino D1 mini,其实就是esp8266都是大同小异的。这是我做的最蠢的一件事。好在他的教程过于琐碎,这也就有我写这篇文章的意义在最后我会把他链接发出来。

ESP8266配置(基础)

这是基础配置,如果已经配置好了直接跳过。

我在研究刚开始的时候遇到的几个坑ESP8266没有驱动下载速度很慢,其实没有多大我就用百度云分享一下,没有会员应该也能很快下载下来。

链接:/s/1P9Ms38DOuYukWL9hQUbphQ

提取码:4b7w

上面的是esp8266的驱动,下面的是一个usb驱动用来解决板子已经插电脑上了,但是不显示端口问题,后面会提到。

如图,在设置->开发板里选D1 R2 & mini即可。

查询端口号,此电脑单击右键选管理进这个界面

打开后点端口

标红的那个就是别的不是我这个是com6(每次都是不一样的,每次插上最好看一眼)如果没出现的话就用之前下载的软件

点击那个安装如果显示安装失败就点卸载,然后再打开程序再安装。(我是这么解决的,如果有更好的方法可以告诉我)

搞定后进arduino,进工具选端口,选择指定的端口

安排完以后就可以开始做工程了。

ESP8266头文件配置

安装AliyunIoTSDK库

做阿里云这个项目需要安装几个头文件首先是 AliyunIoTSDK.h

这个头文件不能用arduino编译器中的版本有点低不能直接使用也不是很大我就放百度云了

链接:/s/1gH-U3h5RiygBdMpoBjYJdg

提取码:volk

github网址:/yu-tou/arduino-aliyun-iot-sdk

就是一个压缩包下载下来以后,打开arduino编译器。

找选项找加载库点添加.ZIP库添加即可

加上以后就不要升级也不要进管理库里找下载他(项目成功后,我试着用管理库也找到了这个头文件包,下载了一下把我的替换了结果就开始报错了。。。那个应该是比较老的那个就太麻烦了。要自己写传递的信息自己算密码很有可能连不上。)

安装ArduinoJson库

这个直接用编译器里的下载就好,项目->加载库->管理库

我用的 6.18.0点安装就行

安装PubSubClient库

操作同上直接搜索下载

安装Crypto库

这三个库装完硬件的程序编译的准备工作也就大体完成了,下面安排阿里云。

阿里云的准备工作

创建项目

先注册登录点右上角控制台。

进去以后选产品与服务,第一次使用的话我的导航里是没有物联网的快捷方式,在下面的搜索栏里搜物联网,找物联网实训平台即可。

进去之后选择公共实例。(第一次使用好像需要开通,学习用不需要花钱的。)

进去之后点击创建产品

创建页面主要就是选择品类,我建议用自定义。那么问题来了什么是品类标准品类就是预设好的一些项目,比如我选择一个标准的灯,他会自动帮你绑定一个开关的功能,传递的是布尔型的参数,标识符是LightSwitch,你就不需要再手动添加了,但是这个是必选不能删除的,你要是不需要这个功能,不传参数也不形象,但是他会一直显示有这个功能去不掉你要是学习用的话,你功能会比较分散的看着很烦。

剩下的按这个图的选即可。产品描述可以不写。填完确认即可

点击下面的那个为产品定义

添加功能

返回产品列表就能看见那个新加的产品

点击查看,选择功能定义,点击编辑草稿,来添加功能。

点击添加自定义功能

在这写功能名称就会出现一些预设好的,可以选我这里自己写两个自定义功能。

标识符的主要作用是,一个设备会有很多功能,阿里云就用标识符来识别,什么参数对应什么功能。

现在设备就有了两个功能了,然后点击发布上线,点击发布上线,点击发布上线,(不要忘了!!要不然功能加不上!!)就可以添加硬件设备(设置功能跟添加硬件设备谁在前面都行)

添加设备

点击左侧的产品回到产品页面,然后点击管理设备。

点击添加设备

DeviceName这个可写可不写,都行,这个就是设备与阿里云通信的三个参数之一如果你一个项目下的硬件过多就会用这个来区分硬件。

点击查看,进入设备页面。

点击红框内的查看就可以得到那三个参数,走到这阿里云端的准备工作也就做好了。下面就是硬件端。

直接复制就行

项目实现

代码,我都写好备注了自己研究因该就没问题。

#include <ESP8266WiFi.h>#include <stdlib.h>// 引入阿里云 IoT SDK#include <AliyunIoTSDK.h>static WiFiClient espClient;// 设置 wifi 信息#define WIFI_SSID "Mi 10" // 你的 WiFi 名称#define WIFI_PASSWD "1234567890"// 你的 WiFi 密码// 设置产品和设备的信息,从阿里云设备信息里查看#define PRODUCT_KEY "..." // 你的 ProductKey#define DEVICE_NAME "..." // 你的 DeviceName#define DEVICE_SECRET "..."// 你的 DeviceSecret#define REGION_ID "cn-shanghai"// 不用管// 设置灯的针脚(板载的灯针就是2)#define LIGHT 2// 定义一个时间全局变量控制传递信息的时间间隔(如果不需要可以不写)int ARDUINO_TIME = 0;// 灯属性修改的回调函数void powerCallback(JsonVariant p){int PowerSwitch = p["LightTest"]; //双引号里的是灯的标识符if (PowerSwitch == 0){// 启动设备Serial.println("开关 = 1 关灯"); //为什么 1 是关灯,板载灯的神奇之处高电平熄灯digitalWrite(LIGHT,1); // 控制熄灯}if (PowerSwitch == 1){// 启动设备Serial.println("开关 = 0 亮灯");digitalWrite(LIGHT,0); // 控制亮灯} }// WiFi 连接函数如果断连方便调用重连 (这里写了一个连接wifi的时候灯会闪烁,间隔一秒左右。成功后长亮5秒)void wifiInit(const char *ssid, const char *passphrase){WiFi.mode(WIFI_STA);// 设置WiFi连接模式为STAWiFi.begin(ssid, passphrase);while (WiFi.status() != WL_CONNECTED){bool is = digitalRead(LIGHT); // 接收当前led电平状态(制作闪烁效果)digitalWrite(LIGHT,!is);delay(1000);// 停止一秒Serial.println("WiFi 未连接正在重试");}Serial.println("已连接到 WiFi");digitalWrite(LIGHT,0);delay(5000);digitalWrite(LIGHT,1);}void setup(){Serial.begin(115200); // 设置波特率用了来从串口监视器获取信息// pinMode(BUILTIN_LED, OUTPUT);pinMode(LIGHT,OUTPUT); // 设置针脚的工作状态为输出状态digitalWrite(LIGHT,1); // 设置灯为关闭状态// 初始化 wifiwifiInit(WIFI_SSID, WIFI_PASSWD); // 调用WiFi连接函数联网// 初始化 iot,需传入 wifi 的 client,和设备产品信息AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);// 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback// LightTest 是在设备产品中定义的物联网模型的 id// 从阿里云获取灯的控制参数并执行powerCallback函数AliyunIoTSDK::bindData("LightTest", powerCallback);}void loop(){// 这句必须有,跟阿里云做数据交互的因该是配合AliyunIoTSDK::bindData("LightTest", powerCallback);这个函数的AliyunIoTSDK::loop();int GPIO2 = analogRead(A0); // 据说esp8266只有一个传模拟信号的口就叫A0(零不是o)// 如果没有传感器就用随机数就要一个动态参数// 由于生成的数区间为0 - 1024 所以除10.24转化为百进制float GPIO_test = GPIO2 / 10.24;float xx = 100 - GPIO_test;// 随机数 random(min, max)// xx = random(0, 100);ARDUINO_TIME = ARDUINO_TIME + 1;// 控制上传时间if (ARDUINO_TIME == 3000){AliyunIoTSDK::send("illumination", xx); // 上传发送一个数据到云平台,illumination 是在设备产品中定义的物联网模型的 idAliyunIoTSDK::send("LightSwitch", !digitalRead(LIGHT)); // 上传发送一个数据到云平台,LightTest 是在设备产品中定义的物联网模型的 idARDUINO_TIME = 0;}}

通过串口监视器观察工作状态

如果网络不佳也会导致 成功0

当设备连接以后就会自动激活,点击查看。

点击物理模型数据,打开实时刷新,数据就可以定时发生变化。

点击监控运维,选择在线测试,就可以上传之前写好的命令

到此也就结束了

巨人的肩膀

手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程…(这位博主用阿里云的包连的别的平台,有需要的可以看看其实大同小异)

使用arduino d1 wifi模块(ESP8266 WEMOS)读取电位器的数值

(看似无关但是这篇文章的下面的链接都很不错,就是太碎了)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。