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 Alimentador Inteligente para Pets com Arduino Nano

Componentes e Materiais

Quant.ItemObservações
1Arduino Nano R3Ideal para gabinete compacto
1Relógio de Tempo Real (RTC) DS3231 (Adafruit)Chip DS3231 genuíno para precisão extrema
1Servo de Rotação ContínuaCompre um de qualidade (ex.: HSR-2645CRH)
1Dispensador de CereaisBarato no eBay; usei modelo duplo por €15 c/ frete
1Sensor Hall Unipolar (Honeywell SS443R)Detecta ímãs para controle preciso de porção
6Ímãs Cilíndricos 3mm x 5mmFixados no disco do eixo do dispensador
1LCD RGB 16x2 com Backlight (Adafruit)
1Mochila I2C para LCD
1Botão Momentâneo IP67 (Apem)
1Botões Momentâneos Pequenos
6LEDs (2 vermelhos, 3 verdes, 1 amarelo)
1Gabinete ABS com Flange (Hammond) 120x65x40mm
1Fonte Externa 12V/1A
2Resistores 1kΩ (LEDs vermelhos)
4Resistores 560Ω (LEDs verde/amarelo)
-Conectores fêmea de precisão, fios, muita cola quente

Opcional: Alimentação do Servo em 7,4V (mais torque)

Use calculadoras online de LM317 para definir os resistores.

Aplicativos e Serviços Online

Sobre o Projeto

Atualização 2018-09-06

Meus dois alimentadores funcionam perfeitamente há 7 meses. Os pets recebem ração em horários regulares. Muito satisfeito com o sistema!

Por Que Mais Um Alimentador?

Baseado em Arduino, materiais baratos e fácil de construir. Não encontrei projeto completo com as funções que precisava, então criei do zero.

Funcionalidades

Vídeos Demonstrativos

Fotos

Construa Seu Próprio Alimentador Inteligente para Pets com Arduino Nano

Construa Seu Próprio Alimentador Inteligente para Pets com Arduino Nano

O Recipiente de Ração

Dispensadores de cereais (comuns em lojas e eBay) são os mais baratos e fáceis. Comprei um duplo por €15. O desafio foi criar a fixação. Usei cedro de 3 cm de espessura para evitar vibrações. O furo deve ser justo (meu dispensador tem base de 86 mm); melhor furar menor e alargar com lixa.

Construa Seu Próprio Alimentador Inteligente para Pets com Arduino Nano

Construa Seu Próprio Alimentador Inteligente para Pets com Arduino Nano

(Outras fotos mostram detalhes da fixação, furação e acabamento.)

O Servo e a Fixação na Roda do Dispensador

Use servo de rotação contínua de qualidade. Tentei modificar um MG996R – falhou. O HSR-2645CRH funcionou perfeitamente.

Conexão servo-roda: Cortei disco de 6 cm em policarbonato 5 mm, furei centro (8 mm, eixo do dispensador) e 6 furos de 3 mm na borda para os ímãs (60° entre si). O sensor Hall detecta cada ímã, permitindo posicionamento exato. A variável FEEDER_STOP_DELAY ajusta o atraso de parada após a alimentação para que a roda pare na posição correta (evitando que ração fique presa).

Colei o eixo do dispensador no disco de policarbonato. A haste do servo (branca) foi parafusada no disco com 3 parafusos M3 e porcas como espaçadores.

Com o servo integrado, medi a altura necessária do bloco de madeira sob ele.

O Sensor Hall

Tipo unipolar: saída LOW quando ímã se aproxima; não precisa polaridade inversa para resetar. Requer resistor pull-up 10kΩ (soudei SMD 0805 direto no sensor). Usei corpo de caneta esferográfica como suporte do sensor.

Gabinete da Eletrônica

Gabinete Hammond ABS 120x65x40mm. Conexões externas com soquetes fêmea de precisão (evitam falhas por mau contato). Inclui conector FTDI externo para programação fácil.

Painel Frontal

Testei várias técnicas: Mod Podge (falhou), verniz poliuretano (não adere ao toner), laminação PVC (parcial), folha de alumínio para laser (boa, mas proteção falhou). Acabei usando impressão em folha de alumínio sem proteção – aceitável, embora marque digitais.

Código

Pet Feed-O-Matic v1.1 (20-02-2018)

Código completo (truncado aqui; baixe o arquivo para versão integral). Principais trechos:

// Bibliotecas
#include <LiquidCrystal_I2C.h>
#include <Button.h>
#include <DS3232RTC.h>
#include <Time.h>
#include <Wire.h>
#include <EEPROM.h>

