esp8266连接阿里云 (课程设计 附源码)

目标:esp8266连接阿里云,接入DHT11温湿度模块,外接继电器用于开关,开关连接风扇调节温湿度。

目录


基于阿里云的药物存储系统

一、应用场景

1.1场景

        随着生活水平的提高,日常生活中,我们经常出现忘记吃药的情况。上班的中、青年可能是因为工作繁忙,而老年人大多是因为年龄增长导致记忆减退。对于我们所爱的人,我们始终希望保持他们的健康和健康。但是,如果他们生病而忘记按时吃药,将会发生什么,这会产生不可抗拒的影响。在医院里,有很多病人,很难提醒每个病人准时吃药。传统方式需要人工来提醒他们按时服药。数字时代并没有随之而来,我们可以使用机器来做到这一点。智能药盒智能提醒患者按时吃药、按量服药、按要求顺序服药以及同步用药数据等功能。相比传统方式能够按时提醒患者用药并能够对患者用药量、用药顺序等进行指导,从而提高患者的依从性,有利患者的康复,减少耐药病人的产生。应用范围非常广泛,可以被家庭患者,医院的医生以及许多其他地方使用。现在社会的年纪大的人,随着当今时代的发展推进人们生活质量的越发提高,对于生活中身体的健康质量是当代人们追求的一个重要的指标。随着老年人身体逐渐衰老,很容易患上各种慢性病,只能长期靠药物够维持身体基本机能,但却无法改善因衰老带来的记忆力弱等问题,从而导致不能按时按量服药,没有了持续用药的效力。为此,一款具有智能语音提醒功能的智能药盒来解决这些问题是必不可少的。它的本质就是一种为了方便提醒并引导老年人按时吃药而设计的一种药品的存放物体,通过对智能药盒的功能的完善,它可以完全解决难以服药和记不住药的老年人的问题。智能药箱是在日常生活中监视并提醒每天使用药物的老年人的方法。每天提醒老年人三次以上,并可以设置种类提示可以有效解决解决老年人不记得按时吃药这一严重问题。在提醒作用的同时,本药盒的设计也对药物存储功能进行优化。中成药的处方成分比较复杂,应按照其特性,剂型选择合适的储存条件。如果是常温贮存的,温度一般保持在10~30℃左右即可,如果是需要阴凉贮存的,一般温度控制在10~20℃左右为宜,若温度过高,中成药的某些成分可能会氧化、分解加速、变量变质,例如含芳香挥发性成分的药物可因加速挥发而损失,含脂肪油成分的药物易“泛油”或酸败,胶囊剂易黏软变型,片剂易裂片变色等等;但是温度也不宜过低,温度过低容易导致糖浆剂、露剂、含乙醇制剂等产生沉淀、结晶,甚至变性失效。一般中成药的储存相对湿度以35%~75%为宜.如果环境湿度过高,例如梅雨季节,容易导致中成药发生潮解、变形、生虫甚至霉变,如果环境湿度过低,则可能会导致中成药风化或干燥等等。对此,进行药盒内部温湿度的检测上传阿里云平台进行实时监控,保证药物的存储环境达标。同时接入一个风扇,通过开关对温湿度进行调节。

1.2 现代设计方法

        今天,云和云计算技术已经被企业广泛所接受,关于云、云计算、云原生都有非常多的话题,但是我比较想讨论的是在所有云当中真正的主角,就是我们的应用。因为当企业应用上云后,这些应用的高可用能力有可能提升了一部分,但仍存有许多问题;而当我们探讨上云后这些应用的运维效率,却未必有很大的提升,因为所有的运维都是基于基础设施进行的,而云计算是一个比较大的基础设施的改变;如果我们再问,上云后整个应用的开发速度是不是得到了极大的提升,这个时候很多人都要说,并不。

        因此,今天主要探讨的就是如何利用云原生相关的技术帮助我们的应用去做优化,从传统应用转变成现代化应用。本课程设计是单片机连接阿里云远程控制风扇来调节温湿度。通过DHT11温湿度传感器连接ESP8266上传数据到阿里云平台实时监控。除此之外,ESP8266连接继电器用作于风扇的开关,从而控制风扇开关。。

