seo网站营销推广公司,wordpress 777,怎么用自己的网站做邮箱,做行业网站广告能赚多少钱废话少说#xff0c;直接上空调板子#xff1a;YAPOF3。红外接收发射模块用的某宝上发现的YF-33(遗憾解码还没搞清楚#xff0c;不然做个lirc.conf功能才多)。最后是语音识别用的幻尔的#xff0c;某宝自然也有#xff0c;它是个i2c的接口。 本篇胡说八道其实纯粹为了留个…废话少说直接上空调板子YAPOF3。红外接收发射模块用的某宝上发现的YF-33(遗憾解码还没搞清楚不然做个lirc.conf功能才多)。最后是语音识别用的幻尔的某宝自然也有它是个i2c的接口。 本篇胡说八道其实纯粹为了留个地方以后知道怎么在python脚本里面写串口指令。接下来就顺带着讲一下全流程吧。
1. 先把幻尔的语音模块里面录好几个要说的话。
# initiate_yuyin.py
# encoding: utf-8Company: 深圳市幻尔科技有限公司
官网:hiwonder.com
日期:2019/9/20
by Aiden* 只能识别汉字将要识别的汉字转换成拼音字母每个汉字之间空格隔开比如幻尔科技 -- huan er ke ji* 最多添加50个词条每个词条最长为79个字符每个词条最多10个汉字* 每个词条都对应一个识别号1~255随意设置不同的语音词条可以对应同一个识别号* 比如“幻尔科技”和“幻尔”都可以将识别号设置为同一个值* 模块上的STA状态灯亮起表示正在识别语音灭掉表示不会识别语音当识别到语音时状态灯会变暗或闪烁等待读取后会恢复当前的状态指示#使用例程
import smbus
import time
import numpyclass ASR:# Global Variablesaddress Nonebus NoneASR_RESULT_ADDR 100#识别结果存放处通过不断读取此地址的值判断是否识别到语音不同的值对应不同的语音ASR_WORDS_ERASE_ADDR 101#擦除所有词条ASR_MODE_ADDR 102#识别模式设置值范围1~3#1循环识别模式。状态灯常亮默认模式#2口令模式以第一个词条为口令。状态灯常灭当识别到口令词时常亮等待识别到新的语音,并且读取识别结果后即灭掉#3按键模式按下开始识别不按不识别。支持掉电保存。状态灯随按键按下而亮起不按不亮ASR_ADD_WORDS_ADDR 160#词条添加的地址支持掉电保存def __init__(self, address, bus1):self.address addressself.bus smbus.SMBus(bus)def readByte(self):return self.bus.read_byte(self.address)def writeByte(self, val):value self.bus.write_byte(self.address, val)if value ! 0:return Falsereturn Truedef writeData(self, reg, val):self.bus.write_byte(self.address, reg)self.bus.write_byte(self.address, val)def getResult(self):if ASR.writeByte(self, self.ASR_RESULT_ADDR):return -1value self.bus.read_byte(self.address)return value* 添加词条函数* idNum词条对应的识别号1~255随意设置。识别到该号码对应的词条语音时* 会将识别号存放到ASR_RESULT_ADDR处等待主机读取读取后清0* words要识别汉字词条的拼音汉字之间用空格隔开** 执行该函数词条是自动往后排队添加的。def addWords(self, idNum, words):buf [idNum]for i in range(0, len(words)):buf.append(eval(hex(ord(words[i]))))self.bus.write_i2c_block_data(self.address, self.ASR_ADD_WORDS_ADDR, buf)time.sleep(0.05)def eraseWords(self):result self.bus.write_byte_data(self.address, self.ASR_WORDS_ERASE_ADDR, 0)time.sleep(0.06)if result ! 0:return Falsereturn Truedef setMode(self, mode):result self.bus.write_byte_data(self.address, self.ASR_MODE_ADDR, mode)if result ! 0:return Falsereturn Trueif __name__ __main__:addr 0x79 #传感器iic地址asr ASR(addr)if 1:asr.eraseWords()asr.setMode(1)asr.addWords(1,miao le ge mi mi mi) # 唤醒词条在此asr.addWords(2,da kai kong tiao zhi leng) # 打开空调制冷asr.addWords(3,kong tiao zhi re kai) # 空调制热开asr.addWords(4,guan bi kong tiao) # 关闭空调
2. 开启唤醒模式操控空调。
# yuyin.py
# encoding: utf-8
import smbus
import time
import serialser serial.Serial(port/dev/ttyUSB0,baudrate9600,parityserial.PARITY_NONE,stopbitsserial.STOPBITS_ONE,bytesizeserial.EIGHTBITS,timeout1)class ASR:# Global Variablesaddress Nonebus NoneASR_RESULT_ADDR 100ASR_MODE_ADDR 102ASR_ADD_WORDS_ADDR 160#词条添加的地址支持掉电保存def __init__(self, address, bus1):self.address addressself.bus smbus.SMBus(bus)def readByte(self):return self.bus.read_byte(self.address)def writeByte(self, val):value self.bus.write_byte(self.address, val)if value ! 0:return Falsereturn Truedef writeData(self, reg, val):self.bus.write_byte(self.address, reg)self.bus.write_byte(self.address, val)def getResult(self):if ASR.writeByte(self, self.ASR_RESULT_ADDR):return -1value self.bus.read_byte(self.address)return valuedef setMode(self, mode):result self.bus.write_byte_data(self.address, self.ASR_MODE_ADDR, mode)if result ! 0:return Falsereturn Trueif __name__ __main__:addr 0x79 #传感器iic地址asr ASR(addr)#来自串口指令那个图片给的发送地址。这儿就已经用了3个这个模块一共才4个位置。arr_data2 [0x01,0x06,0x00,0x01,0x00,0x02,0x59,0xCB]arr_data3 [0x01,0x06,0x00,0x01,0x00,0x03,0x98,0x0B]arr_data4 [0x01,0x06,0x00,0x01,0x00,0x01,0x19,0xCA]if 1:asr.setMode(2) #启动唤醒模式#asr.addWords(1,miao le ge mi mi mi) # 唤醒#asr.addWords(2,da kai kong tiao zhi leng) # 打开空调制冷#asr.addWords(3,kong tiao zhi re kai) # 空调制热开#asr.addWords(4,guan bi kong tiao) # 关闭空调while 1:data asr.getResult()#print(result:, data)if data 2:#echo -en \x01\x06\x00\x01\x00\x02\x59\xCB /dev/ttyUSB0ser.write(serial.to_bytes(arr_data2))elif data 3:#echo -en \x01\x06\x00\x01\x00\x03\x98\x0B /dev/ttyUSB0ser.write(serial.to_bytes(arr_data3))elif data 4:#echo -en \x01\x06\x00\x01\x00\x01\x19\xCA /dev/ttyUSB0ser.write(serial.to_bytes(arr_data4))else:continuetime.sleep(0.5)