IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机毕设选题 - 便携式空气质量检测系统(物联网 嵌入式) -> 正文阅读

[嵌入式]单片机毕设选题 - 便携式空气质量检测系统(物联网 嵌入式)


0 前言

🔥 Hi,大家好,这里是丹成学长的毕设系列文章!

🔥 对毕设有任何疑问都可以问学长哦!

这两年开始,各个学校对毕设的要求越来越高,难度也越来越大… 毕业设计耗费时间,耗费精力,甚至有些题目即使是专业的老师或者硕士生也需要很长时间,所以一旦发现问题,一定要提前准备,避免到后面措手不及,草草了事。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的新项目是

🚩 基于单片机的便携式空气质量检测仪

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:4分
  • 工作量:4分
  • 创新点:3分

🧿 选题指导, 项目分享:

https://blog.csdn.net/molodi/article/details/125933857


1 简介

基于IDT的便携式无线供电空气质量检测仪,随着近些年环保问题的日益严峻,身边的朋友也越来越重视自己的生存环境,尤其是对空气质量的关注度日益增高。我就打算自己设计制作一套便携式的空气质量检测仪,采用无线供电的方式来运行保证检测仪的运行,同时利用无线供电系统给检测仪内部的锂电池进行充电。(本项目采用的是IDT 5W无线充电开发套件)

2 主要器件

  • IDT15W无线充电开发套件
  • Arduino LGT8F328D单片机
  • A003最新款颗粒物传感器
  • S80053二氧化碳传感器
  • 2.2寸串口屏
  • 18650锂电池,容量2600mah
  • ETA9640充放电芯片,最大充放电电流1000ma

3 实现效果

在这里插入图片描述
在这里插入图片描述
IDT无线供电系统接收板
在这里插入图片描述

无线充电过程

4 设计原理

硬件说明

通过设计计算,整机负载电流约500ma,考虑到设计的充电电流是1000ma,所以项目选用了IDT 5W无线供电系统,该系统可以提供5V 1A的最大5W的功率输出,完全满足设计要求。(本项目采用的是IDT 5W无线充电开发套件)
在这里插入图片描述

项目的原理图部分:

包含三大部分组成:

1、无线供电锂电池充放电部分,由于传感器的TTL输出电平是3.3V,所以还需要通过一个LDO将MCU供电电源降为3.3V。传感器供电部分是5V(内部有LDO降压),有系统直接供电即可。本项目用的电池选用了常见的18650锂电池,容量2600mah。充放电芯片选用上海钰泰的ETA9640一体式芯片,最大充放电电流1000ma,自带锂电池保护电路,无需外围再加保护电路。无线供电接收板接口直接与USB供电接口并接,既可以采用USB供电,也可以采用IDT无线系统供电。

2、MCU部分选用了AVR内核的8位单片机LGT8F328D,传感器选用攀藤科技的A003最新款颗粒物传感器和森尔电子的S8 0053二氧化碳传感器(由于二氧化碳传感器价格较贵,最终未进行购买)。

3、显示屏幕选用了2.2寸串口屏,便于快速开发,降低开发难度。

在这里插入图片描述

在这里插入图片描述

项目的PCB图和3D图部分:

这个PCB板子尺寸为80*70mm,正面为主要电路和屏幕部分,反面为18650电池仓和两个传感器接口。

最终PCB板和焊接好的PCB板:

在这里插入图片描述

软件部分

本项目软件设计采用Arduino IDE开源编程框架,主要分为系统初始化和循环执行两大部分构成。

5 部分核心代码

/*

 

   本程序为V1版本空气质量检测仪代码,显示屏幕为2.2寸串口高分屏。

 

*/

 

#include <SoftwareSerial.h>//调用软串口库文件

SoftwareSerial pm(2, NULL);//定义PM2.5传感器接收引脚

SoftwareSerial co(4, NULL);//定义CO2传感器接收引脚

 

unsigned int CO2;//定义全局变量

unsigned int  pm25;//定义全局变量

 

 

void getCO2(unsigned char Data) //定义CO2计算函数

{

  static unsigned char RxBuffer[7];

  static unsigned char RxCnt = 0;

  RxBuffer[RxCnt++] = Data;

  if (RxBuffer[0] != 0xFE && RxBuffer[1] != 0x04)

  {

    RxCnt = 0;

    return;

  }

  if (RxCnt > 6)

  {

    CO2 = (int) RxBuffer[3] * 256 + (int) RxBuffer[4];

    RxCnt = 0;

    return;

  }

}

 

void getPM25()//定义PM2.5计算函数

{

  uint8_t mData = 0;

  uint8_t i = 0;

  uint8_t mPkt[32] = {0};

  int mCheck = 0;

  pm.listen();  //监听pm软串口

  delay(100);

  while (pm.available() > 0)

  {

    mData = pm.read();

    delay(2);

    if (mData == 0x42) //头数据1   OK

    {

      mPkt[0] =  mData;

      mData = pm.read();

      delay(2);

      if (mData == 0x4d) //头数据2  OK

      {

        mPkt[1] =  mData;

        mCheck = 66 + 77;

        for ( i = 2; i < 30; i++) //循环接收串口数据

        {

          mPkt[i] = pm.read();

          delay(2);

          mCheck += mPkt[i];

        }

        mPkt[30] = pm.read();

        delay(2);

        mPkt[31] = pm.read();

        delay(2);

        // Serial.println("-----------");  //系统调试用

        // Serial.print(mCheck);//系统调试用

        // Serial.print("  ");//系统调试用

        // Serial.println(mPkt[30] * 256 + mPkt[31]);//系统调试用

        if (mCheck == mPkt[30] * 256 + mPkt[31]) //CRC校验  OK

        {

          // Serial.println("CRC OK");//系统调试用

          pm25 = mPkt[12] * 256 + mPkt[13];//根据协议计算出PM2.5浓度值

          // Serial.print("pm25:");  Serial.print(pm25); Serial.println("ug/m3  ");//系统调试用

          Serial.flush();//清空串口缓存

          return;//返回

        }

      }

    }

  }

}

 

void setup()//程序初始化

{

  Serial.begin(9600);

  pm.begin(9600);

  co.begin(9600);

  delay(5000);

  Serial.println("SPG(2);"); //调用串口屏的第二页内容

  delay(100);

}

 

void loop()//循环执行程序

{

  getPM25();//调用PM2.5计算函数

  co.listen();  //监听co软串口

  delay(100);

  static unsigned char TxBuffer[] = {0xFE, 0x04, 0x00, 0x03, 0x00, 0x01, 0xD5, 0xC5};//定义读取指令

  co.write(TxBuffer, 8);//发送读取指令给CO2传感器

  delay(100);

  while (co.available())

  {

    getCO2(co.read());//获取CO2浓度值

  }

  Serial.print("LABL(48,0,40,159,'");  Serial.print(pm25);  Serial.print("',");  Serial.print(15);  Serial.println(",1);");//将PM2.5数据输出给屏幕

  Serial.print("LABL(48,161,40,319,'");  Serial.print(CO2);  Serial.print("',");  Serial.print(15);  Serial.println(",1);");//将CO2数据输出给屏幕

}

 

 

//程序结束,如有优化方案,欢迎沟通交流

🧿 选题指导, 项目分享:

https://blog.csdn.net/molodi/article/details/125933857

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:18:15  更:2022-09-25 23:18:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:16:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码