当前位置:   article > 正文

基于STM32F103RCT6之手把手教你写智能家居项目(1)_基于stm32f103的项目

基于stm32f103的项目

一:想法

        我们在学习完一系列的STM32基础知识后,想要对STM32有更加深入的了解,最好就是自己上手做项目,那么我们STM32中比较常见的项目就是智能家居项目,这也是一个很优秀的项目。

二:准备工作

        智能家居一般都会由STM32主控,WIFI模块,温湿度检测模块,光敏电阻,LED灯,OLED显示屏,语言播报模块,语言识别模块。所以,我们一般要准备以上的模块才能完成一个完整的项目。当然,你也可以添加舵机来模拟门的开关,在这里我就不添加进去了,需要的可以自己拓展。

三:项目开始

        创建工程就不演示了,默认大家都会哈。

1.LED灯

        做项目我们一般都是从简单的入手,LED灯我就不说明了,也就那样吧。

  led.c
  1. #include "led.h"
  2. // PC8 - LED_R
  3. // PC7 - LED_G
  4. // PC6 - LED_B
  5. void led_init(void)
  6. {
  7. GPIO_InitTypeDef GPIO_InitStructure;
  8. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  9. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  10. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6;
  11. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  12. GPIO_Init(GPIOC, &GPIO_InitStructure);
  13. LED_R_OFF;
  14. LED_G_OFF;
  15. LED_B_OFF;
  16. }
  led.h
  1. #ifndef __LED_H__
  2. #define __LED_H__
  3. #include "stm32f10x.h"
  4. #define LED_R_ON GPIO_ResetBits(GPIOC,GPIO_Pin_8);
  5. #define LED_R_OFF GPIO_SetBits(GPIOC,GPIO_Pin_8);
  6. #define LED_G_ON GPIO_ResetBits(GPIOC,GPIO_Pin_7);
  7. #define LED_G_OFF GPIO_SetBits(GPIOC,GPIO_Pin_7);
  8. #define LED_B_ON GPIO_ResetBits(GPIOC,GPIO_Pin_6);
  9. #define LED_B_OFF GPIO_SetBits(GPIOC,GPIO_Pin_6);
  10. void led_init(void);
  11. #endif

2.WIFI模块

        做智能家居我们怎么能够没有网络呢,有了WIFI模块,我们就可以实现远程的控制了。我们这里用到的WIFI模块是ESP8266-12S,我认为只要是ESP8266的WIFI模块,基本的操作应该是差不多的。

WIFI固件烧录

         我们在拿到WIFI模块的时候一般都要烧录固件才能够识别我们串口发送的指令,那WIFI固件一般去哪里下载呢?我们可以去安信可官网下载,一些资料也在上面。

 

        这个就是ESP系列模组的模式说明,那么我们要烧录固件,就要把开发板上的GPIO0位电平拉低。那么怎么拉低呢?那就之间将这个口接地就行了,这样我们就进入了下载模式。

        现在我们还需要思考一个问题,我们要通过什么去烧录固件到模块里面?如果是单独的WIFI模块还好说,要是开发板上的WIFI模块直接烧录固件的话就可能会出现一些小问题,比如:烧录多次还是失败,要么就是根本检测不到。

开发板上WIFI模块烧录方法

        

         如图,这是一个开发板上的WIFI模块,正好也是ESP-12S,我们想要往里面烧录程序只能通过TXD0和RXD0也就是MCU上的串口2。

        如图,我们的USB连接到的是MCU上的串口1。

        如图,这个是引出的引脚。

        我相信,聪明的你已经想到我要做什么了,我们要将USB传进来的数据从串口1变到串口2。这样我们就可以直接通过数据线来烧录固件了,具体操作如下:

消除MCU的影响

        因为串口你不去配置它,它还是会有默认的值输出,所以我们在开始操作之前要先烧录一个程序到MCU里面,想想是什么?

usart.c
  1. #include "usart.h"
  2. void Usart_Config(void)
  3. {
  4. GPIO_InitTypeDef GPIO_InitStruct;
  5. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  6. GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IPU;
  7. GPIO_InitStruct.GPIO_Pin =GPIO_Pin_9|GPIO_Pin_10;
  8. GPIO_InitStruct.GPIO_Speed =GPIO_Speed_2MHz;
  9. GPIO_Init(GPIOA,&GPIO_InitStruct);
  10. }

        usart.h就是声明一下函数,包含总的头文件。

main.c
  1. #include "usart.h"
  2. int main(void)
  3. {
  4. while(1)
  5. {
  6. Usart_Config();
  7. }
  8. }
接线

                                          

        将如图所示的两个1用杜邦线连接,两个2也同样用杜邦线连接。这样就可以直接通过USB烧录固件到WIFI模块里面了。

烧录固件

         烧录的固件和软件大概样子

        软件内的基本配置

        寻找固件的步骤

|

|

|

        我不知道大家下的固件是否和我的一样啊,我的这个AT指令固件就是这样。

         如果你点击开始的时候有这个字出来的话,那么你就成功了,不要点STOP啊,虽然过程有点长,但是千万别点啊,不然会出现一些奇怪的东西o。^_^

四:总结

        本篇主要简述了智能家居的基本要点,从简单的开始,不断完善项目。

        开始做项目的时候总是会遇到很多困难,但是你如果静下心来仔细专研,会发现许多不一样的东西哦!

        下节更精彩......

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/744158
推荐阅读
相关标签
  

闽ICP备14008679号