Ligando uma Lâmpada com o Assistente Virtual feito em Python

Turma do WorkShop de Python com Arduino

No dia 15/11/2019 a Pixels Escola promoveu workshop de Python e Arduino capacitando 15 alunos com entrega de certificado, e o foco do curso não foi apenas teórico, o curso foi 100% prático tendo como resultado final um projeto de um Assistente Virtual escrito em Python que controla uma Lâmpada por comando de voz usando a placa Arduino.

Para você ter uma ideia mais ou menos de como funciona, o vídeo abaixo do Prof Sandro Mesquita mostra o assistente pronto mas ainda sem comandar o Arduino.

Estamos disponibilizando o código completo do treinamento, e se você desejar também fazer esse curso, deixe seu comentário que montaremos uma nova turma caso haja interesse real.



# -*- coding: utf-8 -*-
"""
Created on Sun Nov 10 07:50:37 2019

@author: Sandro
"""

#conda install -c anaconda pyaudio
import speech_recognition as sr # pip install SpeechRecognition
import pyttsx3 # pip install pyttsx3
import serial #conda install -c anaconda pyserial
import threading
import time

text="DESATIVADO"

r = sr.Recognizer()

mic = sr.Microphone()

engine = pyttsx3.init()

conectado = False
porta = 'COM7' # linux ou mac em geral -> '/dev/ttyS0'
velocidadeBaud = 9600 #Velocidade de transmissão Serial

mensagensRecebidas = 1;
desligarArduinoThread = False

try:
    # Inicia a conexão com a porta serial com a chamada ao método serial.Serial(PORTA_SERIAL, BAUD_RATE).
    SerialArduino = serial.Serial(porta,velocidadeBaud, timeout = 0.2)
except:
    print("Verificar porta serial ou religar arduino")

def handle_data(data):
    global mensagensRecebidas
    print("Recebi " + str(mensagensRecebidas) + ": " + data)
    mensagensRecebidas += 1

def read_from_port(ser):
    global conectado, desligarArduinoThread
   
    while not conectado:
        conectado = True

        while True:
           reading = ser.readline().decode()
           if reading != "":
               handle_data(reading)
           if desligarArduinoThread:
               print("Desligando Arduino")
               break

lerSerialThread = threading.Thread(target=read_from_port, args=(SerialArduino,))
lerSerialThread.start()

print("Preparando Arduino")
time.sleep(2)
print("Arduino Pronto")

with mic as fonte:
    while(text=="DESATIVADO"):
        r.adjust_for_ambient_noise(fonte)
        print("Estou ouvindo")
        audio = r.listen(fonte)
        print("Enviando para reconhecimento")
       
        try:
            text = r.recognize_google(audio, language= "pt-BR")
            if(text=="ativar"):
                print("Ativando reconhecimento de fala!")
                engine.say("Ativando reconhecimento de fala!")
                engine.runAndWait()
                engine.stop()
            else: text="DESATIVADO"
        except:
            text="DESATIVADO"
           
    while(text=="ativar"):
        r.adjust_for_ambient_noise(fonte)
        print("Fale alguma coisa")
        audio = r.listen(fonte)
        print("Enviando para reconhecimento")
       
        try:
            fala = r.recognize_google(audio, language= "pt-BR")
            print("Você disse: {}".format(fala))
           
            if (fala=="ligar a luz"):
                print("Enviando")
                SerialArduino.write('ligar luzes\n'.encode())
                time.sleep(2)
               
                engine.say("Ligando as luzes!")
                engine.runAndWait()
                engine.stop()
               
            elif (fala=="Desligar a luz"):
                print("Enviando")
                SerialArduino.write('desligar luzes\n'.encode())
                time.sleep(2)
               
                engine.say("desligando as luzes")
                engine.runAndWait()
                engine.stop()
           
            elif ((fala=="obrigado")or(fala=="Obrigado")):               
                engine.say("De nada, estou a sua disposição.")
                engine.runAndWait()
                engine.stop()
               
            elif (fala=="dispensada"):
                engine.say("Tudo bem, desativando reconhecimento de fala.")
                engine.runAndWait()
                engine.stop()
                text="DESATIVADO"
           
               
        except:
            print("Não entendi o que você disse")
           
            engine.say("Não entendi o que você disse, pode repetir?")
            engine.runAndWait()
            engine.stop()

Acesse o site da Comunidade Arduino no Ceará:

www.arduinoceara.com


      

Qualquer duvida estamos a disposição em nossas Redes Social ou pode comentar logo abaixo:

Comentários

Postar um comentário

Postagens mais visitadas deste blog

COMO CONTROLAR O SERVO MOTOR USANDO UM BOTÃO E ARDUINO

ENERGIA SOLAR COM ARDUÍNO

ERRO AO CARREGAR O CÓDIGO NO ARDUÍNO NANO