二、阿里云平台及开发流程

2.1阿里云平台

        随着阿里云对于较少接触互联网的用户来说,还是有点陌生,很多新手用户可能只听过阿里云,但阿里云到底是做什么的?阿里云有什么用?都还不是很了解,今天来为大家介绍一下阿里云以及阿里云产品都是干嘛用的,我们什么时候需要用到阿里云。阿里云创立于2009年,是阿里巴巴集团旗下的云计算品牌,云计算,是用足够的低成本、商业化的模式来解决大计算的问题。用户通过阿里云,用互联网的方式即可远程获取海量计算、存储资源和大数据处理能力。截至2014年6月,阿里云服务的客户数超过140万,遍布互联网、移动APP、音视频、游戏、电商等各个领域。根据IDC调研报告,阿里云是国内最大的公共云计算服务提供商。阿里云致力于打造公共、开放的云计算平台。借助技术的创新,不断提升计算能力与规模效益,将云计算变成真正意义上的公共服务。与此同时,将通过阿里云用互联网的方式使得大家可以便捷的按需获取阿里云计算产品与服务。

阿里云的产品共分为以下几大块:

弹性计算

        这包括基础云产品,如云服务器ECS,云服务器ECS是一种可弹性扩展、安全、稳定、易用的计算服务,用户可以像用水和电一样按需购买云服务器,而不必承担高昂的服务器硬件运维成本。云服务器可以根据自己的业务实际需要随意升级或者降配,也可以根据业务高发时期临时增加带宽,让服务器的使用变得非常方便。

        弹性计算的产品还包括负载均衡SLB,负载均衡SLB对多台云服务器进行流量分发服务。为了应对业务需求,企业往往会有多台云服务器提供服务器,负载均衡就是将用户的请求按照企业自定义的策略转发到最优的服务器。

数据库

        云数据库RDS:完全兼容MySQL,SQLServer,PostgreSQL等,相对于云服务器,云数据库属于非必需品,因为用户完全可以在云服务器上搭建数据库。由于自身业务发展需要,将数据库独立出来,这时候就需要阿里云的RDS云数据库了。

存储

        阿里云存储产品有很多种,最基本也用得最多的是对象存储,对象存储OSS:海量、安全和高可靠的云存储服务。如果企业静态文件较多(图片、视频等大文件),可以将大量的存储内容转移独立出来,放到对象存储OSS里面。

网络

CDN:跨运营商、跨地域全网覆盖的网络加速服务

专有网络 VPC:帮您轻松构建逻辑隔离的专有网络

高速通道:高速稳定的VPC互联和专线接入服务

NAT网关:支持NAT转发、共享带宽的VPC网关

2018年6月20日,阿里云宣布联合三大运营商全面对外提供IPv6服务。

        除此之外,阿里云还有大数据、云安全、人工智能、域名与云通信等产品,阿里云服务着制造、金融、政务、交通、医疗、电信、能源等众多领域的领军企业,包括中国联通、12306、中石化、中石油、飞利浦、华大基因等大型企业客户,以及微博、知乎、锤子科技等明星互联网公司。

2.2 开发流程

步骤1 创建产品。创建一个MQTT协议的产品,在产品页,单击创建产品,填入产品信息,联网方式选择WIFI,创建产品。

步骤2 创建设备。在左侧导航栏,选择设备。在设备页,添加设备。单击添加设备,单个创建设备。

步骤3 编辑物模型。添加自定义功能。

选择添加自定义功能。您可以为产品自定义属性、服务和事件。自定义属性:在添加自定义功能对话框,选择功能类型为属性。设置参数完成后,单击确认。

步骤4 发布物模型。单击功能定义的编辑草稿页面左下方的发布上线。控制台页面会弹出发布物模型上线对话框。

步骤5 在线调试。设备页点击在线调试,跳转调试界面,选择设备,进行设备命令设置。

三、开发过程

阿里云物联网平台

采用现成的物联网云平台,可以方便设备上云,完成设备与上位机之间双向通信,不需要自己搭建服务器,还可以通过云端的存储桶存储数据,分析数据等。

