【IoT】无线温度采集系统设计

news2024/11/24 3:55:04

随着工业和农业的发展,无线采集系统的应用范围变得更加广泛,对无线数据采集系统的测量参数也越来越多,精准度也越来越高。目前国内外有很多的无线温度采集系统,但很多的无线温度采集系统存在很多问题,如采集速度和稳定性不够高,不能适应复杂的环境,采集精准度不够高等等。因此,需要性能更高的无线数据采集系统来满足工农业的需求。

本设计是基于单片机的无线温度采集系统,由数据采集发送模块和数据接收模块两个模块组成。数据采集发送模块由DS18B20数字温度传感器、LCD1602液晶显示屏、单片机、NRF905数据发送模块组成;数据接收模块由单片机、LCD1602液晶显示屏、NRF905数据接收模块组成。DS18B20数字温度传感器把信号直接传给的单片机,单片机把数据进行电平转换,然后通过NRF905数据发送模块把数据发送出去,同时将数据显示到LCD1602液晶显示屏。NRF905数据接收模块接收到数据将数据显示在LCD1602液晶显示屏。

本设计最终成功实现了温度采集和数据的无线传输,具有传送距离远、测量准确、应用广泛等特点。

系统整体设计

本文主要设计的是基于单片机的无线温度采集系统,该系统由发送端和接收端两个部分组成。发送端由DS18B20数字温度传感器、LCD1602液晶显示屏、单片机、NRF905数据发送模块组成。接收端由单片机、LCD1602液晶显示屏、NRF905数据接收模块组成。

系统工作原理

本系统温度传感器采用DS18B20,显示部分采用LCD1602,无线通信部分采用NRF905模块。DS18B20主要完成温度采集,把周围的温度模拟信号通过1-wire总线直接传给单片机,单片机把数据进行电平转换,然后通过NRF905数据发送模块把数据发送出去,同时将数据显示到LCD1602液晶显示屏。NRF905数据接收模块接收到数据将数据显示在LCD1602液晶显示屏上。该系统可实现对温度实时多点检测,还实现了远程无线通信,可以对DS18B20覆盖的区域进行实时监控。

 硬件设计

核心控制器件--STC89C52

STC89C52是一款高性能的8位微控制器。具有8K字节可编程Flash存储器,512字节数据存储空间,内带4K字节EEPROM,而且可以直接使用串口下载。

STC89C52单片机封装采用的是双列直插封装(DIP40)。

单片机的最小系统:

单片机的最小系统主要由单片机、电源、晶振电路、复位电路组成。

本系统单片机采用是STC89C52RC。单片机电源采用标准+5V电源。EA接高电平,选用片内ROM作为程序存储器。

晶振电路为单片机定时计数器等提供时钟信号,本设计采用内部时钟方式,在XTAL1和XTAL2外接12MHz晶振和陶瓷电容。因为单片机内部有一个高增益反相放大器,当外接12MHz晶振后,就会构成自激振荡器,并产生时钟脉冲,时钟脉冲可以为单片机定时计数器提供时钟信号。

复位电路采用外部复位。当按键按下时,RST脚接高电平,完成系统复位。

注意晶振电路尽可能的与单片机靠近,路线尽量短。

电源电路

本设计是基于单片机的无线温度采集系统,单片机和LCD1602采用标准+5V直流电源供电。NRF905通信模块采用3.3V直流电源供电。采用电压转换得到3.3V直流电源。本设计采用AMS1117-3.3稳压芯片把5V转换成3.3V。

电压转换电路:

数字温度传感器DS18B20

温度传感器采用DS18B20的引脚排列:

温度传感器利用独有的单总线协议,只需要一个单线端口通讯,通过这根口线从DS18B20读出或者写入信息。板载上拉电阻与单片机直接相连。每个器件有唯一的64位序列号存储在内部只读存储器中。高速暂存器为8字节的存储器,头两个字节包含温度传感器输出的温度信息,第3、4字节为TH(报警温度上限)、TL(报警温度下限),第5字节为配置寄存器,用于确定温度值的数字转换分辨率,第6、7、8字节保留未用。其中,第3,4,5字节可存储到EEPROM中。DS18B20的精度采用增量递增的形式,其精度为可编程9,10,11,12位,分别为0.5℃,0.25℃,0.125℃,0.0625℃。在上电时默认精度为12位。本设计采用默认精度,即12位。

