当前位置: 首页 > news >正文

物联网实战--入门篇之(一)物联网概述

目录

一、前言       

二、知识梳理

三、项目体验

四、项目分解


一、前言       

        近几年很多学校开设了物联网专业,但是确却地讲,物联网属于一个领域,包含了很多的专业或者说技能树,例如计算机、电子设计、传感器、单片机、网络基础、无线通信、云服务和APP等等,这就导致很多同学学起来云里雾里的,抓不住重点。

        基于此,本人希望结合自身的工作实战经验,采用项目学习法,进行深入浅出地学习;通过这一系列的练习后,大家不仅能较为深刻的认识物联网,还能充分掌握C语言、单片机等基础知识,进一步地还能了解网络知识、无线通信和手机端开发等方面的内容。

二、知识梳理

         物联网技术宏观上来讲主要包含了传感/控制器、前端主控、通讯技术、后台服务、用户平台和安全技术六大模块,下面结合附图对每个模块分别做个简单介绍:

1、传感/控制器:这是跟工作场景直接接触的设备,例如家里的鱼缸,一般会测量水温,那么就有一个温度探头直接丢水里;正常还有个增氧泵,内置了电机,对水体进行增氧。类比于人,就像我们的五官和手脚一样,直接跟工作场景接触来获取信息或执行动作。

2、前端主控:这是前端的大脑,就好比打仗时的前线指挥官。接着鱼缸的例子,有些鱼水温不能太低,温度探头检测到水温较低后,一般会启动加热棒对水体进行加热,当温度达到设定值时又会停止加热,如此反复循环,使得水体温度处在一个合适的区间。那么这里面有一个简单的温度控制逻辑就是靠前端主控来实现的,由技术开发人员写入主控芯片内;这里的主控芯片根据使用场景、成本、功耗和安全性等要素来选择,市场上有很多的主芯片厂家,常用的有ST、TI、NXP、兆易、新唐、树莓派和香橙派等等,技术人员要根据需求来选择。

3、通讯技术:现在很多家电都可以用手机控制了,比如说空调,安装后只需要配网连接WIFI就可以随时随地设置空调温度值了,这里面的WIFI就是很常用的通讯技术,还有4G/5G、蓝牙和有线网络也是常用通讯技术;另外行业上还有RS485、RS232、Can总线、EthCAT总线、LoRa、NB-Iot和ZigBee等等,所有的通讯技术都是为了适合不同的应用场景而产生的,所以说没有最好的技术,只有最合适的技术。

4、后台服务:这属于领导集团了,如果说前端主控是前线指挥官,好比李云龙,那后台服务就是指挥中心了,好比旅长或师长。后台服务一方面负责下面所有设备的网络连接、数据接收、数据处理和数据存储;另一方面,还要进行更高层次的业务逻辑实现,例如用户管理、数据推送、指令接收、告警通知等等,非常多!后台服务是看不见的中心,物联网整个系统的技术都是围绕着后台服务展开的,当然了,后台服务可以做的很复杂,也可以做的很简单,最简单的就是放一个MQTT Broker作为数据路由就行了。

5、用户平台:一般是给前端设备的拥有者使用的,常用的方式有网站、手机APP和小程序,用户拿起手机或者打开电脑就能轻松管理成百上千的前端设备,极大提高了管理和工作效率,这也是物联网的意义所在——通过联网、大数据分析处理等技术手段提高生产中的管理和工作效率。

6、安全技术:在公共场合如果两个老乡想聊点私事一般都会用家乡的方言来交流,这个本质上也是一种安全技术,物联网的安全技术分为两部分,一个是设备本身的,例如很多设备会配一个加密狗,防止软件被破解;另一个是通讯时候会添加证书或者使用特定的加密方式以保证数据被截取后不会被轻易破解。

        从以上简要介绍中可知,要每个技术领域都吃透不太现实,在企业中物联网整套流程的开发至少也得七八个人共同协作才能完成。那么,在学习阶段,如何高效汲取必要知识就很讲究方法了。这里就不得不提一种学习方法了,称为项目学习法,其核心就是把要学的知识穿插进具体项目中,学生在做项目的过程中遇到困难会有目的性地去找资料,同时每攻克一个困难就会获得成就感,让学生时刻保持着学习的兴趣和热情;当项目完成时,不知不觉就掌握了很多必要的知识技能,主打的一个就是边用边学;最后,等项目多做几个,对所用知识技能有了较为深刻的理解后,再用传统的方式进行系统性学习,这样就不会在学习过程一直疑问“学这个有什么用了?”。

        项目学习法最重要的作用就是让学生保持学习的热情和兴趣,学习效率高,但对应的缺点就是很多知识只能蜻蜓点水,这也没办法了,不可兼得,只能说最后自己找到感兴趣的方向再进行深入研究了。

        对于物联网,所涉及的学科知识很多很广,项目学习法是很适合的,通过做项目的方式可以快速掌握C语言、C++、嵌入式、通讯技术、UI开发等基本技能。接下来,我们就以XM空气净化器为原型,做一个自己的空气净化器,通过这个项目了解物联网开发的大致流程和必备技能。

三、项目体验

        以下是空气净化器项目的演示视频,学完本教程后大家应该也能够独立做一个类似的项目了。

净化器

       

视频里主要演示了以下几方面的内容:

1、开机、关机:开机后风扇启动,关机后风扇停止;类似于XM净化器,即使关机设备还是跟后台连接着,传感器数据也在实时更新,只是APP页面变成深色、静态的而已。

2、数据上传:其中包含了空气温度、湿度、PM2.5浓度、风扇速度和开关状态,大概5秒更新一次数据;在视频中,温湿度通过人为哈气可以看到明显的变化,PM2.5在经过烟熏后数据改变明显,APP的界面也根据数据改变了整体配色,风扇开启后烟被吸走了,空气质量也逐渐好转。

3、风扇调速:在手机APP上滑动滑块即可实时调整风扇速度,但是这一过程变化并不是很均匀,可以留着最后自己当做附加题,实现一个调速均匀的功能。

四、项目分解

        空气净化器项目从功能上来讲没有很复杂,一方面是净化器采集到PM2.5和温湿度值,并将数据上传到服务器,用户可以通过手机APP看到这些状态数值;另一方面是用户可以通过手机对净化器的风扇进行调速,还有就是执行开关机功能。至于其它滤芯、定时和屏幕什么的,暂时不考虑。

        

        首先先从整体分解这个项目,如上图所示,结构较为简单,以MQTT服务器为中心,手机APP与净化器通过WIFI网络与其连接,MQTT可以把它想象成一个纯软件的路由器,根据它的规则设置数据包信息,它就可以知道你要把这个数据包发给谁,就像微信消息一样,可以发给特定人,也可以群发,后面会再开一篇专门讲解MQTT的文章,这里先了解它的作用即可。

        接下来重点看下净化器本身的机构组成,如下图所示,以主控芯片STM32F103C8T6为中心,通过串口UART2驱动ESP8266  WIFI模块,使得净化器具备联网功能;温湿度传感器型号为SHT30,通过IIC驱动读取环境的温湿度值;PM2.5传感器是通过串口实时主动上报数据, STM32负责接收解析即可;风扇自带驱动模块,只要供给电源,再给个PWM信号就能调速了。

        下一篇文章会把采购清单发出来,大家照着买回来组装就行了。现在来说说选型的原理,这是一个很重要课题,选择合适的芯片和元器件,这在实际项目中很重要。先说主芯片,采用STM32F103C8T6,主要是因为这一款芯片在单片机学习领域太经典了,很多经典教程都是以它为基础的,这样的好处就是你遇到的问题基本上都有解决方法了,可以少走很多弯路,而且采购起来也很方便。WIFI也是同样的道理,ESP8266已经很成熟了,性能稳定,教程也很多。PM2.5传感器,由于在学习阶段,成本是主要考虑因素,准不准的不是很重要,后面会详细说明,其实真正的PM2.5传感器价格很昂贵的,像这种十几块或者几十块的所谓PM2.5传感器其实就是测个粉尘浓度而已。温湿度采用SHT30也是比较经典的,价格适中,采用IIC接口有利于教程展开。风扇采用驱动、电机一体化,接线比较不会混乱,PWM调速也方便教程讲解。

        另一方面,学习本教程最好要有一定的C语言和单片机基础,特别是C语言,如果实在没什么基础也没什么关系,自己对着代码和注释看,不要涉及太底层应该问题也不大,核心还是要保持兴趣和热情,这样学习起来有动力,事半功倍。

        最后就是服务器和手机APP的内容了,服务器端现阶段较为简单,只要部署一个MQTT服务器即可,后面会详细说明步骤。手机APP借助Qt这一开发工具完成,采用C++和QML编程模式,Qt是一款非常优秀的跨平台工具,上手较为容易,天花板也极高,可以用C++做出运行效率极高的后台程序,也可以用QML做出精美的界面,同样一套代码,可以编译出Windows、MacOS程序、安卓和IOS的APP,甚至树莓派也行,效率极高,是一个很适合个人学习的开发工具。另外,C++虽然是一门内容极其庞杂的语言,让人学起来头很大,但是经过Qt的封装后,变得极其优雅,只要有点C语言的基础,做本课程的内容问题不大。关于Qt的内容,后面要专门介绍。

        这一篇基本引出了项目内容和学习方向,下一篇主要教大家如何自己搭环境,把这个项目跑起来,自己体验感受,资源都放在下一篇。

       

        本项目的交流QQ群:701889554

        写于2024-3-28

