Оглавление:

Автомат для кормления домашних животных с RasPi и Telegram Bot: 4 шага (с изображениями)
Автомат для кормления домашних животных с RasPi и Telegram Bot: 4 шага (с изображениями)

Видео: Автомат для кормления домашних животных с RasPi и Telegram Bot: 4 шага (с изображениями)

Видео: Автомат для кормления домашних животных с RasPi и Telegram Bot: 4 шага (с изображениями)
Видео: пирсинг прокол ареолы 2024, Июль
Anonim
Кормушка для домашних животных с RasPi и Telegram Bot
Кормушка для домашних животных с RasPi и Telegram Bot
Кормушка для домашних животных с RasPi и Telegram Bot
Кормушка для домашних животных с RasPi и Telegram Bot

Прежде всего, мне нужно уточнить, что это не оригинальная Idea Mine, просто обновите и адаптируйте сценарии программирования для работы с Telegram, я нашел это в предыдущем Instructable, поэтому авторы действительно являются его автором.

Вы можете увидеть эту испанскую версию в моем личном блоге:

Вам нужно построить небольшую схему, которая активирует двигатель с высоким крутящим моментом, а поскольку мои знания в области электроники очень и очень скудны, мне пришлось потратить пару дней на изучение основ, просмотрев видео на YouTube.

Исходный сценарий автоматизации написан на Python и использует соединение GMail для просмотра команд, я никогда не использовал этот язык программирования, но правда не так уж отличается от других, я немного изменил его, чтобы он лучше адаптировался к новому Эти библиотеки Python и процесс автоматизации вместе с конфигурациями операционной системы позволяют параметризовать следующее:

  • Взаимодействие с помощью команд, отправленных в чат, контролируется через чат-ботов.
  • Это позволяет отслеживать статус раздачи еды.
  • Контролирует, сколько еды будет выдано.
  • На нем есть кнопки, позволяющие кормить вручную.
  • Не допускает перекармливания за счет отключения кормления с 8-часовыми интервалами.
  • Он имеет ЖК-дисплей состояния, на котором отображаются данные, такие как дата и время следующего включения питания, идентификатор SSID, к которому он подключен к Wi-Fi, и IP-адрес устройства.
  • Необязательно: показывает некоторые случайные анекдоты и / или пустяки о числах с Чаком Норрисом, используя пару общедоступных APIS (изобретательно от оригинального автора).
  • Система невосприимчива к перезапускам из-за отключения электроэнергии, поскольку она сохраняет файл состояния.
  • Система обнаруживает потерю соединения и пытается восстановить соединение до тех пор, пока оно не будет успешным.

Шаг 1: Использованные материалы

  • 1 Raperry Pi, предпочтительно версия 3, которая уже интегрирована с беспроводной картой, вы также можете использовать версию Pi 3 Zero, это требует немного больше работы, потому что вам нужно припаять контакты, но я очень поздно обнаружил, что это может используйте один из более экономичных.
  • 1 электродвигатель с высоким крутящим моментом, 37 мм, 3,5 об / мин и 12 В.
  • 1 кронштейн для двигателя 37 мм.
  • 1 символьный ЖК-экран 20x4 строк с контроллером HD44780.
  • 1 дозатор зерновых Zevro, модель WM1001, вал-D длиной 5 дюймов, диаметром 0,63 см (для прикрепления его к дозатору необходим D-образный вырез)
  • 1 Муфта вала от 1/4 дюйма до 6 мм для соединения с двигателем.

Все предыдущие материалы, кроме двух последних, мне не удалось достать в своей стране (или, по крайней мере, я не знал, где их достать), однако стержень и муфта, вероятно, находятся в сварочном цехе, но я впервые что-то делаю. вот так, я понятия не имел, как он должен соответствовать движку, поэтому я попросил страницу ссылок, описанных выше; Ниже представлены материалы, которые я мог купить в местных магазинах:

  • 1 деревянный ящик, я использую 20,3 см в ширину, 26,7 см в высоту и 13 см в глубину. В коробке есть дверь, которая открывается вправо с отверстием 10 см x 4 см для размещения ЖК-экрана (местные столярные изделия)
  • 3 кнопки
  • 1 маленькая прототипная доска
  • 1 светодиод на 3,3 В (цвет не имеет значения, но для напряжения они обычно красные)
  • 1 транзистор NPN PN2222
  • 1 Сопротивление 270 Ом
  • 1 Сопротивление 10 кОм
  • 1 потенциометр 10 кОм
  • 1 диод IN4003 (может работать IN4001 или IN4004)
  • 1 адаптер 12В 3А
  • 1 адаптер 5V 2A
  • 4 винта с барашковой гайкой от 1,5 до 2 дюймов (в зависимости от толщины используемой древесины, они предназначены для крепления кронштейна двигателя к деревянному ящику)
  • Кабели Перемычки разных цветов
  • 1 складная труба или набор из ПВХ диаметром 4 дюйма, это зависит от высоты, на которой будет размещен деревянный ящик.
  • 1 колено из ПВХ, которое прикрепляется к предыдущей гипсовой повязке.
  • 3 хомута для автомобильных труб (Мир)
  • 4 фута кабеля UTP (нам нужны витые пары для подключения)
  • 1 USB-камера, разрешение не обязательно должно быть высоким.