温度传感器测量范围为-55℃~+125℃,而且测量范围在-10℃~+85℃内精度高达±0.5℃。DS18B20可以直接从单线通讯线上汲取能量,除去了对外部电源的需求。除此之外,因为每个DS18B20有自己特有的位序列号,所以可允许多只DS18B20同时连在一根单总线上,因此可用一个微型控制器控制很多覆盖在一大片区域的DS18B20。这一特性可以应用到环境监测、探测建筑物、仪器或机器的温度以及过程检测和控制等等。

无线传输

NRF905的基本介绍

本设计的无线通信选用的是NRF905,由挪威Nordic VLSI公司制造。本设计采用标准3.3V电源,3.3V电源由ASM1117-3.3芯片电平转换而来,采用QFN封装,NRF905有32个引脚,选择工作于433MHz(工业)频道,不需要在频道之间转换,节省了频段之间的转换时间。由于数据传输过程中可能会受到干扰,使得收发数据不一致,因此一般发送端都需要对数据进行编码,编码后才能发送,同样接收端需要对数据译码,纠错。由于NRF905片内集成了曼彻斯特编码和译码,因此,不需要用户对收发数据进行任何编码和译码,使用非常可靠、方便。除此之外,NRF905采用ShockBurstTM发送和ShockBurstTM接收模式,特点是自动产生前导码和CRC(循环冗余码校验)。NRF905与微控制器之间通过SPI接口通信,SPI接口的配置非常简便。而且,NRF905是一款低功耗产品,以-10dBm的输出功率发射时电流为11mA,工作于接收模式时的电流为12.5mA,并且还有空闲模式与关机模式,这样更节能。

NRF905的应用非常广泛,可用于无线遥控、遥感勘测、无线报警及安全系统、无线数据通讯、无线开锁、家庭自动化、玩具等。

NRF905进行数据收发时主要依靠SPI接口和微控制器,通过射频收发模式进行无线数据传送,非常可靠、方便。

NRF905工作模式和节能模式

NRF905有两种工作模式和两种节能模式。两种节能模式分别为为空闲模式和关机模式。两种工作模式分别为为ShockBurstTM发送模式和ShockBurstTM接收模式。其工作模式由TRX_CE、TX_EN和PWR_UP三个引脚决定:

ShockBurstTM模式

NRF905可以处理与射频数据包有关的高速信号。NRF905通过SPI接口与微控制器通信,微控制器可以通过配置的SPI接口来决定数据在微控制器中低速处理,在NRF905中高速发送。在ShockBurstTM发送模式下,NRF905有自动产生字头和CRC校验码的功能。当发送完成后,置高数据准备好(DR)引脚,这样微控制器就可以检测到发送完成。在ShockBurstTM接收模式下,当NRF905接收到一个包含正确地址和数据的数据包后,置低地址匹配(AM)和数据准备好(DR)两个引脚,这样微控制器就可以检测到接收完成。这样可以降低微控制器的存储需求,降低成本,而且还可缩短软件开发的时间。

LCD1602

 LCD1602简介

LCD1602的功能是能够显示字母、数字、符号等,是一种点阵式LCD。LCD1602可以显示16*2,即32个字符,工作电压4.5-5V,工作电流2.0mA(5.0V),本设计采用标准+5V直流电源。LCD1602是一种5*7点阵,可以通过指令设置带光标显示的字符显示。如图3-7所示是LCD1602液晶显示屏实物。

 软件

NRF905发送步骤

  1. 当有数据需要发送时,通过通信应用协议和器件配置来确定SPI接口速率。微控制器件通过SPI接口按时序把TX_address和要发送的数据传给NRF905;
  2. 开启NRF905的ShockBurstTM发送模式:设置TRX_CE=1,TX_EN=1;
  3. NRF905的ShockBurstTM发送:自动开启射频寄存器、打包数据包(带字头和CRC校验码)、发送数据包、当数据发送完成后,设置数据准备好引脚=1;
  4. 设置AUTO_RETRAN=1,NRF905连续发送数据包,直到设置TRX_CE=0;
  5. 当设置TRX_CE=0后,NRF905数据发送完成,自动进入空闲模式。

