# EarthquakeSignalProcessingBasedOnSTM32 **Repository Path**: cold-falling/earthquake-signal-processing-based-on-stm32 ## Basic Information - **Project Name**: EarthquakeSignalProcessingBasedOnSTM32 - **Description**: 一个基于stm32的小项目,用于随身地震信号监测。 - **Primary Language**: C++ - **License**: EPL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-07 - **Last Updated**: 2025-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: C语言, Vue, SpringBoot, stm32 ## README # Earthquake Signal Processing Based On STM32 ## 介绍 ​``` 本项目为`STM32`开发板`STM32F103C8T6`开发板,使用`VSCode`进行开发,使用`STM32F103C8T6`开发板进行信号处理.完成MQTT协议通信,实现地震信号处理,并使用`MQTT`协议将处理后的数据发送到`MQTT`服务器,并在`MQTT`服务器上显示处理后的数据.如果出现紧急情况,服务器会发送短信通知给用户.如果用户在一段时间内处于高危状态,系统会自动向服务器同步GPS信息,同时必要时会通知紧急联系人.``` ## 基本功能 1.使用`STM32`开发板进行数据采集和数据处理. 2.使用`MQTT`协议通信,实现地震信号处理,并使用`MQTT`协议将处理后的数据发送到`MQTT`服务器,并在`MQTT`服务器上显示处理后的数据. 3.实时显示处理后的数据,并使用`STM32`开发板进行数据采集和数据处理. 4.如果出现紧急情况,服务器会发送短信通知给用户. 5.实时获取MPU6050传感器数据,并处理数据, 判定穿戴者的状态,并实时显示处理后的数据. ## 项目结构 ``` EarthquakeSignalSampleAndDeposeSystem ├── library │ ├── basic_library │ │ └── stm32f103c8t6 固件库及标准库 │ └── expand_library │ ├── bluetooth (蓝牙模块驱动程序) │ ├── delay (延时函数库) │ ├── dma (DMA 驱动库) │ ├── flash (Flash 读写驱动库) │ ├── gps (GPS 模块驱动库) │ ├── json (JSON 字符结构生成函数库) │ ├── log (日志信息读写函数库) │ ├── moblie_net (4G 移动网络驱动库) │ ├── mpu (MPU6050 传感器驱动库) │ ├── mqtt (MQTT 协议库及驱动库) │ ├── screen (屏显驱动库) │ ├── usart (USART 串口驱动库) │ └── wifi (Wi-Fi 模块驱动库) ├── npu (NPU 驱动程序,暂未实现) └── user ├── main.c ├── stm32f10x.h ├── stm32f10x_conf.h ├── stm32f10x_it.c └── stm32f10x_it.h ``` ## 硬件要求 1. STM32F103C8T6开发板 2. MPU6050传感器 3. MQTT服务器 4. WIFI 模块(ESP8266) 5. 串口调试助手 6. 蓝牙模块 ## 软件要求 1. VSCode 2. stm32f103c8t6固件库 3. stm32f103c8t6开发库 4. MQTT 协议库 5. MPU6050传感器驱动库 6. WIFI 模块驱动库 7. 蓝牙模块驱动库 8. 串口调试助手 9. MQTTFX 10.MQTTX ## 运行步骤 1.配置keil环境,配置stm32f103c8t6开发板,配置MPU6050传感器,配置WIFI模块,配置蓝牙模块,配置MQTT协议库,配置串口调试助手,配置MQTTFX. 2.编译代码,下载到STM32F103C8T6开发板,运行程序. 3.搭建MQTT服务器(https://blog.csdn.net/weixin_45915259/article/details/123842396?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522d7f18e208144afd169f16247d010398f%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=d7f18e208144afd169f16247d010398f&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-14-123842396-null-null.nonecase&utm_term=mqtt%E6%9C%8D%E5%8A%A1%E5%99%A8&spm=1018.2226.3001.4450) 4.开启MQTT服务器监听模式,等待STM32F103C8T6开发板发送数据. 5.测试功能. graph TD %% ========== 初始化阶段 ========== A[main入口] --> B[硬件初始化] B --> B1[变量初始化 variateInit] B --> B2[MPU6050初始化] B --> B3[Flash初始化] B --> B4[OLED初始化] B --> B5[蓝牙/USART/GPS/WIFI串口初始化] B --> B6[MQTT初始化 MqttOnenet_Init] B --> B7[DMA初始化] %% ========== 主循环 ========== B7 --> C{主循环} C --> D1[蓝牙数据处理] D1 --> D11[接收数据转小写] D11 --> D12{指令匹配} D12 -->|"close/open+gps"| D13[更新GPS标志] D12 -->|"close/open+mpu"| D14[更新MPU标志] C --> D2[上位机指令解析] D2 --> D21[检查串口完成标志] D21 --> D22[解析GPS开关指令] C --> D3[传感器数据采集] D3 --> D31{GPS标志?} D31 -->|开启| D32[解析GPS数据 initlizateGPSData] D3 --> D33{MPU标志?} D33 -->|开启| D34[获取MPU数据 MPUGet] C --> D4[WIFI连接检查 connectServer] D4 --> D41[AT测试ESP8266] D41 --> D42{Station模式?} D42 -->|否| D43[设置模式+连接WIFI] D42 -->|是| D44[建立TCP透传] D44 --> D45[发送HTTP请求] C --> D5[模式判断 judeModeFlag] D5 --> D51{危险模式?} D51 -->|是| D52[OLED警告+高频MQTT发送] D51 -->|否| D53[显示Normal Mode] C --> D6[MQTT数据发送 mqttStringSend] D6 --> D61[清空缓冲区] D61 --> D62{GPS数据有效?} D62 -->|是| D63[构建带GPS的JSON] D62 -->|否| D64[使用默认坐标] D63/D64 --> D65[发送MQTT包] %% ========== 关键连接 ========== D13 --> D31 D14 --> D33 D32 --> D62 D34 --> D65 D45 --> D5 D52 --> D65 D53 --> D65 ## 注意事项 1.ESP8266模块需要连接WIFI,需要更改密码,请在相应的位置进行更改. 2.蓝牙模块属于被动蓝牙模块,只能用于收取指令,主要是用于项目的无线远端调试. 3.STM32F103C8T6开发板需要连接串口调试助手,用于查看STM32F103C8T6开发板发送的数据. 4.MQTT服务器需要开启监听模式,等待STM32F103C8T6开发板发送数据. 5.初次使用,需要上电等待GPS模块冷启动,需要1-2分钟,注意GPS模块是室外GPS定位模块,需要到室外进行GPS模块定位校准. 6.MQTT服务器需要配置用户密码,并且ESP8266需要烧录MQTT协议固件,请在使用ESP8266模块之前完成MQTT固件的烧录,否则会影响程序运行. 7.STM32F103C8T6开发板需要使用I2C连接MPU6050传感器,如果需要配置MPU6050传感器的I2C地址,请在相应的位置进行更改. 8.STM32F103C8T6开发板需要使用USART连接串口调试助手,如果需要配置串口调试助手的串口参数,默认的波特率为9600,如需更改请在`main.c`文件中进行更改.