STM32物联网套件基础版04-独立按键

前言

前几节用到的LED灯、蜂鸣器、继电器元器件,我们都是使用STM32的GPIO输出功能进行驱动,本节开始我们学习GPIO输入功能,当外部按键按下时候,单片机能够实时检测到,按键作为输入设备,在嵌入式系统开发过程中十分常见,一般来说,按键可以设置系统参数、控制系统运行状态。

一、基础知识

1. STM32物联网套件简介

STM32物联网套件目前有两个版本:基础版和高级版,后续会增加应用版本和语音版,核心板均采用STM32F103C8T6核心板,基础版主要元器件如下所示:
在这里插入图片描述
高级版版主要元器件如下所示:
在这里插入图片描述
STM32物联网套件致力于带领大家入门物联网,不仅学习STM32,也了解转微信小程序开发、物联网服务器后台开发,真正做到了解一个物联网项目的方方面面,基于此,我们定制了一套通用的WIFI通讯协议(可以理解为类似AT指令,不过集成度更高,几条指令就可以直连接云平台),如三条指令连接腾讯云实例

后续我们会继续增加涂鸦智能、电信云、移动Onenet、阿里云等主流云平台的支持,力争做到,一套STM32代码,通过定制的WIFI模块可以连接到不同的云平台,也欢迎有产品开发需求的朋友私聊我们咨询、定制物联网方案!

本套物联网套件可以支持大学生参加物联网相关比赛、申请学校大创项目、完成毕业设计等,我们的定位是做一家开源智能硬件服务商,和大家一起探索物联网,我们的使命是推动更多物联网产品的落地和普及,让技术不再是阻碍!

2. 按键简介

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号会发生变化,常见的按键开关如下图所示,其中A端引脚在同侧,默认断开,B端引脚在不在同侧,默认导通,当按键按下时,A端导通,B端断开。
在这里插入图片描述
此类开关,按下时候通常不会立刻导通,开和关的瞬间伴有一连串抖动,一般为5ms到10ms,具体抖动时间由按键机械特性决定,抖动过程如下图所示:
在这里插入图片描述
为了解决这个问题,通常可以采用硬件消抖和软件消抖两种方式,硬件消抖原理是利用电容平波,再经过施密特反相器整形之后就得到了没有毛刺的脉冲波,大多数实际项目中为了节约成本,通常采用软件滤波方式,软件滤波一般采用延时方式处理,当首次检测到按键按下时,软件延时10ms左右时间,然后再次查看按键状态,如果还是按下则认为有按键按下。

3.按键检测原理

简单的独立按键连接电路原理图如下所示
在这里插入图片描述

独立按键电路中,按键一边接GND,另一边接到单片机IO口上,当按键按下时候,按键两边1和2导通,单片机P2.5引脚直接连接GND,电平为低电平,所以只需要让单片机不断的检测P2.5引脚的I/O口是否为低电平,一旦程序检测到I/O口引脚变为低电平说明按键按下了。

4. 硬件设计

本次按键实验按键部分原理图如下,按键一端引脚均接地,另一端接到单片机PB4,当按键按下时候PB4为低电平。
在这里插入图片描述
实物图如下所示:
在这里插入图片描述
其中,PB12引脚输出低电平可以点亮LED灯,当按键按下时候,单片机检测到PB4引脚为低电平,然后点亮LED灯。

二、实例

1. 新建工程

使用STM32CubeMX创建一个新的工程,参考环境搭建章节配置方式,设置RCC和PB12引脚输出
在这里插入图片描述
进入Clock configuration页面,选择HSE时钟源,倍频后主时钟为72MHz
在这里插入图片描述
切换到Project Manager栏目,设置工程名字、工程保存目录、工具链等信息,具参数如下图所示
在这里插入图片描述
点击左边栏目Code Generator,然后勾选Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral,勾选此选项,外设将单独保存在一个文件中,而不是全部都在main.c中。
在这里插入图片描述
然后打开MDK-ARM/4.Key.uvprojx工程
在这里插入图片描述

2.修改程序

首先我们编写按键检测函数,当按键按下时候系统能够实时的检测到,注意程序中使用了20ms延时消抖,防止按键异常触发。

int key_scan(void)
{
    if (0 == HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4)) 
    { 
        HAL_Delay(20); 
        if (0 == HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4)) 
        { 
            return 1; 
        } 
    } 
     
    return 0;
}

然后开始写main函数主控制逻辑,实现按键按下亮灭LED灯效果

/** 
  * @brief  The application entry point. 
  * @retval int 
  */ 
int main(void) 
{ 
  /* USER CODE BEGIN 1 */ 
        int flag_led = 0; 
  /* USER CODE END 1 */ 
 
  /* MCU Configuration--------------------------------------------------------*/ 
 
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ 
  HAL_Init(); 
 
  /* USER CODE BEGIN Init */ 
 
  /* USER CODE END Init */ 
 
  /* Configure the system clock */ 
  SystemClock_Config(); 
 
  /* USER CODE BEGIN SysInit */ 
 
  /* USER CODE END SysInit */ 
 
  /* Initialize all configured peripherals */ 
  MX_GPIO_Init(); 
  /* USER CODE BEGIN 2 */ 
 
  /* USER CODE END 2 */ 
 
  /* Infinite loop */ 
  /* USER CODE BEGIN WHILE */ 
  while (1) 
  { 
    /* USER CODE END WHILE */ 
 
    /* USER CODE BEGIN 3 */ 
    if ( key_scan() ) 
    { 
        if ( flag_led ) 
        { 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);  
        } 
        else 
        { 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);  
        } 
         
        // 取反flag_led,实现按键亮灭LED灯效果 
        flag_led = !flag_led; 
    } 
 
    HAL_Delay(10);  
  } 
  /* USER CODE END 3 */ 
}

三、下载运行

按照环境搭建章节方式给核心板下载程序,可以看到按键按下可控制LED灯亮灭。
在这里插入图片描述

四、小结

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

源码获取:关注公众号,回复xiaoyi_stm32kits获取资料

硬件获取:某宝搜索小驿物联

小驿物联出品:宁愿做过了后悔,也不要后悔没去做!
在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
基于STM32物联网网关是一种可将物理设备与互联网连接起来的解决方案。它采用STM32系列微控制器作为主控芯片,结合适当的通信模块(如Wi-Fi、蓝牙、LoRa等)和传感器,可以实现设备之间的通信和数据传输。 首先,STM32物联网网关可以作为一个智能家居系统的核心,通过连接各种传感器和执行器,实现对家居设备的智能控制。例如,通过连接温度传感器,可以实时监测室内温度,并根据设定的温度范围来实现自动调节空调的温度。同时,通过连接灯光执行器,可以实现对家居灯光的智能控制,如自动开关、调光等。 其次,基于STM32物联网网关还可以应用于物流和仓储领域。通过与温湿度传感器、气体传感器等连接,可以实时监测货物的存储环境,并通过传输模块将数据上传至云端进行分析和存储。这样,物流公司可以及时了解货物的存储条件,确保货物的质量和安全。 另外,基于STM32物联网网关还可应用于智能农业领域。通过连接土壤湿度传感器、光照传感器等,可以实时监测农田的土壤湿度和光照等环境参数,并通过连接的水泵控制阀门等执行器,实现对灌溉设备的智能控制。这样,农民可以实现对农田环境的精确监测和灌溉设备的智能控制,提高农作物的产量和品质。 总之,基于STM32物联网网关的应用非常广泛,从智能家居到物流和仓储再到智能农业等领域,都可以利用它来实现设备之间的智能连接和远程控制,实现更加便捷和智能的生活、工作和生产环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值