物联网实战--入门篇之(一)物联网概述
目录
一、前言
二、知识梳理
三、项目体验
四、项目分解
一、前言
近几年很多学校开设了物联网专业,但是确却地讲,物联网属于一个领域,包含了很多的专业或者说技能树,例如计算机、电子设计、传感器、单片机、网络基础、无线通信、云服务和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的切换和连接功能 代码如下: namespace Wifi连接器 {public partial class Form1 : Form{private List<Wlan.WlanAvailableNetwork> NetWorkList new List<Wlan.WlanAvailableNetwork>();private WlanClient.WlanInterface Wla…...
Mac添加和关闭开机应用
文章目录 mac添加和关闭开机应用添加开机应用删除/查看 mac添加和关闭开机应用 添加开机应用 删除/查看 打开:系统设置–》通用–》登录项–》查看登录时打开列表 选中打开项目,点击“-”符号...
QT QInputDialog弹出消息框用法
使用QInputDialog类的静态方法来弹出对话框获取用户输入,缺点是不能自定义按钮的文字,默认为OK和Cancel: int main(int argc, char *argv[]) {QApplication a(argc, argv);bool isOK;QString text QInputDialog::getText(NULL, "Input …...
Unity3d使用Jenkins自动化打包(Windows)(一)
文章目录 前言一、安装JDK二、安装Jenkins三、Jenkins插件安装和使用基础操作 实战一基础操作 实战二 四、离线安装总结 前言 本篇旨在介绍基础的安装和操作流程,只需完成一次即可。后面的篇章将深入探讨如何利用Jenkins为Unity项目进行打包。 一、安装JDK 1、进入…...
HarmonyOS 应用开发之Want的定义与用途
Want 是一种对象,用于在应用组件之间传递信息。 其中,一种常见的使用场景是作为 startAbility() 方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递…...
enscan自动化主域名信息收集
enscan下载 Releases wgpsec/ENScan_GO (github.com) 能查的分类 实操: 首先打开linux 的虚拟机、 然后把下面这个粘贴到虚拟机中 解压后打开命令行 初始化 ./enscan-0.0.16-linux-amd64 -v 命令参数如下 oppo信息收集 运行下面代码时 先去配置文件把coo…...
分享全栈开发医疗小程序 -带源码课件(课件无解压密码),自行速度保存
课程介绍 分享全栈开发医疗小程序 -带源码课件(课件无解压密码),自行速度保存!看到好多坛友都在求SpringBoot2.X Vue UniAPP,全栈开发医疗小程序 - 带源码课件,我看了一下,要么链接过期&…...
基于YOLOv8与ByteTrack实现多目标跟踪——算法原理与代码实践
概述 在目标检测中,有许多经算法如Faster RCNN、SSD和YOLO的各种版本,这些算法利用深度学习技术,特别是卷积神经网络(CNN),能够高效地在图像中定位和识别不同类别的目标。Faster RCNN是一种基于区域提议的…...
C语言——函数练习程序
1.从终端接收一个数,封装一个函数判断该数是否为素数 #include <stdio.h>int pri(int num) {int i 0;for (i 2; i < num; i){if (num % i 0){return 0;break;}}if (i num-1){return 1;} }int main(void) {int num 0;int ret 0;scanf("%d", &num);…...
ssh 启动 docker 中 app, docker logs 无日志
ssh 启动 app, 标准输出被重定向 ssh 客户端,而不是 docker 容器的标准输出。只需要在启动时把app 标准输出重定向到 docker标准输出。 测试如下: 1.启动 docker docker run -it -p 60022:22 --name test test:v4 bash -c "service ssh restart;…...
WPF---1.入门学习
🎈个人主页:靓仔很忙i 💻B 站主页:👉B站👈 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:WPF 🤝希望本文对您有所裨益,如有不足之处…...
Vue3 + Vite + TS + Element-Plus + Pinia项目(5)对axios进行封装
1、在src文件夹下新建config文件夹后,新建baseURL.ts文件,用来配置http主链接 2、在src文件夹下新建http文件夹后,新建request.ts文件,内容如下 import axios from "axios" import { ElMessage } from element-plus im…...
【Rust】——编写自动化测试(一)
🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:…...
第十二章 微服务核心(一)
一、Spring Boot 1.1 SpringBoot 构建方式 1.1.1 通过官网自动生成 进入官网:https://spring.io/,点击 Projects --> Spring Framework; 拖动滚动条到中间位置,点击 Spring Initializr 或者直接通过 https://start.spring…...
MySQL索引18连问,谁能顶住
前言 过完这个节,就要进入金银季,准备了 18 道 MySQL 索引题,一定用得上。 作者:感谢每一个支持: github 1. 索引是什么 索引是一种数据结构,用来帮助提升查询和检索数据速度。可以理解为一本书的目录&…...
网站建设设计设计公司/济南seo公司报价
pwd 显示工作路径转载于:https://www.cnblogs.com/baxianhua/p/8942128.html...
怎么把网页发布到网上/seo整站优化方案
参考: https://blog.csdn.net/yunzhonghefei/article/details/89207243 https://blog.csdn.net/u013467442/article/details/88957485 1、jstack需要使用与进程一致的用户才能执行 2、查看CPU占用率高的进程:top cpu高达100.0us , 确定 p…...
嘉兴网站建设/百度免费推广有哪些方式
English Learning - L2 语音作业打卡 辅音咬舌音 [θ] [] Day29 2023.3.21 周二💌发音小贴士:💌当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音 [θ]…...
西安制作公司网站的公司/深圳seo排名优化
最近一直在找前端工作,前前后后面了几家公司,虽然不太顺利,但是收获还是有的,就过程中遇到的面试题总结一下 CSS1:标准盒模型/IE盒模型2:自适应三栏布局3:移动端自适应方案4:FLEX布局…...
国外专门做童装的网站/seo推广有哪些方式
2019独角兽企业重金招聘Python工程师标准>>> 网站发生恶意注册会员,有图形验证码 ,和短信验证码 但是还是有大量恶意注册: session 和 cookie都是可以随便伪造的。 验证码有打码平台。 短信验证有短信验证平台。 IP限制有虚拟拨号…...
5网站开发之美/郑州网站优化推广
课程地址:云数据库 MySQL 产品认证——腾讯云云数据库MySQL运维 腾讯云云数据库MySQL运维1. 实例管理1.1 创建腾讯云云数据库MySQL1.2 访问腾讯云云数据库MySQL1.3 只读实例与灾备实例2. 数据库管理2.1 账号管理2.2 MySQL参数2.3 DMC1. 实例管理 云数据库MySQL实例的…...