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

目录

一、前言       

二、知识梳理

三、项目体验

四、项目分解


一、前言       

        近几年很多学校开设了物联网专业,但是确却地讲,物联网属于一个领域,包含了很多的专业或者说技能树,例如计算机、电子设计、传感器、单片机、网络基础、无线通信、云服务和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

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

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

相关文章

公链角逐中突围,Solana 何以成为 Web3 世界的流量焦点?

在众多区块链公链中,Solana 凭借其创纪录的处理速度和极低的交易费用,成为了众多开发者和投资者的宠儿。就像网络上流行的那句话所说:“Why slow, when you can Solana?”,Solana 正以它的速度和强大的生态系统,重新定…

某某消消乐增加步数漏洞分析

一、漏洞简介 1) 漏洞所属游戏名及基本介绍:某某消消乐,三消游戏,类似爱消除。 2) 漏洞对应游戏版本及平台:某某消消乐Android 1.22.22。 3) 漏洞功能:增加游戏步数。 4&#xf…

如何快速搭建一个ELK环境?

前言 ELK是Elasticsearch、Logstash和Kibana三个开源软件的统称,通常配合使用,并且都先后归于Elastic.co企业名下,故被简称为ELK协议栈。 Elasticsearch是一个实时的分布式搜索和分析引擎,它可以用于全文搜索、结构化搜索以及分…

政安晨:专栏目录【TensorFlow与Keras实战演绎机器学习】

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 本篇是作者政安晨的专栏《TensorFlow与Keras…

【案例·增】获取当前时间、日期(含,SQL中DATE数据类型)

问题描述: 需要使用当前时间、日期,可以使用 SQL 中的 CURDATE() 、NOW()、CURTIME()运算符 案例: INSERT INTO table_name(current_time, column_name2,...) VALUES (NOW(),, ...)规则(Date 相关函数): 规则(Date数据类型)

python(一)网络爬取

在爬取网页信息时,需要注意网页爬虫规范文件robots.txt eg:csdn的爬虫规范文件 csdn.net/robots.txt User-agent: 下面的Disallow规则适用于所有爬虫(即所有用户代理)。星号*是一个通配符,表示“所有”。 Disallow&…

Unity TMP 使用教程

文章目录 1 导入资源包2 字体制作3 表情包制作4 TMP 控件4.1 属性4.2 富文本标签 1 导入资源包 “Window -> TextMeshPro -> Import TMP Essential Resources”,导入完成后会创建一个名为"TextMehs Pro"的文件夹,这里面包含所需要的资源…

Java数据结构-ArrayList

目录 1. 初识集合框架2. ArrayList的介绍3. ArrayList的使用3.1 构造方法3.2 add3.3 addAll3.4 remove3.5 get3.6 set3.7 contains3.8 IndexOf3.9 lastIndexOf3.10 subList 4. ArrayList的遍历4.1 简单粗暴法4.2 循环遍历法4.3 迭代器 1. 初识集合框架 Java集合框架是Java编程…

UE RPC 外网联机(2)

外网联机配置测试 一、网络配置 开放外网端口开放端口是为了可以进行外网访问;端口包含一个预案管理服务器端口和多个预案服务器端口;(预案管理服务器类似于大厅,预案服务器类似于房间,大厅管理多个房间;) (1)预案管理服务器端口;(如:23001) (2)预案服务器端口…

第十届蓝桥杯大赛个人赛省赛(软件类)真题- CC++ 研究生组-最短路

6 肉眼观察&#xff0c; 看起来短的几条路对比下来是6~ #include <iostream> using namespace std; int main() {printf("6");return 0; }

华为广告打包报错,问题思考

华为广告打包时报错 fata日志不一样能反映出完整的错误日志信息&#xff0c;仅看fata日志具有误导性&#xff0c;有可能指向错误的方向。 通过看完整的日志可见&#xff0c;错误的原因为 Caused by: java.lang.ClassNotFoundException: com.huawei.hms.ads.base.R$dimenfata日…

HarmonyOS 应用开发之ExtensionAbility组件

ExtensionAbility组件是基于特定场景&#xff08;例如服务卡片、输入法等&#xff09;提供的应用组件&#xff0c;以便满足更多的使用场景。 每一个具体场景对应一个 ExtensionAbilityType&#xff0c;开发者只能使用&#xff08;包括实现和访问&#xff09;系统已定义的类型。…

双链表的基本操作

一.双链表的初始化&#xff1a; typedef struct DNode{ //定义双链表结点类型 ElemType data; //数据域 struct DNode*prior, *next; //前驱和后继指针 }DNode&#xff0c;*DLinklist;//初始化双链表 bool InitDLinkList(DLinklist &L){ L ( DNod…

Pytorch的hook函数

hook函数是勾子函数&#xff0c;用于在不改变原始模型结构的情况下&#xff0c;注入一些新的代码用于调试和检验模型&#xff0c;常见的用法有保留非叶子结点的梯度数据&#xff08;Pytorch的非叶子节点的梯度数据在计算完毕之后就会被删除&#xff0c;访问的时候会显示为None&…

第二证券|刚刚,巨象突袭!发生了什么?

又是观看“巨象”表演的一天&#xff01; 今日早盘&#xff0c;A股总市值排前14的股票无一杀跌&#xff0c;三桶油更是集体拉升&#xff0c;我国石油涨超4%&#xff0c;我国海油涨近3%&#xff0c;我国石化涨超2%。排在后面的我国移动、我国电信等股价表现和走势也相当不错。 …

OneNote 中的云端字典在哪里? RoamingCustom.dic 在哪里?

早期懵懂不知&#xff0c;使用 OneNote 时直接将所有标红的单词添加到字典中了。后面才发现默认会添加到云端字典中。因为云端字典是存储在云端上的&#xff0c;所以 onenote 没有给出路径&#xff1a; 难道没办法获取了吗&#xff1f;有的&#xff01; 方案如下&#xff1a;考…

动态多态的注意事项

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 多态的基本概念 多态是C面向对象三大特性之一&#xff08;多态、继承、封装&#xff09; 多态分为两类&#xff1a; 静态多态&#xff1a;函数重载和运算符重载属于静态多态&#x…

php 快速入门(七)

一、操作数据库 1.1 操作MySQL的步骤 第一步&#xff1a;登录MySQL服务器 第二步&#xff1a;选择当前数据库 第三步&#xff1a;设置请求数据的字符集 第四步&#xff1a;执行SQL语句 1.2 连接MySQL 函数1&#xff1a;mysql_connect() 功能&#xff1a;连接&#xff08;登录…

八大技术趋势案例(人工智能物联网)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

文件上传失败原因分析与解决

图片文件上传失败 问题描述&#xff1a;在前端开发时&#xff0c;需要通过表单元素上传图片或其他文本&#xff0c;但是上传不成功&#xff0c;后端接口也没问题 html <!--onChange用来绑定数据 handleUpload用来提交数据--><form onSubmit{handleUpload}><…