Robô educacional interativo com reconhecimento RFID, controle remoto IR, teclado matricial e matriz de LEDs
📖 Documentação • ⚙️ Instalação • 🎯 Funcionalidades • 🚀 Roadmap
- Sobre o Projeto
- Características Principais
- Documentação
- Pré-requisitos
- Instalação
- Componentes de Hardware
- Bibliotecas e Versões
- Funcionalidades Atuais
- Esquema de Conexões
- Como Usar
- Próximas Funcionalidades
- Modelagem 3D
- Troubleshooting
- Contribuindo
- Autores
- Referências
- Licença
O Otto é um robô educacional open-source desenvolvido para ensinar programação, eletrônica e robótica de forma interativa e divertida. Este repositório contém a versão atual do código, completamente refatorada e documentada, além dos arquivos de modelagem 3D para impressão.
- 🎵 Sistema de Áudio: Reprodução de músicas e efeitos sonoros via DFPlayer Mini
- 😊 Expressões Faciais: Matriz LED 8x8 com 10+ emoções diferentes
- 🎮 Controle Remoto: Interface via controle infravermelho
- 💳 Leitor RFID: Reconhecimento de cartões para comandos personalizados
- ⌨️ Teclado Matricial: 10 teclas para interação direta
- 🕺 Movimentos: 4 servos para braços e pernas com coreografias
- 🧠 Sistema Inteligente: Respostas emocionais e comportamentos interativos
OTTO_v1_v2/
├──Hardware
│ ├── Bateria.png #Esquematico da Bateria
│ ├── Componentes.png #Esquematico dos Componentes
│ └── Hardware_2025.pdf #Esquematicos com melhor resolução
├──Modelagem_3d
│ ├── amarelo #Arquivos para impressão 3D
│ ├── azul #Arquivos para impressão 3D
│ └── preto #Arquivos para impressão 3D
├──Software
│ └── Programacao_2025.ino #Código
├──old_versions #Arquivos pré 2025
└── README.md #Este arquivo
- Linguagem: C++ (Arduino Framework)
- Plataforma: Arduino Mega 2560
- IDE: Arduino IDE 1.8.19 ou superior
- Compilador: AVR-GCC
Antes de começar, certifique-se de ter:
- ✅ Visual Studio - Redistributable C++ (necessário para Arduino IDE)
- ✅ Java JRE 8 ou superior - Runtime para Arduino IDE
- ✅ Arduino IDE 1.8.19 - Ambiente de desenvolvimento
| Componente | Quantidade | Especificação |
|---|---|---|
| Arduino Mega 2560 pro mini | 1x | Microcontrolador principal |
| Servo Motor SG90 | 4x | Movimentação de braços e pernas |
| DFPlayer Mini | 1x | Módulo de áudio MP3 |
| Alto-falante | 1x | 3W, 8Ω |
| MFRC522 | 1x | Leitor RFID 13.56MHz |
| Matriz LED 8x8 | 1x | MAX7219 |
| Receptor IR | 1x | VS1838B ou similar |
| Teclado Matricial | 1x | 2x5 (10 teclas) |
| Regulador de Tensão | 1x | LM2596 ou similar (5V, 3A) |
| Bateria | 1x | 7.4V LiPo 2S ou 6x AA |
| Resistores | Diversos | 1kΩ, 10kΩ |
# 1. Instale Visual Studio Redistributable C++
# Baixe em: https://visualstudio.microsoft.com/pt-br/downloads/
# 2. Instale Java JRE
# Baixe em: https://www.java.com/pt-BR/download/
# 3. Instale Arduino IDE 1.8.19
# Baixe em: https://www.arduino.cc/en/software/OldSoftwareReleasesAbra o Arduino IDE e instale as bibliotecas via Sketch → Include Library → Manage Libraries:
| Biblioteca | Versão | Instalação |
|---|---|---|
| DFRobotDFPlayerMini | 1.0.5 | Gerenciador de Bibliotecas |
| LedControl | 1.0.6 | Gerenciador de Bibliotecas |
| MFRC522 | 1.4.10 | Gerenciador de Bibliotecas |
| IRremote | 4.0.0+ | GitHub |
| Keypad | 3.1.1 | Gerenciador de Bibliotecas |
Bibliotecas Nativas (já incluídas no Arduino):
Servo.hSPI.hSoftwareSerial.havr/wdt.h
- Formate o cartão SD em FAT32
- Crie uma pasta chamada
mp3na raiz - Adicione arquivos de áudio nomeados como:
0001.mp3- Som de ligar0002.mp3- Som de desligar0084.mp3- Emoção: Triste0085.mp3- Emoção: Feliz- (Continue conforme a tabela de áudios)
# 1. Conecte o Arduino Mega via USB
# 2. Selecione a placa: Tools → Board → Arduino Mega 2560
# 3. Selecione a porta: Tools → Port → COMx (Windows) ou /dev/ttyUSBx (Linux)
# 4. Clique em Upload (→)Pino 2 → Perna Esquerda (Left Foot)
Pino 3 → Perna Direita (Right Foot)
Pino 6 → Braço Esquerdo (Left Arm)
Pino 7 → Braço Direito (Right Arm)Pino 11 → RX (DFPlayer)
Pino 10 → TX (DFPlayer)
→ VCC → 5V (regulado)
→ GND → GND
→ SPK+ → Alto-falante +
→ SPK- → Alto-falante -Pino 5 → RST
Pino 53 → SDA/SS
Pino 51 → MOSI
Pino 50 → MISO
Pino 52 → SCK
→ 3.3V → 3.3V
→ GND → GNDPino 22 → DIN (Data In)
Pino 24 → CLK (Clock)
Pino 26 → CS (Chip Select)
→ VCC → 5V
→ GND → GNDPino 13 → Signal
→ VCC → 5V
→ GND → GNDLinhas: Pino 40, 38
Colunas: Pino 42, 44, 46, 48, 47| Biblioteca | Versão | Descrição | Download |
|---|---|---|---|
| Arduino IDE | 1.8.19 / 1.8.57.0 | Ambiente de desenvolvimento | Link |
| DFRobotDFPlayerMini | 1.0.5 | Controle do módulo MP3 | GitHub |
| LedControl | 1.0.6 | Controle de matriz LED MAX7219 | Arduino Lib |
| MFRC522 | 1.4.10 | Biblioteca para leitor RFID | GitHub |
| IRremote | 4.0.0+ | Recepção de sinais infravermelhos | GitHub |
| Keypad | 3.1.1 | Leitura de teclado matricial | Playground |
| Servo | Nativa | Controle de servos motores | Incluída no Arduino |
| SPI | Nativa | Comunicação SPI | Incluída no Arduino |
| SoftwareSerial | Nativa | Serial por software | Incluída no Arduino |
| avr/wdt | Nativa | Watchdog Timer | Incluída no Arduino |
- ✅ Reprodução de 100+ arquivos MP3
- ✅ Controle de volume (0-30)
- ✅ Sons de emoções sincronizados
- ✅ Efeitos sonoros para movimentos
| Emoção | Código | Descrição |
|---|---|---|
| 😊 Feliz | 85 | Sorriso + comemoração |
| 😢 Triste | 84 | Face triste + braços caídos |
| 😠 Raiva | 89 | Face brava + braços tremendo |
| 😨 Medo | 87 | Face assustada |
| 😳 Vergonha | 86 | Face tímida |
| 🤢 Enjoado | 91 | Face nauseada |
| 😴 Cansado | 108 | Face sonolenta |
| 😲 Surpreso | 90 | Face de susto |
| ❤️ Amor | 95 | Coração nos olhos |
| 😐 Neutro | - | Face padrão |
| Botão | Código | Função |
|---|---|---|
| POWER | 0xBA45FF00 | Liga/Desliga robô |
| 1 | 0xF30CFF00 | Resposta positiva (acertou) |
| 3 | 0xA15EFF00 | Resposta negativa (errou) |
| 5 | 0xE31CFF00 | Modo dança |
| VERDE | 0xB847FF00 | Liga/Desliga teclado |
- Emoções: Cartões 84-91, 106-108
- Músicas: Qualquer outro número
- Comandos especiais: Parabéns (107)
- Teclas 0-9 tocam áudios 97-106
- Habilitação via controle remoto
- Feedback sonoro imediato
- Acenar: Cumprimento com braço direito
- Comemorar: Braços para cima e baixo (4 ciclos)
- Tristeza: Braços caem desanimados
- Raiva: Braços tremendo rapidamente
- Dança: Coreografia completa (pernas + braços)
Para saber as especificações técnicas da bateria, basta acessar a pasta correspondente, lá consta o seu datasheet, sobre o mostrador de bateria, bem como ligações elétricas.
┌─────────────────────────────────────────┐
│ Arduino Mega 2560 pro │
│ │
│ [Servos] [DFPlayer] [RFID] [IR] [LED] │
│ │ │ │ │ │ │
└─────┼─────────┼─────────┼──────┼─────┼──┘
│ │ │ │ │
Braços Alto- Cartões Controle LEDs
Pernas Falante Remoto Matriz
- Ligue o robô: Pressione o botão POWER do controle
- Aguarde: Otto mostra coração ❤️ e acena 👋
- Pronto: Face neutra indica que está pronto
POWER → Liga/Desliga
1 → Elogio (acertou) → Otto comemora 🎉
3 → Feedback negativo (errou) → Otto fica triste 😢
5 → Inicia dança 🕺
VERDE → Habilita/desabilita teclado
1. Pressione VERDE no controle para habilitar
2. Pressione qualquer tecla (0-9)
3. Otto reproduz áudio correspondente
1. Aproxime cartão do leitor
2. Otto identifica o número gravado
3. Executa ação correspondente:
- Emoções (84-91): Som + expressão + movimento
- Músicas (outros): Som + animação de fala
1. Pressione POWER no controle
2. Otto acena tchau 👋
3. Toca som de despedida
4. Display apaga e sistema desliga
- Teclado Touch Capacitivo: Substituir teclado mecânico por touch
- Orelhas Móveis: Adicionar servos para movimento de orelhas
- Corpo Articulado: Movimento de torção do corpo
- Olhos RGB: LEDs coloridos nos olhos com efeitos
- Cabos Blindados: Substituir jumpers por cabos blindados para reduzir interferência
- PCB Personalizada: Board com conectores parafusados para regulador de tensão
- Proteção Elétrica: Fusível de proteção para bateria
- Mais Emoções: Expandir biblioteca de expressões
- Coreografias: Novas danças e movimentos
- Jogos Interativos: Mini-games educativos
Todos os arquivos STL estão na pasta Hardware/
| Especificação | Valor |
|---|---|
| Impressora | Mesa mínima 25x25cm |
| Resolução | 0.2mm (camada) |
| Preenchimento | 20-30% |
| Suporte | Necessário em algumas peças |
| Material | PLA ou PETG |
| Temperatura Bico | 200-210°C (PLA) |
| Temperatura Mesa | 60°C |
- Modelagem: Autodesk Fusion 360
- Fatiamento: Ultimaker Cura 3.0+
- Visualização: Qualquer visualizador STL
📦 otto_1.0-stl/
├── 🦴 corpo.stl (1x) - 4-5 horas
├── 🦿 perna_esquerda.stl (1x) - 2 horas
├── 🦿 perna_direita.stl (1x) - 2 horas
├── 💪 braco_esquerdo.stl (1x) - 1 hora
├── 💪 braco_direito.stl (1x) - 1 hora
├── 🤖 cabeca_frente.stl (1x) - 3 horas
└── 🤖 cabeca_tras.stl (1x) - 2 horas
⏱️ Tempo total estimado: 15-20 horas
Erro: "Nao inicializado: Cheque as conexoes"
Soluções:
✅ Verifique conexões TX/RX (pinos 11 e 10)
✅ Use resistor de 1kΩ no RX do DFPlayer
✅ Formate cartão SD em FAT32
✅ Renomeie arquivos: 0001.mp3, 0002.mp3...
✅ Teste cartão em outro dispositivo
Erro: Cartão não é detectado
Soluções:
✅ Verifique alimentação 3.3V (não use 5V!)
✅ Confirme conexões SPI (MOSI, MISO, SCK)
✅ Aproxime cartão a menos de 3cm
✅ Teste com diferentes cartões
✅ Verifique se biblioteca MFRC522 está instalada
Problema: Movimento irregular
Soluções:
✅ Use fonte externa de 5V, 3A mínimo
✅ Adicione capacitor de 1000µF na alimentação
✅ Verifique se fios não estão soltos
✅ Calibre posição inicial dos servos (90°)
✅ Reduza carga (remova peso extra)
Problema: Controle remoto não funciona
Soluções:
✅ Troque baterias do controle
✅ Aponte diretamente para o receptor
✅ Verifique pino 30 do receptor IR
✅ Teste com Serial Monitor para ver códigos
✅ Troque receptor se necessário
Problema: Display não mostra nada
Soluções:
✅ Verifique pinos DIN (22), CLK (24), CS (26)
✅ Confirme alimentação 5V estável
✅ Teste com código de exemplo do LedControl
✅ Verifique orientação do módulo MAX7219
Contribuições são sempre bem-vindas! Siga os passos:
- Fork o projeto
- Clone seu fork
git clone https://github.com/seu-usuario/OTTO_v1_v2.git
- Crie uma branch para sua feature
git checkout -b feature/MinhaFeature
- Commit suas mudanças
git commit -m "Adiciona: Minha nova feature" - Push para a branch
git push origin feature/MinhaFeature
- Abra um Pull Request
- 📝 Comente seu código adequadamente
- ✅ Teste antes de enviar
- 📚 Atualize documentação se necessário
- 🎯 Mantenha código limpo e organizado
- 🐛 Reporte bugs com detalhes
![]() Dayanni Programação & Eletrônica |
Débora Mateus Programação & Eletrônica |
![]() Luiz Guilherme Programação & Eletrônica |
|
Gabriel Rebouças Modelagem & Impressão 3D |
- DFPlayer Mini - DFRobot
- MFRC522 - RFID Library
- IRremote - Arduino
- Keypad - Arduino Playground
- LedControl - Wayoda
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
MIT License
Copyright (c) 2024 Otto UFMT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software...
Desenvolvido com ❤️ pela equipe Otto UFMT



