【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        要想让esp32发出点声音,这需要外界模块的帮助。如果是消费领域,一般是需要录音和播放音乐。工业领域的话,一个蜂鸣器就好了。当然,这里不需要那么复杂,所以就测一下蜂鸣器是怎么用的。有源蜂鸣器有一个很显著的特征,就是上面有一个贴纸,这是比较明显的。

1、有源蜂鸣器和无源蜂鸣器

        这里的有源和无源是指内部有没有晶振,不是说需不需要电源。这些外部模块都是需要电源的。这里为了便利,直接用有源蜂鸣器进行测试,即通电的时候,发出声音;不通电的时候,停止发出声音。

        有源蜂鸣器输入的是高低电平,而无源蜂鸣器一般是pwm方波。

2、连线部分

        有源蜂鸣器就三根线,vcc/gnd/io。属于比较简单的那种。和传感器模块有点相像,只不过传感器是输出,这里是输入。vcc的话,接3.3v即可。

3、确认引脚

        由于需要的引脚不多,所以esp32随便分配一个引脚给有源蜂鸣器即可,比如gpio15。

4、通过ai编写代码

        因为内容比较简单,所以直接让ai来做是比较合适的。比如,告诉ai,生成一个esp32有源蜂鸣器的demo,不出意外的话,我们就可以得到这样的内容,

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

#define BUZZER_GPIO   GPIO_NUM_15

void app_main(void)
{
    gpio_config_t io_conf = {
        .pin_bit_mask = (1ULL << BUZZER_GPIO),
        .mode = GPIO_MODE_OUTPUT,
        .pull_up_en = GPIO_PULLUP_DISABLE,
        .pull_down_en = GPIO_PULLDOWN_DISABLE,
        .intr_type = GPIO_INTR_DISABLE
    };
    gpio_config(&io_conf);

    while (1) {
        gpio_set_level(BUZZER_GPIO, 1); 
        vTaskDelay(200 / portTICK_PERIOD_MS);
        
        gpio_set_level(BUZZER_GPIO, 0);  
        vTaskDelay(200 / portTICK_PERIOD_MS);
    }
}

5、编译、测试和验证

        拿到代码,先别着急分析和阅读。首先第一步,看看是不是可以编译,无法编译的代码是没有价值的。接着,继续看看是不是可以烧录,这一点主要是看image是否符合要求。最好看执行效果,和我们预期的是否一致。这三点都ok了,就可以去看看代码流程了。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