Съдържание:

Машина за хранене на домашни любимци с RasPi и Telegram Bot: 4 стъпки (със снимки)
Машина за хранене на домашни любимци с RasPi и Telegram Bot: 4 стъпки (със снимки)

Видео: Машина за хранене на домашни любимци с RasPi и Telegram Bot: 4 стъпки (със снимки)

Видео: Машина за хранене на домашни любимци с RasPi и Telegram Bot: 4 стъпки (със снимки)
Видео: Reolink RLC-810A 4K външна PoE IP камера с домашен асистент 2024, Юли
Anonim
Машина за хранене на домашни любимци с RasPi и Telegram Bot
Машина за хранене на домашни любимци с RasPi и Telegram Bot
Машина за хранене на домашни любимци с RasPi и Telegram Bot
Машина за хранене на домашни любимци с RasPi и Telegram Bot

Първо трябва да поясня, че това не е оригинална идея Mine, просто актуализирайте и адаптирайте скриптовете за програмиране за работа с телеграма, намерих го в предишен Instructable, така че кредитите наистина са негов автор.

Можете да видите испанската версия на това в личния ми блог:

Трябва да изградите малка верига, която активира мотор с голям въртящ момент и тъй като моите познания по електроника са много, много оскъдни, трябваше да прекарам няколко дни в изучаване на основите, гледайки видеоклипове в YouTube.

Оригиналният скрипт за автоматизация е написан на Python и използва GMail връзка, за да се консултира с командите, никога не съм използвал този език за програмиране, но истината не е толкова различна от останалите, промених го малко, така че да се адаптира по -добре към новия библиотеките на Python и процесът на автоматизация заедно с конфигурациите на операционната система ви позволяват да параметризирате следното:

  • Взаимодействие чрез команди, изпратени до Chat, контролирани чрез ChatBots.
  • Позволява да се проследи състоянието на раздаваната храна.
  • Контролира колко храна ще бъде разпределена.
  • Има бутони, които ви позволяват да подавате ръчно.
  • Той не позволява прехранване, като забранява храненето на 8-часови интервали.
  • Той има LCD статус, който показва данните като дата и час на следващия път за следващото захранване, SSID, към който е свързан с WiFi и IP адреса на устройството.
  • По избор: Показва някои случайни вицове на Чък Норис и / или любопитни факти на числата, използвайки чифт публични APIS (Гениални от оригиналния автор).
  • Системата е имунизирана срещу рестартиране поради прекъсване на захранването, тъй като записва файл за състоянието.
  • Системата открива, когато има загуба на връзка, и се опитва да се свърже отново, докато успее.

Стъпка 1: Използвани материали

  • 1 Raperry Pi, за предпочитане версия 3, която вече е интегрирана с безжичната карта, можете да използвате и версията Pi 3 Zero, отнема малко повече работа, защото трябва да запоите щифтовете, но много късно разбрах, че може използвайте един от тези, които са по -икономични.
  • 1 електродвигател с висок въртящ момент, 37 мм, 3,5 об / мин и 12V.
  • 1 Скоба за 37 мм мотор.
  • 1 -символен LCD екран с 20x4 линии с HD44780 контролер.
  • 1 Диспенсер за зърнени храни Zevro Модел WM1001 вал-D с дължина 5 инча, диаметър 0,63 см (D разрез е необходим, за да го прикрепите към дозатора)
  • 1 Съединител на вала от 1/4 "до 6 мм за присъединяване към двигателя.

Всички предишни материали, с изключение на последните два, не можах да ги взема в моята страна (или поне не знаех от къде да ги взема), но пръчката и съединителят вероятно са в заваръчна работилница, но за първи път правя нещо така, нямах представа как трябва да бъде монтирането на двигателя, затова попитах страницата с линковете, описани по -горе; Под материалите, които мога да купя в местните магазини:

  • 1 дървена кутия, използвам ширина 20,3 см × височина 26,7 см х дълбочина 13 см. кутията има врата, която се отваря вдясно с отвор 10 см х 4 см за поставяне на LCD екрана (местна дограма)
  • 3 Натиснете бутони
  • 1 малка протоборд
  • 1 светодиод с 3.3 волта (Няма значение цвета, но за напрежението те обикновено са червени)
  • 1 транзистор NPN PN2222
  • 1 Съпротивление от 270 Ω
  • 1 Съпротивление от 10 KΩ
  • 1 Потенциометър от 10 KΩ
  • 1 диод IN4003 (IN4001 или IN4004 може да работи)
  • 1 адаптер 12V 3A
  • 1 адаптер 5V 2A
  • 4 винта с крилна гайка от 1,5 инча до 2 инча (зависи от дебелината на използваната дървесина, те трябва да фиксират скобата на двигателя към дървената кутия)
  • Кабели Jumper нишки в различни цветове
  • 1 сгъваема тръба или комплект PVC с диаметър 4 инча, това зависи от височината, на която ще бъде поставена дървената кутия.
  • 1 PVC лакът, който се прикрепя към предишната отливка.
  • 3 скоби за автомобилни тръби (Светът)
  • 4 крака UTP кабел (имаме нужда от усукани двойки, за да осъществим връзките)
  • 1 USB WebCam, не е необходимо да бъде с висока разделителна способност.

