免费的个人网站平台,网站 展示板,wordpress怎么做图文数据库,百度怎样收录到网站文章目录 1、AliyunIoTSDK简介2、相关库安装3、阿里云创建产品#xff0c;订阅发布4、对开源的Arduino ESP8266源代码修改5、使用阿里云点亮一个LED灯6、设备向阿里云上传温度数据7、项目源码 1、AliyunIoTSDK简介
AliyunIoTSDK是arduino的一个库#xff0c;可以在arduino的… 文章目录 1、AliyunIoTSDK简介2、相关库安装3、阿里云创建产品订阅发布4、对开源的Arduino ESP8266源代码修改5、使用阿里云点亮一个LED灯6、设备向阿里云上传温度数据7、项目源码 1、AliyunIoTSDK简介
AliyunIoTSDK是arduino的一个库可以在arduino的应用商店中搜索到这个库当时版本不一定是最新的而且下载的地址在国外下载会比较久有时还不能下载成功我之前就在下载他的库的时候花费了大量的时间。 我这里提供基于AliyunIoTSDK库的开源项目地址 https://github.com/xinyu198736/arduino-aliyun-iot-sdk 如果网站无法打开可以使用我已经下载好的项目包 链接https://share.weiyun.com/urYMY5tN 密码yr6d78
2、相关库安装
Arduino有非常多的已经写好库我们使用Arduino开发ESP8266的时间只需了解库的使用即可学过面向对象的语言如java、Python应该能很好的理解。其实Arduino是基于C语言开发的。
Arduino需要下载安装ArduinoJson, Crypto, PubSubClient, ESP8266库这些库文件可以在ArduinoIDE上下载这里不在展开。
我AliyunIoTSDK使用的是离线的安装方式可以直接将下载好的项目负责到Arduino的项目文件保存地址。 根据开源项目的安装教程安装PubSubClient成功后有一个地方需要修改。 文件的地址同样在Arduino的项目文件夹下
3、阿里云创建产品订阅发布
需要连接阿里云首先应该在阿里云物联网平台上创建产品 像上图所示我们在阿里云物联网平台上创建了一个产品在产品里定义了一个led开关的功能接下来我们只需发布上线设备就可以连接上物联网平台了。
4、对开源的Arduino ESP8266源代码修改
阿里云平台搭建好后只需将文章开头的AliyunIoTSDK库开源项目的代码复制过来进行一个简单的修改项目的有详细的使用说明。 这里连接WiFi的时候我选择的是手机的热点。
之前遇到有人问过我“明明WiFi的名称和密码都正确但是ESP8266无法连接WiFi。是什么原因呢” 这时需要检查一下手机热点信息设置是否正确WiFi名称需要以中文命名手机热点AP频段选择2.4GHZ设备标识默认、隐藏热点关闭。 我把我手机的热点信息附上。 如果是使用路由器无法连接的话也重新检查一下路由器的设置多到网上找找教程我还没有使用路由器连接过WiFi不管跟手机热点的设置是一样的。
当ESP8266成功连接上WiFi后我们在阿里云物联网平台上重新刷新一下便会发现平台提示连接成功。
5、使用阿里云点亮一个LED灯
使用阿里云物联网平台点灯需要在ESP8266绑定一个属性回调名称要与设备功能一致。 还需要初始化LED我之前走过一个坑绑定LED后没有初始化LED导致一直没有实现这个功能找了很久的bug这里也将这个问题记录下。 善于运用串口调试可以快速并定位找到这种bug作为开发者快速解决bug的能力也是很重要的。我当时解决这个bug的时候就是使用串口调速我将会把源代码在下面附上。 绑定属性回调后需要根据需求编写回调的函数其实只要将开源项目的电源属性修改的回调函数修改一下即可我修改后如下
// 电源属性修改的回调函数
void powerCallback(JsonVariant p)
{int PowerSwitch p[LEDSwitch];if (PowerSwitch 1){//开灯Serial.println(LED_ON);digitalWrite(LED_BUILTIN, LOW);}if (PowerSwitch 0){//关灯Serial.println(LED_OFF);digitalWrite(LED_BUILTIN, HIGH);}
}下面我们使用阿里云开始点灯
6、设备向阿里云上传温度数据
我们要上传数据到阿里云首先阿里云上的设备先要定义好温度这个功能然后我们修改如下函数即可。 将修改好的程序下载到开发板上我们就可以在阿里云查看设备上传的数据了。
7、项目源码
// 引入 wifi 模块并实例化不同的芯片这里的依赖可能不同
#include ESP8266WiFi.h
static WiFiClient espClient;// 引入阿里云 IoT SDK
#include AliyunIoTSDK.h// 设置产品和设备的信息从阿里云设备信息里查看
#define PRODUCT_KEY xxxxxxxxxx
#define DEVICE_NAME xxxxxxx
#define DEVICE_SECRET xxxxxxx
#define REGION_ID cn-shanghai// 设置 wifi 信息
#define WIFI_SSID xxxxxxx
#define WIFI_PASSWD xxxxxxx// 温度
float f_temperature 25.1;void setup()
{Serial.begin(9600);// 初始化 wifiwifiInit(WIFI_SSID, WIFI_PASSWD);// 初始化 iot需传入 wifi 的 client和设备产品信息AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);// initialize digital pin LED_BUILTIN as an output.pinMode(LED_BUILTIN, OUTPUT);// 绑定一个设备属性回调当远程修改此属性会触发 powerCallback// AliyunIoTSDK::bindData(设备功能标识符, powerCallback);AliyunIoTSDK::bindData(LEDSwitch, powerCallback);
}void loop()
{AliyunIoTSDK::loop();//每隔1秒发送一次数据delay(1000);// 发送一个数据到云平台AliyunIoTSDK::send(设备标识符, 要发送的数据);AliyunIoTSDK::send(temperature, f_temperature);
}// 初始化 wifi 连接
void wifiInit(const char *ssid, const char *passphrase)
{WiFi.mode(WIFI_STA);WiFi.begin(ssid, passphrase);while (WiFi.status() ! WL_CONNECTED){delay(1000);Serial.println(WiFi not Connect);}Serial.println(Connected to AP);
}// 电源属性修改的回调函数
void powerCallback(JsonVariant p)
{int PowerSwitch p[LEDSwitch];if (PowerSwitch 1){//开灯Serial.println(LED_ON);digitalWrite(LED_BUILTIN, LOW);}if (PowerSwitch 0){//关灯Serial.println(LED_OFF);digitalWrite(LED_BUILTIN, HIGH);}
}