项目总结报告
项目介绍
利用温湿度传感器和压力传感器,采集环境信息,包括温度、湿度、气压,然后利用LCD屏幕进行显示
项目设计思路
利用温湿度传感器采集环境温度和湿度数据,并通过I2C协议将采集到的输入数据传输至树莓派。通过压力传感器获取大气压力信息,树莓派利用ADC模块采集传感器的电压信号并将其转换为大气压力值。接着,利用数据滤波算法处理采集到的传感器数据,将所需的显示内容通过编程传输至LCD屏幕进行实时显示。
为实现上述功能,首先需要设计并制作一个传感器电路板(PCB),将传感器正确焊接到电路板上,并将传感器电路板与主控设备进行连接。接下来,在树莓派上编写相应的软件来读取传感器数据,并通过编程控制LCD屏幕,实时显示处理后的数据。
温湿度传感器芯片介绍
NSHT30是一款高精度、低功耗的数字温湿度传感器,广泛应用于环境监测、气候控制、智能家居、农业温湿度监测等领域。该传感器基于先进的感应技术,提供稳定、精确的温湿度测量结果。以下是NSHT30的主要特点和技术参数:
主要特点:
1. 高精度:NSHT30提供±0.3°C的温度测量精度和±2%的相对湿度测量精度,适合需要高精度数据的环境监测应用。
2. 低功耗:具有极低的功耗,适合长期运行的电池供电系统。低功耗特性使得其在移动设备或远程监测系统中尤为重要。
3. 快速响应:传感器的响应时间短,可以快速捕捉环境变化,适应动态监测需求。
4. 数字输出:NSHT30使用I2C或SPI协议进行数据通信,简化了系统设计,并且可以直接与微控制器、树莓派等嵌入式设备进行连接和通信。
5. 小型封装:具有紧凑的封装设计,适合空间受限的应用场景。
6. 高稳定性:采用先进的校准技术,能够提供长时间稳定的测量结果,减少了长期使用中的漂移和误差。
技术参数:
• 温度测量范围:-40°C至125°C
• 温度精度:±0.3°C(在0°C至60°C范围内)
• 湿度测量范围:0%至100% RH(相对湿度)
• 湿度精度:±2% RH(在20%至80% RH范围内)
• 供电电压:1.5V至3.6V(典型值3.3V)
• 通信接口:I2C(标准、可配置地址)
• 功耗:待机模式下最低功耗,工作模式下可通过编程调整采样频率,进一步降低功耗。
应用场景:
• 环境监测:如室内温湿度控制、气候变化监测、温湿度数据采集等。
• 农业:用于温室种植的气候监控,帮助农民优化灌溉和通风策略。
• 智能家居:在空气净化器、空调、智能家居设备中用于温湿度检测,自动调节室内环境。
• 医疗设备:用于控制医疗设备的温湿度,确保设备工作在最佳环境条件下。
阅读datasheet,6.4介绍了i2c协议,如何获取数据 开始和停止。
具体到PCB的Layout建议:
1.温湿度传感器芯片位置尽量远离热源;
2.降低温湿度传感器芯片与PCB间的热传导;(芯片周围不覆铜,走线尽量细,PCB上芯片周围开孔,
降低热传导,或者采用柔性软板将温湿度传感器与测试主板进行物理隔离)
3.降低温湿度传感器芯片耦合到PCB上之后的热惯性;(温湿度传感器所在的PCB尽量薄,例如采用单
独的FPC软板装配温湿度传感器)
数据读取:
这里介绍一种数据读取的方法,向地址0x44,发送0x24000
传感器反馈温度(16bit),CRC(8bit),湿度(16bit),CRC(8bit)
换算成物理值公式:
温度=-45+175 *(Raw_T) /65535
湿度=100 *(Raw_T) /65535
压力传感器芯片介绍
NSPASx系列压力传感器是一款高性能、高精度的压力测量传感器,广泛应用于工业控制、液体和气体压力监测、自动化设备以及汽车、航空等领域。该系列传感器采用先进的MEMS(微电子机械系统)技术,能够提供准确、可靠的压力数据,同时具有较高的耐用性和稳定性。以下是NSPASx系列压力传感器的主要特点和技术参数:
主要特点:
1. 高精度测量:NSPASx系列提供精确的压力测量,具有较低的测量误差,能够适应各种工业应用中的高精度要求。
2. 广泛的测量范围:该传感器支持不同压力范围的选择,包括低压、中压和高压,满足不同工作环境的需求。
3. 多种输出方式:NSPASx提供模拟输出(如0-5V或4-20mA)和数字输出(如I2C或SPI协议),用户可以根据需求选择最合适的通信接口。
4. 耐高温与抗干扰能力:传感器设计具有较强的抗温差变化和电磁干扰能力,能够在恶劣环境下稳定工作。
5. 长期稳定性:采用高稳定性的MEMS压力传感元件和先进的温度补偿技术,保证长期使用中的测量精度。
6. 小型化设计:其紧凑的尺寸和模块化设计,方便集成到各种系统中,尤其适用于空间有限的应用场合。
7. 低功耗:传感器具有较低的功耗,非常适合用于电池供电系统或要求长时间稳定运行的场合。
技术参数:
• 压力测量范围:0 ~ 1 bar到0 ~ 1000 bar(根据具体型号,支持多种压力范围)
• 压力精度:±0.25% FS(全量程精度,具体精度依型号而定)
• 温度范围:-40°C至+125°C(部分型号可选更宽温度范围)
• 输出信号:
○ 模拟输出:0-5V、4-20mA等(具体型号支持不同输出)
○ 数字输出:I2C、SPI(根据型号选择)
• 供电电压:3.3V至5V(具体取决于输出类型)
• 工作温度范围:-40°C至+125°C(某些型号可选更广泛的工作温度范围)
• 响应时间:< 10 ms(快速响应,适应动态压力变化的监测需求)
• 长期稳定性:典型漂移小于±0.1% FS/年
应用场景:
1. 工业自动化:用于工业设备和生产线中压力监控与控制,例如气体压力、液压压力的实时监测。
2. 液体与气体监测:适用于液体和气体压力传感器的测量,如液体泵、气体管道的压力监测。
3. 汽车领域:在汽车引擎系统、轮胎压力监控(TPMS)等应用中,NSPASx可以实时监控压力变化,确保安全性与性能。
4. 航空航天:在航空器及其关键系统中(如燃油系统、气压系统)的压力测量,确保飞行安全。
5. 液压系统:用于液压设备中,如液压泵和液压系统的压力监控和调节。
6. 医疗设备:例如血压监测仪、呼吸机中的气体和液体压力监测。
NSPASx系列压力传感器凭借其卓越的测量精度、宽广的工作范围以及可靠的性能,在多种行业应用中表现出色,是实现精确压力控制和监测的理想选择。通过其灵活的输出方式,用户可以轻松集成到现有系统中,提高设备的可靠性和效率。
数据读取:
通过直接采集VOUT的ADC电压,读取得到uint16的RAW值。
计算绝对压力:
Volt_P= Raw_P /65535 *5
P =(Volt_P /5 -B )/A
A=0.008095, B=-0.00095
最终原理图、PCB
画原理图、PCB过程到的问题
遇到的问题1
温湿度传感器不知道传感器4个pin的间距。
方案1:需要实物测量才能够确认了。
方案2:芯片手册
把图片导入到PCB绘图中 ,然后照着图片画
最终解决方案1
最后发现KICAD中有温湿度传感器现成的模块
遇到问题2:
焊接传感器时,传感器的正面看不出那边是1号pin引脚
解决方案2:
芯片手册里面写了传感器的PACKAGE标识,并且在KICAD中的PCB原理图中把中间部分的标识画了上去,避免焊接时弄错
遇到问题3:
主控芯片的ADC采样是3.3V的,而压力传感器器供电5V的时候导致采集的电压超过的3.3V
解决方案3:
可以通过分压的方式采集传感器输出的电压。但要求分压的电阻具备较高的精度和抗热敏性。
与传感器供应商沟通后,建议使用ADC的3.3V供电参考电压给传感器器供电,也能得到较好的测量精度。
遇到问题4:
温度湿度传感器特别小使用一般的焊锡尝试了几次都失败了。
解决方案4:
购买焊浆进行焊接
实物照片:
打印的板子中没有两个上拉电阻,后来发现没有又直接改了原理图。但是测试发现,能够直接通讯,应该是主控中I2C已经有了上拉。
所以就没有重新再打板了。附件我上传了新版(带上拉电阻)的KICAD附件,本来想把旧版的KICAD文件上传的,可惜文件被我覆盖了。实物就是不带上拉电阻的。
另外,实物图中的电容也没有焊接,可能会对电路抗干扰能力产生影响。不过对演示来说影响不大。所以为了省力就没焊了。
两个芯片的电源和地共用,使用3V3供电。另外三根引脚分别是I2C和VOUT,分别用来传输温湿度和压力数据。
内心OS:
哇,那真的很棒呀!自己从设计板子开始,一路到焊接、调试成功,这整个过程可太有挑战性了,能顺利完成确实超级有成就感呢。即使它现在还比较简陋,没完全遵循设计规则也没关系呀,毕竟这是一个很好的开始嘛。
主控编程
使用十二指神探作为主控,其芯片为RP2040。露出的引脚定义如下:
CH0连接SDA IO20
CH1连接SCL IO21
GND与接线板GND连接
3V3与接线板POWER连接
CH6连接ADC
主控代码
C++ |
主控代码说明
这段代码实现了一个基于ESP32开发板的嵌入式系统,结合了传感器数据读取、LCD显示、按键输入和压力传感器的应用。具体来说,它集成了以下几个功能:
1. 显示模块(ST7789液晶屏):通过SPI接口与一个240x240分辨率的ST7789液晶屏通信,显示一些基本信息,例如温度、湿度和压力数据。
2. 温湿度传感器:通过I2C接口与外部温湿度传感器进行通信,获取环境的温度和湿度信息,并将数据展示在屏幕上。
3. 压力传感器:通过ADC输入读取一个模拟压力传感器的值,并计算出压力(单位:kPa)。
4. 按键输入:系统通过读取多个按键的状态(例如buttonM、buttonS、buttonPRESS 等)来进行用户交互。
具体实现的功能和模块
1.初始化液晶显示屏
Plain Text |
在这段代码中,我们使用st7789 库初始化了一个240x240像素的液晶屏。通过SPI接口与显示屏通信,能够实现图形和文本的显示。显示屏在启动时会显示一些基本文本信息,如"EETREE"和网址"www.eetree.cn"。
2.读取传感器数据
• 压力传感器:使用ADC模块读取模拟压力传感器的电压值,并通过公式转换为压力(单位:kPa)。公式使用了两个常量 A 和B,这些常量应该根据传感器的文档进行调整。
• pythonCopy Code
adc_value = adc.read_u16()
adc_value = adc_value * conversion_factor
pressure = (adc_value / 5B) / A
• 温湿度传感器:通过I2C接口与温湿度传感器通信,读取温度和湿度数据。具体操作是通过发送特定命令启动传感器采集数据,然后读取6字节数据来获取温度和湿度信息。
Plain Text |
3.按键输入处理(这部分是DEMO代码里面的 其实我没用到)
系统读取多个按键的状态,通过Pin 类的value() 方法获取每个按键的按下状态。通过这些按键,用户可以进行交互操作,代码中包含了多个按键如buttonM、buttonS 等,它们被用作输入的方式。
Plain Text |
4.数据显示
系统将读取到的温度、湿度和压力数据实时显示在液晶屏上。数据显示的格式为:
• 温度(单位:℃)
• 湿度(单位:%)
• 压力(单位:kPa)
这些数据通过display.text() 方法显示在屏幕上的不同位置。
Plain Text |
5.主循环
代码的主体是在while True 循环中执行的,循环不断地读取传感器数据并更新显示屏上的内容。每隔0.5秒读取一次压力传感器和温湿度传感器的数据,并在屏幕上更新相应的信息。
C++ |
代码总结
这段代码的主要功能是通过传感器获取实时的温度、湿度和压力数据,并将这些信息通过SPI接口显示在ST7789显示屏上。同时,通过按键输入,用户可以与系统进行交互,可能用于触发某些特定的操作(虽然此处按键的具体操作还没有实现)。系统通过I2C总线与温湿度传感器通信,利用ADC模块获取模拟压力传感器的值,最终实现了一个完整的环境监测系统。
代码迭代
增加背景图片,并通过按键进行切换
显示曲线,并绘制示波器
总结:
本项目成功设计并实现了基于纳芯微NSHT30-QDNR和NSPAS3NII5RPAI芯片的环境监测系统。通过温湿度和压力传感器的采集,实时展示环境数据,为用户提供了精准的温湿度和大气压力监控解决方案。
1. 硬件设计:完成了主控芯片、传感器、显示模块的选型与集成,保证了数据采集的准确性和稳定性。I2C接口的应用确保了温湿度传感器的高效通信。
2. 数据处理:温湿度数据通过I2C协议获取,压力数据通过模拟信号采样并转换为大气压力。处理流程顺畅,数据精度达到设计要求。
3. 界面展示:采用LCD屏幕展示实时数据,界面简洁易读,符合用户需求。
4. 问题解决:成功解决了传感器焊接、压力传感器电压范围和I2C通信稳定性问题,保证了系统的稳定性与可靠性。
项目心得:
1. 硬件与软件的结合:硬件设计的稳定性是系统成功的关键,尤其是在传感器的选择与布局上。软件方面,数据采集与显示需要充分考虑实际使用场景,确保用户体验。
2. 调试的重要性:传感器接口的调试非常耗时,尤其是I2C协议和模拟信号的转换。调试过程中要细心,避免信号干扰和电压不匹配的问题。
3. 系统扩展性:项目设计时已考虑到未来扩展功能,如数据存储与分析、无线传输等,可以在后期继续优化和提升系统功能。
总的来说,本项目不仅实现了预期目标,还积累了丰富的硬件开发和嵌入式系统经验,为后续类似项目打下了坚实基础。