Некоторые разные материалы, которые можно приобрести в хозяйственных магазинах или, возможно, у нас уже есть: Промышленная лента

  • Сварщик олова
  • Банка
  • Дрель
  • Упражнение 5/16
  • Саморезы S8 с расширителями

Шаг 2: Размещение конструкции

Размещение конструкции
Размещение конструкции
Размещение конструкции
Размещение конструкции
Размещение конструкции
Размещение конструкции

Основная идея состоит в том, чтобы заменить дозирующую ручку, которая входит в ZEVRO, на стержень D, который затем будет соединен с двигателем с помощью соединителя. Диспенсер будет прикреплен к деревянному ящику, а деревянный ящик к стене. Поскольку я не очень разбираюсь в электронике, я не использовал бакелитовую пластину для монтажа схемы, поэтому я использовал макетную плату, чтобы разместить все компоненты, поэтому в нижней части коробки с помощью винтов крепится Rapberry Pi и макетная плата, на которую уже был нанесен клей. на спине, поэтому я просто пошел наклеить его. Коробка должна иметь три кнопки, которые будут выполнять функцию перезапуска таймера, активации фидера, а последняя будет прямым шагом для активации двигателя без прохождения цепи. Двигатель будет удерживаться внутри коробки с помощью кронштейна, поэтому из коробки будет выступать только стержень D, который соединяется с дозатором, в нижней части коробки зафиксируйте и отрегулируйте веб-камеру так, чтобы при каждой консультации по электронной почте и подтверждении я прислали фото, как тарелка, чтобы не перекармливать, если они не закончили последний раунд еды.

Снизу дозатора была размещена трубка, которая спускается к тарелке, и колено из ПВХ было помещено на основание, я поместил небольшую промышленную ленту в выпускное отверстие, чтобы минимизировать скорость потока пищи, и сделал дозирующее основание для не допускайте разбрызгивания пищи повсюду. Чтобы прикрепить трубу к стене, используйте металлические кронштейны, которые вы прикрепляете к стене с помощью шурупов S8.

На дверце коробки держите пластину ЖК-экрана и используйте витые пары кабеля UTP, чтобы подвести их прямо к Raspberry, на другом конце кабеля соедините концы перемычек с гнездом, чтобы упростить подключение. порты GPIO Raspberry. Это будет принципиальная схема. Я постараюсь объяснить это тем немногим, что я могу получить от Электроники.

Двигатель подключается непосредственно к положительному полюсу 12-вольтного трансформатора, но для протекания тока он должен проходить через цепь в нейтральном полюсе двигателя, для этого используется транзистор N2222. Транзисторы обычно имеют 3 ножки, которые соответствуют коллектору, базе и эмиттеру, в зависимости от модели транзистора расположение этих ножек может варьироваться; Этот транзистор выполняет функцию переключателя. Здесь мы подключаем нейтральный полюс двигателя к коллектору транзистора, вывод №19 рапберри подключается к базе посредством сопротивления 270 Ом, а эмиттер подключается к нейтральному выводу транзистора. Трансформатор 12В вместе с одним из полюсов земли малины; транзистор будет пропускать ток между коллектором и эмиттером, пока база стимулируется достаточным напряжением; позже мы запрограммируем Rapberry так, чтобы в соответствии с определенными заказами порт 19 выдавал 3,3 вольта, достаточного для продолжения цепи и активации двигателя.

Для ЖК-экрана другая часть протобарда используется в другой схеме, где вы подключаете потенциометр 10 кОм, который отклоняет контраст текста, отображаемого на ЖК-дисплее, поэтому, если на экране ничего не появляется, это, вероятно, связано с тем, что потенциометр полностью отключен. закрыто; в моем случае я оставляю его полностью открытым, чтобы текст лучше визуализировался. В итоге соединения на макетной плате будут следующими.

