基于华为云智慧生活生态链设计的智能鱼缸

一. 引言

1.1 项目背景

随着智能家居技术的发展和人们对高品质生活的追求日益增长,智能鱼缸作为一种结合了科技与自然美的家居装饰品,正逐渐成为智能家居领域的新宠。本项目旨在设计一款基于华为云智慧生活生态链的智能鱼缸,它不仅能够提供一个安全舒适的环境让鱼儿健康生长,还能让用户通过手机应用远程管理和监控鱼缸的各种状态。通过集成多种传感器和执行机构,这款智能鱼缸能够自动监测水质、维持适宜的水温和氧气水平,并且还能实现自动投喂、自动换水、鱼缸壁清洁等功能,极大地减轻了养鱼爱好者的工作负担,提升了养鱼的乐趣和便捷性。

考虑到现代人忙碌的生活节奏和对个性化需求的追求,本项目集成了华为云的智慧生活App,这使得用户可以通过手机轻松地设置鱼缸的各项参数,包括但不限于恒温温度、换水阈值、投喂间隔和量等,甚至还能根据用户所选养的鱼种自动优化这些设置。此外,为了进一步提升用户体验,还引入了全景视频监控功能,用户可以在手机端360度无死角地观察鱼缸内部情况;同时,鱼缸还支持氛围灯调节,可通过华为云的小艺助手进行智慧联动控制,营造出不同的观赏效果。整体而言,这款智能鱼缸不仅代表了智能家居技术的最新进展,也为养鱼爱好者提供了一个更加智能化、人性化的养鱼体验。

image-20240725114501219

1.2 目的与目标

本项目的目标是设计并开发一款基于华为云智慧生活生态链的智能鱼缸,为用户提供一个高度自动化、智能化的养鱼体验。该智能鱼缸集成了多项先进技术,包括水质监测、远程控制、自动维护等功能,解决传统鱼缸在养鱼过程中遇到的一系列问题,如频繁的手动维护、难以精确控制的水质条件等。

通过本项目的实施具体目标:

  • 水质监测与自动调节:实现鱼缸水体含氧量、TDS值等关键水质指标的实时监测,并能够根据检测结果自动调节含氧量、水质等,以确保鱼儿的健康生长环境。

  • 远程控制与智能化管理:通过华为云智慧生活App,用户可以随时随地通过智能手机远程监控和控制鱼缸的状态,包括设置自动投喂的时间间隔、调节鱼缸内的温度等,实现智能化管理。

  • 自动维护功能:开发自动换水、鱼缸壁清洁等维护功能,减少用户的日常维护工作,提高养鱼效率和体验。

  • 全景视频监控:利用四个内置摄像头,为用户提供360度全景视频监控功能,使用户能够在手机端全方位地观察鱼缸内部情况,增强观赏性和互动性。

  • 个性化设置与一键优化:根据用户选择的鱼种类型,自动优化鱼缸的各项参数设置,如恒温温度、换水阀值、投喂间隔等,提供更符合特定鱼类需求的养鱼环境。

  • 智能化联动与场景编排:支持与华为云智慧生活App的深度集成,实现与其他智能设备的联动控制,为用户提供更加丰富的智慧化场景体验。

  • 稳定的网络连接与安全性保障:采用G模块保证稳定的网络连接,同时确保用户数据的安全性和隐私保护。

  • 可靠的电源管理方案:通过内置锂电池和外置电源的双电源供电模式,确保即使在突发断电的情况下,智能鱼缸也能持续运行,保持鱼缸内环境的稳定。

1.3 功能需求

  • 含氧量检测:集成含氧量传感器,实时监测鱼缸中水的含氧量,并通过华为云平台向用户手机发送数据更新。

  • 远程投喂与自动投喂:支持用户通过手机应用设置自动投喂的时间间隔,实现远程或自动投喂鱼食的功能。

  • 自动充氧:根据含氧量检测结果自动开启或关闭充氧装置,确保水中的含氧量维持在适宜水平。

  • 自动换水:配备自动换水系统,当检测到水质不佳时,自动启动换水过程,保持水质清洁。

  • 鱼缸壁自动清洁:设计一套基于舵机和抹布的自动清洁系统,定期清理鱼缸壁上的污垢。

  • 自动恒温:具备温度传感器和加热装置,允许用户通过手机应用远程设定恒定的水温。

  • TDS值检测:安装TDS值传感器,监测水中的溶解固体含量,并将数据上传至华为云平台。

  • 视频全场景监控:在鱼缸内部安装四个摄像头,通过拼接算法生成全景视频,用户可在手机端进行360度观看。

  • 手机APP控制:开发专用的手机应用程序,集成华为云智慧生活App,支持用户根据鱼的种类一键设置鱼缸参数。

  • 场景联动与设备管理:支持设备添加、远程控制、状态查看、设备共享等功能,并可与其他华为生态链设备联动使用。

  • 氛围灯控制:支持通过手机应用开启或关闭鱼缸内的氛围灯,增加观赏性,并支持华为云“小艺”助手的语音控制。

  • 4G联网模块:采用4G模块实现设备与华为云平台之间的稳定通信。

  • 主控芯片:不限制。

  • 双电源供电方案:支持内置锂电池与外置电源的双重供电机制,确保断电情况下仍能正常运行。

  • 华为云物联网服务器:通过华为云的智慧生活服务器实现数据存储、分析与远程访问。

1.4 接入智慧生活APP

帮助文档:https://device.harmonyos.com/cn/docs/documentation/DevicePartner-Guides/ai-life-app-dev-overview-0000001367032228

智慧生活App作为华为全场景智慧体验的重要入口,可以实现华为自研设备与生态伙伴设备的统一管理。通过开发H5接入智慧生活App,为消费者带来如下功能体验:

  • **设备添加:**用户可以通过智慧生活App快速发现设备并添加设备,简单易用。
  • **设备管控:**用户添加设备后,可以通过智慧生活App实现远程控制设备、查看状态、分类管理、共享设备、删除设备等。
  • **场景联动:**通过场景编排可以实现不同产品、不同功能的联动,为用户提供智慧化的场景体验。

接入原理

  1. 通过线上或线下方式开发H5,并上传至Device Partner平台。平台会将H5开发包推送至HarmonyOS Connect云。
  2. 消费者通过智慧生活App调用云端的H5开发包,从而实现对设备的管理和控制。

