找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2403|回复: 1
打印 上一主题 下一主题
收起左侧

基于STM32F407七要素气象站CR-WS数据处理实现 附源程序

[复制链接]
跳转到指定楼层
楼主
本帖最后由 resumebb 于 2020-9-2 14:55 编辑

一、七要素气象站介绍二、功能讲解
首先整体说一下我写的思路,通过串口三去发送指令并接收来自气象站的数据,再用串口一进行打印检查,对于多串口共用有问题的可以看看我STM32F407多路串口通信进行数据收发,然后后期会用串口二将数据发送到全站仪去检测,目前只是个demo,但是已经完成了对数据的处理和收发功能。
举个栗子:读一下温度传感器
  1. <blockquote> double getTemperature()
复制代码


前三位为默认指令码,因此数据从第四位开始,因为要求的数据格式为10进制,并且要进行计算,所以就进行了一下转换,分离高4位和低4位,然后乘以权重,再根据数据通信协议进行数据计算,最后存在结构体的温度变量中。
再举个栗子,大气压传感器
  1. double getAtmospheric_Pressure()
复制代码


和温度传感器一样,但是因为通信协议有高位和低位四个数,所以要多定义几个变量。
指令定义:
u8 weatherIndex[8] = {0x01,0x03,0x00,0x01,0x00,0x0D,0xD5,0xCF};
发送函数:
  1. <span style="white-space:pre">        </span> void sendIndex(void)
复制代码


ps:发送间隔不能太短,我这里设置的就有点短了,气象仪有点反应不过来,延时要给大一点。

结构体定义:
  1. <blockquote>typedef struct weatherData{
复制代码

因为要检测变化值,连续检测,然后将前后两次的各项传感器数值进行比较,若差值太大就要停止,所以我准备用结构体存储,把每一次测的数据存于队列中,当连续三次没有出问题的话就出队。

完整请移步https://blog.csdn.net/qq_41573860/article/details/108300452

结果初始值:


第一次测试:

第二次:轻拨风速转片,转动风向标

第三次:使劲的转,让风速突破历史记录

第四次:停止转动,记录保持

第五次:断电,重新上电,各项数据保持


因为涉及到很多其他方面的功能,所以我上传的项目中已经能删的文件已经删掉,只留了气象传感器和串口相关的函数,注释掉的是气象站用不到的,测试了一下不影响气象站的使用和数据处理。


有问题可以私我,大家一起讨论学习,博客地址:https://blog.csdn.net/qq_41573860/article/details/108300452

全部资料51hei下载地址:
七要素气象传感器.7z (307.73 KB, 下载次数: 33)



1.png (39.97 KB, 下载次数: 75)

1.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:816140 发表于 2020-10-13 10:32 | 只看该作者
楼主能否提供气象站硬件采购连接或采购信息
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表