树莓派通过语音模块下发指令点亮小灯泡
树莓派通过语音模块下发指令点亮小灯泡
使用的语言是Python。语音模块使用串口连接树莓派,RGB灯连接在树莓派23、24、25号引脚上。
语音模块设置关键词,识别关键词串口通信控制树莓派点亮对应颜色的LED灯。
树莓派3代B+引脚图
语音模块
代码
import serial # 导入串口库
import time # 导入时间库
import RPi.GPIO as GPIO 导入树莓派引脚控制库
GPIO.setmode(GPIO.BCM) # (强制的)指定一种编号规则
GPIO.setwarnings(False) # 禁用警告
GPIO.setup(23, GPIO.OUT) # 初始化设置23引脚为输出
GPIO.setup(24, GPIO.OUT) # 初始化设置24引脚为输出
GPIO.setup(25, GPIO.OUT) # 初始化设置25引脚为输出
GPIO.output(23, GPIO.LOW) # 初始化设置23引脚为低电平输出(有些树莓派默认高电平输出)
GPIO.output(24, GPIO.LOW) # 初始化设置24引脚为低电平输出(有些树莓派默认高电平输出)
GPIO.output(25, GPIO.LOW) # 初始化设置25引脚为低电平输出(有些树莓派默认高电平输出)
ser = serial.Serial("/dev/ttyUSB0",9600) # 打开树莓派串口 ttyUSB0,波特率是9600
ser.flushInput()
# ser.write("play,001,$")
def main():
while True:
count = ser.inWaiting() # 读取串口缓存数据大小
if count !=0: # 如果串口缓存数据量不为0
print(count) # 打印一下有多少
recv = int.from_bytes(ser.read(count), byteorder='big', signed=False) # 把读到的byte字节流转换为int赋值给recv
print(recv)
print(type(recv))
if(recv == 2): # 如果recv等于2
GPIO.output(23, GPIO.HIGH) # 23号引脚输出高电平
GPIO.output(24, GPIO.LOW) # 24号引脚输出低电平
GPIO.output(25, GPIO.LOW) # 25号引脚输出低电平
print("hong deng")
if(recv == 3):
GPIO.output(23, GPIO.LOW)
GPIO.output(24, GPIO.LOW)
GPIO.output(25, GPIO.HIGH)
print("lv deng")
if(recv == 4):
GPIO.output(23, GPIO.LOW)
GPIO.output(24, GPIO.HIGH)
GPIO.output(25, GPIO.LOW)
print("lan deng")
ser.flushInput()
time.sleep(0.1)
if __name__ == '__main__':
main()
【版权声明】本博文著作权归作者所有,任何形式的转载都请联系作者获取授权并注明出处!
【重要说明】博文仅作为本人的学习记录,论点和观点仅代表个人而不代表技术的真理,目的是自我学习和有幸成为可以向他人分享的经验,因此有错误会虚心接受改正,但不代表此刻博文无误!
【博客园地址】叫我+V : http://www.cnblogs.com/wjw1014
【CSDN地址】叫我+V : https://wjw1014.blog.csdn.net/
【Gitee地址】叫我+V :https://gitee.com/wjw1014
【重要说明】博文仅作为本人的学习记录,论点和观点仅代表个人而不代表技术的真理,目的是自我学习和有幸成为可以向他人分享的经验,因此有错误会虚心接受改正,但不代表此刻博文无误!
【博客园地址】叫我+V : http://www.cnblogs.com/wjw1014
【CSDN地址】叫我+V : https://wjw1014.blog.csdn.net/
【Gitee地址】叫我+V :https://gitee.com/wjw1014