找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2331|回复: 1
收起左侧

基于STM32的小型气象站源程序

[复制链接]
ID:501195 发表于 2020-3-8 23:37 | 显示全部楼层 |阅读模式
功能:实现温湿度采集 GSM模块发送数据 通过手机发送指定命令 返回环境参数
          若1分钟无人为操作将会进入休眠模式,实现低功耗
          2.6寸屏幕实时显示环境数据
使用到的模块:
         DHT11,DS18B20,有毒气体传感器,GSM模块

#include "stm32f10x.h"
#include "led.h"  
#include "usart.h"  
#include "lcd_2.6ips.h"
#include "capture.h"
#include "stdio.h"
#include "delay.h"
#include "key.h"  
#include "adc.h"
#include "bsp_dht11.h"
#include "bsp_ds18b20.h"
#include "usart4.h"
#include "stdlib.h"
#include "string.h"
#include "simxx.h"
#include "SimUi.h"
int main(void)
{
    u8 Hum[20]={0},Temp[20]={0},WATER_TEMP[10]={0};
    u8 MQ[20]={0},vcc[20]={20};
    u8 send_flag=0;
    DHT11_Data_TypeDef data;
    u8 led_flag=0;
    Delay_init();
    LED_Init();        // LED初始化
    LCD_Init();        // LCD初始化
    time7_init();
    time7_set_timeout(10);
    Usart_Config();// 串口初始化
    DHT11_Init();
    DS18B20_Init();
    USART2_Config();
    Adc_Init();
    SimUi_InIt();
    USART2_printf(USART2,"串口二测试\r\n");
    USART2_printf(USART2,"初始化中..............\r\n");
    LCD_Clear();    // 清屏
    while(1)
    {   
   
        if(sigRun[0]>sigRun[1])
        {
            if(Simxx_Signal())
            {
                LCD_DisplayString( 0,200 ,(u8 *)"            ");  
                LCD_DisplayString( 0,200 ,(u8 *)"Signal: Strong");
            
            }
            else
            {
                LCD_DisplayString( 0,200 ,(u8 *)"            ");
                LCD_DisplayString( 0,200 ,(u8 *)"Signal: Weak");
            }
            sigRun[0]=0;
        }
        
        
        if(MQ_9Run[0]>MQ_9Run[1])
        {
            sprintf((char *)MQ,"harmful=%d%%",(Get_Adc(1)*100/4096));//获得某个通道值
            LCD_DisplayString( 0,120 ,MQ);
            sprintf((char *)vcc,"WorkVcc=%.2fV",Get_Adc(4)*(3.3/4096));//获得某个通道值
            LCD_DisplayString( 0,80 ,vcc);
            MQ_9Run[0]=0;
        }   
        
        if(Dht11_Run[0]>Dht11_Run[1])
        {
            DHT11_Read_TempAndHumidity (&data);
            sprintf((char *)Hum,"Hum=%d.%d%%",data.humi_int,data.humi_deci);
            sprintf((char *)Temp,"Temp=%d.%dC",data.temp_int,data.temp_deci);
            LCD_DisplayString( 0,0 ,Hum);
            LCD_DisplayString( 0,40 ,Temp);
            Dht11_Run[0]=0;
        }
        if(DS18B20_Run[0]>DS18B20_Run[1])
        {
          sprintf((char *)WATER_TEMP,"WaterTemp=%.2fC",DS18B20_GetTemp_SkipRom ());
            LCD_DisplayString( 0,160 ,WATER_TEMP);
            DS18B20_Run[0]=0;
        }
        if(LED_Run[0]>LED_Run[1])
        {
            
            led_flag^=1;
            LED1_ST(led_flag);
            LED_Run[0]=0;
        }
        if(Simxx_Read_Nes())
        {
            send_flag=0;
            if(send_flag==0)
            {
                USART2_printf(USART2,"发送数据\r\n");
                send_flag=1;
                send_data(data.humi_int,data.humi_deci,data.temp_int,\
                data.temp_deci,DS18B20_GetTemp_SkipRom(),(Get_Adc(1)*100/4096));
            }
        }
        
        if(IrRun[0]>IrRun[1])
        {
            USART2_printf(USART2,"进入休眠\r\n");
            GPIO_ResetBits(LCD_BL_PORT,LCD_BL_PIN);
            if(KEY_Scan())
            {
                USART2_printf(USART2,"退出\r\n");
                IrRun[0]=0;
                GPIO_SetBits(LCD_BL_PORT,LCD_BL_PIN);            //开启LCD背光   
            }
        }
        
        
        Delay_ms(10);            
    }
}


6.简单发信息测试 -简单接收指令返回数据 - 获取信号强度.7z

251.06 KB, 下载次数: 18, 下载积分: 黑币 -5

回复

使用道具 举报

ID:700459 发表于 2020-3-9 07:35 | 显示全部楼层
i need more explain plz
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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