毕设不会做怎么办_毕设网

毕设不会做怎么办_毕设网身边很多从事办公室的白领,经常会听他们说:腰椎不行了,有点难受,要不就颈椎也不舒服,这些常见的现象不可忽视,它会对人们后面的生活产生很多负面的影响,所以我们想到能不能有这么一个设备,它会定期提醒人们不要坐太久。其实久坐提醒不是一个新鲜事,市面上也有许许多多关于久坐提醒的工具神器,但是,今天我们HaaS团队就手把手教长期在办公室久坐着的你亲手打造一款属于自己的久坐提醒设备,当你长时间在工位上坐着,它会通过钉钉提醒你,让你一段时间去活动一下筋骨,走动走动,这样让我们上班的同时身体也变得更健康。1、…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

来这里发现更多有趣案例

HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。毕设不会做怎么办_毕设网https://haas.iot.aliyun.com/solution

身边很多从事办公室的白领,经常会听他们说:腰椎不行了,有点难受,要不就颈椎也不舒服,这些常见的现象不可忽视,它会对人们后面的生活产生很多负面的影响,所以我们想到能不能有这么一个设备,它会定期提醒人们不要坐太久。

其实久坐提醒不是一个新鲜事,市面上也有许许多多关于久坐提醒的工具神器,但是,今天我们HaaS团队就手把手教长期在办公室久坐着的你亲手打造一款属于自己的久坐提醒设备,当你长时间在工位上坐着,它会通过钉钉提醒你,让你一段时间去活动一下筋骨,走动走动,这样让我们上班的同时身体也变得更健康。 

1、硬件连线与基本原理

先来个成品瞅一瞅,直接放桌上就行,久坐就会主动提醒你哦

毕设不会做怎么办_毕设网

本案例只需要如下硬件:

  • ESP32一台
  • IR人体红外传感器一个
  • SSD1306显示屏一个
  • 杜邦线若干
  • Micro-USB数据线一条

硬件连线图如下图所示:

毕设不会做怎么办_毕设网

久坐提醒设备是通过人体红外监测周围区域是否有人移动,本系统有两种情况会出现:漏提醒和多提醒,这个可以根据实际情况做一些调整即可

  • 漏提醒:当没在红外区域内检测到动(休息睡觉等),就不会触发提醒动作,这个会出现漏提醒
  • 多提醒:当离开红外区域时间太短(小于设置窗口时间),检测不到人员离开(比如上厕所时间小于设置窗口时间),这个时候不会认为你有运动,到时间还是会提醒你,就会给人感觉多提醒了

整个开发者过程只需要以下3步:

毕设不会做怎么办_毕设网

让我们一步一步来做一遍。

2、物联网平台开发

整个过程包含以下4个步骤:

1、开通公共实例

2、创建产品(设备模型)

3、定义产品功能(物模型)

4、创建设备及获取三元组

2.1、开通公共实例

对于第一次使用物联网平台的读者,需要开通实例以使用物联网平台的功能。这里可以使用免费的公共实例进行开发。在物联网平台中,左上角选择“华东2-上海”,点击“公共实例”,即可开通。开通后点击“公共实例”,即可进入控制台进行产品创建。

毕设不会做怎么办_毕设网

2.2、创建产品(设备模型)

进入公共实例控制台,点击“创建产品”按钮,即可进入新建产品页面 。

毕设不会做怎么办_毕设网

在新建产品设定页面按照下图所示,设定“产品名称”,选择所属的“自定义品类”(如果创建的产品品类为标准品类,可以选择标准品类),节点类型选择“直连设备”,联网方式选择“Wi-Fi”,数据格式选择“ICA标准数据格式”,检验类型和认证方式选择默认设定即可。还可以根据开发者自己的需求在“产品描述”页面添加针对此产品的描述。

毕设不会做怎么办_毕设网

选择之后,点击“确认”按钮,即可完成产品创建。返回“产品”页面之后可以看到产品类表中会出现刚刚创建的“久坐提醒器”的产品,如下图所示。

毕设不会做怎么办_毕设网

2.3、定义产品功能(物模型)

点击上图中的“查看”按钮,即可看到产品信息,Topic列表,功能定义,数据解析等跟产品相关功能的设定。点开“功能定义”标签页,可以看到设备物模型定义,点击“添加自定义功能”,其中功能名称、标识符、数据类型和定义如下所示。

