折腾语音模块踩坑

2024-06-01  本文已影响0人  吉凶以情迁
image.png

esp32 的gnd+信号必须连语音模块的gnd+信号线

5v供电如果要从树莓派提供,就需要把树莓派的gnd和5v也给他连上

esp32的vin口就是5v供电,如果测试电压不够,应该直接不用面包板经过面包板 电压有损耗。我就是因为遇到这个问题折腾半天。

上图gpio 17对应的tx2 在代码中用2表示,

serialPort=9600
uart =UART(2,baudrate = serialPort,bits = 8,parity = None,stop = 1)#,bits = 8,parity = None,stop = 1 ,tx = Pin(1))
uart.init(serialPort)
uart.write("<G>AA")

esp8266 txd不存在2
0,和1

MicroPython的ESP8266 UART(串行总线)的运行环境和资源是有限的,并且与标准的Python语言有一些差异和兼容性问题。因此,在使用MicroPython时,需要注意选择合适的库和模块,并避免使用过多的内存和CPU。
MicroPython的ESP8266 UART(串行总线)的可用性和稳定性是不保证的,并且可能会受到硬件或软件的限制或干扰。因此,在使用MicroPython时,需要注意检查和测试UART功能,以及处理异常情况。
MicroPython的ESP8266 UART(串行总线)有两个可用的UART,分别是UART0和UART1。其中UART0是默认用于REPL和烧录固件的,连接到GPIO1(TX)和GPIO3(RX)引脚;UART1只有TX功能,连接到GPIO2引脚。因此,在使用MicroPython时,需要注意避免与这些引脚发生冲突。
https://blog.csdn.net/weixin_41659040/article/details/133271802

上面是网上资料


,语音模块波特率是9600
解决方法:使用串口1, txd是IO2
线连到gpio 2但是这里为0 ,不需要为1
uart =UART(0,baudrate = serialPort,bits = 8,parity = None,stop = 1)

树莓派代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
import sys
import serial

LEDPin = 5

try:
    ser = serial.Serial("/dev/ttyAMA0", 9600)  # 串口波特率设置
    if ser.isOpen():
        ser.close()
        print("Serial port closed successfully.")

    # 打开串口连接
    ser.open()
    # 发送消息
    message = u"<G>测试123测试"  # 在字符串前面添加 'u' 表示Unicode字符串
    ser.write(message.encode('gb2312'))

    # 等待一段时间,以确保消息发送完成
    time.sleep(1)

    # 读取串口返回的数据
    received_data = ser.readline().decode('utf-8').strip()
    print(received_data)

except serial.SerialException as e:
    print("Serial port error: %s" % e)
except Exception as e:
    print("An unexpected error occurred: %s" % e)
finally:
    # 关闭串口连接
    if ser.isOpen():
        ser.close()
上一篇下一篇

猜你喜欢

热点阅读