赞
踩
我们在学习完一系列的STM32基础知识后,想要对STM32有更加深入的了解,最好就是自己上手做项目,那么我们STM32中比较常见的项目就是智能家居项目,这也是一个很优秀的项目。
智能家居一般都会由STM32主控,WIFI模块,温湿度检测模块,光敏电阻,LED灯,OLED显示屏,语言播报模块,语言识别模块。所以,我们一般要准备以上的模块才能完成一个完整的项目。当然,你也可以添加舵机来模拟门的开关,在这里我就不添加进去了,需要的可以自己拓展。
创建工程就不演示了,默认大家都会哈。
做项目我们一般都是从简单的入手,LED灯我就不说明了,也就那样吧。
- #include "led.h"
-
- // PC8 - LED_R
- // PC7 - LED_G
- // PC6 - LED_B
-
- void led_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
-
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- LED_R_OFF;
- LED_G_OFF;
- LED_B_OFF;
- }
- #ifndef __LED_H__
- #define __LED_H__
- #include "stm32f10x.h"
-
- #define LED_R_ON GPIO_ResetBits(GPIOC,GPIO_Pin_8);
- #define LED_R_OFF GPIO_SetBits(GPIOC,GPIO_Pin_8);
-
- #define LED_G_ON GPIO_ResetBits(GPIOC,GPIO_Pin_7);
- #define LED_G_OFF GPIO_SetBits(GPIOC,GPIO_Pin_7);
-
- #define LED_B_ON GPIO_ResetBits(GPIOC,GPIO_Pin_6);
- #define LED_B_OFF GPIO_SetBits(GPIOC,GPIO_Pin_6);
-
-
- void led_init(void);
-
- #endif
-
做智能家居我们怎么能够没有网络呢,有了WIFI模块,我们就可以实现远程的控制了。我们这里用到的WIFI模块是ESP8266-12S,我认为只要是ESP8266的WIFI模块,基本的操作应该是差不多的。
我们在拿到WIFI模块的时候一般都要烧录固件才能够识别我们串口发送的指令,那WIFI固件一般去哪里下载呢?我们可以去安信可官网下载,一些资料也在上面。
这个就是ESP系列模组的模式说明,那么我们要烧录固件,就要把开发板上的GPIO0位电平拉低。那么怎么拉低呢?那就之间将这个口接地就行了,这样我们就进入了下载模式。
现在我们还需要思考一个问题,我们要通过什么去烧录固件到模块里面?如果是单独的WIFI模块还好说,要是开发板上的WIFI模块直接烧录固件的话就可能会出现一些小问题,比如:烧录多次还是失败,要么就是根本检测不到。
如图,这是一个开发板上的WIFI模块,正好也是ESP-12S,我们想要往里面烧录程序只能通过TXD0和RXD0也就是MCU上的串口2。
如图,我们的USB连接到的是MCU上的串口1。
如图,这个是引出的引脚。
我相信,聪明的你已经想到我要做什么了,我们要将USB传进来的数据从串口1变到串口2。这样我们就可以直接通过数据线来烧录固件了,具体操作如下:
因为串口你不去配置它,它还是会有默认的值输出,所以我们在开始操作之前要先烧录一个程序到MCU里面,想想是什么?
- #include "usart.h"
- void Usart_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
-
- GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IPU;
- GPIO_InitStruct.GPIO_Pin =GPIO_Pin_9|GPIO_Pin_10;
- GPIO_InitStruct.GPIO_Speed =GPIO_Speed_2MHz;
- GPIO_Init(GPIOA,&GPIO_InitStruct);
- }
usart.h就是声明一下函数,包含总的头文件。
- #include "usart.h"
- int main(void)
- {
- while(1)
- {
- Usart_Config();
- }
- }
将如图所示的两个1用杜邦线连接,两个2也同样用杜邦线连接。这样就可以直接通过USB烧录固件到WIFI模块里面了。
烧录的固件和软件大概样子
软件内的基本配置
寻找固件的步骤
|
|
|
我不知道大家下的固件是否和我的一样啊,我的这个AT指令固件就是这样。
如果你点击开始的时候有这个字出来的话,那么你就成功了,不要点STOP啊,虽然过程有点长,但是千万别点啊,不然会出现一些奇怪的东西o。^_^
本篇主要简述了智能家居的基本要点,从简单的开始,不断完善项目。
开始做项目的时候总是会遇到很多困难,但是你如果静下心来仔细专研,会发现许多不一样的东西哦!
下节更精彩......
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。