折腾语音模块踩坑
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()