Шаг 3: Конфигурация Raspberry Pi

Прежде всего, важно создать Telegram Bot, которым будет управлять система. Вам понадобится ключ для изменения прикрепленного скрипта python. Ознакомьтесь с инструкциями в документации телеграммы:

core.telegram.org/bots#3-how-do-i-create-a-bot

Чтобы настроить rapberry, используйте облегченную версию Rapbian (нам не нужен графический интерфейс) и примените базовую конфигурацию, которая показывает raspbian после его установки или с помощью команды raspi-config: расширьте пространство до 100% и включите SSH, но особенно важно изменить пароль и имя пользователя на пользователя pi, который используется по умолчанию (в противном случае, как случилось со мной, они могут подвергнуться атаке через порт 22, если у них есть общедоступный IP-адрес, адресованный малине). Помимо конфигурации для автоматического подключения к моей сети Wi-Fi (при условии, что моя сеть называется «BlogSoriano», а мой пароль - «$ ecure123!»), Мы генерируем и сохраняем ключ в файле беспроводных подключений с помощью следующей команды:

sudo wpa_passphrase "BlogSoriano" "$ ecure123!" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf> / dev / null

Следующее, что нужно сделать, это обновить и установить систему установки python «pip», чтобы мы вошли в систему как root, обновили и установили необходимые пакеты:

sudo -i apt-get update apt-get install build-essential python-dev python-smbus python-pip

Благодаря этому у нас уже есть доступ к библиотеке классов python, для сценария, который мы собираемся использовать, нам необходимо установить следующее:

pip install RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces беспроводной телепот cv2

После завершения установки зависимостей мы будем использовать скрипт, прикрепленный к этому шагу, я сохраняю его по пути /opt/petfeeder.py, и файл можно создать с помощью команды nano /opt/petfeeder.py и внутри этого файла. мы вставляем код или, если у вас есть опыт работы с Linux, вы можете скачать его напрямую с помощью wget. В сценарии важно изменить переменные BOTKEY (в строке 36) и SYSPASSWORD (в строке 23).

Уточняю, что этот код был написан не мной, поскольку я никогда не программировал на Python, я только модифицировал его для работы с новыми библиотеками и с ЖК-экраном 20x4 и для использования Telegram Bot.

Когда у нас есть скрипт, мы должны изменить значения переменных с помощью ключа для бота; для этого необходимо создать нового Telegram Bot, при этом он будет только сохранять файл и выходить (с помощью Ctrl + или save и ctrl + x выходит из редактора nano), нам просто нужно быть доказательством перезапуска; сам скрипт сохраняет время последней активации системы питания, поэтому нам нужно только запускать скрипт при каждом запуске операционной системы, для этого я нашел очень конкретное решение с программой под названием supervisor, которая устанавливается из репозиториев Debian:

apt-get install supervisor

и после установки нам нужно только создать файл конфигурации в /etc/supervisor/conf.d/petfeeder.conf, поскольку в предыдущем случае мы можем создать и сохранить его с помощью nano, этот файл будет иметь следующее:

[программа: petfeederd] каталог = / opt command = python petfeeder.py autostart = true autorestart = true

После сохранения файла мы можем использовать команду supervisorctl [start | стоп | restart] petfeederd, так как в этом случае служба не была запущена, выполняем ее командой start:

supervisorctl start petfeederd

Шаг 4: готово к тестированию

Image
Image
Готовы к тестированию
Готовы к тестированию
Готовы к тестированию
Готовы к тестированию
Готовы к тестированию
Готовы к тестированию

И при этом система должна работать, на ЖК-экране должна отображаться информация о том, когда должна быть следующая подача или готова ли она к подаче, если я скажу об этом. Вы также должны указать имя беспроводной сети, к которой вы подключены, и IP-адрес, который используется на случай, если нам нужно подключиться через SSH, я делюсь небольшим видео, которое я сделал, я прошу прощения за его качество, я Я не очень хорошо разбираюсь в этой теме в блогах.

Вы должны иметь возможность искать своего бота в Telegram и отправлять одну из следующих команд после / авторизации в чате:

/ feed: запускает процесс кормления, пока не истечет параметризованный период времени.

/ when: возвращает информацию о том, когда было последнее кормление, и изображение тарелки с едой.

/ фото: Верните изображение тарелки с едой.

/ restart: перезапустить систему, установить для переменной последней подачи значение 0, чтобы можно было кормить немедленно.

/ status Он информирует о статусе подключения к Интернету: SSID подключенной беспроводной сети и IP-адрес, который система имеет в сети.

Рекомендуемые: