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.其他 (注:以上为目录结构范例,可供参考,您可根据实际情况增加、删减或修改目录结构。) |
温湿度这个太经典了,基本每个入门的人都得学,经典中的经典