esp8266 gpio015 一定要低电平吗

[发明专利]一种基于手势追踪传感器的音乐无线控制系统和方法在审
申请/专利权人:
公开/公告号:CNA
发明/设计人:;;;;;;
公开/公告日:
主分类号:
搜索关键词:
【说明书】:
技术领域本发明涉及一种基于手势追踪传感器的音乐无线控制系统和方法,属于传感技术与无线通信技术的交叉领域。背景技术目前,手势传感器、无线传输技术的发展迅速,但在一些场合里音乐控制仍采用有线控制,极其不便。在智能家居领域中,虽然已实现了音乐的无线控制,但人们仍大多采用手机,平板等终端实现智能控制,然而这些终端却在一定程度上加大了人们对手机等产品的依赖。无法利用人体自身的简单动作实现对外界的智能控制。全球领先的高性能模拟IC和传感器供应商ams推出新的TMx4903系列先进光学传感器模块,集成了通用遥控器、条形码仿真、RGB颜色传感、接近感测和3D手势检测功能,TMD4903和TMG4903是该模块的两大系列产品,能实现精确的颜色感知和接近探测。而本发明采用此款手势传感器,并结合Wi-Fi技术能够很好地解决上面的问题。发明内容本发明目的在于提出了一种基于手势传感器的音乐无线控制系统,该系统包括信息采集模块、数据传输模块、数据处理模块。首先,数据采集部分,使用红外传感模块自动探测是否有人靠近、当检测到有人靠近时,TMx4903传感器模块启动,对手势进行捕捉及检测同时通过计数器计数,当30秒后仍未有手势,则TMx4903传感器模块恢复待机状态。然后,数据传输部分,使用Wi-Fi传输模块将数据采集部分获取的手势信息,从Wi-Fi发送端无线传输到Wi-Fi接收端。最后,数据处理部分对通过数据传输部分传递过来的数据进行判断并实现对背景音乐的处理。本发明系统采用TMx4903系列传感器对手势的识别,该系统可用于家庭及KTV等需要播放音乐的场合。该系统包括感知器件,无线传输模块,单片机系统,音乐播放器,音响。该信息采集模块主要包括个两个子模块,即:(1)红外识别子模块:红外线识别是否有人靠近。当无人靠近时,系统处于待机状态。当红外线感知到有人靠近时则开启系统手势识别部分。当人离开后则使手势识别模块恢复待机状态。(2)手势识别子模块:利用TMx4903传感器对手势进行识别。本发明的数据传输模块主要包括:Wi-Fi发送模块:传感器端单片机(ArduinoUNOR3硬件开发板)向Wi-Fi发送模块发送数据,Wi-Fi发送模块将数据通过无线局域网发送到Wi-Fi接收模块。Wi-Fi接收模块:Wi-Fi接收模块接收到由Wi-Fi发送模块发送的数据后将数据发送到音乐播放器端单片机(ArduinoUNOR3硬件开发板)。本发明的数据处理模块包括:传感器端处理模块:传感器端单片机(ArduinoUNOR3硬件开发板)将对不同的手势信息进行判断。并向Wi-Fi发送端发送相应数据。音乐播放器端处理模块:Wi-Fi接收端将数据送至音乐播放器端单片机(ArduinoUNOR3硬件开发板),音乐播放器端单片机(ArduinoUNOR3硬件开发板)对数据进行分析后对模拟开关进行控制,实现对歌曲的播放,暂停,切换,及音量调节。本发明还提供了一种基于手势追踪传感器的音乐无线控制系统的实现方法,该方法包括如下步骤:步骤1:设计一种基于手势追踪传感器的音乐无线控制系统,包括信息采集模块、数据传输模块、数据处理模块三部分。步骤2:设计数据采集部分的体系结构。采用传感器端单片机(ArduinoUNOR3硬件开发板)对TMx4903传感器模块、红外传感模块、计时模块进行集成。步骤3:设计数据传输部分的体系结构。由传感器端单片机(ArduinoUNOR3硬件开发板)上的Wi-Fi发送端及音乐播放器端单片机(ArduinoUNOR3硬件开发板)上的Wi-Fi接收端组成。步骤4:ESP8266串口Wi-Fi无线收发模块的通信协议的设置,模块VCC端连接5V转3.3V电源模块。GPIO0低电平,GPIO2高电平,GPIO15低电平,CH-PD连接到高电平时,模块进入工作模式。通过发送AT指令对发送端和接收端进行通信协议的设置。其中,ESP8266串口Wi-Fi无线收发模块作发送端执行如下设置:输入指令AT+CWMODE=1,进入STA模式。对于ESP8266串口Wi-Fi无线收发模块作接收端执行如下设置:输入指令AT+CWMODE=2,进入AP模式。步骤5:在有人靠近红外传感器时,传感器感知到人体,将信号传到传感器端单片机(ArduinoUNOR3硬件开发板)中,传感器端单片机(ArduinoUNOR3硬件开发板)再向TMx4903模块发出信号,开启TMx4903传感器模块。同时也开始计数,当计数到30秒时,若TMx4903传感器模块感知到手势并传感器端单片机(ArduinoUNOR3硬件开发板)传递数据则继续开启手势传感器,并进行步骤7。若传感器端单片机(ArduinoUNOR3硬件开发板)未收到数据则关闭TMx4903传感器模块。步骤6:若红外传感器检测不到人体,则关闭计时模块及手势传感模块。步骤7:传感器端单片机(ArduinoUNOR3硬件开发板)收到手势信号后,通过手势识别的算法判断手势,并根据程序对手势所代表的对音乐的控制命令的设定产生不同的数据,发送给Wi-Fi发送端。步骤8:Wi-Fi发送端通过无线局域网将8bit数据传输到Wi-Fi接收端。步骤9:Wi-Fi接收端收到数据后将数据发送给音乐播放器端单片机(即:ArduinoUNOR3硬件开发板),音乐播放器端单片机(ArduinoUNOR3硬件开发板)通过对数据的判断,选择,使音乐播放器进入下面四种模式。(1)播放模式。当系统收到“播放”的手势信息时,系统控制音乐播放器播放;(2)暂停模式。当系统收到“暂停”的手势信息时,系统控制音乐播放器暂停播放;(3)切换模式。当系统收到“切换”的手势信息时,系统继续接收手势数据并判断是播放上一曲还是播放下一曲,然后控制音乐播放器切换;(4)音量调节模式。当系统收到“音量调节”的手势信息时,系统继续接收手势数据并判断是调高音量还是调低音量,然后控制音乐播放器音量调节。有益效果:1、本发明的传感器嵌入墙体表面,采用无线传感的方式控制播放器,其节约了空间,并且更加的美观方便。2、本发明的手势能够实现对背景音乐的开始,暂停,切换,音量调节,无需近距离按键,无需使用遥控器,也无需手机,平板等终端设备下载专用app控制。只需要人体自身动作即可智能控制背景音乐。3、本发明在一些特定场合比如KTV以及需要背景音乐的会场,常常需要其他人在播放器旁边配合播放音乐。而本系统只需唱歌者本人或主持人自己就可以控制音乐播放,简单方便,不存在主持人与DJ人员契合度不够的问题。附图说明图1为本发明的方法流程图。图2为本发明的系统体系结构图。图3为本发明的数据采集部分的体系结构图。图4为本发明的数据传输部分的体系结构图。图5为本发明的数据处理部分的程序流程图。具体实施方案下面结合说明书附图对本发明创造作进一步的详细说明。如图1所示,本发明提供了一种基于手势追踪传感器的音乐无线控制系统,该系统包括信息采集、数据传输、数据处理三个模块。数据采集模块使用红外传感模块周期性探测是否有人靠近。当有人靠近红外传感器时,传感器感知到人体,将信号传到ArduinoUNOR3单片机中,单片机再发出信号,将TMx4903传感器模块的电源端拉高,开启TMx4903传感器模块。同时也开始计数,当计数到30秒时,TMx4903传感器模块若感知到手势,则向单片机传递数据。若单片机未收到数据,则关闭计数模块与手势传感模块,若单片机收到数据后,则通过手势识别的算法判断手势,并根据程序对手势所代表的对音乐的控制命令的设定产生不同的数据。当手势为音乐播放的命令时,Wi-Fi发送端将发送数据,当手势为音乐暂停的命令时,Wi-Fi发送端将发送数据,当手势为音乐切换并且向上切换的命令时,Wi-Fi发送端将发送数据,当手势为音乐切换并且向下切换的命令时,Wi-Fi发送端将发送数据,当手势为音量调节并且减小音量的命令时,Wi-Fi发送端将发送数据,当手势为音量调节并且增加音量的命令时,Wi-Fi发送端将发送数据。Wi-Fi接收端接收来自Wi-Fi发送端通过无线局域网发送的8bit数据后,将数据发送到音乐播放器端的单片机(即:ArduinoUNOR3硬件开发板),音乐播放器端单片机(即:ArduinoUNOR3硬件开发板)实现对音乐播放的控制。如图2所示,手势追踪传感器的音乐无线控制系统包括信息采集、数据传输、数据处理三个模块。信息采集部分包含红外传感器,手势追踪传感器,传感器端单片机。数据传输部分包含Wi-Fi发送端与Wi-Fi接收端。数据处理部分包含音乐播放器端单片机,音乐播放器。
友情链接:交换友情链接需要网站权重大于2,网站收录10W以上,如符合条件,请联系QQ:。
行业网站:相关推荐:
400-周一至周五 9:00-18:00
服务热线:400-投诉建议:022-
扫一扫,微信关注高智网
高智&让创新无法想象2000万件&专利数据您当前位置: >
> ESP8266入门指南――实现PC与模块通信
ESP8266入门指南――实现PC与模块通信
来源:程序员人生&& 发布时间: 08:26:13 阅读次数:4898次
本文使用的是ESP8266-07串口转wifi模块。
总共要接以下几根线:
VCC――&3.3v
GND――&GND
CH_PD――&高电平
RST――&高电平
GPIO15――&GND
电路图以下,可以没必要像最小系统那末严格,本人电源直接使用USB串口上的3.3v,上拉,下拉电阻不接也能够使用。
将串口接入电脑,模块蓝色等闪烁几下后熄灭,红色灯常亮
装备可以搜索到模块所发出的wifi,通常名字为esp_xxxxx
打开SSCOM42,通过串口设置AT指令。
由于出厂使用的是0.9.2的固件,波特率默许为9600,更高版本的固件波特率为115200.
串口助手1定要勾选发送新行
重启模块的时候,串口会接收到1段乱码,若使用高版本的固件则不会出现这类现象
模块做与客户端通讯
通过串口输入AT指令来进行设置
1. AT+CWMODE=3
//设置为客户端模式
2. AT+CIPMUX=1
//设置模块允许多连接,这条命令1定要比CIPSERVER先履行
3. AT+CIPSERVER=1,8080
//开启,并使用8080端口进行通讯。注意AT指令中的逗号1定要注意是英文的逗号
如果是pc连上模块,注意确保pc只有1个ip,如果pc同时还接入了本地连接,会致使网络调试助手连接不上模块
网络调试助手设置以下:
192.168.4.1是模块默许的ip地址,可以通过AT指令更改
连接上后,串口助手上会显示link,便可进行互发数据
模块像客户端发送数据使用AT指令:AT+CIPSEND=0,6
0代表的是TCP连接编号,6表示发送6个字符,串口助手中会自动添加换行符,因此只需输入5个字符
AT+CIPSTATUS 可以查看当前与模块建立TCP连接的信息,模块最多可以有5个TCP连接 ,编号0⑷
AT+CWLIF 可以查看当前连接到模块的客户端地址。
调试模块可以查看:
ESP8266新手入门调试指点(补全).doc
AT指令可以查询:
4A-Espressif
AT指令集018.pdf
模块的硬件连接及信息可以查看:
ESP8266-07 WiFi模块用户手册V1.0.doc
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
------分隔线----------------------------
------分隔线----------------------------
积分:42374733人阅读
ESP8266学习(8)
GPIO中断在进行脉宽测量、脉冲计数时能起到极为重要的作用,本文主要介绍GPIO中断的用法,使用一个开关打开或关闭一个LED灯。
GPIO寄存器介绍
一、GPIO输入寄存器
寄存器名称
寄存器大小
寄存器属性
输入状态寄存器
对应GPIO0-GPIO15
GPIO_PIN12
中断类型寄存器
0:禁用该GPIO的中断 1:上升沿触发中断
2:下降沿触发中断
3:双边沿触发中断
4:低电平触发中断
5:高电平触发中断
GPIO_STATUS
中断状态寄存器
对应GPIO0-GPIO15
GPIO_STATUS_W1TC
复位中断标志寄存器
对应GPIO0-GPIO15
二、GPIO输出寄存器
寄存器名称
寄存器大小
寄存器属性
GPIO_ENABLE_W1TS
使能输出寄存器
对应GPIO0-GPIO15
GPIO_ENABLE_W1TC
禁用输出寄存器
对应GPIO0-GPIO15
GPIO_ENABLE
输出使能状态寄存器
对应GPIO0-GPIO15
GPIO_OUT_W1TC
输出低电平寄存器
对应GPIO0-GPIO15
GPIO_OUT_W1TS
输出高电平寄存器
对应GPIO0-GPIO15
输出状态寄存器
对应GPIO0-GPIO15
注:GPIO16不支持触发IO中断。
相关API介绍
一、引脚复用功能切换函数
配置某引脚的其他功能
PIN_FUNC_SELECT(PIN_NAME, FUNC)
该引脚的MUX寄存器
引脚需要配置的功能
关于PIN_NAME的参数详见eagle_soc.h,关于FUNC的参数详见ESP8266 管脚清单.xlsx(在官网上可以找到当然页可以参考eagle_soc.h)。
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);
配置MTDI引脚作为GPIO使用
二、输入模式配置
配置某引脚为输入模式
GPIO_DIS_OUTPUT(gpio_no)
GPIO的引脚号(0-15)
GPIO_DIS_OUTPUT(0);
配置GPIO0为输入模式
三、上拉模式配置
开启某引脚上拉模式
PIN_PULLUP_EN(PIN_NAME)
该引脚的MUX寄存器的名称
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO4_U);
开启GPIO4的上拉输入功能
关闭某引脚上拉模式
PIN_PULLUP_DIS(PIN_NAME)
该引脚的MUX寄存器的名称
PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO4_U);
关闭GPIO4的上拉输入功能
四、获取输入引脚状态
读取某引脚的高低电平状态
GPIO_INPUT_GET(gpio_no)
GPIO的引脚号(0-15)
GPIO_INPUT_GET(0);
读取GPIO0的输入引脚状态
五、GPIO中断状态配置
开启GPIO中断
ETS_GPIO_INTR_ENABLE()
关闭GPIO中断
ETS_GPIO_INTR_DISABLE()
六、配置中断处理函数
配置中断处理函数
ETS_GPIO_INTR_ATTACH(GPIO_INTERRUPT,NULL)
GPIO_INTERRUPT
GPIO的中断处理函数
GPIO的中断服务函数的参数
void GPIO_ISR_Handler( void )
/** GPIO中断处理函数 */
void GPIO_ISR_Handler_Config( void )
ETS_GPIO_INTR_ATTACH(&GPIO_ISR_Handler,NULL);
七、配置GPIO中断触发方式
配置GPIO中断触发方式
void gpio_pin_intr_state_set(uint32 i, GPIO_INT_TYPE intr_state);
i(GPIO_ID_PIN(n))
GPIO的引脚ID(n为GPIO引脚号,范围为0-15)
intr_state
GPIO中断触发方式
GPIO_PIN_INTR_DISABLE(0)
禁用该引脚的中断
GPIO_PIN_INTR_POSEDGE(1)
使能该引脚的上升沿中断
GPIO_PIN_INTR_NEGEDGE(2)
使能该引脚的下降沿中断
GPIO_PIN_INTR_ANYEDGE(3)
使能该引脚的双边沿中断
GPIO_PIN_INTR_LOLEVEL(4)
使能该引脚的低电平中断
GPIO_PIN_INTR_HILEVEL(5)
使能该引脚的高电平中断
gpio_pin_intr_state_set(GPIO_ID_PIN(0),GPIO_PIN_INTR_ANYEDGE);
配置GPIO0的中断触发方式为双边沿触发方式
#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "eagle_soc.h"
#include "gpio.h"
#include "gpio16.h"
/** 开关输入相关 宏定义 */
#define SWITCH_Pin_NUM
#define SWITCH_Pin_FUNC
FUNC_GPIO5
#define SWITCH_Pin_MUX
PERIPHS_IO_MUX_GPIO5_U
#define SWITCH_Pin_Rd_Init()
GPIO_DIS_OUTPUT(SWITCH_Pin_NUM)
#define SWITCH_Pin_Wr_Init()
GPIO_OUTPUT_SET(SWITCH_Pin_NUM,0)
#define SWITCH_Pin_Set_High()
GPIO_OUTPUT_SET(SWITCH_Pin_NUM,1)
#define SWITCH_Pin_Set_Low()
GPIO_OUTPUT_SET(SWITCH_Pin_NUM,0)
#define SWITCH_Pin_State
( GPIO_INPUT_GET(SWITCH_Pin_NUM) != 0 )
*******************************************************************************
GPIO中断处理函数
*******************************************************************************
static void GPIO_ISR_Handler( void )
/** 读取GPIO中断状态 */
u32 pin_status = GPIO_REG_READ( GPIO_STATUS_ADDRESS );
/** 关闭GPIO中断 */
ETS_GPIO_INTR_DISABLE();
/** 清除GPIO中断标志 */
GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS, pin_status );
/** 检测是否已开关输入引脚中断 */
if ( pin_status & BIT( SWITCH_Pin_NUM ) )
if( SWITCH_Pin_State )
gpio16_output_set(0);
gpio16_output_set(1);
/** 开启GPIO中断 */
ETS_GPIO_INTR_ENABLE();
*******************************************************************************
输入初始化函数
*******************************************************************************
static void drv_Input_Init( void )
PIN_FUNC_SELECT( SWITCH_Pin_MUX, SWITCH_Pin_FUNC );
SWITCH_Pin_Rd_Init();
ETS_GPIO_INTR_DISABLE();
ETS_GPIO_INTR_ATTACH( &GPIO_ISR_Handler, NULL );
gpio_pin_intr_state_set( GPIO_ID_PIN( SWITCH_Pin_NUM ),
GPIO_PIN_INTR_ANYEDGE );
/** 清除该引脚的GPIO中断标志 */
GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS, BIT(SWITCH_Pin_NUM) );
ETS_GPIO_INTR_ENABLE();
*******************************************************************************
用户初始化程序
*******************************************************************************
void user_init( void )
drv_Input_Init();
gpio16_output_conf();
[1]. ESP8266技术参考
[2]. ESP8266Non-OS SDK API参考
[3]. ESP8266 管脚清单
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:34890次
排名:千里之外
原创:31篇
(2)(3)(4)(4)(4)(7)(1)(2)(1)(2)(1)鍙?渶涓

我要回帖

更多关于 esp8266 gpio中断 的文章

 

随机推荐