0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用合宙的DTU+业务云平台,做温湿度传感器数据采集项目

青山老竹农 来源:jf_82863998 作者:jf_82863998 2024-09-18 11:39 次阅读

​你是否有这种困惑:需要熟悉可繁琐的环境搭建、关注繁琐的编译选项、关心繁琐的C语言陷阱。。。非常希望不写代码或者用寥寥几行代码,就完成对外设的控制,和服务器的通信

答案在这里!

使用合宙的物联网解决方案,一步到位,合宙技术人员完成开发、调试和维护工作,不需要客户投入任何技术资源,最快1天完成开发!

本文教你怎么用简单的几个步骤,完成一个温湿度传感器数据采集项目。

让DTU整机Air-D780L1-Y采集温湿度传感器的数据,并且将温湿度数据上传到合宙业务云平台,在小程序上可以查看温湿度数据。

看起来复杂的多组件产品,实现起来会很简单!

来看一下,我是如何使用Air-D780L1-Y+合宙业务云平台,做一个温湿度传感器数据采集项目的。

一、DTU整机Air-D780L1-Y介绍

本次项目的主角是一款合宙DTU整机产品Air-D780L1-Y,

Air-D780L1-Y的功耗低,品质稳定,购买样品也方便,资料全开放。

如下图所示:

编辑

Air-D780L1-Y的产品说明书可以参考:[Air-D780L1-Y 产品说明书] "Air-D780L1-Y 产品说明书") 。

今天我就用手把手的教程,教会你怎样使用Air-D780L1-Y, 开发各种应用项目。

二、业务逻辑介绍

这里,先要告诉你一些前提条件,虽然听着像是废话, 但是如果你不知道的话,可能后面会比较懵逼,所以还是希望你能够认真看完这一节。

这个项目的产品定义是:Air-D780L1-Y每隔5秒钟,将温湿度传感器的数据上传到合宙业务云平台。

要想达到这个目的, 有必要先介绍一下这个项目的系统框架图:

编辑

基本的操作和业务逻辑如下:

  • DTU整机为Air-D780L1-Y;
  • 通过Luatools烧录LuatOS-iRTU固件到Air-D780L1-Y中;
  • Air-D780L1-Y需要插入SIM卡;
  • Air-D780L1-Y通过RS485接口连接温湿度传感器;
  • WEB参数配置平台中,绑定并且分组设备,然后配置运行参数;
  • Air-D780L1-Y开机后,连接WEB参数配置平台,下载运行参数到整机中,然后自动重启;
  • Air-D780L1-Y读取温湿度传感器数据,并且定时上传数据到合宙业务云平台,可以在小程序中查看数据;
  • 小程序也可以下发控制指令给Air-D780L1-Y;

在大概了解了业务逻辑之后,接下来我将带你进入正式的动手实操阶段!

三、准备硬件环境

3.1 硬件清单列表

  • 准备一台Air-D780L1-Y整机
  • 编辑
  • 准备一张可以上网的SIM卡,也可以使用自己的手机卡,插入到Air-D780L1-Y整机中;
  • 准备一条USB数据线,必须要有数据传输功能,将外部的绝缘皮拨开之后,里面至少要有红色、白色、绿色、黑色或者红色、白色、蓝色、黑色四根导线,用来烧录LuatOS-iRTU固件到Air-D780L1-Y中;

编辑

  • 准备一字和十字螺丝刀,用来拆装Air-D780L1-Y和温湿度传感器;

编辑

  • 准备一台烙铁和焊锡条,用于将USB数据线焊接到Air-D780L1-Y电路板上;
  • 准备一台温湿度传感器,用来采集温湿度数据;

编辑

  • 准备六根导线或者两面都是公头的杜邦线,用来给温湿度传感器供电以及连接Air-D780L1-Y和温湿度传感器;

编辑

  • 准备一台可以输出10到30V的直流稳压电源,用来给Air-D780L1-Y和温湿度传感器供电;

编辑

四、组装硬件环境

使用螺丝刀将Air-D780L1-Y整机背面的四个螺丝拆下来,打开外壳;

插入可以上网的SIM卡;

