基于物联网的户外环境检测装置设计

news/2024/5/19 18:02:11/文章来源:https://blog.csdn.net/sheziqiong/article/details/127345626

目 录
摘 要 1
Abstract 2
第1章 绪论 4
1.2 选题背景及意义 4
1.2 研究现状 4
1.3本课题的发展趋势和研究可行性 5
1.4研究主要内容 5
第2章 基于物联网的户外环境检测装置设计概述和相关原理 6
2.1 系统的概述 6
2.1.1 总体设计方案 6
2.1.2 总体框图 6
2.2 相关理论 7
2.2.1 STM32平台 7
2.2.2 WIFI模块 10
第3章 基于物联网的户外环境检测装置硬件电路设计 13
3.1 主控电路 13
3.2 WIFI通信模块 14
3.3报警模块 14
3.4温湿度模块 15
3.5 光照强度模块 16
3.6 PM2.5模块 17
3.7 空气质量模块 17
3.8液晶模块 18
3.9电源模块 19
第4章 基于物联网的户外环境检测装置软件设计 20
4.1 总体程序流程图 20
4.2 WIFI模块 21
4.3 LCD5110模块 22
4.4 BMP180模块 26
4.5 DHT11模块 33
4.7 ADC-DMA模块 36
第5章 基于物联网的户外环境检测装置Android应用 39
5.1 Android系统简述 39
5.1.1 Android系统架构 39
5.1.2 Android组件模型 41
5.2 Android开发环境的搭建 42
第6章 户外环境检测装置运行与调试 45
结 论 47
致 谢 48
参考文献 49
附录一:总体电路图 50
附录二:程序部分代码 52
第2章 基于物联网的户外环境检测装置设计概述和相关原理
2.1 系统的概述
2.1.1 总体设计方案
本设计包括了主控制器、WIFI模块、温湿度监测、光照监测、PM2.5监测、手机客户端以及电源模块。电源模块为整个系统提供供电,主控制器模块通过串口协议与WIFI模块进行通信,利用串口发送AT指令使其与手机的wifi通信,通过STM32采集传感器检测到的数据,并且通过wifi发送到手机客户端,并可通过手机控制阈值,当数据值超过了阈值,单片机控制语音播报模块进行语音信息的播放。
该系统主要应具备以下功能:
(1)可实现环境监测系统的正常功能;
(2)Arduino手机app远程显示控制能够进行设置报警数值;
(3)STM32通过各种接口控制温湿度传感器,光照强度传感器,空气质量传感器,PM2.5传感器以及大气压强传感器,进而获取环境参数,并显示在LCD5110屏幕上;
(4)能够实现AC-DC降压电路给STM32系统供电。
2.1.2 总体框图
该系统采用的是5V供电,主要是以STM32平台作为主控制器,主控制器模块通过串口协议与WIFI模块进行通信,利用串口发送AT指令使其与手机的wifi通信,通过STM32采集传感器检测到的数据,并且通过wifi发送到手机客户端,并可通过手机控制阈值,当数据值超过了阈值,单片机控制语音播报模块进行语音信息的播放。
本系统总体框图如下:
在这里插入图片描述