Някои различни материали, които могат да се получат в магазините за хардуер или вероятно вече имаме: Индустриална лента

  • Тенекия заварчик
  • Калай
  • Пробивна машина
  • Пробийте 5/16
  • S8 винтове с разширители

Стъпка 2: Поставяне на структурата

Поставяне на структурата
Поставяне на структурата
Поставяне на структурата
Поставяне на структурата
Поставяне на структурата
Поставяне на структурата

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

От дъното на дозатора, тръбата, която се спуска към чинията, беше поставена и PVC лакътът беше поставен върху основата, поставих малко индустриална лента в изхода, за да сведе до минимум скоростта на потока храна и направих основа за дозиране предотвратява пръскането на храна навсякъде. За да фиксирате тръбата към стената, използвайте метални скоби, които фиксирате към стената с винтовете S8.

На вратата на кутията задръжте плочата на LCD екрана и използвайте усуканите двойки на UTP кабела, за да ги занесете директно към малината, а в другия край на кабелите сглобете женските връхчета на джъмперите, за да улесните връзката в GPIO портовете на Raspberry. Това ще бъде електрическата схема. Ще се опитам да го обясня с малкото, което мога да получа от електрониката.

Двигателят е свързан директно към положителния полюс на 12 -волтовия трансформатор, но за да тече токът, той трябва да премине през веригата в неутралния полюс на двигателя, за този транзистор се използва N2222. Транзисторите обикновено имат 3 крака, които съответстват на колектор, основа и емитер, в зависимост от модела на транзистора, местоположението на тези крака може да варира; Този транзистор прави превключвателя функция. Тук свързваме неутралния полюс на двигателя към колектора на транзистора, щифт # 19 на малината е свързан към основата посредством съпротивление от 270Ω, а емитерът е свързан към неутралния извод на транзистора. 12V трансформатор заедно с един от заземителните полюси на малина; транзисторът ще позволи на тока да тече между колектора и излъчвателя, докато базата се стимулира с достатъчно напрежение; по -късно ще програмираме малината така, че според определени поръчки порт 19 ще излъчва 3.3 волта, достатъчно за веригата да продължи и да активира двигателя.

За LCD екрана друга част от протокартата се използва в друга схема, където свързвате 10KΩ потенциометър, който отхвърля контраста на текста, който се появява на LCD дисплея, така че ако нищо не се появява на екрана, това вероятно е защото потенциометърът е напълно затворен; в моя случай го оставям напълно отворен, за да се визуализира по -добре текстът. В крайна сметка връзките в макета ще бъдат както следва.

Стъпка 3: Конфигурация на Raspberry Pi

На първо място е важно да създадете Telegram Bot, че системата ще се управлява. Ще ви е необходим ключ, за да промените прикрепения скрипт на python. Моля, прочетете стъпките в документацията на телеграмата:

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

За да конфигурирате rapberry, използвайте Lite версията на Rapbian (не се нуждаем от графичния интерфейс) и прилагайте основната конфигурация, която показва raspbian, след като е инсталирана, или използвайки командата raspi-config: разширете пространството до 100% и активирайте SSH, но особено най -важното е да смените паролата и потребителското име на потребителя pi, който идва по подразбиране (В противен случай, както се случи с мен, те могат да претърпят атака от порт 22, ако имат публичен IP адрес, адресиран към малината). Освен това конфигурацията за автоматично свързване към моята WiFi мрежа (Ако приемем, че мрежата ми се нарича "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-bistven 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, само го модифицирах, за да работи с новите библиотеки и с LCD екрана с размери 20x4 и да използва телеграма Bot.

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

apt-get инсталирайте надзорник

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

[програма: petfeederd] директория =/opt команда = python petfeeder.py autostart = true autorestart = true

След като файлът бъде записан, можем да използваме командата supervizorctl [start | спрете | restart] petfeederd, тъй като в този случай услугата не е стартирана, изпълняваме я със start:

надзорник стартира petfeederd

Стъпка 4: Готови за тестване

Image
Image
Готов за тестване
Готов за тестване
Готов за тестване
Готов за тестване
Готов за тестване
Готов за тестване

И с това системата трябва да работи, LCD екранът трябва да показва информация кога трябва да е следващата емисия или дали е готова за хранене, ако го кажа. Трябва също да покажете името на безжичната мрежа, към която сте свързани, и IP адреса, който се използва в случай, че трябва да се свържем чрез SSH, споделям малък видеоклип, който направих, извинявам се за качеството му, аз не съм много добра тази тема на влоговете.

Трябва да можете да търсите вашия бот в Telegram и да изпратите една от следващите команди, след като /разрешите чата си:

/подаване: Стартира процеса на подаване, стига да е изтекъл параметризираният период от време.

/кога: връща информация за това кога е било последното хранене и снимка на чинията с храна.

/снимка: Върнете снимка на чинията за храна.

/рестартиране: Рестартирайте системата, задайте променливата на последната емисия на 0, за да можете да подавате незабавно.

/status Той информира за състоянието на интернет връзката: SSID на свързаната безжична мрежа и IP адреса, който системата има в мрежата.

Препоръчано: