资讯详情

物联网?快来看 Arduino 上云啦

6be2ea53c70f8b3c81cc0558e34f3010.png

作者:HelloGitHub-

这里是 HelloGitHub 解释开源硬件开发平台 系列教程。

  • 第一篇:Arduino 介绍和开发环境建设

  • 第二篇:制作温湿度显示器

在最后一篇文章中,我们介绍了如何安装 Arduino 支持库、DHT 11 温湿度传感器和 OLED 并用屏幕 Arduino 制作小型温湿度显示器。

在这个讲究时代,让我们的 Arduino 温湿度也去云玩,有个学名叫物联网。

物联网(IoT) 它是一个由传感器、软件和其他技术嵌入物理对象组成的网络,通过互联网连接和交换数据。

是不是瞬间觉得高一点,但是不用担心本期的知识超纲,因为我不会高深!

今天,我们将解释如何通过物联网平台完成上一期的温湿度设备。实现将 Arduino 将设备测量的温湿度数据上传到物联网平台,然后接收平台发送指令控制设备 LED 灯光开关

你已经开始摩拳擦掌了吗?让我们开始上云!

一、实现联网功能

1.1 模块介绍

首先,如果你想要的话 Arduino 连接到物联网平台的服务器必须首先让设备连接到网络(例如,在家里 WiFi),我们需要在这里使用它 实现此功能的模块。

其使用方法与上述组件相似,只需使用 VCC(3.3v)、GND、TX、RX 四条线,可以和 Arduino 通信。我在这里用的是 ESP-01 转接板实现了转接板 5v->3.3v 的变压以及 RxTx 引出接口,便于后续使用。

大多数 ESP-01(s) 模块出厂时已内置 使用时只需将指令固件发送到模块 AT 网络连接、数据传输等操作输等操作。

关于什么是 AT 简单来说,指令是设备间的一种,更具体的定义和应用场景读者可以自行了解。

1.2 模块使用

ESP-01 模块接线方式如下:

  • GND -> GND

  • VCC -> 3.3v(单独模块) 5.5v(带转接板)

  • Tx -> Rx

  • Rx -> TX

用到的 AT 指令如下:

  • AT RST:重置模块

  • AT CWMODE=1:切换模式

  • AT CWQAP:断开 WiFi 连接

  • AT CWJAP="WiFi名","密码":连接 WiFi

  • AT CIPSTART="TCP","IP",端口:连接服务器

  • AT CIPMODE=1:切换到 TCP 透传模式

  • AT CIPSEND:开始发送数据

1.3 代码

Arduino 连接 WiFi 的代码:

#include<Arduino.h>  booleanat_exec(char*data,char*keyword,unsignedlongtime_out) { Serial.println(data); Serial.flush(); delay(100);//等待响应 unsignedlongstart=millis();  while(Serial.available()<strlen(keyword)) { if(millis()-start>time_out) returnfalse; } if(Serial.find(keyword)) returntrue; else returnfalse;  while(Serial.available()) Serial.read();///清空串口缓存 }  voidsetup() { Serial.begin(115200); while(!at_exec("AT RST","OK",1000)); while(!at_exec("AT RST","OK",1000)); while(!at_exec("AT CWMODE=1","OK",1000)); while(!at_exec("AT CWQAP","OK",1000)); while(!at_exec("AT CWJAP=\"HelloGithub\",\"PassWord\"","WIFICONNECTED",2000)); while(!at_exec("AT CIPSTART=\"TCP\",\"183.230.40.40\",1811","CONNECT",1000)); while(!at_exec("AT CIPMODE=1","OK",500)); while(!at_exec("AT CIPSEND","OK",500)); //Serial.println("*产品ID#鉴权信息#脚本名称*");//下文会将如何获取这部分信息 }

  • 下载前断开 Arduino 和 ESP-01 连接,否则可能下载失败

  • 执行 AT CIPSEND 之后,模块将不再响应 AT 如果需要修改配置,则必须断电重启模块

  • 记得改 AT CWJAP 参数,对应 WiFi 用户名和密码

重启连接模块烧录后 Arduino。如果您在路由器管理界面的连接设备页面上看到我们 WiFi 表示设备

二、物联网平台

我们在这里使用的是 OneNet 物联网平台是由中国移动打造的物联网 PaaS 开放平台可以轻松(免费)实现设备云。

下面将介绍从注册到完成设备云的所有云配置步骤。

2.1 注册

打开 OneNet 点击官网右上角的注册注册账号。

2.2 新建产品

登录账号后,点击右上角的控制台进入控制页面。

进入后点击 “全部产品服务”->多协议接入:

选择多协议接入界面 TCP 透传->添加产品:

在弹出侧栏填写相关信息,随意填写产品行业和类别,最后点击确定完成新产品。

2.3 加设备

找到刚刚创建的产品我的是 “HelloGitHub”,然后点击左侧栏的“设备列表”,在新出现的页面中点击“添加设备”,填写完相关信息最后点击“添加”,完成增添设备的操作。

2.4 编写数据解析脚本

接下来,我们配置云端的数据解析脚本,不用自己动手写直接下载官方脚本到本地改一改就能用。

在解压下载好的文件夹中,找到 sample.lua 文件里的 device_timer_init 函数(第 303 行),改成如下内容:

function device_timer_init(dev)
    -- 定时发送开关灯指令 --
 dev:timeout(0)
 dev:add(10,"open","open")
 dev:add(12,"close","close")
end

找到 device_data_analyze 函数(在文件的最后),修改为如下内容:

function device_data_analyze(dev)
 local t={}
 local a=0
 local s = dev:size()
    -- 我们定义 一次发送 十个 字节,分别为 温度 湿度 --
 add_val(t,"Temperature",a,dev:bytes(1,5))
 add_val(t,"Humidity",a,dev:bytes(6,5))
 dev:response()
 dev:send("received")
 return s,to_json(t)
end

如果大家对脚本使用方法感兴趣的话,可以查看代码的注释和官网上接入文档,这里就不做过多讲解了。

2.5 上传脚本

将该文件保存后,回到刚刚打开过的“设备列表”点击“上传解析脚本”。

至此,云端配置完毕。

2.6 连接物联网平台

修改 1.3 的代码,将 这行代码改成:

Serial.println("*产品ID#ILoveHelloGitHub#HG*");

将云端配置完成后,获得的等参数,替换到对应位置。(*产品ID#鉴权信息#脚本名称*

最后,重新烧录代码并重启 ESP-01 模块。稍等片刻,在云端刷新“设备列表”页面,看到我们的设备,证明设备上了物联网平台。

三、Arduino 上云

经过前面的铺垫,我们“上云”的旅程即将迎来最激动人心的部分。

3.1 代码

既然是上传温湿度数据,就需要用到我们上期讲的 DHT11 模块(温湿度传感器),然后结合本期连接网络的代码,分分钟就可以完成啦。

但是为了增加项目的趣味性,我额外添加了个解析物联网平台发送命令,远程控制开关 LED 的函数。

代码片段如下:

void setup()
{
  // 改成自己云端的参数
  Serial.println("*产品ID#ILoveHelloGitHub#HG*");
}

// 根据从串口收到的 字符串 执行相应的指令
bool command_parse(String command){
  ...
  if (command == "open")
  {
    digitalWrite(LED_BUILTIN, HIGH);
  } else if (command == "close")
  {
    digitalWrite(LED_BUILTIN, LOW);
  }
}

完整代码:https://github.com/HelloGitHub-Team/Article/blob/master/contents/Other/Arduino/3/code.cpp

最后,修改完整代码中的 ,以及 后,重新烧录代码即可。

3.2 上传温湿度数据

稍等片刻后,查看物联网平台的“设备信息”,如果看到 Arduino 上传的室内温湿度信息,就证明我们的代码啦。

3.3 远程控制

下面演示如何通过物联网平台,远程控制灯的开关。

打开物联网平台,点击“设备界面”的“下发指令”,在弹出的表单上选择“字符串”选项,输入 “open” 或 “close” 指令。

到这里,就完成了远程控制 Arduino 内置 LED 灯开/关的效果!

撒花🎉

四、总结

这篇文章,结合 Arduino、传感器、WiFi 以及 OneNet 物联网平台,通过边做边讲的方式,讲述了一个设备从联网到上云的完整过程。虽然是入门级的教程,但是这些知识已经可以帮助你完成,诸如智能开关、自动喂食器等实用和有趣的项目。

不小看每一次小的进步,不积跬步无以至千里。

如果说移动互联网的浪潮已经过去,那么下一个浪潮中会不会有的影子呢?反正我觉得技多不压身,对此你怎么看?欢迎在评论区发表你的看法。


至此,整个 Arduino 系列教程,到这里就结束了。完结!再次撒花🎉

希望,HelloGitHub 的 系列教程,能够勾起你对物联网的兴趣, 毕竟兴趣才是最好的好老师。

本期的内容就是这些,这里是 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。

感谢您的阅读,如果觉得内容还不错,一定要记得点赞、留言、分享,我们下期见!

标签: 湿度传感器等评论列表传感器引出连接线5501定影温度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台