然后找到Air780E模组下方的VB、DM、DP、GND四个焊点,

将USB数据线焊接到这四个焊点上;

如下图所示:

编辑

  • 使用两根导线将温湿度传感器和Air-D780L1-Y通过RS485接口相连,注意是A连接A,B连接B;如下图所示:

编辑

  • 使用四根导线分别引出温湿度传感器和Air-D780L1-Y的供电+和-,温湿度传感器的供电电压范围是10到30V,Air-D780L1-Y的供电电压范围是5到36V,所以将直流稳压电源的电压调节为10到30V即可,我这里调节的是12V,然后同时给温湿度传感器和Air-D780L1-Y供电,如下图所示:

编辑

如果你完全按照以上步骤组装,到这里就应该一切妥当了,可以再次对照上面这张图片,看看是否组装正确。

五、准备软件环境

5.1 Luatools工具使用

要想烧录代码,先要下载合宙的强大的调试工具:Luatools;

使用方法:[合宙Luatools实战宝典:功能介绍+使用技巧全攻略-CSDN博客] "合宙Luatools实战宝典:功能介绍+使用技巧全攻略-CSDN博客")

如果你已经安装使用过Luatools,可以直接跳过本小节;

Luatools下载地址为:https://doc.openluat.com/wiki/52?wiki_page_id=5071 ,如下图所示:

编辑

Luatools 工具主要有如下几个功能:

(1) 自动从合宙服务器获取最新的合宙LuatOS-iRTU固件和标准模组固件;

(2) 烧录固件和脚本;

(3) 查看和保存模组的USB口或者串口运行日志;

(4) 简单的串口调试;

Luatools 下载之后,无需安装,解压到你的硬盘,点击 Luatools_v2.exe 运行,出现如下界面,就代表 Luatools 安装成功了(注意:运行Luatools后,会自动更新最新资源和版本文件,这时,你可以喝口水,耐心等待它更新完成):

编辑

5.2 LuatOS-iRTU固件

LuatOS-iRTU固件,是合宙采用LuatOS架构自主研发的DTU嵌入式软件系统,已经被众多DTU厂商采用,经过百万级装机设备的验证,稳定可靠,广泛应用于物联网领域的各行各业;可以通过以下任何一种方式获取这个固件:

  • 访问:https://gitee.com/openLuat/luatos-irtu/releases ,下载最新发布的文件名后缀是EC618.soc 的即可,例如下图中红框选中的文件.

编辑

  • 打开Luatools,点击 菜单 1 LuatOS -> 1.2 资源目录 ->1.2.1 Core固件目录;找到LuatOS_iRTU_Air780E目录,从里面找最新版本的soc文件即可;

编辑

编辑

5.3 DTU管理系统

DTU管理系统,可以在线绑定你的DTU设备,对设备进行分组,对每个组内的所有设备配置运行参数(例如,连接什么服务器,多久上传一次数据,上传什么格式的数据);

如果你已经使用过DTU管理系统,可以跳过本小节;

访问 dtu.openluat.com ,如果你已经有 dtu.openluat.com 或者 iot.openluat.com 的账号,可以直接使用这两个账号中的任何一个账号登录,

如果没有账号,点击下图中的 立即注册 按钮注册一个账号;

编辑

5.3.1、 创建分组

此时,你已经拥有了一个DTU管理系统的账号,登录 dtu.openluat.com 之后,第一个界面大概是下面这个样子:

编辑

点击左边菜单,设备管理->分组管理,打开如下界面:

编辑

看到这里,你可能会有疑问:这里的分组是做什么用的呢?

其实你可以把分组理解为项目,假设你的DTU管理系统账号下有100个设备,这100个设备中:50个设备是智慧农业灌溉项目,50个设备是气象站项目;

这时你就需要创建两个分组,分别对各自的50个设备进行管理。

在这个演示项目中,我使用的是Air-D780L1-Y整机采集温湿度数据,然后上传到合宙业务云平台,所以我按照下图提示,点击右上方的 添加分组 按钮,新建一个 Air-D780L1-Y_合宙业务云平台_温湿度数据采集 的分组:

编辑

5.3.2 绑定设备并且分组

