Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa Seu Próprio Robô Assistente de IA com Arduino e Python

Componentes e Materiais

Aplicativos e Serviços Online

Sobre o Projeto

Introdução

Todos conhecem o 'Jarvis', robô assistente de IA dos filmes "Homem de Ferro" e séries Marvel. Sempre foi sonho de programadores criar o seu. Mostrarei uma forma simples usando Python. Além disso, farei um avatar físico: quando falamos com o robô, ele faz movimentos. Isso é mais legal que apenas software. Vamos aprender a usar Arduino e Python para criar um robô IA que controla seu computador e conversa.

Por que 'Jaundice'? Porque pintei de amarelo, muito amarelo!

Peças

Eletrônica:

Corpo:

Ferramentas:

Software:

Princípio

O código principal (IA) roda no computador: suporta Python, tem mais poder de processamento que o Arduino, e como o bot controla/automatiza tarefas do PC, deve rodar nele. O Arduino conecta via USB.

Ideia: programa Python faz Speech-to-Text, processa texto e Text-to-Speech. O robô ouve, entende e responde. Movimentos corporais são funções salvas no Arduino. Python envia bytes para executar funções. Ex.: para dizer "Oi", Python envia byte 'h', Arduino executa hi().

Circuitos e Eletrônica

Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python

Circuitos assustam makers. Projetei uma PCB versátil (slot microSD, Bluetooth, fonte 5V externa, alimentada pelo Nano). Usei EasyEDA e fabriquei na PCBWay. Serviço incrível: cotação instantânea, tudo automático, recebi em 3 dias da China para Bangladesh. Qualidade fantástica.

Trilhas de 300mm suportam 1A. Baixe arquivos da PCB aqui.

Soldagem e Teste do Circuito

Construa Seu Próprio Robô Assistente de IA com Arduino e Python

Soldagem completa. Cuidado: não inale fumos (risco de câncer). Não usei módulo Bluetooth nem cartão TF, deixei sem soldar. 3 servos + 1 sonar alimentados via USB — ótimo, sem fonte extra. Se quiser baterias externas, use LiPo 2S (7.4V); mais que isso queima servos.

Faça o Corpo

Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python
Construa Seu Próprio Robô Assistente de IA com Arduino e Python

Usei chapa PVC (pode ser papelão). Caixa principal para placa e servos; cabeça com dois furos para sensor (olhos). Braços: um como chave inglesa, outro como plugue (usei plugue real colado com cola quente).

Dimensões? Não há medidas fixas — é seu robô, faça do tamanho e forma que quiser com ferramentas simples.

Importante: Instale toda eletrônica antes de fechar o corpo. Pintei depois de colocar sensores e eletrônica — não faça isso, meu Arduino ficou amarelo. Pinte o corpo pronto, depois instale eletrônica.

Codificação 1 (Python)

Construa Seu Próprio Robô Assistente de IA com Arduino e Python

Baixe Python aqui, marque "Add to PATH" na instalação.

Instale bibliotecas via terminal:

pip install speechrecognition
pip install pyaudio
pip install pyttsx3
pip install pywhatkit
pip install pyserial

Baixe o código Python aqui ou copie abaixo.

""" JAUNDICE: AI Assistant robot with Arduino and Python
author: ashraf minhaj
mail: ashraf_minhaj@yahoo.com
Last Edit: Nov 2020
License: GPL3+
"""
import speech_recognition as sr
import random
import pyttsx3
import datetime
import webbrowser
import serial
import pywhatkit

robot_name = 'jaundice'
hi_words = ['hi', 'hello', 'yo baby', 'salam']
bye_words = ['bye', 'tata', 'hasta la vista']
r_u_there = ['are you there', 'you there']

engine = pyttsx3.init()
listener = sr.Recognizer()

try:
    port = serial.Serial("COM15", 9600)
    print("Physical body, connected.")
except:
    print("Unable to connect to my physical body")

def listen():
    try:
        with sr.Microphone() as source:
            print("Talk>>")
            voice = listener.listen(source)
            command = listener.recognize_google(voice).lower()
            print(command)
            if command.split(' ')[0] == robot_name:
                print("[wake-up word found]")
                process(command)
    except:
        pass

