基于stm32的WIFI语音气象站

需求与功能分析

      天气是我们生活环境中的影响因素之一, 观察和了解天气的情况最终是为了支持生活、 经营等决策, 因此, 随着城市的发展, 用户也希望了解影响自身生活环境的其他因素,空气质量的指标应运而生。 另一方面, 身处信息爆炸的时代, 用户越来越希望能直接获得有价值的判断, 对于天气服务的需求也根据日常出行、 户外活动、 旅游、 出差等场景上到获取相关生活建议。 同时, 对于自身所处环境中天气的关心也逐渐延伸到渴望了解天气相关内容资讯、了解其他人所在地的天气状况, 也为天气服务应用提供了创新点。随着国民对健康意识的提升、 对天气和空气质量的愈发重视, 天气服务应用类可以更多地融合进智能硬件产品服务中, 尤其是当前人工智能产品愈发成熟, 天气服务应用可搭载的硬件载体也更为丰富, 从智能手机、 平板到智能手表、 机器人、 智能音箱等等产品。另一方面, 天气服务应用的用户使用场景也日益丰富, 从家居生活到商务工作到通勤休闲等。 因此, 基于用户需求, 天气服务厂商可以继续整合多种服务模式, 例如内容服务、 社交服务等, 同时拓展硬件产业链, 通过整合资源和推出硬件产品, 天气服务厂商将进一步完善生态布局。

系统整体功能

       WIFI 语音气象站由 ARM 内核 MCU(Cortex-M 系列)、 TFTLCD 屏、 WIFI无线通信及语音播放模块等主要几部分构成。 该平台 MCU 控制板, 既可以单独拿下来做开发板使用, 也可以安装到项目中做控制板使用, 提高其使用率, 同时该套件支持二次开发, 用户可以自己编写相关代码, 驱动 WIFI 模组, 连接气象服务器, 获取当地天气, 同时还可以通过温湿度传感器采集到当前室内的温湿度值, 并在 LCD 屏上进行显示, 通过还可以进行语音播报。

系统硬件功能

       系统硬件部分需要完成对LCD屏,WiFi无线通信,语音播放模块的控制,并能够通过相关的软硬件通信技术实现对web端数据的接收,并实现湿度,温度和天气的实时显示和语音播报。

系统软件功能

       系统软件部分需要完成系统管理、光敏传感器和湿度传感器的功能设计,LCD屏界面显示、WiFi通信服务、语音播报等诸多功能。

系统架构设计

       系统软件部分分为LCD屏显示程序设计,光敏传感器和湿度传感器程序设计,按键及蜂鸣器程序设计,WiFi实时通信程序设计等。

系统技术解决方案 

       通过keil进行软件功能程序设计,以控制系统功能的实现。以STM32为主芯片,将主板连接LCD屏幕,DHT11温度湿度传感器,ESP8266串口,WiFi模块,MY1680语音播报模块,以达到功能的实现。通过将各个模块与STM32F103ZET6相接,以达到主芯片控制各个模块独立芯片的目的。对stm32进行程序编写,以实现stm32芯片控制LCD屏幕的显示。

      DHT11温度湿度传感器将数据传输到主芯片进而在LCD屏幕上显示。ESP8266与主芯片连接以实现串口通信,WIFI模块与心知天气相连接,将数据传输到芯片进而在LCD屏幕上显示,再通过MY1680语音播报模块实现语音播报,以达到WIFI智能语音气象站基本功能的实现。

软件解决方案

Keil 

      Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

FLYMCU

     FlyMcu 模拟仿真软件是一款用于 STM32 芯片 ISP 串口烧录程序的专用工具,免费,且较为非常容易下手,好用便捷。

ATKXCOM

     XCOM串口通信是是一种可以将接收来自CPU并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU。

取模

      图片取模软件Image2lcd,Image2Lcd可以将一个图片转换为lcd可以使用的格式文件,包括bin、c文件、bmp和wbmp格式,对于需要显示图片的嵌入式系统非常有用。

      字模取模软件PCtolLCD,PCtoLCD2002是专业的取字模软件,采用C语言和汇编语言两种格式,支持逐行、逐列、行列、列行四种取模方式,还可以选择字体、大小、文字的长宽,自动生成你想要字符的编码。