创建好 Air-D780L1-Y_合宙业务云平台_温湿度数据采集 的分组之后,接下来要做的是把你的设备IMEI添加到这个分组中;

5.3.3 查询设备

在添加IMEI到分组之前,首先要保证这个IMEI在你的账号下;

怎么查询IMEI是否在你自己的账号下呢?

点击左边菜单,设备管理->设备列表,打开如下界面:

编辑

在这个界面中,输入你的设备的IMEI,然后点击搜索按钮进行查询;

如果你不知道你的Air-D780L1-Y的IMEI,参考以下两种方法:

1、Air-D780L1-Y外壳上如果有IMEI号,直接使用;

2、如果已经拆掉外壳,直接使用板子上Air780E模组标签上的IMEI号;

如果设备IMEI不在你的账号下,直接跳过本小节剩余内容,到5.3.4章节继续阅读;

如果设备IMEI在你的账号下,参考下图,将设备划分到你期望的分组中,跳过5.3.4章节,到第六 章节继续阅读;

编辑

5.3.4 自助绑定并且分组设备IMEI

我演示使用的Air-D780L1-Y的IMEI是864710071339591,在我的设备列表下,没搜索到这个设备;

5.3.5 下载专属固件

不要灰心,接下来教你一种自助绑定并且分组设备到你账号下的方法,点击 设备管理->IMEI与DTU账号绑定,按照下图操作:

编辑

点击 固件生成 按钮之后,耐心等待一会儿,后台在自动生成固件,大概20秒以内,就可以生成好并且下载成功,我这里下载下来是一个压缩包

编辑

解压之后,里面有以下文件

编辑

我们本次演示使用的是Air-D780L1-Y整机,所以要选择后缀是EC618.soc的那个文件,也就是iRTU_1.0.5_LuatOS-SoC_V1108_EC618.soc

(此处注意:你操作时只需要认准EC618.soc的后缀就行,和我这里的文件名不一定完全一致);

六、烧录专属固件

准备好iRTU_1.0.5_LuatOS-SoC_V1108_EC618.soc固件后,

接下来请再次打开合宙强大的调试工具Luatools,使用Luatools将这个固件烧录到Air-D780L1-Y中,

此时再来看下之前已经组装好的硬件环境,将已经焊接到Air-D780L1-Y上的USB数据线,插入到电脑的USB口中,直流稳压电源上电(注意此处设置的是12V输出)。

编辑

如果电脑的设备管理器中新增3个端口,表示Air-D780L1-Y已经正常开机,并且USB数据线通信正常

编辑

接下来我们就要使用Luatools将固件烧录到Air-D780L1-Y中,

烧录之前Air-D780L1-Y需要先进入boot模式,先给直流稳压电源断电,

然后一直按下Air-D780L1-Y板子上的BOOT按键,再给直流稳压电源上电,

此时电脑的设备管理器中如果新增了1个端口,而不是之前的3个端口,

则表示已经进入了boot模式。

(注意:boot模式会持续20秒左右,如果20秒内没有发起烧录固件的工作,会自动退出boot模式;此时如果还要烧录固件,重新操作进入boot模式)

编辑

打开Luatools后,按照下图配置并且选择要烧录的固件文件:

编辑

在最后一步点击 下载 按钮时,要确保Air-D780L1-Y仍然处于boot模式,如果开始下载,下载界面如下图所示:

编辑

下载成功后的界面如下图所示:

编辑

七、自动重启并且自动绑定和分组

下载成功后,Air-D780L1-Y会自动重启运行,部分运行日志和解析见下图所示:

编辑

此时我们再回到DTU管理系统,看看864710071339591的imei是否已经自动绑定并且自动分组

编辑

真香,果然已经成功了,恭喜你!

看完本小节,有老铁可能会问,为什么绑定设备这么麻烦呢?在这里请允许我解释几个问题:

1、为什么不让用户随便输入一个IMEI就能方便地绑定到自己的账号下呢?

这样风险很高,万一你把别人设备的IMEI绑定到你自己的账号下,岂不是乱套了?

2、如果我有批量的设备需要绑定,怎么处理呢?

无论你有多少台设备,都有两种绑定方法:

(1) 参考本小节,采用烧录定制固件的方式自助绑定;这种方法适用于设备数量较少的场景;

(2) 联系合宙的销售人员或者技术人员,告知你需要绑定的设备IMEI,合宙人员会核实这些IMEI是否属于你,如果核实通过,合宙人员在后台帮你绑定到你的账号下;这种方法适用于所有场景,尤其是设备数量很多的场景;

八、设备烧录LuatOS-iRTU固件

参考5.3.4 章节下的 使用Luatools将专属固件烧录到Air-D780L1-Y中 小结,

将 5.2 LuatOS-iRTU固件 章节中准备的通用LuatOS-iRTU固件

(我这里的固件名是iRTU_1.0.6_LuatOS-SoC_V1110_EC618.soc,你烧录时,使用最新版本的固件就行),烧录到Air-D780L1-Y中。

烧录成功后,Air-D780L1-Y自动运行,Luatools的日志界面如下

编辑

出现这个提示,说明你的设备在DTU管理系统中没有配置任何运行参数,不会连接你期望的业务云平台,也没有和具体项目有关的任何业务逻辑;

这一切都要靠在DTU管理系统中对分组进行配置参数实现。

九、配置运行参数

在DTU管理系统中,点击下图中的参数配置

编辑

参数配置的总体页面如下

编辑

接下来将根据本项目的具体业务逻辑,来配置参数

9.1 基本参数

编辑

9.2 串口参数

编辑

9.3 网络通道参数

编辑

9.4 预置信息

编辑

GPIO,GPS的参数是默认配置,不用修改

9.5 数据流

编辑

编辑

发送数据流模板代码

function--数据流固定格式
        if not _G.s_report_interval then _G.s_report_interval = 5 end
        if not _G.s_485_read_interval then _G.s_485_read_interval = 0 end
        
        _G.s_485_read_interval = _G.s_485_read_interval+5
        
        if _G.s_485_read_interval< _G.s_report_interval then return nil end
        
        
    --将串口接收的数据赋值给str
    local str= ...
    local addr = str:sub(1, 1)--地址位
    local fun = str:sub(2, 2)--功能码
    local byte = str:sub(3, 3)--有效字节数
    local humi =str:sub(4,5)--湿度值
    local temp = str:sub(6,7)--温度值
    local idx, crc = pack.unpack(str:sub(-2, -1), "H")
    local tmp = str:sub(1, -3)
    --crc校验原理前面所有位合起来校验后的值等于上报的数据的最后校验位
    if crc == crypto.crc16("MODBUS", tmp) then
        log.info("crc校验成功")
        -- _无用,addr地址码,fun功能码,byte返回有效字节数,humi湿度,temp温度
        -- pack.unpack 将lua字符串分解为不同的数值
        -- " >b3h2"表示在tmp字符串中,从tmp第一个字节开始,取三个字节,取两个短整数
        local _,addr,fun,byte,humi,temp = pack.unpack(tmp, " >b3h2")
        --如果功能码为0x03,则为读取温湿度值
        if fun == 0x03 then
            --给表中添加一个叫做humi的元素,并将上文中的humi变量的值赋给该元素
            humi = humi/10 --pack.unpack后已经将该数转换成了十进制的整数,需要将其除以10才是真实的湿度百分比数
            --给表中添加一个叫做temp的元素,并将上文中的temp变量的值赋给该元素
            temp =temp/10 --pack.unpack后已经将该数转换成了十进制的整数,需要将其除以10才是真实的温度值
                        log.info("温湿度",humi,temp)                        
        end
                
                local la,ln = create.getRealLocation()
                if la==nil or la=="" then la = "31.131710" end
                if ln==nil or ln=="" then ln = "121.548860" end
                log.info("la,ln",la,ln,tonumber(la),tonumber(ln))
                
                if not fake_la then fake_la = 31.131710 end
                if not fake_ln then fake_ln = 121.548860 end
                
                
                
                
                local payload =
                {
                        location = {lat=tonumber(la),lng=tonumber(ln)},
                        --location = {lat=fake_la,lng=fake_ln},
                        temperature = temp,
                        humidity = humi,
                        pm2_5 = 16,
                        pm10 = 18,
                        interval = "INTERVAL_".._G.s_report_interval.."S",
                        switch_state1 = "ON",
                        switch_state3 = "ON",
                        brightness1 = 10,
                        brightness2 = 20,
                        work_mode = "WARM"
                }
                
                _G.s_485_read_interval = 0
                fake_la = fake_la+0.0002
                fake_ln = fake_ln+0.0002
                        
                --将该表转换成json格式的字符串并发送给服务器
                return json.encode(payload)
                        
    else
    --如果crc校验失败则将"crc error"发送给服务器
        log.info("crc校验失败")
        return nil
    end