注意:当进入ShockBurstTM工作模式,若开始发送数据,不管TRX_EN=1、TX_EN=1、TRX_EN=0、TX_EN=0,发送过程都会被逐一处理完。只有当前一个数据包发送完毕后,NRF905才可以接收下一个数据包。

NRF905接收步骤

  1. 进入NRF905的ShockBurstTM接收模式:设置TRX_CE=1,TX_EN=0;
  2. 等待650us,NRF905不断监测信息,等待接收数据;
  3. 当同一接收频段的载波被NRF905检测到后,设置载波检测引脚=1;
  4. 当一个相匹配的有效地址被接收后,设置地址匹配引脚=1;
  5. 当一个正确的数据包被成功接收完后,字头、地址、CRC校验位被NRF905自动移除,接着设置数据准备引脚=1;
  6. 设置TRX_CE=0,NRF905进入空闲低电流模式;
  7. 微控制器通过SPI接口,以合适的速率读出有效数据,并移动到微控制器内;
  8. 接收完所有数据后,NRF905设置数据准备好引脚和地址匹配=0;
  9. NRF905能进入ShockBurstTM接收模式、ShockBurstTM发送模式、关机模式。

注意:当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,NRF905的工作模式将发生改变,数据包丢失。当地址匹配脚的信号被微处理器接收到后,可以判断出NRF905正在接收数据包,可让NRF905继续接收该数据包还是进入下一个工作模式。 

 

 温度采集:

 

 

 

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

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

相关文章

docker网络基

本文简单介绍下,容器之间的网络访问、容器与宿主机之间的网络访问、宿主机上有哪些网络接口。lolocal的简写,本地回环地址,127.0.0.1,它代表本地虚拟设备接口,默认被看作是永远不会宕掉的接口eth0ethernet的简写&#…

OraDump导出套件

OraDump导出套件 只需单击几下即可将数据从Oracle转储文件导出到流行的数据库和格式。 OraDump Export Kit是一个将数据从Oracle转储文件导出到流行数据库和格式的软件包。该产品具有高性能,因为它直接读取转储文件。命令行支持允许编写脚本、自动化和安排转换过程。…

结构建模设计——Solidworks软件之装配体操作基本总结三(高级配合、机械配合、快捷菜单功能)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…

纹理开启Mipmap导致压缩失败的问题

1)纹理开启Mipmap导致压缩失败的问题 ​2)使用TextMeshPro能否避免使用Resources文件夹 3)用透视摄像机去分层管理UI的优势和好处 4)Houdini中切线空间向量怎么在Unity Shader还原出原向量 这是第325篇UWA技术知识分享的推送&…

多项新规重磅发布,微信视频号近期需要关注这几点

随着功能的完善和内容生态的丰富,视频号逐渐放慢产品更新频率,将重点放到商家准入标准、创作者扶持计划上来,本期我们将更侧重解读平台新规,帮助大家了解行业动向,把握最新趋势。01 视频号小店结算规则修订 取消48小时…

java使用tesseract-ocr进行文字识别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、tesseract-ocr是什么?二、使用步骤1.下载exe安装包2.安装3.使用3.设置全局path二、java如何进行调用1.引入依赖2.demo使用3.环境变量配置前言 公…

【Java】Spring更简单的读取和存储

文章目录Spring更简单的读取和存储对象1. 存储Bean对象1.1 前置工作:配置扫描路径1.2 添加注解存储Bean对象1.2.1 Controller(控制器存储)1.2.2 Service(服务存储)1.2.3 Repository(仓库存储)1.2.4 Component(组件存储)1.2.5 Configuration1.3 为什么要这么多类注解…

筑基七层 —— 数据在内存中的存储?拿来吧你

目录 零:移步 一.修炼必备 二.问题思考 三.整型在内存中的存储 三.大端字节序和小端字节序 四.浮点数在内存中的存储 零:移步 CSDN由于我的排版不怎么好看,我的有道云笔记相当的美观,请移步至有道云笔记 一.修炼必备 1.入门…

