Pavlov's Cat: Temporizador IoT para Treinar Seu Gato
Componentes e Materiais
| Arduino MKR IoT Bundle | 1 |
Aplicativos e Serviços Online
- Telegram
Sobre o Projeto
Nota: Tutorial pode estar desatualizado; versão mais atual aqui.
Treinar gato é difícil, mas com IoT você pode condicioná-lo. Este projeto ensina o gato a associar melodia à hora da comida usando componentes do MKR IoT Bundle e papelão (gatos adoram caixas!).
Em Resumo
- Construa dispensador de ração com papelão + servo + Arduino.
- Telegram: defina quantidade de ração e toque melodias via bot com teclado personalizado.
- Fototransistor detecta presença do gato no dispensador.
- Pro Tip: Hospede página web no MKR1000 para visualizar dados em tabela.
Objetivos de Aprendizado
- Gerenciar Bots Telegram com teclado personalizado.
- Configurar servidor web no MKR1000 (#ProTip).
Telegram e Arduino
Telegram permite criar bots poderosos. Biblioteca TelegramBot para Arduino facilita. Veja tutorial "I Love You Pillow" para criar bot básico.
Criando Teclado Personalizado
Botões personalizados substituem teclado padrão. Nosso teclado:
Linha 1: [🎵+🍪] [🎵 NO 🍪] // Melodia+Comida / Melodia SEM Comida
Linha 2: [🐱] [🐱🐱] [🐱🐱🐱] // 1, 2, 3 porções
Criação no código:
TelegramKeyboard keyboard_one;
const char* row_one[] = {MusicAndFood, MusicNoFood};
const char* row_two[] = {OnePortion, TwoPortion, ThreePortion};
keyboard_one.addRow(row_one, 2);
keyboard_one.addRow(row_two, 3);
// Emojis via Unicode: \U0001F3B6 (nota), \U0001F36A (biscoito), \U0001F408 (gato)
Sketch completo inicia WiFi, conecta bot, envia teclado. Atenção: Emojis recebidos diferem dos enviados (ex: ud83cudfb6 para nota). Use EchoBot para ver códigos recebidos.
Detectar o Gato
Fototransistor + resistor 220Ω mede intensidade luminosa. analogRead(A6) lê valor. Lógica: após melodia, monitora por 2min. Se valor < threshold (ex: 200) → gato detectado. millis() controla temporizador não-bloqueante.
Tocar Melodia
Buzzer + função tone(). Baseado no exemplo toneMelody (Arduino IDE: Exemplos > Digital > toneMelody).
Adicionar Servo Motor
Servo abre caixa para liberar ração. Variável PortionAmount (padrão 1) define tempo aberto (ajustável via Telegram). Anexe servo no pino 7.
void moveServo() {
for(pos=0; pos<=90; pos+=1){ myservo.write(pos); delay(15); }
delay(PortionAmount * 300); // tempo aberto
for(pos=90; pos>=0; pos-=1){ myservo.write(pos); delay(15); }
}
#ProTip: Servidor Web no MKR1000
Modo Access Point hospeda página web acessível pelo IP da placa na mesma rede. Requer HTML/CSS básico (exemplo AP_SimpleWebServer da lib WiFi101).
Ativado ao enviar "Server" ao bot → responde com link https://IP. Cliente Telegram desconecta, servidor web inicia. Página tem botão "Voltar" que desliga servidor e reconecta bot.
Cada detecção adiciona célula à tabela HTML: comida liberada? gato apareceu? tempo de resposta. String table_cells acumula linhas, integrada no HTML principal.
Código
Sketch completo e versão #ProTip com servidor web.
Peças Personalizadas
Gabinete em papelão 2mm: pavlovcase_ShVm1OJRIF.dxf
Esquemático
Diagrama de conexões: fototransistor, buzzer, servo, MKR1000.
Processo de manufatura
- A Ciência e Indústria dos Vegetais Congelados: Da Colheita à Mesa
- Refeições Prontas (TV Dinners): História, Produção e Inovações Futuras
- Tomógrafos Computadorizados (TC): Evolução, Design e Futuro da Imagem Médica 3D
- História e Impacto da Areia para Gatos: Da Argila à Indústria
- Guia Completo de Alimentos Liofilizados: Preservação, Produção e Tendências Futuras
- Produção de Ração para Animais: Dos Ingredientes à Regulamentação — Guia Completo
- Shop.Cat.Com: Seu Recurso Completo para Equipamentos, Implementos e Ferramentas
- Otimize Máquinas Cat®: O Guia Definitivo do My.Cat.com
- Máquinas de Venda de Alimentos Versáteis: De Lanches a Sanduíches Frescos
- Acelerando a Produção de Alimentos com Segurança através da Automação