2.2 相关理论
2.2.1 STM32平台
目前嵌入式系统中32位微控制器(MCU)的使用率正逐年增长,32位ARM体系结构己经成为一种事实上的标准,随着高端 32位嵌入式微处理器价格的不断下降和开发环境的成熟,使得32位嵌入式处理器正日益挤压原先由8位微控制器主导的应用空间。随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经开始成为高中端嵌入式应用和设计的主流。使用32位架构不仅能 提升性能,还能降低相同成本下的系统功耗和节约总成本以及缩短产品上市时 间。并使得嵌入式系统可随着产品的性能和需求不断扩展而升级。
本文选用了一款基于 ARM Cortex-M3 内核芯片—由意法半导体(ST)推出的 STM32F103 芯片。STM32F103 系列微处理器是首款基于ARMv7-M体系结构的32位标准 RISC(精简指令集)处理器,很高的代码效率,在8位和16位系统的存储空间上发挥了ARM内核的高性能。该系列微处理器工作频率为72MHz,内置 高达128K字节的Flash存储器和20K字节的SRAM,具有丰富的通用I/O 端口。
作为最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低成本的平 台、缩减的引脚数目、降低的系统功耗,同时提供了卓越的计算性能和先进的 中断响应系统。丰富的片上资源使得 STM32F103系列微处理器在多种领域如电机驱动、实时控制、手持设备、PC 游戏外设和空调系统等都显示出了强大的发 展潜力。
STM32F103 系列微处理器主要资源和特点如下:
1.多达 51 个快速 I /O 端口, 所有 I/O 口均可以映像到 16 个外部中断, 几 乎所有端口都允许 5V 信号输入。每个端口都可以由软件配置成输出(推挽或开 漏)、输入(带或不带上拉或下拉)或其它的外设功能口。
2.2 个 12 位模数转换器,多达 16 个外部输入通道,转换速率可达 1MHz,转 换范围为 0-36V,具有双采样和保持功能。内部嵌入有温度传感器,可方便的测 量处理器温度值。
3.灵活的 7 路通用 DMA 可以管理存储器到存储器、设备到存储器和存储器 到设备的数据传输,无须 CPU 任何干预。通过 DMA 可以使数据快速地移动 CPU 的 资源来进行其他操作。DMA 控制器支持环形缓冲区的管理,避免了控制器传输 到达缓冲区结尾时所产生的中断。它支持的外设包括:本文转载自http://www.biyezuopin.vip/onews.asp?id=11783定时器、ADC、SPI、I2C 和 USART 等。
4.调试模式:支持标准的 20 脚 JTAG 仿真调试以及针对 Cortex- M3 内核的 串行单线调试(SWD)功能。通常默认的调试接口是 JTAG 接口。
5.含有丰富的通信接口,三个USART异步串行通信接口、两个I2C接口、两个 SPI接口、一个CAN 接口和一个USB接口,为实现数据通信提供了保证。
除工业可编程逻辑控制器(PLC)、家电、工业及家用安全设备、消防和暖气 通风空调系统等传统应用,智能卡和生物测定等消费电子应用外,新的 STM32 系列还特别适合侧重低功耗的设备,如血糖和血脂监测设备。