web客户端-websocket

1、websocket简介 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手&#xff0c…

一文教你把ChatGPT变成MySQL数据库,颠覆你的认知

ChatGPT是当前最热门的产品了,很多人已经在用ChatGPT问答、写文章、编程、做题甚至是通过了各种考试。今天我用几个步骤来带着大家体验如何把ChatGPT变成MySQL数据库。 首先,我们需要创建一个数据库,让chatgpt把自己当做一个数据库,可以给它一个定义: 你来充当一个mysql数…

自定义复杂图片水印

我的社交能力还不如5岁儿童和狗。 文章目录前言一、主要工具类总结前言 之前写过一些简单的图片压缩和图片加水印:JAVA实现图片质量压缩和加水印 本次主要是针对图片加水印进行一个升级,图片水印自定义,自适应大小。 来,先看几…

JS语法让人困惑的点 “==与===”

在JS中有很多神奇的语法,非常让人困惑,我们就先一一道来,相信你在开发中或多或少都踩过这些坑,或者让人无法理解。 今天我们就来说下【】和【】 这题对于很多没有系统学过前端开发的技术人员来说,算个重点&#xff0c…

LLFlow沦为和代码解读

LLFlow沦为和代码解读 1.测试时代码的运行位置 sr:什么意思 sr 和 z 这里又将模型设置为了训练模式 所以下面这部分代码应该是测试时运行的所有代码 这个就是测试时使用的网络模型框架 下面应该就是self.netG的网络模型框架 但是这个z的网络模型框架代码还不…

前端基础之HTML扫盲

文章目录一. 第一个HTML程序1. 创建一个HTML文件并运行2. HTML的基本结构二. HTML常见标签1. 注释标签2. 标题标签3. 段落标签4. 换行标签5. 格式化标签6. 图片标签7. 超链接标签8. 表格标签9. 列表标签10. 表单标签10.1 input标签10.2 select标签10.3 textarea标签11. 无语义标…

Outlook账号被封?别慌,一步步教你怎么申诉

相信很多兄弟们使用Outlook不止是为了注册第三方平台,很多时候还会用来发送一些营销广告。但是广告邮件发多了很容易被官方检测到并查封。龙哥考虑到这个问题,就干脆给兄弟们也出一份Outlook的申诉教程,保证大家都从注册、养号、防关联到解封…

DataGear 使用数据集计算属性功能制作数据可视化图表

DataGear 在4.5.0版本新增了数据集计算属性特性,支持在定义数据集时对原始数据进行二次计算处理。 利用这一特性,可以更加方便灵活地制作数据可视化图表。 本文以某公司近两年季度销售额Excel为例,介绍如何基于数据集计算属性功能制作数据可…

Vue跨级通信(重点)

当不使用Vuex的前提下,子孙传递就得使用另外一种办法:provide 和 inject 总结:provide / inject 类似于消息的订阅和发布。- inject接收数据。- provide提供或发送数据,(1)provide(name&#xf…

Dubbo性能调优参数以及原理

Dubbo作为一个服务治理框架,功能相对来说比较完善,性能也挺不错。但很多同学在使用dubbo的时候,只是简单的参考官方说明进行配置和应用,并没有过多的去思考一些关键参数的意义,最终做出来的效果总是差强人意,接下来我们…

扬帆优配|反弹涨超70%,昨收三连板,稀土行业或迎大事件

本年第一批稀土挖掘锻炼目标行将发放。 2月22日晚,东易日盛公告称,公司收到董事、副总经理兼财务总监李双侠出具的《关于未严格执行股份减持方案的致歉函》,其此次减持方案已施行结束,但在施行减持方案时,因操作失误&a…

从没想过开源 API 工具的 Mock 功能,这么好用

很多时候,接口尚未开发完成,在系统交互双方定义好接口之后,我们可以提前进行开发和测试,并不依赖上游系统的开发实现。 通过使用Mock模拟数据接口,我们即可在只开发了UI的情况下,无须服务端的开发就可以进行…