Гирокрокет (Gyrokibbles)
Gyrocroquettes (или Gyrokibble) — это хаотичный дозатор лакомств, работающий на базе Arduino Uno R4. Корпус, напечатанный на 3D-принтере, скрывает электронику и оснащен большой красной кнопкой аварийного типа, при нажатии которой сигнал по кабелю передается на настенный модуль. Этот модуль вращает контейнер для корма на высокой скорости, разбрасывая лакомства повсюду с помощью центробежной силы. Кошки мгновенно отвлекаются, превращая время еды в дикую охоту за мусором. Устройство также можно активировать удаленно через Arduino IoT — идеально подходит для ленивого утра или позднего возвращения домой.
Функции
Ключевые особенности и функциональные возможности проекта:
● Отслеживает физическую кнопку аварийного типа для локальной активации.
● Отслеживает виртуальную кнопку через облако Arduino IoT для удаленной активации.
● Запускает двигатель, который вращает контейнер для корма и разбрасывает лакомства в случайном порядке, чтобы накормить и развлечь кошек.
Используемое оборудование и программное обеспечение
Аппаратное обеспечение:
● Arduino Uno R4 Wi-Fi.
● Корпуса, напечатанные на 3D-принтере (кнопочный модуль и устройство подачи кормов)
● Дно бутылки из-под газировки из переработанного пластика (испол��зуется в качестве контейнера для пищевых продуктов).
● NPN-транзистор, диод и другие основные электронные компоненты.
● Электропроводка для подключения кнопочного модуля и диспенсера.
● Батарея 9 В с разъемом.
● USB-блок питания для Arduino.
Программное обеспечение:
● Ардуино IDE.
● Arduino IoT Cloud (��ля удаленного управления).
Схема подключения
Ниже описывается настройка проводки для Gyrokibble:
Контакт 2 Arduino подключен к одной стороне кнопки.
Контакт 5 Arduino подключен к резистору сопротивлением 1 кОм, который затем подключается к базе (B) NPN-транзистора.
Земля Arduino подключена к:
Другая сторона кнопки.
Эмиттер (Е) NPN-транзистора.
Отрицательная (-) клемма аккумулятора 9 В.
Коллектор © NPN-транзистора подключен к:
Одна клемма двигателя постоянного тока.
Анод диода (для защиты от обратного хода).
Положительная (+) клемма аккумулятора 9 В подключается к:
Другая клемма двигателя постоянного тока.
Катод диода.
Эта конфигурация позволяет Arduino управлять двигателем, включая и выключая транзистор. Кнопка обеспечивает локальный метод активации, а удаленное управление осуществляется через облако Arduino IoT.
Питание Arduino через USB
Двигатель постоянного тока питается от отдельной батареи 9 В для предотвращения падения напряжения на Arduino.
Диод используется в качестве обратноходового диода для защиты схемы от скачков напряжения, генерируемых двигателем.
Код
Код позволяет использовать два метода активации механизма подачи корма: локальную физическую кнопку и удаленную виртуальную кнопку через облако Arduino IoT. При срабатывании Arduino Uno R4 на короткое время приводит в действие двигатель, запуская лакомства за счет центробежной силы.
Основные моменты кода:
Отслеживает физическую кнопку на контакте 2, используя метод обнаружения спадающего фронта.
Прослушивает изменения облачной переменной (triggerMotor) для удаленной активации.
Активирует двигатель через NPN-транзистор, подключенный к выводу 5.
Использует короткую задержку (1,5 секунды) для управления временем работы двигателя.
Включает базовую светодиодную ��братную связь для отладки.
/*
Скетч, созданный с помощью Arduino IoT Cloud Thing «gyrokibbles».
Описание облачных переменных Arduino IoT
Следующие переменные автоматически генерируются и обновляются при внесении изменений в вещь.
bool триггерМотор;
Переменные, помеченные как READ/WRITE в Cloud Thing, также будут иметь функции.
которые вызываются, когда их значения изменяются на панели мониторинга.
Эти функции генерируются с помощью Thing и добавляются в конце этого эскиза.
*/
#include «thingProperties.h»
const int buttonPin = 2; // Физическая кнопка
const int MotorPin = 5; // Цифровой вывод �� поддержкой ШИМ, двигатель, активируемый транзистором
Bool buttonPressed = ложь;
недействительный активироватьМотор () {
digitalWrite (LED_BUILTIN, ВЫСОКИЙ); // это просто для проверки, это можно прокомментировать
digitalWrite(motorPin, ВЫСОКИЙ);
задержка(1500);
digitalWrite (LED_BUILTIN, НИЗКИЙ); // это просто для проверки, это можно прокомментировать
digitalWrite(motorPin, LOW);
}
недействительная настройка() {
// Инициализируем последовательный порт и ждем порта





