毕设不会做怎么办_毕设网

标识符是设备端上报设备属性状态的消息中需要使用的标识符,并且只有在设备上报的属性内容符合“数据定义”中的数据取值范围的时候才会被物联网平台记录,否则会被物联网平台认定为非法属性而过滤掉。

产品及其物模型创建完成后就可以创建这个产品的设备了。

2.4、创建设备及获取三元组

在产品列表页面中,点击“管理设备”,就会进到设备管理页面。

毕设不会做怎么办_毕设网

在“设备”页面点击“添加设备”按钮,如下图所示。

毕设不会做怎么办_毕设网

在“添加设备”页面中设定“deviceName”,这里开发者可以自己填入自己想设定的设备名称,也可以不填任何内容让系统自动生成设备名称,如下图所示。

毕设不会做怎么办_毕设网

设备添加完成后,点击“前往查看”按钮,就可以看到此设备端详细信息了。

毕设不会做怎么办_毕设网

设备信息中有两个信息需要和设备端开发相匹配:

  • 三元组
  • 物模型属性信息

毕设不会做怎么办_毕设网

如上图所示,点击“查看”按钮,就可以看到设备的三元组信息,三元组是物联网设备端和物联网云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。

毕设不会做怎么办_毕设网

 设备详情信息页中的“物模型数据”标签页中可以看到设备的所有属性信息、设备时间上报情况及设备服务调用情况,

创建产品和设备的过程是按照面向对象的思想进行设计的,其中创建产品可以看成是新建一个类,其中的物模型则是类的对象,创建设备则是进行类的实例化。

 至此,久坐提醒器云端的产品、设备以及物模型就全部创建完成了,三元组信息也拿到,接下去开始进行设备端的开发。

 3、设备端开发

在进行下一步之前请确保ESP32开发环境已经搭建完毕。详情请参考“ESP32快速开始”的说明。

3.1、创建解决方案

如下图所示,打开VSCode之后再新建一个基于helloword的python工程,设定好工程名称(“sedentary_remind”)及工作区路径之后,硬件类型选择ESP32,点击立即创建,创建一个Python轻应用的解决方案。

毕设不会做怎么办_毕设网

将案例脚本中的所有文件复制后覆盖sedentary_remind工程目录下的原有文件。其中main.py脚本的内容如下图所示:

#########
from aliyunIoT import Device     # iot组件是连接阿里云物联网平台的组件
import network                   # Wi-Fi功能所在库
import ujson
##################
from driver import I2C,GPIO,TIMER
import utime
from ssd1306 import SSD1306_I2C
import ir
import time
temptimerObj = 0
time_dict = {}
#########
# 物联网平台连接标志位
iot_connected = False
wlan = None
# 三元组信息
productKey = "产品密钥" #需要填入物联网云平台申请到的productKey信息
deviceName = "设备名称" #需要填入物联网云平台申请到的deviceName信息
deviceSecret = "设备密钥" #需要填入物联网云平台申请到的deviceSecret信息
# 物联网设备实例
device = None
# Wi-Fi SSID和Password设置
wifiSsid = "请填写您的路由器名称"
wifiPassword = "请填写您的路由器密码"
...
if __name__ == '__main__' :
    oled_init()
    #########
    wlan = network.WLAN(network.STA_IF)   #创建WLAN对象
    get_wifi_status()
    connect_lk(productKey, deviceName, deviceSecret)
    #########
    ir_check_init()
    timer_init()
    while True:
        if has_rest == 1:
            has_rest = 0
            report_event(1)
            print('report rest')
        if has_leve == 1:
            has_leve = 0
            report_event(0)
            print('report leve')
        utime.sleep(1)

Python脚本的详细说明请参考脚本内嵌的文字注释。

  • 修改路由器名称及密码

   修改工程里main.py中wifiSsid和WifiPassword的值为读者实际要链接的路由器名称及密码(请注意名称和密码都需要放在””符号中间)。

# Wi-Fi SSID和Password设置
wifiSsid = "请填写您的路由器名称"
wifiPassword = "请填写您的路由器密码"

修改完成后get_wifi_status函数中的wlan.connect(wifiSsid,wifipassword)语句就会连接读者自己设定的路由器。

  • 修改设备端三元组
