Ruihao Ke 发表于 2021-4-23 09:14:03

环境监测仪

1.项目背景由于是初次接触STM较高端的产品,开发经验尚浅,所以将目标定在了相对容易实现的环境监测仪。2.作品简介本设计全程使用CubeMX、TouchGFX以及MDK5进行开发。环境监测仪以STM32H735G-DK为主机,MB1355C为从机。使用无线模块完成主-从机之间的通讯。
从机利用open MEMS工具包提供的传感器算法,完成传感器模块的信号采集。传感器模块中包括-温湿度计、气压计和磁力计。从机的显示终端为一块OLED12864。主机通过由TouchGFX配置的GUI,来显示主要的显示部分以及实现人机交互。主机利用来自从机的数据完成以下若干项功能:1. 各传感器数据同屏的柱状图式总览2. 图表式的传感器数据日志3. 日期时间的显示及设置从机自身的独立功能:4. 从机数据显示5. 电子指南针其它功能:中英文切换
3.系统架构
4. 各部分功能实现功能一-总览-柱状图式传感器数据显示
功能二-图表式传感器数据日志温度传感器:
湿度传感器:
功能三-日期时间的显示及设置日期设置:时间设置:
功能四-从机数据显示
功能五-电子指南针
其它:开机界面:
中英文切换:
5.视频演示6.源码
请附上相关实现代码,并加以说明。电子指南针源码://计算方位角float Get_LIS2MDL_Angle(void){      IKS01A3_MOTION_SENSOR_GetAxes         (IKS01A3_LIS2MDL_0, MOTION_MAGNETO , &MOTION_SENSOR.Axes_LIS2MDL );      IKS01A3_MOTION_SENSOR_GetAxesRaw      (IKS01A3_LIS2MDL_0, MOTION_MAGNETO , &MOTION_SENSOR.AxesRaw_LIS2MDL );//三轴磁力计
      short x = MOTION_SENSOR.Axes_LIS2MDL.x + 360.5;//校准值(max + min) / 2      short y = MOTION_SENSOR.Axes_LIS2MDL.y + 258.5;//校准值(max + min) / 2      double Angle = ((atan2((double)(y),(double)(x))) * PI) + 180;      return Angle;}
打印图像:void Print_Compass(void){      float Target_X = cos((Angle_Sensor - 180) * PI2) * 15;      float Target_Y = sin((Angle_Sensor - 180) * PI2) * 15;      float Font_X = cos((Angle_Sensor - 180) * PI2) * 21;      float Font_Y = sin((Angle_Sensor - 180) * PI2) * 21;
      OLED_Circle(32,32,31,1);      OLED_Line(32,32,Target_X + 32,Target_Y + 32,1);
      OLED_Show_Str(Font_X + 29,Font_Y + 28,"N",Font6x8,0);
}
7.项目总结
项目收获、过程体会、成果分享等。8.其他

(注:以上为目录结构范例,可供参考,您可根据实际情况增加、删减或修改目录结构。)

common123 发表于 2022-1-7 21:32:38

stm32设计几个模拟量的输入、运算,然后在电脑上显示。大虾可以弄吗

sealoong 发表于 2022-2-21 14:19:16

温湿度这个太经典了,基本每个入门的人都得学,经典中的经典
页: [1]
查看完整版本: 环境监测仪