def process(words):
    print(words)
    word_list = words.split(' ')[1:]
    if len(word_list) == 1:
        if word_list[0] == robot_name:
            talk("How Can I help you?")
            return
    if word_list[0] == 'play':
        talk("Okay boss, playing")
        extension = ' '.join(word_list[1:])
        port.write(b'u')
        pywhatkit.playonyt(extension)
        port.write(b'l')
        return
    elif word_list[0] == 'search':
        port.write(b'u')
        talk("Okay boss, searching")
        port.write(b'l')
        extension = ' '.join(word_list[1:])
        pywhatkit.search(extension)
        return
    if word_list[0] == 'get' and word_list[1] == 'info':
        port.write(b'u')
        talk("Okay, I am right on it")
        port.write(b'u')
        extension = ' '.join(word_list[2:])
        inf = pywhatkit.info(extension)
        talk(inf)
        return
    elif word_list[0] == 'open':
        port.write(b'l')
        talk("Opening, sir")
        url = f"https://{''.join(word_list[1:])}"
        webbrowser.open(url)
        return
    elif word_list[0] == 'uppercut':
        port.write(b'U')
    elif word_list[0] == 'smash':
        port.write(b's')
    elif word_list[0] == 'punch':
        port.write(b'p')

    for word in word_list:
        if word in hi_words:
            port.write(b'h')
            talk(random.choice(hi_words))
        elif word in bye_words:
            talk(random.choice(bye_words))

def talk(sentence):
    engine.say(sentence)
    engine.runAndWait()

while True:
    listen()

Codificação 2 (Arduino)

Fácil: Arduino aguarda dados seriais; se recebe byte correspondente a comando pré-definido, executa movimento. Ex.: 'u' levanta ambas as mãos.

Baixe o código aqui ou copie abaixo.

/** JAUNDICE: AI Assistant robot with Arduino and Python **/
#include <Servo.h>
Servo head, l_hand, r_hand;
int trig = 4, echo = 5;
byte val = "";

void setup() {
  head.attach(2); l_hand.attach(3); r_hand.attach(4);
  Serial.begin(9600);
}

void standby() {
  head.write(90);
  int r_pos = 30;
  int l_pos = map(r_pos, 0, 180, 180, 0);
  l_hand.write(l_pos); r_hand.write(r_pos);
}

void hi() {
  head.write(90);
  for(int i=30; i<=170; i++) { r_hand.write(i); delay(5); }
  for(int i=170; i>=100; i--) { r_hand.write(i); delay(5); }
  for(int i=100; i<=170; i++) { r_hand.write(i); delay(5); }
  for(int i=170; i>=30; i--) { r_hand.write(i); delay(5); }
  standby();
}

void hands_up() {
  for(int i=30; i<=170; i++) {
    int r_pos = i, l_pos = map(r_pos, 0, 180, 180, 0);
    l_hand.write(l_pos); r_hand.write(r_pos); delay(5);
  }
  delay(600);
  for(int i=170; i>=30; i--) {
    int r_pos = i, l_pos = map(r_pos, 0, 180, 180, 0);
    l_hand.write(l_pos); r_hand.write(r_pos); delay(5);
  }
}

void weight_lift() { ... }
void excited() { return; }
void look_left() { head.write(180); }
void confused() { ... }
void double_punch() { ... }
void r_upper_cut() { ... }
void smash() { ... }
void eye_detect() { return; }

void loop() {
  standby();
  while(Serial.available() > 0) {
    val = Serial.read();
    if(val == 'h') hi();
    if(val == 'p') double_punch();
    if(val == 'u') { hands_up(); delay(3000); }
    if(val == 'l') { standby(); look_left(); delay(2000); }
    if(val == 'U') { r_upper_cut(); delay(2000); }
    if(val == 's') { smash(); delay(2000); }
  }
}

Juntando Tudo e Conclusão

Conectei Arduino ao PC via USB e rodei o programa Python. Certifique-se de usar a porta COM correta no código Python. Se seguiu todos os passos, o bot funcionará perfeitamente.

Obrigado!

Código

Código Fonte

GitHub Repository

Esquemáticos

Construa Seu Próprio Robô Assistente de IA com Arduino e Python

Processo de manufatura

  1. Construa um Robô com Raspberry Pi e Python: Guia Completo
  2. Construa um Robô de Streaming de Vídeo Controlado por Internet com Arduino e Raspberry Pi
  3. Entendendo type() e isinstance() em Python: Exemplos Práticos
  4. Sistema de Presença RFID Confiável com Arduino e Python
  5. Robô Desviador de Obstáculos com Servo: Construa com Arduino e HC-SR04
  6. Controlar Roomba Create 2 com Arduino e Android: Guia Passo a Passo
  7. Arduino e MPU6050: Controle Preciso de Servomotores SG90 e MG996R
  8. Módulo GPS u-blox LEA‑6H 02: Guia de Integração com Arduino e Python
  9. Dominando Reconhecimento e Síntese de Fala no Arduino Due
  10. Robô Assistente Doméstico Autônomo: Lista Completa de Peças e Guia de Configuração