O Medusa bot é um projeto feito em C++ utilizando um ESP32-CAM para rotacionar, tirar fotos, identificar o que está na imagem e traduzir os rótulos atráves do Google Cloud e do Telegram.
- C++
- Arduino IDE
- ESP32-CAM
- Servo Motor
- Conversor USB
- Telegram
- Google Vision
- Google Tradutor
O usuário chama o bot no telegram usando o comando /photo, o bot então vai tirar três fotos, fazendo a seguinte rotina por foto:
- Tirar foto
- Enviar foto para Google Vision classificar imagem
- Traduzir os rótulos classificados usando o Google Tradutor
- Enviar a foto tirada para o grupo do Telegram
- Enviar a mensagem com os rótulos traduzidos para o grupo do Telegram.
- Girar 90°
- Utilização de API no C++
Tivemos dificuldades com a API em C++ por conta da manipulação dos tipos de dados JSON, que é diferente de outras linguagens como Python e Javascript, onde é mais fácil gerenciar os dados.
- Fazer o upload do código para o ESP32-CAM
Algumas bibliotecas necessárias o Arduino IDE não possuia compatibilidade o que resulto em atrasos, e também uma limitação física do ESP32-CAM nos obrigou a ter que usar um conversor USB-Serial para transmitir corretamente os dados dos pinos RX e TX
- Erro da Biblioteca CameraWebServer
O problema específico ocorre quando o ESP32-CAM estava configurado para capturar fotos e enviá-las em tempo real para o Telegram. No entanto, em vez de enviar as fotos em tempo real, o módulo estava salvando as imagens localmente e enviando-as de forma aleatória, resultando em uma experiência de transmissão não satisfatória.
- Biblioteca base64
Para enviar os dados para API do Google Cloud as imagens precisam estar em base64, por não conseguirmos instalar nenhuma biblioteca em C++ pronta para isso, tivemos que escrever direto no código o conversor.
Você também pode acessar a documentação do projeto que fizemos aqui ou os slides de apresentação