# 物联网平台相关的key和serect定义
ProductKey = 'ProductKey'
DeviceName = 'DeviceName'
DeviceSecret = 'DeviceSecret'
  • 修改设备端上报提醒休息信息标识符

 sedentary_remind工程里main.py中下面的代码实现的是上传提醒休息到云端的功能。其中call_rst消息提醒上报时所用的标识符。

# 上传休息提醒状态到物联网平台
def report_event(data):
    upload_data = {'params': ujson.dumps({
        'call_rst': data,
        })
    }
    device.postProps(upload_data)

确保代码中的call_rst标识符和物联网产品的物模型中属性标识符是一样的,如下图所示:

3396c050253e61982a38629276592333.png

 3.2、本节添加的重点代码段落讲解

人体红外区域判断是否有人的两个参数,可以根据实际情况调整

check_max_time1 = (90) #单位s ,用于判断当前区域没有人的时间阈值 (90*timer_interval_1000ms)
check_max_time2 = (45*60) #单位s,用于判断人在当前区域的最大时间阈值 (45*60*timer_interval_1000ms)
CHECK_NOPERSON_MAX_TIME = check_max_time1 #超过这个值,说明人已经离开改红外区域
CHECK_HASPERSON_MAX_TIME = check_max_time2 #超过这个值,提醒休息

新增函数用于判断红外区域信息

def irq_handler(data):
    global tick_time,total_time,gpioirDev,first_move,has_rest,has_leve,ir_event

    if first_move == 0:
        first_move = 1

    ret = gpioirDev.read()
    if ret == 1:
        print('person come')
        if tick_time >= CHECK_NOPERSON_MAX_TIME:
            print("person has left ",tick_time)
            total_time = 0
            tick_time = 0
            has_leve = 1
            ir_event = PERSON_LEAVE
            return
        else:
            total_time += tick_time
            print("check person move ",tick_time,total_time)
            tick_time = 0
            ir_event = PERSON_MOVE
    elif ret == 0:
        total_time += tick_time
        print('check person nomove ',tick_time,total_time)
        tick_time = 0
        ir_event = PERSON_NOMOVE

    if total_time >= CHECK_HASPERSON_MAX_TIME:
        has_rest = 1
        total_time = 0
        print('you need has rest,because you work too long')

 3.3、推送运行

推送此脚本到ESP32之后,运行此脚本,ESP32串口会周期性的打印如下日志。其中:

  •  “物联网平台连接成功” 代表成功连接到物联网平台
  • “person come”说明人员在移动。
  • “check person nomove“说明监控区域人员在未移动。
  • ”report rest“上报久坐提醒信息到云端
mount fs
 ==== python execute bootpy ====
 ==== python file check /data/pyamp/main.py ====
 ==== python execute from /data/pyamp/main.py ====