系统总结

       支持温湿度实时显示,系统背景显示,开机语音设置,显示近三天天气,音乐播放

        软件开发方面:Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。FlyMcu 模拟仿真软件是一款用于 STM32 芯片 ISP 串口烧录程序的专用工具,免费,且较为非常容易下手,好用便捷。XCOM串口通信是是一种可以将接收来自CPU并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU。图片取模软件Image2lcd,Image2Lcd可以将一个图片转换为lcd可以使用的格式文件,包括bin、c文件、bmp和wbmp格式,对于需要显示图片的嵌入式系统非常有用。字模取模软件PCtolLCD,PCtoLCD2002是专业的取字模软件,采用C语言和汇编语言两种格式,支持逐行、逐列、行列、列行四种取模方式,还可以选择字体、大小、文字的长宽,自动生成你想要字符的编码。

       硬件开发方面:STM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供新的开发自由度。它包括一系列产品,集高性能、实时功能、数字信号处理、低功耗/低电压操作、连接性等特性于一身,同时还保持了集成度高和易于开发的特点。主控芯片型号:STM32F103ZET。显示设备Oled:本身自发光,不需要背光灯。屏幕分辨率:240*320,屏幕上像素点的个数。屏幕尺寸:2.8寸。驱动芯片型号:ILI9314。颜色格式是:RGB65,电子的三原色:红绿蓝。传感器:温湿度传感器DHT11,光照、烟雾传感器的作用:就是一种检测装置,能够去测量我们需要的信息,DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃。ESP8266是一款串口WiFi模块,内部集成MCU能实现单片机之间串口同信;这款模块简单易学,体积小,便于嵌入式开发。ESP8266是ai-thinker公司推出的一款无线WIFI模块,专为移动设备,可穿戴电子产品和物联应用设计,可以通过AT指令配置,和单片机上的串口进行通信,利用WIFI进行数据传输。MY1680U-12P 是深圳市迈优科技有限公司自主研发的一款小巧的集成MP3模块。采用MY1680U-16S MP3主控芯片,支持MP3、WAV格式双解码,模拟U盘下载。模块内置FLASH存储芯片,1-16M容量可选;也可外接U盘或USB数据线连接电脑更换FLASH的音频文件。该模块内置3W功放,可以直接驱动3W的喇叭,使用更方便。

#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "bsp_lcd.h"
#include "usart1.h"
#include "stdio.h"
#include "1.h"
#include "dht11.h"
#include "adc.h"
#include "esp8266.h"
#include "cJSON.h"
#include "my1680.h"

//厂家测试接口
void JTAG_SW_Config(void)
{
	//关闭JTAG接口,开启SW接口--PA15、PB3、PB4可用
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
}