image-20240725111945921

二. 系统概述

2.1 系统架构

为了更好地说明本项目的系统架构,我们可以将其分为几个主要部分:硬件架构、软件架构以及网络架构。下面是对这些部分的具体描述:

(1) 硬件架构

  • 主控单元:

    • 微控制器 (MCU): 使用STM32L431RCT6作为核心处理器。
    • 电源管理模块: 包括电池充电电路、稳压电路等。
    • 4G通信模块: Air724UG 4G模块用于与华为云平台进行数据交换。
  • 环境监测与控制系统:

    • 水质监测传感器:
      • 含氧量传感器
      • 温度传感器
      • TDS(总溶解固体)传感器
    • 自动控制系统:
      • 自动充氧泵
      • 加热棒
      • 自动投喂器
      • 水质净化过滤系统
      • 鱼缸壁自动清洁系统
  • 视觉监控系统:

    • 多个高清摄像头用于全方位监控鱼缸内部情况。
    • 图像处理单元用于图像拼接和传输。
  • 用户交互界面:

    • LED显示屏显示当前状态。
    • 按钮用于本地控制和调试。
  • 备用电源:

    • 内置锂电池提供不间断供电。

(2) 软件架构

  • 嵌入式系统软件:

    • 嵌入式操作系统(如FreeRTOS)用于任务调度。
    • 设备驱动程序支持各种传感器和执行器。
    • 4G通信协议栈实现数据传输。
  • 云平台软件:

    • 华为云IoT平台用于设备接入、数据存储、消息推送等。
    • 数据分析与处理模块。
    • 用户认证与权限管理。
  • 移动应用:

    • 客户端应用(iOS/Android)用于用户远程监控和控制。
    • 用户界面设计与交互逻辑。
    • 与华为云平台的接口实现。

(3) 网络架构

  • 本地网络:

    • 4G网络连接主控单元与华为云平台。
    • Wi-Fi连接供用户在本地网络内进行控制。
  • 云端网络:

    • 华为云IoT平台作为中心节点处理所有数据。
    • 数据安全加密传输。
  • 远程用户接入:

    • 移动应用通过互联网与华为云平台交互。
    • 用户数据同步与更新。

(4) 系统交互流程

  1. 数据采集:
    • 传感器持续监测水质、含氧量、温度等数据。
    • 摄像头捕捉鱼缸内部画面。
  2. 数据处理与传输:
    • MCU收集数据并进行初步处理。
    • 通过4G模块将数据发送至华为云IoT平台。
  3. 云平台处理:
    • IoT平台接收数据并存储。
    • 数据分析后产生控制指令或通知。
  4. 用户控制:
    • 用户通过移动应用获取实时数据。
    • 用户通过移动应用发送控制命令。
  5. 设备响应:
    • IoT平台将控制指令发送给设备。
    • MCU接收指令并控制相关硬件执行动作。

2.2 关键组件介绍

(1)主控单元

  • 微控制器 (MCU): 如STM32系列,负责处理来自各个传感器的数据,并控制执行器的动作。
  • 通信模块:
    • 4G通信模块: 如Air724UG,用于与外部网络(例如华为云平台)建立连接。
    • Wi-Fi模块: 用于本地网络连接,方便用户通过智能手机或其他设备访问系统。
  • 电源管理单元: 包括电池充电电路、稳压电路等,确保系统的稳定运行。

(2)环境监测与控制系统

  • 水质监测传感器:
    • pH值传感器
    • 温度传感器
    • 溶解氧(DO)传感器
    • 电导率(TDS)传感器
  • 自动控制系统:
    • 自动充氧泵: 根据DO水平自动调节氧气供应。
    • 加热棒: 保持水温在适宜范围内。
    • 自动投喂器: 根据设定的时间和分量自动投喂饲料。
    • 水质净化过滤系统: 维护水质清洁。
    • 鱼缸壁自动清洁系统: 清除鱼缸壁上的藻类和其他污垢。

(3)视觉监控系统

  • 高清摄像头: 用于捕捉鱼缸内的视频流。
  • 图像处理单元: 对摄像头捕获的图像进行处理,识别鱼类的行为或健康状况。

(4)用户交互界面

  • LED显示屏: 显示系统状态、监测数据等信息。
  • 触摸屏: 允许用户直接与系统互动,设置参数或查看详细数据。
  • 按钮: 提供基本的本地控制功能,如紧急停机。

(5)远程监控与管理

  • 华为云IoT平台:
    • 提供数据存储、处理和分析能力。
    • 支持设备管理和远程控制功能。
    • 保证数据的安全性和可靠性。
  • 移动应用程序:
    • 用户可以通过智能手机或平板电脑访问系统。
    • 实现远程监控、接收警报、调整系统设置等功能。

(6)数据安全与加密

  • 加密算法: 采用SSL/TLS等加密技术保障数据传输的安全。
  • 用户认证: 通过用户名和密码等方式验证用户的合法性。

(7)备用电源

  • 内置电池: 在停电时为系统提供不间断供电。

2.3 工作原理

(1)环境监测:

  • 含氧量检测:
    • 使用溶解氧传感器实时监测鱼缸水体中的含氧量。
    • 传感器将数据传送给主控芯片STM32L431RCT6。
  • TDS值检测:
    • 通过TDS传感器监测水中的溶解固体含量。
    • 数据同样被送至主控芯片进行处理。

(2)水质控制与维护:

  • 自动充氧:
    • 当含氧量低于预设阈值时,STM32L431RCT6控制充氧泵启动。
    • 充氧泵工作直到含氧量恢复到理想水平。
  • 自动换水:
    • 通过TDS值和其它水质参数判断是否需要更换水体。
    • 自动换水系统根据需要更换部分水体,以维持良好的水质。
  • 鱼缸壁自动清洁:
    • 采用舵机和抹布组合,定时清洁鱼缸壁上的污垢。

(3)远程监控与控制:

  • 视频全场景监控:
    • 鱼缸内部安装的四个摄像头捕捉鱼缸内部画面。
    • 通过图像处理单元将多路视频流合成全景视频。
    • 视频流通过4G模块上传至华为云服务器。
  • 手机APP控制:
    • 用户通过华为云智慧生活App远程查看鱼缸状态。
    • 用户可以设置恒温温度、换水阈值、投喂间隔等参数。
    • 通过App接收水质异常报警等信息。

(4)用户定制与一键设置:

  • 自动参数设置:
    • 用户根据鱼的种类选择相应的养鱼模式。
    • App自动调整各项参数以适应所选鱼种的需求。

(5)联动与场景编排:

  • 设备管理与控制:
    • 用户可以通过智慧生活App添加设备、查看状态、远程控制。
    • 支持设备共享和删除等功能。
  • 场景联动:
    • 通过场景编排实现不同功能的联动,例如定时开启氛围灯、自动投喂等。

(6)通信与网络:

  • 设备联网:
    • 4G模块Air724UG用于设备与华为云服务器之间的数据传输。
  • 数据传输与处理:
    • 传感器数据通过主控芯片处理后上传至华为云IoT平台。
    • 平台进行数据分析、存储,并将结果反馈给用户。

(7)电源管理:

  • 双电源供电:
    • 内置锂电池提供不间断供电。
    • 外置电源适配器用于日常供电。
    • 当外部电源中断时,锂电池自动接管供电。

(8)安全保障:

  • 数据加密:
    • 传输至华为云的数据采用加密技术保护。
  • 用户认证:
    • 通过智慧生活App进行用户身份验证。

三. 硬件设计

3.1 主控单元

本项目的主控单元是整个智能鱼缸系统的中枢神经,它负责收集来自各个传感器的数据、处理这些数据并据此作出决策来控制执行器的动作。主控单元的核心是STM32L431RCT6微控制器,这是一款高性能且低功耗的微控制器,非常适合应用于需要实时处理能力及长电池寿命的应用场合。

主控单元的设计围绕STM32L431RCT6微控制器展开,该微控制器基于Arm® Cortex®-M4内核,具备FPU(浮点运算单元)和DSP指令集,能够在处理复杂的计算任务时提供出色的性能。它还拥有丰富的外设接口,如USART、SPI、I2C、ADC等,这些接口使得主控单元能够轻松地与外部传感器和其他组件进行通信。为了满足智能鱼缸的长时间运行需求,STM32L431RCT6还提供了先进的电源管理模式,可在保证系统正常运行的同时显著降低功耗。

在硬件层面,主控单元集成了多种传感器,包括但不限于溶解氧传感器、TDS传感器、温度传感器等,这些传感器持续监测鱼缸内的水质参数和环境条件。一旦这些传感器捕获到相关数据,它们会立即将数据发送给主控单元。主控单元通过内置的ADC转换器将模拟信号转换为数字信号,然后由STM32L431RCT6进行数据处理。基于这些数据,主控单元能够判断水质是否达到预设的标准,如果发现任何参数偏离了理想的范围,它会迅速采取行动,例如启动充氧泵增加水中氧气含量、激活自动换水机制以保持水质清洁,或者控制鱼缸壁自动清洁装置清除附着物等。

除了处理传感器数据外,主控单元还需要与执行器进行交互,如控制充氧泵、自动换水系统和清洁装置等。这些执行器的驱动通常通过PWM(脉宽调制)信号来实现,而STM32L431RCT6提供了足够的PWM输出通道来支持这些操作。此外,主控单元还负责与用户界面进行交互,包括接收用户的设置指令并通过Wi-Fi或4G模块与远程服务器进行通信,以实现对智能鱼缸的远程监控和控制。

为了确保系统的稳定性和安全性,主控单元还包括电源管理电路、看门狗定时器、实时时钟RTC等组件。电源管理电路确保即使在外部电源不稳定的情况下也能提供稳定的电压供应;看门狗定时器则在发生故障时复位系统,防止死锁情况的发生;实时时钟RTC则用于提供准确的时间基准,这对于定时任务和数据记录至关重要。

主控单元不仅是一个数据处理中心,还是一个协调者,它连接了所有的传感器和执行器,并通过高效的算法和精确的控制逻辑确保智能鱼缸能够自动维持一个适宜鱼类生活的环境。通过这种方式,用户可以享受到更加轻松愉快的养鱼体验,同时确保鱼儿能够在一个健康稳定的环境中茁壮成长。

3.2 传感器

3.2.1 含氧量检测器

含氧量检测传感器是智能鱼缸系统中非常重要的组成部分之一,它用于监测鱼缸中水体的溶解氧(Dissolved Oxygen, DO)含量。准确测量水中的溶解氧含量对于维持鱼缸内鱼类的健康至关重要,因为溶解氧水平直接影响到鱼类的呼吸和生存。下面详细介绍含氧量检测传感器的工作原理及其在本项目中的应用。

含氧量检测传感器通常采用极谱法或光学法来进行测量。在本项目中,我们使用的是极谱法传感器,因为它在水体监测中广泛使用并且具有较高的准确性和稳定性。

工作原理

极谱法含氧量检测传感器的工作原理基于电化学反应。这种传感器通常包含两个电极——参考电极和工作电极,以及电解液。工作电极(通常是铂或金制成的圆盘或线圈)浸没在水中,而参考电极(通常是银/氯化银电极)则与工作电极相连。电解液(通常是氯化钾溶液)用于在两电极之间形成电导通路。

当传感器工作时,会在工作电极上施加一个恒定的电压(通常为0.6V到0.8V),这会在电极表面产生一个电流。在这个电压下,溶解在水中的氧气在工作电极上被还原,产生电子和离子。这一过程可以表示为:

KaTeX parse error: Undefined control sequence: \[ at position 2: \̲[̲ \text{O}_2 + 2…
产生的电子流经外部电路到达参考电极,而在参考电极处,这些电子被消耗掉。因此,通过测量流过电路的电流大小,就可以推算出水体中溶解氧的浓度。电流与溶解氧浓度之间存在线性关系,这意味着电流的大小可以直接转化为溶解氧的浓度值。

为了确保测量的准确性,含氧量检测传感器通常会配备温度补偿电路。这是因为水体中的溶解氧浓度会受到温度的影响,温度升高会导致溶解氧浓度下降。通过温度补偿,传感器可以校正温度变化对测量结果的影响,从而提供更准确的读数。

在本项目中,含氧量检测传感器会持续监测鱼缸中的溶解氧含量,并将数据发送给主控单元STM32L431RCT6。主控单元会对这些数据进行处理,并根据设定的阈值来决定是否需要启动充氧泵来增加水中的溶解氧含量。此外,主控单元还会将这些数据上传至华为云IoT平台,以便用户通过手机应用实时监控鱼缸的含氧量,并在必要时采取措施。

通过这种方式,含氧量检测传感器确保了鱼缸中的溶解氧水平始终处于适宜鱼类生存的最佳范围内,从而为鱼缸内的生物提供了一个健康稳定的居住环境。

3.2.2 TDS值检测器

TDS值检测器是智能鱼缸系统中的一个重要组成部分,用于监测水体中的总溶解固体(Total Dissolved Solids, TDS)含量。TDS值是指水中溶解的矿物质、盐分、金属离子等物质的总量,这些物质的存在会影响水质,进而影响鱼缸中鱼类的健康和生存。下面详细介绍TDS值检测器的工作原理及其在本项目中的应用。

工作原理

TDS值检测器的工作原理基于电导率测量。水是一种导体,其导电性取决于其中溶解的离子的数量。一般来说,水中溶解的离子越多,水的电导率就越高。TDS值检测器通过测量水的电导率来间接估算其中的TDS含量。电导率与TDS含量之间存在近似线性的关系,因此可以通过测量电导率来推算出TDS值。

具体过程

  1. 电导率测量

    • TDS值检测器通常包含一对电极,这两个电极被放置在待测水样中。
    • 当电流通过这两电极时,水中的溶解离子会携带电流从一个电极流向另一个电极。
    • 通过测量流过电极的电流强度,可以确定水的电导率。
  2. TDS值计算

    • 由于水的电导率与其中的TDS含量成正比关系,TDS值检测器会根据预先标定的系数(即转换因子)将电导率转换为TDS值。

    • 转换因子通常是经验确定的,它考虑了水体中可能存在的不同类型的溶解固体。

    • TDS值(mg/L)可以通过以下公式计算得出:
      KaTeX parse error: Undefined control sequence: \[ at position 2: \̲[̲ \text{TDS} = \…

    • 转换因子可能因水质的不同而有所变化,因此对于特定的水体类型,最好使用经过标定的转换因子。

  3. 温度补偿

    • 水的电导率会随温度的变化而变化,温度升高时电导率也会增加。
    • 因此,TDS值检测器通常会配备温度传感器,用于测量水温并进行温度补偿。
    • 温度补偿有助于确保测量结果的准确性,即使在温度变化的情况下也能得到稳定的TDS值。

在本项目中,TDS值检测器会持续监测鱼缸中的水质,并将数据发送给主控单元STM32L431RCT6。主控单元会对这些数据进行处理,并根据设定的阈值来决定是否需要启动自动换水系统来改善水质。此外,主控单元还会将这些数据上传至华为云IoT平台,以便用户通过手机应用实时监控鱼缸的TDS值,并在必要时采取措施。

通过这种方式,TDS值检测器确保了鱼缸中的水质始终处于适宜鱼类生存的最佳范围内,从而为鱼缸内的生物提供了一个健康稳定的居住环境。

3.2.3 温度传感器

在本项目中使用的温度传感器是DS18B20防水探头,这是一种非常流行的数字温度传感器,广泛应用于各种需要精确温度测量的场合,包括智能家居、工业控制等领域。下面详细介绍DS18B20防水探头的工作原理及其在智能鱼缸系统中的应用。

DS18B20防水探头的工作原理

DS18B20是一种单线数字温度传感器,它通过一根数据线(加上电源和地线)与微控制器进行通信。这种传感器的优点在于它只需要一个数据引脚就能与微控制器通信,大大简化了硬件连接。DS18B20的温度测量范围通常为-55°C 至 +125°C,精度可达±0.5°C,非常适合用于需要精确温度控制的应用。

  1. 通信协议

DS18B20采用了1-Wire(一总线)通信协议,这意味着它可以通过一根数据线与微控制器进行数据交换。1-Wire协议不仅减少了所需的引脚数量,还支持在同一根线上连接多个DS18B20传感器,只需通过每个传感器唯一的序列号进行区分即可。

  1. 内部结构

DS18B20内部包含一个温度敏感元件和一个1-Wire通信接口。当温度发生变化时,温度敏感元件会产生相应的电信号变化,然后通过1-Wire接口将这些变化转换为数字信号发送给微控制器。

  1. 测量过程
  • 初始化: 微控制器首先发送一个复位脉冲来初始化DS18B20,确保传感器处于准备状态。
  • ROM序列号: 接下来,微控制器发送一个ROM命令来识别DS18B20的唯一序列号,这是为了区分同一总线上的多个DS18B20传感器。
  • 温度转换: 微控制器发送温度转换命令(如0x44),DS18B20开始进行温度测量。在测量过程中,传感器会将温度转换为数字信号,并将其存储在其内部寄存器中。
  • 读取温度: 微控制器发送读取命令(如0xBE),DS18B20将测量结果从内部寄存器中读出并发送给微控制器。
  • 数据处理: 微控制器收到的温度数据是以16位二进制格式存储的,通常需要进行简单的数学运算才能转换为摄氏度或华氏度的温度值。
  1. 特点
  • 防水封装: 为了适用于鱼缸这种潮湿环境,DS18B20通常采用防水封装,确保传感器不会受到水分的影响。
  • 高精度: DS18B20的温度测量精度较高,可以满足智能鱼缸对温度控制的要求。
  • 低功耗: DS18B20在不进行温度测量时进入低功耗模式,这有助于延长电池寿命。

在智能鱼缸系统中的应用

在智能鱼缸系统中,DS18B20防水探头用于监测鱼缸内的水温。温度数据会被发送给主控单元STM32L431RCT6进行处理。主控单元根据接收到的温度数据,可以控制加热器的开启或关闭,以维持水温在适宜的范围内。此外,温度数据也会通过4G模块Air724UG上传至华为云IoT平台,用户可以通过智慧生活App实时查看鱼缸的温度,并根据需要设置恒温温度。

通过这种方式,DS18B20防水探头确保了智能鱼缸系统能够准确地监测并控制水温,为鱼缸内的生物提供一个健康稳定的居住环境。

3.4 通信模块

Air724UG 4G模块是智能鱼缸系统中用于实现无线数据传输的关键组件之一,它主要用于将鱼缸系统收集到的数据通过4G网络发送到华为云IoT平台,同时也支持从云平台接收指令。下面详细介绍Air724UG 4G模块的工作原理及其在本项目中的应用。

Air724UG 4G模块的工作原理

Air724UG是一款高性能的4G LTE Cat.4模块,支持全球多个频段,能够在全球范围内提供可靠的4G连接。该模块采用Quectel的芯片组,具有体积小巧、功耗低的特点,适合嵌入式应用。

1. 通信协议

Air724UG模块支持多种通信协议,包括TCP/IP、UDP、FTP、HTTP等,这些协议使得模块能够与远程服务器进行高效的数据交换。此外,它还支持AT命令集,允许主控单元通过简单的文本命令控制模块的操作。

2. 数据传输
  • 上行数据: 当鱼缸系统中的传感器收集到数据(如含氧量、TDS值、水温等)时,这些数据会被发送给主控单元STM32L431RCT6。
  • 数据处理: 主控单元会对数据进行初步处理,并将数据打包成适合传输的格式。
  • 下行数据: 主控单元通过串行接口(如UART)将打包后的数据发送给Air724UG模块。
  • 无线传输: Air724UG模块接收到数据后,会通过4G网络将数据发送到指定的服务器地址,即华为云IoT平台。
3. 指令接收
  • 指令发送: 华为云IoT平台可以向Air724UG模块发送指令,例如要求改变鱼缸的某些设置或执行特定任务。
  • 指令处理: Air724UG模块接收到指令后,通过串行接口将指令转发给主控单元。
  • 执行指令: 主控单元根据接收到的指令执行相应的操作,比如开启加热器、启动充氧泵等。
4. 网络连接

Air724UG模块支持多种4G LTE频段,可以根据所在地区的网络条件自动选择最优的频段进行连接。它还支持自动重连功能,确保在网络信号不稳定的情况下也能保持稳定的连接。

5. 电源管理

Air724UG模块具有较低的功耗特点,适合长期运行的应用场景。模块还支持多种省电模式,可以在不需要传输数据时进入低功耗状态,从而节省电力。

在智能鱼缸系统中的应用

在本项目中,Air724UG 4G模块的主要作用是作为鱼缸系统与华为云IoT平台之间的通信桥梁。当鱼缸中的传感器检测到数据时,这些数据会被主控单元STM32L431RCT6收集并处理。处理后的数据随后被发送给Air724UG模块,该模块通过4G网络将数据上传至华为云IoT平台。用户可以通过智慧生活App查看这些数据,并根据需要发送指令来控制鱼缸系统的各项功能。

此外,Air724UG模块还支持从华为云IoT平台接收指令,例如用户通过智慧生活App更改鱼缸的设置时,这些指令会被发送到模块,再由模块转发给主控单元执行相应的操作。

通过这种方式,Air724UG 4G模块确保了智能鱼缸系统能够实现远程监控和控制,为用户提供了一个高度自动化的养鱼体验。

四. 智慧生活App的用户界面

image-20240816114745705

4.1 智慧生活App集成

智慧生活App的H5设计有三种方式,包括公版卡片线上开发线下开发,便于伙伴根据时间情况进行选择。

总体而言,从公版卡片、线上开发到线下开发,开发过程所需的工作量递增、适用的产品范围更加广泛、能够实现的功能也更加丰富。

  • 公版卡片:平台根据物模型定义,直接自动生成。仅支持预览,不支持编辑。
  • 线上开发:平台提供低代码开发工具,可以根据物模型定义,自动生成符合设计规范的操作界面。开发者可以根据需求进行调整编排,快速实现期望的界面效果,提升H5开发效率。
  • 线下开发:如果线上开发能力不能满足伙伴需求、或者已有H5开发包(改造后即可满足要求),可以采用线下开发的方式。
分类公版卡片线上开发线下开发
适用范围-仅支持牙刷与智能水杯两种品类。与通信类型及产品品类相关,详见[支持线上开发的品类。适用于所有场景。
能力差异UX/UI设计自动生成,无需审核。根据物模型自动生成符合规范的操作界面,可在线调整组件、预览效果。设计稿无需提交审核。需要按照产品Profile文件与设计规范进行设计,并在平台提交UX和UI设计稿的审核。
H5开发仅支持预览,不支持编辑。支持在线配置功能项及对应参数。不支持二级页面的开发。需要按照Profile文件与UI设计文件进行功能开发。支持二级页面的开发。
H5调测线下调测。线下调测。线下调测。
H5开发包提交单击“下一步”提交。在线保存,并单击“下一步”提交。H5开发完成后,需按要求打包并上传至平台。

4.2 用户交互设计

公版卡片/线上开发

通过公版卡片或线上开发H5方式接入智慧生活App的操作流程如下:

图1 公版开发/线上开发H5流程

image-20240725112610984

线下开发H5

通过线下开发H5方式接入智慧生活App的操作流程如下:

图2 线下开发H5流程
image-20240725112528355

五、物联网服务器配置

华为云官网: https://www.huaweicloud.com/

打开官网,搜索物联网,就能快速找到 设备接入IoTDA

image-20221204193824815

5.1 物联网平台介绍

华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助我们快速构筑物联网解决方案。

使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。

物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户构建各种物联网解决方案。

设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。

业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。

img

5.2 开通物联网服务

地址: https://www.huaweicloud.com/product/iothub.html

image-20221204194233414

点击立即创建

image-20240117134653452

正在创建标准版实例,需要等待片刻。

image-20240117134729401

创建完成之后,点击实例名称。 可以看到标准版实例的设备接入端口和地址。

image-20240425180759670

在上面也能看到 免费单元的限制。

image-20240425180817704

开通之后,点击总览,也能查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。

image-20240425180845461

总结:

端口号:   MQTT (1883)| MQTTS (8883)	
接入地址:ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com

**根据域名地址得到IP地址信息: **

打开Windows电脑的命令行控制台终端,使用ping 命令。ping一下即可。

Microsoft Windows [版本 10.0.19045.4170]
(c) Microsoft Corporation。保留所有权利。C:\Users\11266>ping ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com正在 Ping ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com [117.78.5.125] 具有 32 字节的数据:
来自 117.78.5.125 的回复: 字节=32 时间=35ms TTL=93
来自 117.78.5.125 的回复: 字节=32 时间=36ms TTL=93
来自 117.78.5.125 的回复: 字节=32 时间=36ms TTL=93
来自 117.78.5.125 的回复: 字节=32 时间=39ms TTL=93117.78.5.125 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 35ms,最长 = 39ms,平均 = 36msC:\Users\11266>

MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。

5.3 创建产品

(1)创建产品

(2)填写产品信息

根据自己产品名字填写,下面的设备类型选择自定义类型。

image-20240612094809689

(3)产品创建成功

创建完成之后点击查看详情。

image-20240612095134263

(4)添加自定义模型

产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。

模型简单来说: 就是存放设备上传到云平台的数据。

你可以根据自己的产品进行创建。

比如:

烟雾可以叫  MQ2
温度可以叫  Temperature
湿度可以叫  humidity
火焰可以叫  flame
其他的传感器自己用单词简写命名即可。 这就是你的单片机设备端上传到服务器的数据名字。

先点击自定义模型。

image-20240612095517900

再创建一个服务ID。

image-20240612095542749

接着点击新增属性。

image-20240612095648815

image-20240612095711898

5.4 添加设备

产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。

(1)注册设备

image-20240425181935561

(2)根据自己的设备填写

image-20240612100115167

(3)保存设备信息

创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。

image-20240612100128061

(4)设备创建完成

image-20240612100147232

(5)设备详情

image-20240612100202960

image-20240612100217236

5.5 MQTT协议主题订阅与发布

(1)MQTT协议介绍

当前的设备是采用MQTT协议与华为云平台进行通信。

MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。目前MQTT拥有各种平台和设备上的客户端,已经形成了初步的生态系统。

MQTT是一种消息队列协议,使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,相对于其他协议,开发更简单;MQTT协议是工作在TCP/IP协议上;由TCP/IP协议提供稳定的网络连接;所以,只要具备TCP协议栈的网络设备都可以使用MQTT协议。 本次设备采用的ESP8266就具备TCP协议栈,能够建立TCP连接,所以,配合STM32代码里封装的MQTT协议,就可以与华为云平台完成通信。

华为云的MQTT协议接入帮助文档在这里: https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

img

业务流程:

img

(2)华为云平台MQTT协议使用限制

描述限制
支持的MQTT协议版本3.1.1
与标准MQTT协议的区别支持Qos 0和Qos 1支持Topic自定义不支持QoS2不支持will、retain msg
MQTTS支持的安全等级采用TCP通道基础 + TLS协议(最高TLSv1.3版本)
单帐号每秒最大MQTT连接请求数无限制
单个设备每分钟支持的最大MQTT连接数1
单个MQTT连接每秒的吞吐量,即带宽,包含直连设备和网关3KB/s
MQTT单个发布消息最大长度,超过此大小的发布请求将被直接拒绝1MB
MQTT连接心跳时间建议值心跳时间限定为30至1200秒,推荐设置为120秒
产品是否支持自定义Topic支持
消息发布与订阅设备只能对自己的Topic进行消息发布与订阅
每个订阅请求的最大订阅数无限制

(3)主题订阅格式

帮助文档地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

image-20221207153310037

对于设备而言,一般会订阅平台下发消息给设备 这个主题。

设备想接收平台下发的消息,就需要订阅平台下发消息给设备 的主题,订阅后,平台下发消息给设备,设备就会收到消息。

如果设备想要知道平台下发的消息,需要订阅上面图片里标注的主题。

以当前设备为例,最终订阅主题的格式如下:
$oc/devices/{device_id}/sys/messages/down最终的格式:
$oc/devices/663cb18871d845632a0912e7_dev1/sys/messages/down

(4)主题发布格式

对于设备来说,主题发布表示向云平台上传数据,将最新的传感器数据,设备状态上传到云平台。

这个操作称为:属性上报。

帮助文档地址:https://support.huaweicloud.com/usermanual-iothub/iot_06_v5_3010.html

image-20221207153637391

根据帮助文档的介绍, 当前设备发布主题,上报属性的格式总结如下:

发布的主题格式:
$oc/devices/{device_id}/sys/properties/report最终的格式:
$oc/devices/663cb18871d845632a0912e7_dev1/sys/properties/report
发布主题时,需要上传数据,这个数据格式是JSON格式。上传的JSON数据格式如下:{"services": [{"service_id": <填服务ID>,"properties": {"<填属性名称1>": <填属性值>,"<填属性名称2>": <填属性值>,..........}}]
}
根据JSON格式,一次可以上传多个属性字段。 这个JSON格式里的,服务ID,属性字段名称,属性值类型,在前面创建产品的时候就已经介绍了,不记得可以翻到前面去查看。根据这个格式,组合一次上传的属性数据:
{"services": [{"service_id": "stm32","properties":{"DHT11_T":30,"DHT11_H":10,"BH1750":1,"MQ135":0}}]}

5.6 MQTT三元组

MQTT协议登录需要填用户ID,设备ID,设备密码等信息,就像我们平时登录QQ,微信一样要输入账号密码才能登录。MQTT协议登录的这3个参数,一般称为MQTT三元组。

接下来介绍,华为云平台的MQTT三元组参数如何得到。

(1)MQTT服务器地址

要登录MQTT服务器,首先记得先知道服务器的地址是多少,端口是多少。

帮助文档地址:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home

image-20240509193207359

MQTT协议的端口支持1883和8883,它们的区别是:8883 是加密端口更加安全。但是单片机上使用比较困难,所以当前的设备是采用1883端口进连接的。

根据上面的域名和端口号,得到下面的IP地址和端口号信息: 如果设备支持填写域名可以直接填域名,不支持就直接填写IP地址。 (IP地址就是域名解析得到的)

华为云的MQTT服务器地址:117.78.5.125
华为云的MQTT端口号:1883

如何得到IP地址?如何域名转IP? 打开Windows的命令行输入以下命令。

ping  ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com

image-20240425182610048

(2)生成MQTT三元组

华为云提供了一个在线工具,用来生成MQTT鉴权三元组: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

打开这个工具,填入设备的信息(也就是刚才创建完设备之后保存的信息),点击生成,就可以得到MQTT的登录信息了。

下面是打开的页面:

image-20240425183025893

填入设备的信息: (上面两行就是设备创建完成之后保存得到的)

直接得到三元组信息。

image-20240509193310020

得到三元组之后,设备端通过MQTT协议登录鉴权的时候,填入参数即可。

ClientId  663cb18871d845632a0912e7_dev1_0_0_2024050911
Username  663cb18871d845632a0912e7_dev1
Password  71b82deae83e80f04c4269b5bbce3b2fc7c13f610948fe210ce18650909ac237

5.7 模拟设备登录测试

经过上面的步骤介绍,已经创建了产品,设备,数据模型,得到MQTT登录信息。 接下来就用MQTT客户端软件模拟真实的设备来登录平台。测试与服务器通信是否正常。

(1)填入登录信息

打开MQTT客户端软件,对号填入相关信息(就是上面的文本介绍)。然后,点击登录,订阅主题,发布主题。

image-20240509193457358

(2)打开网页查看

完成上面的操作之后,打开华为云网页后台,可以看到设备已经在线了。

image-20240612100508790

点击详情页面,可以看到上传的数据:

image-20240612100529581

到此,云平台的部署已经完成,设备已经可以正常上传数据了。

(3)MQTT登录测试参数总结

MQTT服务器:  117.78.5.125
MQTT端口号:  183//物联网服务器的设备信息
#define MQTT_ClientID "663cb18871d845632a0912e7_dev1_0_0_2024050911"
#define MQTT_UserName "663cb18871d845632a0912e7_dev1"
#define MQTT_PassWord "71b82deae83e80f04c4269b5bbce3b2fc7c13f610948fe210ce18650909ac237"//订阅与发布的主题
#define SET_TOPIC  "$oc/devices/663cb18871d845632a0912e7_dev1/sys/messages/down"  //订阅
#define POST_TOPIC "$oc/devices/663cb18871d845632a0912e7_dev1/sys/properties/report"  //发布发布的数据:
{"services": [{"service_id": "stm32","properties":{"DHT11_T":30,"DHT11_H":10,"BH1750":1,"MQ135":0}}]}

5.8 创建IAM账户

创建一个IAM账户,因为接下来开发上位机,需要使用云平台的API接口,这些接口都需要token进行鉴权。简单来说,就是身份的认证。 调用接口获取Token时,就需要填写IAM账号信息。所以,接下来演示一下过程。

地址: https://console.huaweicloud.com/iam/?region=cn-north-4#/iam/users

**【1】获取项目凭证 ** 点击左上角用户名,选择下拉菜单里的我的凭证

image-20240509193646253

image-20240509193701262

项目凭证:

28add376c01e4a61ac8b621c714bf459

【2】创建IAM用户

鼠标放在左上角头像上,在下拉菜单里选择统一身份认证

image-20240509193729078

点击左上角创建用户

image-20240509193744287

image-20240314153208692

image-20240314153228359

image-20240314153258229

创建成功:

image-20240314153315444

【3】创建完成

image-20240509193828289

用户信息如下:

主用户名  l19504562721
IAM用户  ds_abc
密码     DS12345678

5.9 获取影子数据

帮助文档:https://support.huaweicloud.com/api-iothub/iot_06_v5_0079.html

设备影子介绍:

设备影子是一个用于存储和检索设备当前状态信息的JSON文档。
每个设备有且只有一个设备影子,由设备ID唯一标识
设备影子仅保存最近一次设备的上报数据和预期数据
无论该设备是否在线,都可以通过该影子获取和设置设备的属性

简单来说:设备影子就是保存,设备最新上传的一次数据。

我们设计的软件里,如果想要获取设备的最新状态信息,就采用设备影子接口。

如果对接口不熟悉,可以先进行在线调试:https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTDA&api=ShowDeviceShadow

在线调试接口,可以请求影子接口,了解请求,与返回的数据格式。

调试完成看右下角的响应体,就是返回的影子数据。

image-20240509194152229

设备影子接口返回的数据如下:

{"device_id": "663cb18871d845632a0912e7_dev1","shadow": [{"service_id": "stm32","desired": {"properties": null,"event_time": null},"reported": {"properties": {"DHT11_T": 18,"DHT11_H": 90,"BH1750": 38,"MQ135": 70},"event_time": "20240509T113448Z"},"version": 3}]
}

调试成功之后,可以得到访问影子数据的真实链接,接下来的代码开发中,就采用Qt写代码访问此链接,获取影子数据,完成上位机开发。

image-20240509194214716

链接如下:

https://ad635970a1.st1.iotda-app.cn-north-4.myhuaweicloud.com:443/v5/iot/28add376c01e4a61ac8b621c714bf459/devices/663cb18871d845632a0912e7_dev1/shadow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BugReport中的网络差现象

一、摘要 当出现网络不好时(日志关键字“process data stall”)&#xff0c;会出现com.android.networkstack.process 后台进程联网访问“http://www.google.cn/generate_204”进行网络检测的行为&#xff0c;会额外带来功耗电流。遇到这种情况&#xff0c;主要是环境因素&…

Echarts图表柱状图基本用法(横向、纵向、柱宽度、圆角、图表渐变色、图表滚动条、图例样式等)

效果图&#xff1a; JS: function chart(){var chartDom document.getElementById(这里写div的id名称);var myChart echarts.init(chartDom);var option;myChart.clear();//图表清除&#xff0c;用于更新数据重新加载图表option {//编辑图表整体布局宽、高等等grid:{top:20…

Android基于gradle task检查各个module之间资源文件冲突情况

做组件化开发的时候&#xff0c;我们经常会遇到各个不同的module之间资源文件冲突的问题&#xff0c;运行也不报错&#xff0c;但是会出现覆盖的问题&#xff0c;导致运行之后发送错误的效果。 所以我们需要利用一个gradlke 脚本task&#xff0c;来自动化检查资源文件冲突。 …

腾讯云-云直播

云直播&#xff08;Cloud Streaming Services&#xff09;为您提供极速、稳定、专业的直播云端处理服务&#xff0c;根据业务中不同直播场景的需求&#xff0c;云直播提供标准直播、快直播、慢直播和云导播台服务&#xff0c;分别针对大规模实时观看、高并发推流录制及超低延时…

Jenkins配置流水线任务-实践操作(Pipeline-script)

Jenkins配置流水线任务-实践操作(Pipeline-script) 1、新增jenkins 任务&#xff0c;选择流水线 2、参数化 3、流水线配置 pipeline {agent anystages {stage(aoePlugin_mysql) {steps {echo "xxx&#xff0c;数据库:Mysql"echo "${HOST},${USER_NAME}"b…

AGI|如何构建一个RAG应用?入门新手攻略!

目录 一、概述 二、过程概述 三、如何优化提问&#xff1f; 四、路由和高级查询 五、丰富索引结构 六、重排序上下文 七、总结 一、概述 Retrieval Augmented Generation RAG 检索增强的内容生成。 从字面上来看检索只是一种手段途径&#xff0c;在人工智能领域中存在多种…

leetcode计数排序

计数排序&#xff08;counting sort&#xff09;通过统计元素数量来实现排序&#xff0c;通常应用于整数数组。 给定一个长度为 的数组 nums &#xff0c;其中的元素都是“非负整数” def counting_sort(nums: list[int]):"""计数排序"""# 完整实…

从调用NCCL到深入NCCL源码

本小白目前研究GPU多卡互连的方案&#xff0c;主要参考NCCL和RCCL进行学习&#xff0c;如有错误&#xff0c;请及时指正&#xff01; 内容还在整理中&#xff0c;近期不断更新&#xff01;&#xff01; 背景介绍 在大模型高性能计算时会需要用到多卡&#xff08;GPU&#xf…

三勾点餐|后台页面更新

项目介绍 三勾点餐系统基于thinkphp8element-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 功能说明…

从头开始的可视化数据 matplotlib:初学者努力绘制数据图

从头开始学习使用 matplotlib 可视化数据&#xff0c;对于初学者来说&#xff0c;可能会有些挑战&#xff0c;但 matplotlib 的核心理念非常清晰&#xff1a;绘制图表需要了解如何设置图形、坐标轴以及如何用数据填充它们。我们可以通过一些简单的例子来逐步介绍基本步骤。 1. …

代码审计笔记-PHP

PHP 1.php的弱类型 PHP 的“弱类型”是指在这门编程语言中&#xff0c;变量的类型在赋值时会被自动推断&#xff0c;而不是在变量声明时显式地指定类型。这意味着在 PHP 中&#xff0c;您可以将不同类型的值赋给同一个变量&#xff0c;而不需要进行类型转换或重新声明变量。 举…

基于Opencv中的DNN模块实现图像/视频的风格迁移

一、DNN模块的介绍 1、简介 OpenCV中的DNN&#xff08;Deep Neural Network&#xff09;模块是一个功能强大的组件&#xff0c;它支持深度学习网络模型的加载和推理。虽然DNN模块不提供模型的训练功能&#xff0c;但它可以与主流的深度学习框架&#xff08;如TensorFlow、Caf…

并行 parallel broadcast partition pruning 分区裁剪 optimizer_dynamic_sampling=7

insert into abc 没有PDML所以不是全部并行 只有select 的情况 全部并行&#xff0c;没有 px send broadcast &#xff0c;所以rows没从103M变成103*8M select *from A&#xff0c;B where A.Pkey B.Pkey and A.Pkey XX A B表都会进行分区裁剪 ----并行为什么更…

Linux操作系统——外存的管理(实验报告)

实验 Linux系统外存管理 一、实验目的 熟练Linux系统外存管理的方法与命令。 二、实验环境 硬件&#xff1a;PC电脑一台&#xff0c;网络正常。 配置&#xff1a;win10系统&#xff0c;内存大于8G 硬盘500G及以上。 软件&#xff1a;VMware、Ubuntu16.04。 三、实验内容 …

pymobiledevice3 xonsh-afc shell使用介绍

1、进入xonsh-afc shell&#xff1a; pymobiledevice3 apps afc bundle_id 2、进入shell后默认的目录是&#xff1a;[com.apple.mobile.house_arrest:/]$&#xff0c;这个目录是指定bundle_id的沙盒目录。 3、沙盒目录中如果包含带有空格的文件夹&#xff0c;直接使用cd App…

《CUDA编程》8.共享内存的合理使用

共享内存是 一种可被程序员直接操控的缓存&#xff0c;主要作用有两个&#xff1a; ①减少核函数中对全局内存的访 问次数&#xff0c;实现高效的线程块内部的通信 ②提高全局内存访问的合并度 将通过两个具体的例子阐明共享内存的合理使用&#xff0c;一个数组归约的例子和讨矩…

Git上传命令汇总

进入企业&#xff0c;每日需要上传执行用例记录到gitlab平台上&#xff0c;本文记录了常用git上传命令&#xff0c; 并用github演示。 1、本地建立分支&#xff0c;克隆远程仓库 在gitlab中&#xff0c;每个人需要创建自己的分支&#xff0c;一般以自己的名字命名&#xff0c;…

三子棋(C 语言)

目录 一、游戏设计的整体思路二、各个步骤的代码实现1. 菜单及循环选择的实现2. 棋盘的初始化和显示3. 轮流下棋及结果判断实现4. 结果判断实现 三、所有代码四、总结 一、游戏设计的整体思路 &#xff08;1&#xff09;提供一个菜单让玩家选择人机对战、玩家对战或者退出游戏…

第二十七篇:传输层讲解,TCP系列一

一、传输层的功能 ① 分割与重组数据 传输层也要做数据分割&#xff0c;所以必然也需要做数据重组。 ② 按端口号寻址 IP只能定位数据哪台主机&#xff0c;无法判断数据报文应该交给哪个应用&#xff0c;传输层给每个应用都设置了一个编号&#xff0c;这个编号就是端口&…

Midjourney官宣网页版免费用!前谷歌大佬祭出AI生图2.0,全网惊艳实测

Midjourney一度稳居AI生图的第一梯队&#xff0c;甚至是很多人心中的Top1。但是Ideogram 2.0的发布&#xff0c;抢夺了Midjourney的荣光&#xff0c;不仅一举拉高了图像生成质量&#xff0c;还打起了价格战。 曾经在AI图像生成领域无可匹敌的领导者Midjourney&#xff0c;终于…