end--数据流固定格式

接收数据流模板代码

function
        local str=...
        
        log.info("recv",str)

        if str:sub(1,22)=='{"interval":"INTERVAL_' then
                local interval = str:match("(%d+)")
                log.info("interval",interval)
                _G.s_report_interval = tonumber(interval)
        end
        
        if str:sub(1,17)=='{"method":"reset"' then
                sys.restart("server control")
        end

        return str,1  -- 返回值

end

9.6 预警

默认配置,不用修改

9.7 任务

编辑

任务1代码

function 
gpio.setup(22,1)--打开485转TTL电平芯片的供电
end

9.8 重要提醒

所有参数配置结束之后,记得点击右下角的确认按钮,否则不会生效!!!

所有参数配置结束之后,记得点击右下角的确认按钮,否则不会生效!!!

所有参数配置结束之后,记得点击右下角的确认按钮,否则不会生效!!!

9.9 在合宙业务云平台配置项目和设备参数

因合宙业务云平台目前不对外开放,只能由合宙技术人员使用,所以此处省略很多内容:

需要使用合宙业务云平台的用户,可以再仔细看下本文档中心的1.2和1.5章节,联系合宙产品负责人微信18616233557沟通。

十、重启设备,下载最新参数,验证运行逻辑

此时你可以直流电源断电再上电重启下Air-D780L1-Y;

或者通过Luatools的重启按钮重启下设备

编辑

设备重启后,会自动连接DTU管理系统,下载最新参数,然后安排参数的配置逻辑进行;

Luatools中的运行日志如下

编辑

此时你可以通过手机微信扫描以下二维码,登录后,可以体验小程序

编辑

AppID: 12772998

账号:dtu

密码:dtu

或点此查看原文获取小程序:[‍⁠​‬​‍⁠‌​​ ​‌ ‍‌​‬​​​⁠‍​⁠​​​​​​‬ ​‍​ ​‬‬​‍‌ ​​ ​​​合宙DTU整机产品线文档中心] "‍⁠​‬​‍⁠‌​​ ​‌ ‍‌​‬​​​⁠‍​⁠​​​​​​‬ ​‍​ ​‬‬​‍‌ ​​ ​​​合宙DTU整机产品线文档中心")

动态演示效果见以下动画:

编辑

更多详细资料详见:[‍⁠​‬​‍⁠‌​​ ​‌ ‍‌​‬​​​⁠‍​⁠​​​​​​‬ ​‍​ ​‬‬​‍‌ ​​ ​​​合宙DTU整机产品线文档中心] "‍⁠​‬​‍⁠‌​​ ​‌ ‍‌​‬​​​⁠‍​⁠​​​​​​‬ ​‍​ ​‬‬​‍‌ ​​ ​​​合宙DTU整机产品线文档中心")


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2905

    文章

    44361

    浏览量

    371841
  • 温湿度传感器

    关注

    5

    文章

    575

    浏览量

    35678
  • DTU
    DTU
    +关注

    关注

    3

    文章

    432

    浏览量

    25193
  • 云平台
    +关注

    关注

    1

    文章

    1289

    浏览量

    38896
收藏 人收藏

    评论

    相关推荐

    Si7001温湿度传感器在家庭等数据采集系统的应用

    的汽车和工业系统,环境传感器,价格敏感的白色家电等。  总结  以上简单讲述了SI7001温湿度传感器,C8051F985低功耗MCU处理
    发表于 08-22 08:52

    智易申请】基于楼宇系统安防温湿度报警输出及WIFI传送

    速更容易,所以这块开发板真的对自己的工作很重要。项目描述:楼宇系统安防温湿度报警输出及WIFI传送:通过RN7211芯片采集楼宇的电流、电压及电源箱的温度/湿度,然后通过STM32处理
    发表于 08-19 15:49

    机房温湿度环境监控系统POE供电网络型温湿度传感器

    产品关键词:RJ45网口温湿度传感器,TCP/IP协议温湿度变送器,网口网络型温湿度采集模块,机房POE交换机供电型
    发表于 10-10 13:41

    基于Si7001温湿度传感器的家庭等数据采集系统设计

    前言随着生活水平的提高,家具智能化的需求逐步显现,温度、湿度数据采集的应用也开始显现出越来越大的市场潜力。本文中,通过Silicon Labs的Si7001温湿度传感器,C8051F
    发表于 07-08 08:31

    【FPGA DEMO】Lab 12:温湿度传感器的应用

    `项目名称:温湿度传感器的应用具体要求:采集温湿度传感器
    发表于 07-31 10:41

    基于STM32的温湿度采集系统设计

    ①利用stm32对DHT11模块进行数据采集②将采集到的温湿度数据(本次实验并未成功上)二、实验环境硬件:STM32F407ZGT6、
    发表于 08-10 08:17

    基于STM32开发板实现传感数据采集-DHT11温湿度采集

    STM32F407ZGT6开发板进行项目开发,选用的传感器为常见通用的DHT11温湿度传感器传感器
    发表于 08-10 07:41

    AHT20温湿度传感器数据采集

    基于I2C硬件协议的AHT20温湿度传感器数据采集一、软件I2C二、硬件I2C三、基于I2C硬件协议的AHT20温湿度传感器
    发表于 08-23 06:57

    如何去实现基于AHT20温湿度传感器数据采集

    I2C协议是什么?I2C协议的物理层有哪些特点?如何去实现基于AHT20温湿度传感器数据采集呢?
    发表于 12-08 06:27

    基于I2C硬件协议的AHT20温湿度传感器数据采集

    温湿度传感器采集1.完成基于I2C硬件协议的AHT20温湿度传感器数据采集1.1 硬件I2C与
    发表于 12-17 06:23

    AHT20温湿度传感器简介

    系统电路原理中添加 AHT20数据采集原理电路,并完成PCB电路设计。说明:本篇文章是在之前设计好的电路基础上增加一个温湿度传感器电路,之前设计的电路原理图请参考博客:【上篇】Altium Designer绘制stm32最小系统
    发表于 02-14 07:29

    如何去实现基于I2C的AHT20温湿度传感器数据采集及串口输出

    文章目录基于I2C的AHT20温湿度传感器数据采集及串口输出一、IIC协议1. 物理层特点2. 协议层特点二、软件I2C和硬件I2C1. 软件模拟2.硬件模拟三、AHT20温湿度
    发表于 02-18 06:56

    温湿度传感器的原理

    温湿度传感器是指能将温度量和湿度量转换成容易被测量处理的电信号的设备或装置。市场上的温湿度传感器一般是测量温度量和相对
    发表于 05-11 14:59 1.8w次阅读

    温湿度传感器工作原理 温湿度传感器的接线方法

    温湿度传感器是一种用于测量环境温度和相对湿度的装置。它通常用于工业、农业、气象、室内空调等领域。本文将详细介绍温湿度传感器的工作原理和接线方
    的头像 发表于 02-14 18:00 9062次阅读

    如何使用DTU+业务平台,做一个温湿度传感器数据采集项目

    使用DTU+业务平台,做一个温湿度
    的头像 发表于 09-18 11:11 389次阅读
    如何使用<b class='flag-5'>合</b><b class='flag-5'>宙</b>的<b class='flag-5'>DTU+</b><b class='flag-5'>业务</b><b class='flag-5'>云</b><b class='flag-5'>平台</b>,做一个<b class='flag-5'>温湿度</b><b class='flag-5'>传感器</b><b class='flag-5'>数据采集</b><b class='flag-5'>项目</b>?