3.1创建产品

(1)账号注册

搜索阿里云官网,注册阿里云账号。登录阿里云账号后在概览页面中搜索物联网平台,如下图所示

(2)开通公共实例

登录物联网平台控制台,点击开通公共实例,等待几分钟后开通成功。在实例概览页面,找到对应的实例,单击实例进入实例详情页面。、

(3)创建产品

在左侧导航栏,选择设备管理 > 产品,单击创建产品。自定义产品名称,所属品类选择温湿度采集,联网方式选择WIFI,点击确认,产品创建成功。

(3)创建设备

在产品页点击管理设备,然后单击添加设备,输入设备名,点击确认,设备创建成功。

(4)编辑物模型

        在产品详情页,单击功能定义页签,再单击编辑草稿,单击默认模块或添加模块。添加标准功能。如果您创建产品时选择了标准品类,则物联网平台已为该品类预定义了标准功能。选择添加标准功能,然后在弹出的双列表框中,选择适用于该产品的标准功能。此系统我采用的是添加自定义功能。选择添加自定义功能。您可以为产品自定义属性、服务和事件。自定义属性:在添加自定义功能对话框,选择功能类型为属性。设置参数完成后,单击确认。单击功能定义的编辑草稿页面左下方的发布上线。控制台页面会弹出发布物模型上线对话框

(5)执行结果

        物模型发布后,物联网平台为该产品生成正式版本的物模型。在产品详情页面的功能定义页签下,您可以:单击物模型TSL,查看JSON格式的物模型TSL。单击生成设备端代码,下载物联网平台根据您定义的功能生成的设备端代码,用于设备端物模型功能开发。

(6)上传ESP8266代码

  1. 在官网下载Arduino软件
  2. 打开文件à首选项,再将该连接复制到à“附加开发板管理器网址”。

网址为:https://dl.espressif.com/dl/package_esp32_index.json

添加附加开发板管理器网址如图所示: 

  1. 重启Arduino软件,依次点击:工具–开发板–开发板管理器,然后搜索ESP8266并下载。如图所示为搜索结果:

  1. 下载完成后,依次点击工具–开发板,可以观察到ESP8266相关的开发板,如下图所示,至此Arduino 和 ESP8266 开发环境就搭建好了。
  2. DHT11温湿度传感器接入ESP8266,连接阿里云物联网平台,从设备信息查看三元组信息并且更改代码的三元组以及WIFI信息,更改信息如下图所示。

        上传代码连接到WIFI就可以激活设备,此时就能在阿里云平台观察到设备在线,就表示已经连接到阿里云平台。此时就可以查看实时的温湿度信息,进行药物存储环境的监控。外接的继电器用于控制风扇,用于调节温湿度情况。ESP8266端的程序上传采用的是Arduino IDE,打开软件新建项目文件,在工具栏中选择我们所需要的开发板型号,开发板型号选择ESP8266 NoedMcu 1.0,进行程序的编写,编写完成后选择对应端口进行程序下载。在IDE软件中显示上传成功后表示程序已上传,打开串口监视器,显示相应的温湿度信息。温湿度显示信息如下图所示。

在线调试

选择设备列表,单击进入所需要的设备,选择在线调试,点击前往查看,进入在线调试界面,选择相应设备。

  1. 可视化界面开发

(1)创建项目。关联产品,关联设备。

(2)在项目主页页面的项目开发下,选择移动应用。

(3)单击应用列表上方的新建。

(4)在新建移动应用对话框中,填入应用名称和描述,单击确认。

创建应用完成后,会自动打开移动应用编辑器。

在此界面上拖动左边相应组件,配置相应的数据源,验证格式,格式正确点击确认。

2.继电器电路设计

在对温湿度控制模块上,采用继电器作为控制模块,继电器就相当于一个开关。电路图如下图所示。

        在本系统的温湿度控制系统中,采用常开端NO接口,继电器常开,连接一个5V电源用于风扇驱动,电源正极连接继电器NO口,电源负极连接风扇正极,风扇的负极连接继电器的公共端口。继电器连接ESP8266的D4引脚,当给继电器一个高电平时,继电器打开,风扇开始工作,降低温度和湿度。当给继电器一个低电平时,继电器开关关闭,风扇关闭。