相关文章:

物联网实战--入门篇之(一)物联网概述

目录 一、前言 二、知识梳理 三、项目体验 四、项目分解 一、前言 近几年很多学校开设了物联网专业,但是确却地讲,物联网属于一个领域,包含了很多的专业或者说技能树,例如计算机、电子设计、传感器、单片机、网…...

将yolov5s部署到安卓上实战经验总结

最近需要在手机端实现一个目标检测的功能,于是选择了小巧又在目标检测方面表现很好的yolov5s,官网下载yolov5代码,用自己做的数据集进行了训练,然后把模型转换成torchscript格式,这些过程网上都有很多讲解,…...

算法日记————对顶堆(4道题)

对顶堆的作用主要在于动态维护第k大的数字,考虑使用两个优先队列,一个大9999999999根堆一个小根堆,小根堆维护大于等于第k大的数字的数,它的堆顶就是堆内最小,第k大的数字,另外一个大根堆维护小于等于k的数…...

【I.MX6ULL移植】Ubuntu-base根文件系统移植

1.下载Ubuntu16.04根文件系统 http://cdimage.ubuntu.com/ 1 2 3 4 5 2.解压ubuntu base 根文件系统 为了存放 ubuntu base 根文件系统,先在 PC 的 Ubuntu 系统中的 nfs 目录下创建一个名为 ubuntu_rootfs 的目录,命令如下: 【注意&…...

unity3d for web

时光噶然 一晃好多年过去了(干了5年的u3d游戏),记得最后一次使用的版本好像是 unity 2017。 那个是 unity3d for webgl 还需要装个插件。用起来很蛋疼。 最近做一个小项目 在选择是用 Layabox 还是 cocosCreate 的时候 我想起了老战友 Uni…...

大宋咨询(深圳问卷调研)关于消费者研究的流程

消费者研究是一项至关重要的任务,它有助于企业了解目标市场的需求、偏好和行为,从而制定更加精准的营销策略。在执行消费者研究时,需要遵循一定的步骤和方法,以确保研究的准确性和有效性。开展消费者研究需要一系列的步骤和方法。…...

STM32看似无法唤醒的一种异常现象分析

1. 引言 STM32 G0 系列产品具有丰富的外设和强大的处理性能以及良好的低功耗特性,被广泛用于各类工业产品中,包括一些需要低功耗需求的应用。 2. 问题描述 用户使用 STM32G0B1 作为汽车多媒体音响控制器的控制芯片,用来作为收音机频道存贮…...

iOS - Runtime-isa详解(位域、union(共用体)、位运算)

文章目录 iOS - Runtime-isa详解(位域、union(共用体)、位运算)前言1. 位域介绍1.1 思路1.2 示例 - 结构体1.3 示例 - union(共用体)1.3.1 说明 1.4 结构体 对比 union(共用体) 2. a…...

使用VSCode搭建Vue 3开发环境

使用VSCode搭建Vue 3开发环境 Vue 3是一种流行的前端JavaScript框架,它提供了响应式的数据绑定和组合式的API。Visual Studio Code(VSCode)是一个轻量级但功能强大的源代码编辑器,支持多种语言开发。本文将引导您完成使用VSCode搭建Vue 3开发环境的步骤。 1. 下载和安装V…...

深度学习中的模型蒸馏技术:实现流程、作用及实践案例

在深度学习领域,模型压缩与部署是一项重要的研究课题,而模型蒸馏便是其中一种有效的方法。 模型蒸馏(Model Distillation)最初由Hinton等人在2015年提出,其核心思想是通过知识迁移的方式,将一个复杂的大模型…...

Java服务运行在Linux----维护常用命令

想起来哪些再添加上去 查看Java程序进程 jps -l 查出进程后根据pid 查询程序所在目录 pwdx 31313 根据端口查找PID 根据pid杀死程序 kill -p 31313 查看目录下所有包含9527的文件 grep -rn 9527 查看磁盘空间 查找文件名"nginx"文件或模糊查找"*nginx*&quo…...

夜晚水闸3D可视化:科技魔法点亮水利新纪元

在宁静的夜晚,当城市的霓虹灯逐渐暗淡,你是否曾想过,那些默默守护着城市安全的水闸,在科技的魔力下,正焕发出别样的光彩?今天,就让我们一起走进夜晚水闸3D模型,感受科技为水利带来的…...

从零开始的软件开发实战:互联网医院APP搭建详解

今天,笔者将以“从零开始的软件开发实战:互联网医院APP搭建详解”为主题,深入探讨互联网医院APP的开发过程和关键技术。 第一步:需求分析和规划 互联网医院APP的主要功能包括在线挂号、医生预约、医疗咨询、健康档案管理等。我们…...

【深度学习】YOLO检测器的发展历程

YOLO检测器的发展历程 YOLO(You Only Look Once)检测器是一种流行的实时对象检测系统,以其速度和准确性而闻名。自2016年首次推出以来,YOLO已经成为计算机视觉领域的一个重要里程碑。在本博客中,我们将探讨YOLO检测器…...

C语言--编译和链接

1.翻译环境 计算机能够执行二进制指令,我们的电脑不会直接执行C语言代码,编译器把代码转换成二进制的指令; 我们在VS上面写下printf("hello world");这行代码的时候,经过翻译环境,生成可执行的exe文件&…...

实现使用C#代码完成wifi的切换和连接功能

实现使用C#代码完成wifi的切换和连接功能 代码如下&#xff1a; namespace Wifi连接器 {public partial class Form1 : Form{private List<Wlan.WlanAvailableNetwork> NetWorkList new List<Wlan.WlanAvailableNetwork>();private WlanClient.WlanInterface Wla…...

Mac添加和关闭开机应用

文章目录 mac添加和关闭开机应用添加开机应用删除/查看 mac添加和关闭开机应用 添加开机应用 删除/查看 打开&#xff1a;系统设置–》通用–》登录项–》查看登录时打开列表 选中打开项目&#xff0c;点击“-”符号...

QT QInputDialog弹出消息框用法

使用QInputDialog类的静态方法来弹出对话框获取用户输入&#xff0c;缺点是不能自定义按钮的文字&#xff0c;默认为OK和Cancel&#xff1a; int main(int argc, char *argv[]) {QApplication a(argc, argv);bool isOK;QString text QInputDialog::getText(NULL, "Input …...

Unity3d使用Jenkins自动化打包(Windows)(一)

文章目录 前言一、安装JDK二、安装Jenkins三、Jenkins插件安装和使用基础操作 实战一基础操作 实战二 四、离线安装总结 前言 本篇旨在介绍基础的安装和操作流程&#xff0c;只需完成一次即可。后面的篇章将深入探讨如何利用Jenkins为Unity项目进行打包。 一、安装JDK 1、进入…...

HarmonyOS 应用开发之Want的定义与用途

Want 是一种对象&#xff0c;用于在应用组件之间传递信息。 其中&#xff0c;一种常见的使用场景是作为 startAbility() 方法的参数。例如&#xff0c;当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时&#xff0c;可以使用Want作为一个载体&#xff0c;将数据传递…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...