int main(void)
{
	JTAG_SW_Config();
	Systick_Init(72000);
	LED_Config();//初始化LED
	BEEP_Config();
	key_Config();
	TFTLCD_Init();
	Usart_Config(); 
	ADC_Config();
	WIFI_Iinit();
	MY1680_Init();
	PlayMP3_42(03,003);
	PlayMP3_42(01,003);
  Connect_Server(MY_IP,MY_PORT);
  LCD_ShowPicture(0,0,240,320,(u8*)gImage_1);
	GPIO_ResetBits(GPIOE,GPIO_Pin_2);
	beep_OFF;//设置蜂鸣器的起始状态,不响
  uint8_t KEY_Value=0;
	int flag=0;
	while(1)
  {  	
		 
		DHT11_TyDef DHT11_Data;
		if(Dht11_ReadData(&DHT11_Data))
		{
			LCD_ShowStringAndHz(0,0,240,320,16,(u8*)"当前室内温度:",0);
	    LCD_ShowStringAndHz(0,20,240,320,16,(u8*)"当前室内湿度:",0);
			LCD_ShowStringAndHz(0,300,240,320,16,(u8*)"名字",0);
			LCD_ShowxNum(120,0,DHT11_Data.Tem,2,16,0);
			LCD_ShowxNum(120,20,DHT11_Data.Hum,2,16,0);
			Delay_ms(100);
		}
		  Get_LightValue();
			Delay_ms(100);
		  Get_SmokeValue();
			Delay_ms(100);
		 
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
	{
   if(USART_ReceiveData(USART1)==1)
		 beep_ON;
   if(USART_ReceiveData(USART1)==0)
		 beep_OFF;
 }	 
    KEY_Value=KEY_GetValue();
		if(KEY_Value==1)
		{
			LCD_ShowPicture(0,0,240,320,(u8*)gImage_1);
			LCD_ShowStringAndHz(0,80,240,320,16,(u8*)"天气预报",0);
			LCD_ShowStringAndHz(0,100,240,320,16,(u8*)"日期:",0);
			LCD_ShowStringAndHz(0,120,240,320,16,(u8*)"地点:",0);
			LCD_ShowStringAndHz(0,140,240,320,16,(u8*)"白天天气:",0);
			LCD_ShowString(0,160,240,320,16,(u8*)"codeday:");
			LCD_ShowStringAndHz(0,180,240,320,16,(u8*)"晚上天气:",0);
			LCD_ShowString(0,200,240,320,16,(u8*)"codenight:");
			LCD_ShowStringAndHz(0,220,240,320,16,(u8*)"最高温度:",0);
			LCD_ShowStringAndHz(0,240,240,320,16,(u8*)"最低温度:",0);
			LCD_ShowStringAndHz(0,260,240,320,16,(u8*)"湿度:",0);
      LCD_ShowString(100,100,240,320,16,(u8*)Weather_Data[0].data);
			LCD_ShowString(100,120,240,320,16,(u8*)Weather_Data[0].name);
			LCD_ShowString(100,140,240,320,16,(u8*)Weather_Data[0].weatherday);
			LCD_ShowString(100,160,240,320,16,(u8*)Weather_Data[0].codeday);
			LCD_ShowString(100,180,240,320,16,(u8*)Weather_Data[0].weathernight);
			LCD_ShowString(100,200,240,320,16,(u8*)Weather_Data[0].codenight);
			LCD_ShowString(100,220,240,320,16,(u8*)Weather_Data[0].temhigh);
			LCD_ShowString(100,240,240,320,16,(u8*)Weather_Data[0].temlow);
			LCD_ShowString(100,260,240,320,16,(u8*)Weather_Data[0].humidity);
			PlayMP3_42(04,004);
			PlayMP3_42(06,000);
      PlayMP3_42(02,003);
      PlayMP3_42(02,atoi(Weather_Data[0].codeday));
      PlayMP3_42(02,002);
      PlayMP3_42(02,atoi(Weather_Data[0].codenight));
      int i=0;
      PlayMP3_42(04,002);
      i=atoi(Weather_Data[0].temhigh);
	    PlayMP3_T(i);
      PlayMP3_42(01,001);
	    PlayMP3_42(04,003);
      i=atoi(Weather_Data[0].temlow);
	    PlayMP3_T(i);
      PlayMP3_42(01,001);
			PlayMP3_42(04,007);
		}
		if(KEY_Value==2)
		{
			PlayMP3_42(04,005);
			PlayMP3_42(06,000);
      PlayMP3_42(02,003);
      PlayMP3_42(02,atoi(Weather_Data[1].codeday));
      PlayMP3_42(02,002);
      PlayMP3_42(02,atoi(Weather_Data[1].codenight));
      int i=0;
      PlayMP3_42(04,002);
      i=atoi(Weather_Data[1].temhigh);
	    PlayMP3_T(i);
      PlayMP3_42(01,001);
	    PlayMP3_42(04,003);
      i=atoi(Weather_Data[1].temlow);
	    PlayMP3_T(i);
      PlayMP3_42(01,001);
			PlayMP3_42(04,007);
		}
    if(KEY_Value==3)
		{
			PlayMP3_42(04,006);
			PlayMP3_42(06,000);
      PlayMP3_42(02,003);
      PlayMP3_42(02,atoi(Weather_Data[2].codeday));
      PlayMP3_42(02,002);
      PlayMP3_42(02,atoi(Weather_Data[2].codenight));
      int i=0;
      PlayMP3_42(04,002);
      i=atoi(Weather_Data[2].temhigh);
	    PlayMP3_T(i);
      PlayMP3_42(01,001);
	    PlayMP3_42(04,003);
      i=atoi(Weather_Data[2].temlow);
	    PlayMP3_T(i);
      PlayMP3_42(01,001);
			PlayMP3_42(04,007);
		}
		if(KEY_Value==4)
		{
			LCD_ShowPicture(0,0,240,320,(u8*)gImage_1);
			PlayMP3_42(03,002);
		}

相关推荐

  1. 基于stm32WIFI语音气象

    2024-06-15 14:48:02       47 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 14:48:02       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 14:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 14:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 14:48:02       18 阅读

热门阅读

  1. 机器学习之Transformer模型和大型语言模型(LLMs)

    2024-06-15 14:48:02       9 阅读
  2. 智能数据分析(2)Lecture 9-11

    2024-06-15 14:48:02       9 阅读
  3. 在远程服务器上安装虚拟环境

    2024-06-15 14:48:02       7 阅读
  4. PostgreSQL的视图pg_rules

    2024-06-15 14:48:02       7 阅读
  5. Python语言例题集(015)

    2024-06-15 14:48:02       8 阅读
  6. Qt/C++中的异步编程

    2024-06-15 14:48:02       8 阅读
  7. 鸿蒙 如何将base64的图片保存到相册

    2024-06-15 14:48:02       8 阅读
  8. blender

    blender

    2024-06-15 14:48:02      5 阅读