基于星火一号的温度检测与报警散热系统设计方案

测量仪表

1490人已加入

描述

流程图:

蜂鸣器

基础逻辑功能的实现

Aht10测温模块:

采用例程中的aht10模块代码(aht10软件包已配置好无需再配),并以此为“根据地”,将后续其他功能加入到此main.c的工程文件中。

调用函数读取当前的温度值,并根据温度区间(<30,30-32,>32)给控制参数crl赋值(0,1,2),以备后续使用。

Led_matrix矩阵灯模块

枚举每个灯的名称,并对应地将Setcolor的函数加入不同温度区间的情况中去,即对crl使用switch语句,case0给矩阵灯赋绿色,1赋蓝色,2赋红色。

过程中要注意矩阵灯的驱动文件夹是否使能且参与编译。

蜂鸣器模块

将蜂鸣器的端口设置为输出模式后,对应地加入switch语句中,即0、1时beep_off,
2时调用beep_on。

Lcd显示屏模块

对lcd初始化后,对应不同的情况调用显示函数,分别显示rt-thread的logo,调用字符串显示函数显示实时温度和对应的工作状态(0,1为SAFE,2显示TEMPERATURE IS TOO HIGH!!!)。

过程中要注意lcd驱动文件夹是否使能且参与编译。

且要主要lcd的配置与led矩阵灯是否有冲突。

舵机

为了更加形象的模拟系统温度过高后的冷却功能,我们在板子上增加一个舵机外设,通过定时器输出pw波,控制舵机在aht10检测到温度过高时转动吹风来降温。为了不影响板载外设的正常功能,我们打开Stm32CubeMX,寻找空闲引脚PE5,配置成Tim9——CH1输出。

接着,对Timer进行相关配置。

蜂鸣器

配置完成后生成代码,删除掉不需要的文件夹。

蜂鸣器

点击rt setting,打开时钟和PWM驱动程序

蜂鸣器

系统设置完成后,开始编写代码。

蜂鸣器

窗体底端

为了观察PE5输出的PWM波形,使用逻辑分析仪连接相关引脚后,打开Pulse view软件,观测到波形如下

蜂鸣器

与代码设置的理想波形几乎一致,因此可以确定,PWM波设置完成。

接着查阅资料,了解到给360度舵机一个PWM信号,舵机会以一个特定的速度转动,类似与电机。但与电机不同的是,360舵机是闭环控制,速度控制稳定。设置PWM周期为20ms,高电平为0.5ms时,占空比符合正向最大速度转动的要求。对代码重新进行设置后,连接舵机,发现舵机正转,符合要求。至此舵机模块配置完成。

按键控制舵机功能

本次实训中,为了完善功能,使我们的仪器更为可靠,我们创新性地加入了当温度未达到警戒值(32℃)时,也能通过手动调节的方式使舵机转动强制降温的功能。

对key1键进行分配(四个按键中最上方的按键),当此按键未pin_up状态时,强行调用mg90main函数(舵机启动函数),对一些温度传感器检测不到的故障进行强制降温,确保器件不被烧坏。

void irq_callback(void *args)
{
rt_uint32_t sign = (rt_uint32_t) args;
switch (sign)
{
case PIN_WK_UP :
flag=1;
break;
case PIN_KEY1 :
flag=0;
break;
default:
LOG_E("error sign= %d !", sign);
break;
}
}
void self_sg90()
{
switch (flag)
{
case 1 :
mg90main1();
break;
case 0 :
if(temperature<30)
{
mg90mainstop();
}
break;
default:
LOG_E("error flag= %d !", flag);
break;
}}

Onenet物联网传输数据

Abstract:该开发板基于RW007 WiFi模块的在RT-Thread studio进行开发,在联网之后,再连接到ONENet,即可将本地传感器信息上传至云端

一、代码软件包的设计与使用

(1)WiFi联网(下载rw007安装包),
该软件包使用rw007是通过SPI协议进行传输,所以在配置项中要使能SPI,并在SPI项目下配置引脚

(2)通过MQTT协议连接onenet(下载onenet软件包)
基于Mqtt协议,软件包中通过板载publish topic,代码如下:

蜂鸣器

该函数在我们串口中初始化onenet时即调用

蜂鸣器

(3)数据上传

使用板载示例程序中的函数将注册周期上传任务到 MSH,并通过终端指令调用该函数,将数据publish到物联网中对应话题当中

static void onenet_upload_entry(void *parameter)
{
int value = 0;
while (1)
{
value = rand() % 100;
if (onenet_mqtt_upload_digit("temperature", value) < 0)
{
LOG_E("upload has an error, stop uploading");
break;
}
else
{
LOG_D("buffer : {"temperature":%d}", value);
}
rt_thread_delay(rt_tick_from_millisecond(5 * 1000));
}
}
int onenet_upload_cycle(void)
{
rt_thread_t tid;
tid = rt_thread_create("onenet_send",onenet_upload_entry,RT_NULL,2 * 1024,
RT_THREAD_PRIORITY_MAX / 3 - 1,5);
if (tid)
{
rt_thread_startup(tid);
}
return 0;
}
MSH_CMD_EXPORT(onenet_upload_cycle, send data to OneNET cloud cycle);

二、指令调用

通过板载的rw7000连接到局域网WiFi,再通过Mqtt协议将板载传感器测量得到的数据传输到物联网,从onenet官网注册设备并接收数据

蜂鸣器

三、物联网可视化显示

在onenet官网注册并创建一个设备和项目,并将设备ID与API key绑定到软件包的配置项中

蜂鸣器

我们在可视化项目中创建新项目,规划文本和图表显示,并通过API绑定数据流进行显示。

蜂鸣器

最终效果图

温度低于30度led矩阵为绿色

温度介于30度与32度之间led矩阵为蓝色

温度高于32度led矩阵为红色

物联网温度数据上传效果图

蜂鸣器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分