STM32项目设计:基于STM32的风向风速测量仪
目录
一、项目功能概述
二、材料选择
三、程序设计
四、实物
资料下载地址:基于STM32风向风速检测设计
一、项目功能概述
1、通过风向、风速传感器获取当前风向、风速
2、通过DHT11获取温湿度
3、OLED液晶显示测量数据
4、串口传输数据
二、材料选择
1、风速风向传感器
风速风向传感器输出方式选择RS485
2、DHT11温湿度传感器
3、4线OLED液晶屏
4、RS485模块
三、程序设计
RS485数据收发
#include "./usart/bsp_debug_usart.h"
#include "oled.h"
#include "string.h"UART_HandleTypeDef UartHandle;
UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
UART_HandleTypeDef huart3;
uint32_t mWindSpeed = 0;
uint32_t mWindDirec = 0;_DEF_UART RS485_Uart1,RS485_Uart2,RS485_Uart3;void MX_USART1_UART_Init(void)
{huart1.Instance = USART1;huart1.Init.BaudRate = 9600;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart1) != HAL_OK){// Error_Handler();}huart2.Instance = USART2;huart2.Init.BaudRate = 4800;huart2.Init.WordLength = UART_WORDLENGTH_8B;huart2.Init.StopBits = UART_STOPBITS_1;huart2.Init.Parity = UART_PARITY_NONE;huart2.Init.Mode = UART_MODE_TX_RX;huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart2.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart2) != HAL_OK){// Error_Handler();}huart3.Instance = USART3;huart3.Init.BaudRate = 4800;huart3.Init.WordLength = UART_WORDLENGTH_8B;huart3.Init.StopBits = UART_STOPBITS_1;huart3.Init.Parity = UART_PARITY_NONE;huart3.Init.Mode = UART_MODE_TX_RX;huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart3.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&huart3) != HAL_OK){// Error_Handler();}__HAL_UART_DISABLE_IT(&huart1,UART_IT_TC);__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);//使能接收中断__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);//使能空闲中断HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);HAL_NVIC_EnableIRQ(USART1_IRQn);__HAL_UART_CLEAR_IDLEFLAG(&huart1);__HAL_UART_DISABLE_IT(&huart2,UART_IT_TC);__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);//使能接收中断__HAL_UART_ENABLE_IT(&huart2,UART_IT_IDLE);//使能空闲中断HAL_NVIC_SetPriority(USART2_IRQn, 5, 0);HAL_NVIC_EnableIRQ(USART2_IRQn);__HAL_UART_CLEAR_IDLEFLAG(&huart2);__HAL_UART_DISABLE_IT(&huart3,UART_IT_TC);__HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE);//使能接收中断__HAL_UART_ENABLE_IT(&huart3,UART_IT_IDLE);//使能空闲中断HAL_NVIC_SetPriority(USART3_IRQn, 5, 0);HAL_NVIC_EnableIRQ(USART3_IRQn);__HAL_UART_CLEAR_IDLEFLAG(&huart3);}
void Main_Uart1(void)
{uint16_t CRCVal = 0;memset(RS485_Uart1.Buf,0,50);RS485_Uart1.Buf[0] = 0x01;RS485_Uart1.Buf[1] = 0x03;RS485_Uart1.Buf[2] = 0x03;RS485_Uart1.Buf[3] = mWindDirec >> 8;RS485_Uart1.Buf[4] = mWindDirec;RS485_Uart1.Buf[5] = mWindSpeed >> 8;RS485_Uart1.Buf[6] = mWindSpeed;CRCVal = CRC16(RS485_Uart1.Buf,7);RS485_Uart1.Buf[7] = CRCVal;RS485_Uart1.Buf[8] = CRCVal >> 8;HAL_UART_Transmit(&huart1,RS485_Uart1.Buf,9,1000);delay_ms(10);
}void Main_Uart2(void)
{if(RS485_Uart2.RcvFinish == 0) return;RS485_Uart2.RcvFinish = 0;Decode_Recv_Usart2(&RS485_Uart2);RS485_Uart2.Cnt = 0;memset(RS485_Uart2.Buf,0,50);delay_ms(10);HAL_UART_Transmit(&huart2,Wind_Direc_Str,8,1000);
}void Main_Uart3(void)
{if(RS485_Uart3.RcvFinish == 0) return;RS485_Uart3.RcvFinish = 0;Decode_Recv_Usart3(&RS485_Uart3);RS485_Uart3.Cnt = 0;memset(RS485_Uart3.Buf,0,50);delay_ms(10);HAL_UART_Transmit(&huart3,Wind_Speed_Str,8,1000);}unsigned short CRC16(unsigned char* data,int count)
{unsigned char CRC16Lo = 0xFF;unsigned char CRC16Hi = 0xFF; //CRC???unsigned char SaveHi;unsigned char SaveLo;unsigned char Flag = 0;int i = 0;for (; i < count; i++){CRC16Lo = CRC16Lo ^ data[i]; //??????CRC???????for (Flag = 0; Flag <= 7; Flag++){SaveHi = CRC16Hi;SaveLo = CRC16Lo;CRC16Hi = CRC16Hi >> 1; //?????? CRC16Lo = CRC16Lo >> 1; //?????? if ((SaveHi & 0x01) == 0x01) //???????????1 {CRC16Lo = CRC16Lo | 0x80; //???????????1 } //?????0 if ((SaveLo & 0x01) == 0x01) //??LSB?1,?????????? {CRC16Hi = CRC16Hi ^ 0xA0;//???&HA001 CRC16Lo = CRC16Lo ^ 0x01;}}}return (CRC16Lo<<8)|CRC16Hi;
}
main.c
int main(void)
{ char ch = 0;HAL_Init();SystemClock_Config();/* 配置系统时钟为72 MHz */RTC_CalendarConfig();MX_USART1_UART_Init();BASIC_TIMx_Init();I2C_GPIO_Config();DHT12_Init();OLED_init();OLED_full();OLED_clear();display();delay_ms(2000);//Get_Wind_Direct();while (1){Main_Uart1();Main_Uart2();Main_Uart3();display();sensor_read();Get_Time();delay_ms(1000);//}
}
四、实物
STM32项目设计:基于STM32的风向风速测量仪相关推荐
- 基于python的气象数据分析统计服_基于Python的风向风速数据分析的设计与实现
基于 Python 的风向风速数据分析的设计与实现 李文倩 ; 刘婕 [期刊名称] < <信息通信> > [年 ( 卷 ), 期] 2019(000)009 [摘要] Pyth ...
- 基于51单片机的脉搏测量仪(心率计)
具体实现功能 本系统由STC89C51/52单片机+LCD1602显示模块+5mm红外接收管+LM358运放电路+按键模块等构成. 具体功能: (1)手指放到红外对管中,2秒内读出心率: (2)LCD ...
- 基于51单片机的脉搏测量仪
基于51单片机的脉搏测量仪 1)红外光电传感器产生脉冲信号,经过放大整形后,输入单片机内进行相应的控制,从而测量出一分钟内的脉搏跳动次数. 2)设定上限次数和下限次数,当测量的范围超过设定的范围则驱动 ...
- 基于51单片机的脉搏测量仪设计与实现
目录 前言 一.设计背景 二.系统功能 三.系统硬件设计 3.1 总体方案设计 3.2 信号采集电路设计 3.3 报警电路设计 3.4 下载电路 3.5 电源电路设计 3.6 OLED显示设计 3.7 ...
- 基于51单片机的噪声测量仪仿真
具体实现功能 具体实现功能: ①LCD1602实时显示噪声分贝值,精度为0.1db: ②可以按键设置报警值,实现声光报警:三个按键:设置键.加键.减键: ③当噪声分贝值未超过阀值时,绿灯闪烁:当超过阈 ...
- STM32毕业设计——基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码)——智能家居系统
基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于STM32+MQTT+WiFi技术的智能家居系统设计与实现,文章末尾附有本毕业设计的论文 ...
- STM32毕业设计——基于STM32+JAVA+Android的六足机器人控制系统设计与实现(毕业论文+程序源码)——六足机器人控制系统
基于STM32+JAVA+Android的六足机器人控制系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于STM32+JAVA+Android的六足机器人控制系统设计与实现,文章末尾附有 ...
- STM32项目--基于STM32的办公室安保(智能家居)系统设计
基于嵌入式系统的办公室安保系统设计 简介 设计一套基于STM32的办公室安防系统,系统内部包括门禁系统.灾害报警系统.人脸识别系统和交互中心四个子系统. 门禁系统:主要实现对门禁卡的存储和读取并识别已 ...
- STM32实例——基于STM32开发板实现传感数据采集-DHT11温湿度采集
STM32开发板实现传感数据采集-DHT11温湿度采集 一.前言 本项目是基于STM32开发板的温湿度采集,传感器采用DHT11温湿度传感器,软件采用keil5等.本项目采用ARM结构中最为代表的Co ...
最新文章
- [ZZ]好的测试应该具备哪些特质?
- 获取文件绝对路径和目录
- Star 10.9K!这份Google面试攻略,牛逼了!
- javafx 打开新窗口_新的JMetro JavaFX 11兼容版本
- [css] 使用css如何设置背景虚化?
- python新奇检测_3种Python检测URL状态
- 面试官:Redis中的缓冲区了解吗
- android相关论文,android
- leetcode 删除链表的倒数第N个节点
- L1-053 电子汪 (10 分)—团体程序设计天梯赛
- 韩顺平JAVA学习笔记(入门自用)
- 计算机图形学代码之三角形绘制
- 【Android】EasyClient与EasyCamera的移植学习
- 服务器pe安装win7系统安装教程,win7 winpe安装过程图文教程
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day8】 —— Redis2
- RT-Thread Studio 使用笔记(六)| 获取光传感器数据(I2C设备驱动+BH1750手写驱动代码分享)
- pyQt5图片放大和缩小
- [IMX6Q][Android5.1]移植笔记 --- Kernel启动无法挂载文件系统
- TEASLA M40安装问题记录
- AI崛起,阿里的科技孵化力|甲子光年