ssd1306 inited!
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
('192.168.0.166', '255.255.255.0', '192.168.0.1', '192.168.0.1')
establish tcp connection with server(host='a1iDYXz7nCT.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
sleep for 1 s
sleep for 1 s
sleep for 1 s
sleep for 1 s
sleep for 1 s
tcp_connect: can only connect from state CLOSED
success to establish tcp, fd=54
sleep for 1 s
物联网平台连接成功
sleep for 2s
person come
check person nomove  0 0
person come
check person move  10 10
...

you need has rest,because you work too long
report rest

 3.4、物联网平台端信息查看

物联网设备的系统启动成功并连接到物联网平台之后,物联网平台上对应的设备状态会从”未激活状态“变为”上线“,在物模型数据标签页上会显示设备上报到物联网平台的属性值。

adb075b0c6ed18949f0c22edf9507620.png

此时如果有久坐提醒的信息和人员离开的信息都会上报,物联网平台的物模型数据会更新为设备上报的最新的属性值。

4、物联网应用开发

4.1、添加钉钉机器人提醒

在钉钉上创建一个群组并进入群设置->智能群助手->添加机器人->自定义。首先选择“智能群助手”:

7f0bb668ea3371b1c4fe7502cd80740a.png

 然后进入“机器人管理”,选择点击“自定义”

65efe47a5481e6fe6681d8cba7215723.png

开始配置机器人,如下图所示:

1d0ad7f52e8d145fd0dedd2d6b648a1c.png

 点击完成,在下一个界面中,会展现出一个webhook地址,把这个地址拷贝下来,后面会用到。

d05144d9384730c0507fc26fa8e41801.png

 4.2、IoT Studio设置

首先从物联网平台的功能页面,点击相关产品,进入IoT Studio产品页,开通服务后(首次访问)选择应用开发->业务服务->新建一个测试用的业务服务

d54285158cd55b980cea3f7c8ceac834.png

 给服务起个名字,如果下面所属项目没内容,可以从链接进去新建一个项目

61f41729f24b519be920f8a856e62dce.png

 如果下面所属项目没内容,点击上面的“新建项目”按钮,创建如下:

2a245dbd73fe04f49d0a9687b0070742.png

 进入开发界面后,点击下图红框中的部分,进入拖拽式开发界面

ac95e57d9800204ff42a43dbcf7f15bf.png

  拖一个设备触发节点到右边的画布上

aa0374a4f8ee05e7ba6649e89ab62612.png

 再拖一个钉钉机器人上来

71b33c0a6463e8376c206f321ba596f7.png

 点击红框中的小正方形,即可拉出一条线,接到右边红框中的小正方形,把两块积木连接起来,相当于是说数据从左边流向右边

fd72952d5c4f5c0629a3043a5d6cbfa3.png

然后开始配置设备触发和钉钉机器人信息,注意(配置信息是在上面物联网平台创建产品和设备的时候存在,第一次使用的时候需要进行关联添加) 41e5d8e6bf4ab53a7adce605510ce003.png

第一次使用的时候需要进行如下产品设备的关联添加:

a7c2930f561f049664777c3a056c7deb.png

473e5f148fc7c508fceb0e0f4e72602b.png

 4.3、钉钉机器人配置

点击钉钉机器人节点,并将你的钉钉机器人webhook地址填入其中,其余选项按下图中配置即可,注意之前配置机器人的关键词为“设备”,因为这里的通知消息里带有“设备”两字。

489156520f3435076bd4c57f805bf950.png

 到这里时,你已经完成了全部的配置,可以部署和运行了,依次点击下图中的部署和发布。

6e14f4790a4f5f336506686e588cc408.png

运行后,就可以通过对设备上下电,触发消息,实现你的钉钉消息通知了!

HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。毕设不会做怎么办_毕设网https://haas.iot.aliyun.com/solution

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187110.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java jsonobject转List_java – 将JSONObject转换为List或JSONArray的简单代码?「建议收藏」

    我已经通过各种线程阅读并发现了类似的问题,但在找到解决我的特定问题的方法方面却相当不成功.JSONObjectorr=(JSONObject)orderRows.get(“orderRows”);System.out.println(“datainorr=”+orr+”orr’stype=”+orr.getClass());返回:datainorr={“470…

  • Faster-RCNN算法精读[通俗易懂]

    Faster-RCNN算法精读[通俗易懂]读论文:《FasterR-CNN:TowardsReal-TimeObjectDetectionwithRegionProposalNetworks》摘要:算法主要解决两个问题:1、提出区域建议网络RPN,快速生成候选区域;2、通过交替训练,使RPN和Fast-RCNN网络共享参数。一、RPN网络结构RPN网络的作用是输入一张图像,输出一批矩形候选区域

  • QCustomPlot 使用示例

    QCustomPlot 使用示例一、项目结构fileparser.h#ifndefFILEPARSER_H#defineFILEPARSER_H#include<QObject>structstructReferInfo{doublepitch_input;doubleheading;doublepitch;doubleroll;doubleairSpeed_indicated;doubleaccelerationOverLoad_

    2022年10月16日
  • vue响应式原理理解

    vue响应式原理理解要理解响应式原理,首先要理解两个问题,数据改变后,Vue是如何监听的,要通知哪些人然后进行界面的刷新首先来理解一下下面这这个监听数值改变与监听获取数据的函数,首先创建一个对象,然后这个对象就是用来被监听的,首先使用forEach来把对象里面所有的值取出来放到value这里,然后再defindeProperty里面重新定义,这个方法里面有一个set和get方法,分别是处理监听数据改变和数据被获取…

  • ARMv8 Linux内核异常处理过程分析「建议收藏」

    ARMv8 Linux内核异常处理过程分析

  • linux之路由知识之ip route 命令中的疑惑[通俗易懂]

    linux之路由知识之ip route 命令中的疑惑[通俗易懂]1.基础知识1.1路由(Routing)1.1.1路由策略(使用iprule命令操作路由策略数据库)基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。iprule命令:Usage:iprule[list|add|del]SELECTORACTION(ad…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号