四、结果

为了验证云端设备的情况,这里登录阿里云官网平台,查看设备接入是否在线,测试数据交互。

(1)登录阿里云

登录阿里云,点击控制台,进入物联网平台。

(2)查看上传的数据

此时,我们可以看到,温湿度在实时显示,说明上传数据成功

(3)在线测试

在在线调试界面,在属性调试界面进行下发命令的设置,进行风扇的关闭,完成温湿度的调控。

当打开的命令下发成功后,可以看到继电器绿灯亮起,同时风扇转动。当关闭风扇的命令下发,继电器绿灯熄灭,风扇停止转动。至此,调试全部完成,调试正常。

五 总结

        采用现成的物联网云平台,可以方便设备上云,完成设备与上位机之间双向通信,不需要自己搭建服务器,还可以通过云端的存储桶存储数据,分析数据等。 MQTT 是一个客户端服务端架构的发布/订阅模式的消息传输协议。 它的设计思想是轻巧、 开放、简单、 规范, 因此易于实现。 消耗资源少,在MQTT3.1标准协议中仅有14个报文。每个报文都分为固定报头、可变报头和有效载荷3部分。

        通过本次课程设计,使得我更深入的认识了阿里云云通过MQTT协议实现设备的数据上传和云平台的命令下发的结构和设备接入IoT的各种设备原理,通过阿里云物联网平台可远程控制开关,完成远程监控的同时进行控制,进一步了解人机交互,我获益匪浅。

代码实现:

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

//设置用于连接温湿度传感器的引脚
#define DHTPIN 13  //根据硬件连接确定引脚编号(注意,这里我连接的是D7,也就是GPIO13)
#define led  D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float h,t;

// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;

// 引入阿里云 IoT SDK
#include "AliyunIoTSDK.h"

// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "htnjzCVL2zm"
#define DEVICE_NAME "yaohe"
#define DEVICE_SECRET "798d20211705da722f0f68b0d2b098bd"//(这三个东西在阿里云里面)
#define REGION_ID "cn-shanghai"

// 设置 wifi 信息
#define WIFI_SSID "1"//(这里面连你自己家的WiFi,注意要是2.4G频段的,5G的不行)
#define WIFI_PASSWD "12345678"//(你自己家的WiFi密码)

void setup()
{
    Serial.begin(115200);
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化 wifi
    wifiInit(WIFI_SSID, WIFI_PASSWD);

    //初始化 iot,需传入 wifi 的 client,和设备产品信息
    AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);

    // 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback
    // PowerSwitch 是在设备产品中定义的物联网模型的 id
    // AliyunIoTSDK::bindData("温湿度",CurrentTemperature);

    // // 发送一个数据到云平台,LightLuminance 是在设备产品中定义的物联网模型的 id
    AliyunIoTSDK::bindData("LED", LED);

     
 
   pinMode(DHTPIN,INPUT);
    dht.begin();
 
}

void loop()
{
    
  AliyunIoTSDK::loop();  
  AliyunIoTSDK::send("temperature",t);
  AliyunIoTSDK::send("Humidity",h);
   //发送LED状态到云平台(高电平:1;低电平:0)
    AliyunIoTSDK::send("LEDPIN", digitalRead(LED_BUILTIN));

  h = dht.readHumidity();
  t = dht.readTemperature();                
  Serial.print("Temperature:");                      
  Serial.println(t);                                     
  delay(1000);
  Serial.print("Humidity:");                            
  Serial.print(h);                                    
  Serial.println("%");                                 
  delay(1000);
  

}

// 初始化 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");
     digitalWrite(led, LOW);


}

//回调函数
void LED(JsonVariant L)//固定格式,修改参数l
{
  int LED = L["LED"];//参数l
  if (LED == 1)
  {
    digitalWrite(LED_BUILTIN, LOW);
  }
  else 
  {
    digitalWrite(LED_BUILTIN, HIGH);
  }
  
}

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年11月27日
下一篇 2023年11月27日

相关推荐

此站出售,如需请站内私信或者邮箱!