物联网项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

这篇具有很好参考价值的文章主要介绍了物联网项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于Stm32的家庭智能监控系统

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:4分
  • 创新点:4分

1 简介

结合低功耗AI芯片以及移动网络,将人员/物体检测模型部署到设备端,达到较低功耗、实时响应、节省流量的效果。

2 主要器件

  • 主控芯片使用勘智K210
  • 摄像头 OV7740
  • 数据传输使用 4G模块 EC20 或者 2G模块 SIM800C;

3 实现效果

基于stm32的智能安防系统,单片机
基于stm32的智能安防系统,单片机

基于stm32的智能安防系统,单片机

基于stm32的智能安防系统,单片机
基于stm32的智能安防系统,单片机

4 设计原理

主模块原理图
基于stm32的智能安防系统,单片机

设备端运行 FreeRTOS + LWIP

LWIP协议栈支持的主要功能如下所示,本文将具体介绍各个协议的具体功能。
基于stm32的智能安防系统,单片机
部分移植过程

修改修改cc.h文件
基于stm32的智能安防系统,单片机

修改sys_arch.c文件

基于stm32的智能安防系统,单片机

通过PPPOS驱动4G模块

LTE Standard EC20 R2.1是移远通信推出的 LTE Cat 4 无线通信模块,采用 LTE 3GPP Rel.11 技术,支持最大下行速率 150Mbps 和最大上行速率 50Mbps,使用LCC封装。
基于stm32的智能安防系统,单片机
基于stm32的智能安防系统,单片机

系统启动后会加载 yolov2-tiny 模型

yolov2网络结构图
基于stm32的智能安防系统,单片机

YOLOv2相对v1版本,在继续保持处理速度的基础上,从预测更准确(Better),速度更快(Faster),识别对象更多(Stronger)这三个方面进行了改进。其中识别更多对象也就是扩展到能够检测9000种不同对象,称之为YOLO9000。

#部分代码
def test_net(net, imdb, max_per_image=300, thresh=0.5, vis=False):
    num_images = imdb.num_images

    # all detections are collected into:
    #    all_boxes[cls][image] = N x 5 array of detections in
    #    (x1, y1, x2, y2, score)
    all_boxes = [[[] for _ in range(num_images)]
                 for _ in range(imdb.num_classes)]

    # timers
    _t = {'im_detect': Timer(), 'misc': Timer()}
    det_file = os.path.join(output_dir, 'detections.pkl')
    size_index = args.image_size_index

    for i in range(num_images):

        batch = imdb.next_batch(size_index=size_index)
        ori_im = batch['origin_im'][0]
        im_data = net_utils.np_to_variable(batch['images'], is_cuda=True,
                                           volatile=True).permute(0, 3, 1, 2)

        _t['im_detect'].tic()
        bbox_pred, iou_pred, prob_pred = net(im_data)

        # to numpy
        bbox_pred = bbox_pred.data.cpu().numpy()
        iou_pred = iou_pred.data.cpu().numpy()
        prob_pred = prob_pred.data.cpu().numpy()

并且通过 MQTT 协议接入后端服务器; 摄像头线程读取图像信息,处理后发送到K210内置的卷积神经网络加速器,得出 yolov2-tiny 的预测结果,如果存在超过预定分类阈值的结果,则通过 MQTT 协议发送到后端。

后端Thingsboard

后端服务器基于 Thingsboard 进行开发,实现图像信息展示以及设备固件OTA功能。
ThingsBoard 是一个基于Java的开源的物联网平台,用于数据收集、处理、可视化和设备管理。它使用物联网行业的标准协议(MQTT、CoAP和HTTP)实现设备连接,并支持云和本地部署。 ThingsBoard 具有可扩展性、容错性和高性能,因此永远不会丢失数据。
Thingsboard 基本特点

  • 提供设备、资产和客户,并定义它们之间的关系。
  • 警报管理:分析传入的遥测数据并通过复杂的事件处理触发警报。
  • 设备管理:使用远程过程调用(RPC)控制设备。根据设备生命周期事件,REST API 事件,RPC 请- 求等构建工作流
  • 可扩展性:可水平扩展的平台,使用领先的开源技术进行构建。
  • 数据可视化: 从设备和资产收集并可视化数据。提供了现成的30个可配置小部件,并能够使用内置编辑器创建自己的小部件。内置线图,数字和模拟仪表,地图等等。
  • 容错:没有单点故障,集群中的每个节点都是相同的。没有主人工人或热备用人员。自动检测到节点故障。可以在不停机的情况下更换故障节点。使用可靠的 NoSQL 数据库复制持久数据。
  • 强大而高效:单个服务器节点可以处理成千上万个设备,具体取决于用例。ThingsBoard 集群可以处理数百万个设备。
  • 可自定义的:通过可自定义的小部件和规则引擎节点,轻松添加新功能。使用可自定义的规则链,窗口小部件和传输实现来扩展默认平台功能。除了MQTT,CoAP和HTTP支持之外,ThingsBoard用户还可以使用自己的传输实现或自定义现有协议的行为。
  • 持久:永远不会丢失您的数据。
  • 遥测数据收集功能: 设计动态且响应迅速的仪表板,并向您的客户提供设备或资产遥测和见解。可以可靠地收集和存储遥测数据,以应对网络和硬件故障。使用可自定义的Web仪表板或服务器端API访问收集的数据。

部分相关代码

public class MqttTransportService {
	.....

    @Autowired
    private MqttTransportContext context;

    @PostConstruct
    public void init() throws Exception {
        log.info("Setting resource leak detector level to {}", );
      ResourceLeakDetector.setLevel(ResourceLeakDetector.Level.valueOf(leakDetectorLevel.toUpperCase()));

     
        b.group(bossGroup, workerGroup)
                .channel(NioServerSocketChannel.class)
                .childHandler(new MqttTransportServerInitializer(context))
                .childOption(ChannelOption.SO_KEEPALIVE, keepAlive);
        }
    .....
}


private void processDevicePublish(ChannelHandlerContext ctx, MqttPublishMessage mqttMsg, String topicName, int msgId) {
    try {
        if (topicName.equals(MqttTopics.DEVICE_TELEMETRY_TOPIC)) {
            TransportProtos.PostTelemetryMsg postTelemetryMsg = adaptor.convertToPostTelemetry(deviceSessionCtx, mqttMsg);
            transportService.process(sessionInfo, postTelemetryMsg, getPubAckCallback(ctx, msgId, postTelemetryMsg));
        } else if (topicName.equals(MqttTopics.DEVICE_ATTRIBUTES_TOPIC)) {
            TransportProtos.PostAttributeMsg postAttributeMsg = adaptor.convertToPostAttributes(deviceSessionCtx, mqttMsg);
            transportService.process(sessionInfo, postAttributeMsg, getPubAckCallback(ctx, msgId, postAttributeMsg));
        } 
        ...
        } else {
            transportService.reportActivity(sessionInfo);
        }
    } catch (AdaptorException e) {
        log.warn("[{}] Failed to process publish msg [{}][{}]", sessionId, topicName, msgId, e);
        log.info("[{}] Closing current session due to invalid publish msg [{}][{}]", sessionId, topicName, msgId);
        ctx.close();
    }
}


5 最后

🔥 项目分享与指导:https://gitee.com/sinonfin/sharing文章来源地址https://www.toymoban.com/news/detail-797452.html

到了这里,关于物联网项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包