int main(void)
{delay_init();NVIC_Configuration();TIM_Test();         //定义频率为100HZ的定时器uart_init(115200);    //初始化串口usart3_init(115200);IIC_Init();	         //初始化I2C	DHT11_Init();Adc_Init();          //初始化ADC	KEY_Init();LCD_Init();LCD_Clear();lcd_start();wifiAp_init();sendWifi=1;        LCD_Clear();while(1){if(COUNT%200==0)                               //500ms更新一次数据{adConvert();                               //读取AD值DHT11_Read_Data(&temperature,&humidity);		//读取温湿度值}key_service();                            //按键服务display_service();                         //显示界面Beep();if(COUNT>=4000){if(sendWifi==1){LCD_Write_Char(8,5,'s');LCD_Write_Char(10,5,'e');LCD_Write_Char(12,5,'n');LCD_Write_Char(14,5,'d');LCD_Write_Char(16,5,'.');LCD_Write_Char(18,5,'.');LCD_Write_Char(20,5,'.');LCD_Write_Char(22,5,'.');atk_8266_send_cmd("AT+CIPSEND=0,14","OK",200); //发送数据指令atk_8266_send_data(TxBuffer,"OK",400); //发送指定长度的数据LCD_Write_Char(8,5,' ');LCD_Write_Char(10,5,' ');LCD_Write_Char(12,5,' ');LCD_Write_Char(14,5,' ');LCD_Write_Char(16,5,' ');LCD_Write_Char(18,5,' ');LCD_Write_Char(20,5,' ');LCD_Write_Char(22,5,' ');} COUNT=0;}}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法 目录 算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法效果一览基本介绍模型结构程序设计学习总结参考资料效果一览 基本介绍 针对集成学习参数众多,缺乏高效准确的参数寻优方法的问题,提出了基于贝叶斯优化随机森林方法…

k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

RK3588+AI工业视觉检测设计方案

本文详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格,以及详细的硬件接口设计参考说明,使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通,智慧医疗等人工智能领域的智能终端设备。…

自定义ClassLoader

一,如何自定义classLoader? 需要使用加载器的loadClass方法:ClassLoader().loadClass 查看loadClass方法源码 首先检查加载,调用父5加载器开始双亲委派机制, 如果没有加载到,就调用findClass方式 打开发现…

JVM加载class文件的原理机制

JVM加载class文件的原理机制 JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的; 当Java程序需要使用某个类时,JVM会确 保这个类已经被加载、连接(验证、准备和解析)和初始化。 类的加载是指把类的.class文件中的数据 读入到内存中&#xff0c…

神经网络中各个隐藏层,深度神经网络隐藏层数

1、神经网络的隐含层节点数怎么设置啊?比如要设置18层隐含节点数!跪求,工作急用! 隐层一般是一层或两层,很少会采用三层以上,至少隐层的节点数确定,一般有以下几种方法:1、有经验的…

【ArchSummit】通过ArchSummit 全球架构师峰会对企业数字化转型的思考

前言 📫 作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &a…

生命在于学习——Socket编程(偏安全方面)

本篇文章仅用于学习记录和交流,不得用于其他违规用途,产生的不良后果,自己负责。 一、Socket介绍 首先socket (套接字) 是工作在应用层和传输层之间一个抽像层 , 为什么要有他呢 ? 虽然我们已经有了ipport可以和世界上任意一台计算机上的软…

chainlink 小实战 web3 “捐助我”项目合约及前端交互——关于 《Patrick web3 course Lesson 7-8 》课程代码中文详解

FundMe lesson 的 示例 本质上是一个合约上对 eth 接收和发送的演示,但这个演示增加了前端 ethers 的交互,以及对 chainlink 预言机喂价的使用。 总体来说是一些 Defi 项目上的某一块功能的缩影,不过总体来说还是挺简单的。 若不会 chainli…

(附源码)计算机毕业设计SSM基于JAVA人事管理系统

(附源码)计算机毕业设计SSM基于JAVA人事管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

Android系统10 RK3399 init进程启动(四十二) init.rc文件解析逻辑

配套系列教学视频链接: 安卓系列教程之ROM系统开发-百问100ask 说明 系统:Android10.0 设备: FireFly RK3399 (ROC-RK3399-PC-PLUS) 前言 Android init启动的时候会解析init.rc, 当然还有很多其他rc文…

DPR和REALM论文笔记

DPR(2020 EMNLP) 该论文的模型主要是一个双塔结构如下所示: 整个模型的训练数据D包含m个例子,其中每个例子由一个问题qiq_iqi​、一个相关段落pip_i^pi​、n个不相关段落pi,1−,⋯,pi,n−p_{i,1}^-,\cdots,p_{i,n}^-pi,1−​,⋯,pi,n−​ D{⟨qi,pi,pi,…

JUC-3.三大辅助类/阻塞队列/forkjoin

目录 一、三大辅助类 1.1 CountDownLatch 1.2 CyclicBarrier 1.3 Semaphore 二、阻塞队列 2.1 概念 2.2 常用的阻塞队列 三、forkjoin 一、三大辅助类 JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过 多时 Lock 锁的频繁操作。…

【ASM】字节码操作 转换已有的类 Class Transformation 原理 【重要】

文章目录 1.概述2. Class-Reader/Visitor/Writer2.1建立联系2.2执行顺序2.3执行顺序的代码演示3.串联的Field/MethodVisitors4. Class TransformationJ4F5.总结1.概述 上-篇文章:【ASM】字节码操作 转换已有的类 ClassReader 删除方法 添加方法 2. Class-Reader/Visitor/Wri…

(附源码)计算机毕业设计SSM基于Java家庭财务管理系统

(附源码)计算机毕业设计SSM基于Java家庭财务管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

《视觉SLAM十四讲》 编译报错问题汇总 Ubuntu20.04

Ubuntu 20虚拟机环境安装 高翔原视频是ubuntu14.04,看了一下,有很多库都有兼容问题,所以初步按这个Ubuntu 20装: 这个教程是ubuntu20的,用ubuntu14会不兼容,比如qt5.12.12无法安装等(需要5.12.3&#xff0…

Web3.0游戏是否还有未来?

当前Web3.0领域已经大规模减速。 对大多数投资者来说,Web3.0游戏是一个炒作噱头,他们更关心投资回报,不那么在意真正交付给玩家的游戏产品,游戏的中长期运营也就失去了保障,今年以来的各种Web3.0游戏的遭遇证明了这一…

postgresql源码学习(十九)—— MVCC④-可见性判断 HeapTupleSatisfiesMVCC函数

拖了好久总算把这一节啃完了...做个记录,有一部分判断条件的案例还没想到,集齐之后可能会再加一篇案例。 一、 可见性判断 回顾一下前面提到的SNAPSHOT_MVCC类型快照的可见性判断条件: postgresql源码学习(十七)—— …

SQL学习1---表的创建和修改,数据的增删改

目录 一:SQL使用规范 二:DDL(Data Definition Language,数据定义语言) 三:DML(Data Manipulation Language,数据操纵语言) 四:创建和操纵表 五:表的数据插入…

树莓派(一)python接口RPi.GPIO介绍

​ 目录 导入 RPi.GPIO 模块: 引脚编号 设置channel 设置多个通道 获取输入 设置输出 输出到多个通道 清理 RPi 板信息和 RPi.GPIO 版本 导入 RPi.GPIO 模块: try:import RPi.GPIO as GPIO except RuntimeError:print("Error importing RPi.GPI…