// Pinos
#define HALL_SENSOR_PIN 3
#define BUTTON_BACK_PIN 4
#define BUTTON_UP_PIN 5
#define BUTTON_DOWN_PIN 6
#define BUTTON_SELECT_PIN 7
#define BUTTON_CANCEL1_PIN 8
#define BUTTON_CANCEL2_PIN 9
#define BUTTON_MANUAL_PIN 10
#define LED_CANCEL1_PIN A0
#define LED_CANCEL2_PIN A1
#define LED_SUCCESS1_PIN A2
#define LED_SUCCESS2_PIN A3
#define SERVO_OUTPUT_PIN 12
#define LED_HALL_SENSOR_PIN 13

// Constantes ajustáveis
#define HALL_SENSOR_BACKUP_VALUE 300
#define FEEDER_STOP_DELAY 100
#define LCD_BACKLIGHT_ON_TIME 30000
#define MENU_TIMEOUT_VALUE 7000

// Objetos
LiquidCrystal_I2C lcd(0x3F, 16, 2);
Button buttonSelect(BUTTON_SELECT_PIN, true, true, 20);
Button buttonUp(BUTTON_UP_PIN, true, true, 20);
Button buttonDown(BUTTON_DOWN_PIN, true, true, 20);
Button buttonBack(BUTTON_BACK_PIN, true, true, 20);
Button buttonCancel1(BUTTON_CANCEL1_PIN, true, true, 20);
Button buttonCancel2(BUTTON_CANCEL2_PIN, true, true, 20);
Button buttonManual(BUTTON_MANUAL_PIN, true, true, 20);

// Máquina de estados (FSM) para menu e operação
enum STATES { MAIN, MENU_EDIT_FEEDTIME1, MENU_EDIT_FEEDTIME2, MENU_EDIT_FEEDAMOUNT,
              MENU_EDIT_TIME, MENU_EDIT_DATE, EDIT_FEED_TIME1_HOUR, EDIT_FEED_TIME1_MINUTE,
              EDIT_FEED_TIME1_ON_OFF, EDIT_FEED_TIME2_HOUR, EDIT_FEED_TIME2_MINUTE,
              EDIT_FEED_TIME2_ON_OFF, EDIT_FEED_AMOUNT1, EDIT_FEED_AMOUNT2,
              EDIT_HOUR, EDIT_MINUTE, EDIT_DAY, EDIT_MONTH, EDIT_YEAR,
              EDIT_SERVO_STOP_DELAY, EDIT_SERVO_BACKUP_DELAY };

// Interrupção do sensor Hall
volatile boolean hallSensorActivated = false;
void HallSensorIsr() {
  hallSensorActivated = true;
  digitalWrite(LED_HALL_SENSOR_PIN, HIGH);
}

void setup() {
  lcd.begin(); lcd_backlight_ON();
  Wire.begin();
  pinMode(HALL_SENSOR_PIN, INPUT_PULLUP);
  pinMode(LED_HALL_SENSOR_PIN, OUTPUT);
  pinMode(SERVO_OUTPUT_PIN, OUTPUT);
  // ... configuração LEDs, criação de caracteres customizados, servo desligado
  Wire.begin();
  setSyncProvider(RTC.get);
  setSyncInterval(60);
  RTC.squareWave(SQWAVE_NONE);
  attachInterrupt(1, HallSensorIsr, FALLING);
  ledsAndLcdDisplayStartup();
  state = MAIN;
  get_feed_time1(); get_feed_time2(); // lê EEPROM
}

void loop() {
  change_states();
  check_inputs();
  check_alarm();
  check_manual_feed();
  midnight_reset();
  check_RTC();
  hallSensorCheck();
  check_LcdBacklight();
}

// Funções de estado, leitura de botões, controle do servo, display, EEPROM, etc.
// (Código completo no arquivo anexo: arduino_pet_feeder_final_eng_v1_0-ino_hex_libraries_dsoo0HscCr.zip)

Esquemáticos

Esquemático do alimentador baseado em Arduino.

Construa Seu Próprio Alimentador Inteligente para Pets com Arduino Nano

Use Arduino IDE 1.8.2. Evite ter duas versões da mesma biblioteca na pasta libraries!

Processo de manufatura

  1. Produção de Ração para Animais: Dos Ingredientes à Regulamentação — Guia Completo
  2. Console de Controle DIY para Photoshop com Arduino Nano RP2040
  3. Construa um Spybot Controlado por Bluetooth com Arduino
  4. Kit Arduino Nano: CrazyCircuits, Sensores DFRobot e Ferramentas – Crie Projetos com Confiança
  5. Construa um Jogo Tetris com Arduino Nano em Matriz LED 16×8 DIY
  6. Construa Seu Próprio Tamagotchi com Arduino: Projeto DIY de Pet Digital
  7. Controle Dois Motores de Passo com Arduino Nano e Joystick – Tutorial Simples
  8. Alimentador de Pets Controlado Remotamente com Arduino: Kit DIY e Guia de Construção
  9. Contador Geiger Portátil com Arduino Nano: Construa o Seu
  10. Shield TFT 2,8" para Arduino Nano – Display SPI 320×240 de Alto Desempenho