Mundarija:

Itlar uchun avtomatik dispenser: 10 qadam
Itlar uchun avtomatik dispenser: 10 qadam

Video: Itlar uchun avtomatik dispenser: 10 qadam

Video: Itlar uchun avtomatik dispenser: 10 qadam
Video: BULARGA NİMA BO'LDİ? MUTATSİYAGA UCHRAGAN ODAMLAR TOP 10 / Mutant Odamlar 2024, Iyul
Anonim
Itlar uchun avtomatik dispenser
Itlar uchun avtomatik dispenser
Itlar uchun avtomatik dispenser
Itlar uchun avtomatik dispenser
Itlar uchun avtomatik dispenser
Itlar uchun avtomatik dispenser

Men o'z loyiham bilan itingizni uyda yolg'iz qoldirganingizda, u hech qachon ovqatsiz qolmasligiga ishonch hosil qilaman.

Avtomatik oziqlantiruvchi makkajo'xori yong'og'i dispenseridan "buziladi". Dispenser - bu itlarning ovqatlari uchun suv ombori, pastki qismidagi g'ildirak beshik deyarli bo'sh bo'lganda va it etarlicha yaqin bo'lganda ovqatni avtomatik ravishda tashlab yuboradigan servo dvigatelga ulanadi. Dispenserning pastki qismida PVX naycha o'rnatilgan bo'lib, u itning ovqatini beshikka yaxshi tashlab yuboradi. Shunday qilib, ushbu loyihada 3 ta sensorlar bo'ladi, ulardan 2 tasi sinfda va 1 tasi aktuatorda.

Birinchi sensor - RFID o'quvchi. Bu sensor it beshikka yaqinlashganda tekshiradi. RFID itning yoqasiga o'rnatiladi. Agar bu sensor it etarlicha yaqin ekanligini sezsa, u ikkinchi sensorga signal uzatadi. Ikkinchi sensor - bu beshikdagi ovqatni o'lchaydigan vazn sensori (sinfda ko'rsatilmagan), agar bu sensor og'irlik juda pastligini aniqlasa, u servo dvigatelga ovqatni beshikka tashlaydigan signal yuboradi (RFID va vazn sensori tasdiqlanishi bilan). Qisqasi, it faqat beshikka etarlicha yaqin bo'lganida va beshik deyarli bo'sh bo'lganda qo'shimcha ovqat oladi. Albatta, o'zingizni veb -server orqali belgilashingiz mumkin bo'lgan chegara ham bor; it kuniga juda ko'p ovqat olmasligi uchun. Uchinchi datchik - bu beshik atrofida qorong'i bo'lganda LED yoritgichini yorituvchi yorug'lik sensori. Aktuator shuning uchun dispenserdagi g'ildirakka ulangan servo vosita bo'ladi.

Bu loyiha itlar uchun mo'ljallangan, siz undan boshqa kichik uy hayvonlari uchun ham foydalanishingiz mumkin.

Ta'minotlar

Raspberry Pi 3

Yuk xujayrasi (1 kg)

HX711 yuk xujayrali kuchaytirgich

Oziq -ovqat idishi

Donli dispenser

Yog'och (+ vintlardek va tornavida)

Yorug'lik sensori

LED

RFID o'quvchi rc522

Jumper simlari

16*2 LCD (displey)

Servo dvigatel

5V quvvat adapteri

Rezistor 470 Ohm

PVX quvur

Breadbord

Potentsiometr

Ko'rdim

Zımpara qog'ozi

Silikon qurol

1 -qadam: Pi o'rnatish

Pi o'rnatish
Pi o'rnatish

Sozlash

Boshlash uchun biz avval Pi -ni sozlashimiz kerak.

Sizga ikkita narsa kerak bo'ladi:

- Win32 Disk Imager dasturi

- Raspbian OS tasviri

ZIP faylini yuklab oling va uni xohlagan joyga ko'chiring.

O'rnatish

1. Papka belgisi orqali rasmingizni tanlang

2. Ochiladigan ro'yxat orqali SD -kartangizni tanlang

3. Yozish -ni bosing

Endi biz Pi -ga kira olishimiz uchun ba'zi sozlamalar bilan qo'shimcha ishlarni bajarishimiz kerak bo'ladi.

1. SD -kartaning yuklash katalogiga o'ting

2. "cmdline.txt" faylini oching.

3. Qo'shish ip = 169.254.10.1 Matn uzun satrining oxirida bo'sh joy bilan ajratilgan (bir qatorda).

4. Faylni saqlang.

5. Xuddi shu katalogda kengaytmasi bo'lmagan ssh nomli fayl yarating

Endi siz SD -kartani chiqarib, uni Pi -ga qo'yishingiz mumkin.

Ulanmoqda

Endi biz dasturiy ta'minotni sozlashimiz kerak.

Birinchidan, LAN simini ulang, bir uchi ish stolida/noutbukda, ikkinchisi Pi -da.

Endi Raspberry Pi -ni yuklang.

1. Putty -ni https://www.putty.org/ saytidan o'rnating.

2. IP maydoniga 169.254.10.1 kiriting.

3. SSH tanlanganligiga va 22 -port to'ldirilganligiga ishonch hosil qiling.

4. Ochish -ni bosing

5. Foydalanuvchi nomini kiriting: pi

6. Parolni to'ldiring: malina

Raspi-config

Raspi-config yordam dasturini quyidagicha oching:

sudo raspi-config

Interfeyslar toifasida quyidagi variantlarni yoqing

- 1-simli

- SPI

Yuklash imkoniyatlari toifasida quyidagi variantlarni o'chirib qo'ying

- Bosh ekran

Nihoyat yuklash variantlari toifasidagi Desktop/CLI sozlamalarini Desktop Autologin -ga o'rnating.

Wifi

Itni oziqlantiruvchi uchun bizda Wi -Fi ulanishi bo'lishi kerak, shuning uchun Wi -Fi ma'lumotlari yaqin ekanligiga ishonch hosil qiling.

1. Ildiz rejimiga o'ting

sudo -i

2. Bu qatorni joylashtiring, lekin SSID va Parol ham to'ldirilganligiga ishonch hosil qiling

wpa_passphrase "SSID" "PAROLA" >> /etc/wpa_supplicant/wpa_supplicant.conf

3. WPA mijozini kiriting.

Wpa_cli

4. Interfeysni tanlang

Interfaol wlan0

5. Konfiguratsiyani qayta yuklang

Qayta sozlash

IP a yozib, WLAN0 interfeyslarida IP bor yoki yo'qligini bilib, to'g'ri ulanganingizga ishonch hosil qiling.

Paketlar

Endi biz Internetga ulangan bo'lsak, ba'zi paketlarni o'rnatishimiz kerak bo'ladi.

Avval biz paketlar ro'yxatini yangilashimiz kerak.

sudo apt yangilash

Python

Biz Raspbianni Python 3 dan foydalanishga majbur qilamiz

update-alternatives-install/usr/bin/python python /usr/bin/python2.7 1

update-alternatives-install/usr/bin/python python/usr/bin/python3 2

MariaDB

Ma'lumotlar bazasini o'rnatish uchun quyidagi qatorni joylashtiring.

sudo apt install mariadb-server

Keyin biz o'rnatishni ta'minlashimiz kerak.

mysql_secure_installation

U bizdan joriy parolni so'raydi, chunki bizda faqat Enter tugmachasi yo'q.

Keyin u y -da ildiz parolini xohlaymizmi, deb so'raydi.

Keyingi savollar uchun Y kiriting.

Keyin biz ko'zgu uchun foydalana oladigan foydalanuvchi yaratamiz.

Mysql qobig'ini kiriting:

- O'zimizni ildiz otish uchun ko'taramiz

Sudo -i

- MySQL qobig'ini kiriting

Mysql

- O'z foydalanuvchi nomingiz bilan almashtiring va shu bilan

*. * dagi barcha imtiyozlarni '@'%'belgisiga ko'ra belgilang;

- '.@'%'belgisiga'.

Keyin biz ma'lumotlar bazasini qo'shamiz.

Apache veb -server

Veb -serverni o'rnatish uchun quyidagi qatorni ishga tushiring.

sudo apt install apache2 -y

Python paketlar

Biz bu paketlarni o'rnatamiz

- Shisha

- Flask-Cors

- Flask-MySQL

- Flask rozetkasi

- PyMySQL

- Gevent

- Gevent-veb-rozetkasi

-

- Python-soket

- Talablar

- Wsaccel

- Ujson

Qilish orqali

pip o'rnatish Flask Flask-Cors Flask-MySQL Flask-SocketIO PyMySQL gevent-webocket httplib2 python-socketio wsaccel ujson mfrc522 hx711 Adafruit-CharLCD

2 -qadam: LED va yorug'lik sensori

Led va yorug'lik sensori
Led va yorug'lik sensori
Led va yorug'lik sensori
Led va yorug'lik sensori

Ledni ulash

  1. S -> GPIO15 (rxd0)
  2. + -> 5V
  3. G -> Rezistor 470 ohm va GND

Nur sensori ulanmoqda

  1. Chiqish -> GPIO17
  2. VCC -> 3.3V
  3. GND -> GND

Endi biz svetodiod va yorug'lik sensori shu kichik skript bilan ishlaydimi yoki yo'qligini sinab ko'rishimiz mumkin

RPi. GPIO -ni GPIO GPIO.setmode (GPIO. BCM) sifatida import qilish

GPIO. sozlash (15, GPIO. OUT)

GPIO. sozlash (17, GPIO. IN)

harakat qilib ko'ring: while True:

agar GPIO.input (17) == 0:

GPIO.output (15, GPIO. HIGH)

agar GPIO.input (17) == 1:

GPIO.output (15, GPIO. LOW)

KeyboardInterruptdan tashqari: GPIO.cleanup ()

3 -qadam: Servo dvigatel

Servo dvigatel
Servo dvigatel

Servo motorni ulash

  1. Chiqish -> GPIO18
  2. VCC -> 5V
  3. GND -> GND

Endi biz svetodiod va yorug'lik sensori shu kichik skript bilan ishlaydimi yoki yo'qligini sinab ko'rishimiz mumkin

RPi. GPIO -ni GPIOimport vaqti sifatida import qilish

GPIO.setmode (GPIO. BCM)

GPIO. sozlash (18, GPIO. OUT)

p = GPIO. PWM (18, 50)

p.boshlanish (12.5)

harakat qilib ko'ring:

rost bo'lsa:

p. ChangeDutyCycle (12.5)

uyqu (1)

p. ChangeDutyCycle (2.5)

uyqu (1)

KeyboardInterruptdan tashqari:

p.stop ()

GPIO.cleanup ()

4 -qadam: RFID o'quvchi RC522

RFID o'quvchi RC522
RFID o'quvchi RC522

RFID ulanmoqda

  1. RST -> GPIO6
  2. MISO -> GPIO9 (MISO)
  3. MOSI -> GPIO10 (MOSI)
  4. SCK -> GPIO11 (SPISCLK)
  5. SDA -> GPIO8 (SPICS0)
  6. 3.3V -> 3.3V
  7. GND -> GND

Endi biz RFID o'quvchimiz ushbu kichik skript bilan ishlayotganligini sinab ko'rishimiz mumkin

RPi. GPIO -ni GPIO sifatida import qilish

mfrc522 importdan SimpleMFRC522

o'quvchi = SimpleMFRC522 ()

matn = kiritish ('Yangi ma'lumotlar:')

chop etish ("Endi tegingizni yozish uchun joy qo'ying")

o'quvchi.yozish (matn)

chop etish ("Yozma")

5 -qadam: HX711 uyasini yuklang

HX711 uyasini yuklang
HX711 uyasini yuklang

Load katakchasini HX711 haydovchi kartasiga ulash

  1. Qizil -> E+
  2. Qora -> E-
  3. Yashil -> A+
  4. Oq -> A-

Yuklash katakchasi ulanmoqda

  1. DT-> GPIO27
  2. SCK -> GPIO22
  3. QIZIL -> 3.3V
  4. GND -> GND

Endi biz yuk xujayramiz shu kichik skript bilan ishlaydimi yoki yo'qligini sinab ko'rishimiz mumkin

RPi. GPIO -ni GPIO sifatida import qilish klasses. HX711 import HX711 -dan vaqtni import qilish.

def cleanAndExit (): chop etish ("Tozalash …") GPIO.cleanup () chop etish ("Xayr!") sys.exit ()

hx = HX711 (22, 27)

hx.set_reading_format ("LSB", "MSB")

hx.set_reference_unit (2167)

hx.reset ()

hx.tare ()

rost bo'lsa:

harakat qilib ko'ring:

val = max (0, int (hx.get_weight (5)))

bosib chiqarish (val)

hx.power_down ()

hx.power_up ()

vaqt uyqu (0,5)

(KeyboardInterrupt, SystemExit) tashqari: cleanAndExit ()

6 -qadam: LCD (16*2)

LCD (16*2)
LCD (16*2)

LCD -ni ulash

  1. RS -> GPIO21
  2. RW -> GND
  3. E-> GPIO20
  4. D0 -> GPIO16
  5. D1 -> GPIO12
  6. D2 -> GPIO6
  7. D3 -> GPIO24
  8. D4 -> GPIO23
  9. D5 -> GPIO26
  10. D6 -> GPIO19
  11. D7 -> GPIO13
  12. VSS -> GND
  13. VDD -> 5V
  14. A -> 5V
  15. K -> GND
  16. V0 -> o'rta potentsial pin

Endi biz LCD displeyimiz ushbu kichik skript bilan ishlayaptimi yoki yo'qligini sinab ko'rishimiz mumkin

Adafruit_CharLCD -ni LCDlcd_rs = 21 sifatida import qiling

lcd_en = 20

lcd_d4 = 23

lcd_d5 = 26

lcd_d6 = 19

lcd_d7 = 13

lcd_columns = 16

lcd_rows = 2

lcd = LCD. Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows)

lcd.message ('169.254.10.1')

7 -qadam: To'liq davr

To'liq O'chirish
To'liq O'chirish

bu erda siz butun sxemaning to'g'riligini tekshirishingiz mumkin

8 -qadam: Ishning boshlanishi

Ishning boshlanishi
Ishning boshlanishi
Ishning boshlanishi
Ishning boshlanishi
Ishning boshlanishi
Ishning boshlanishi
Ishning boshlanishi
Ishning boshlanishi

Men makkajo'xori dispenseridan itlarning ovqatlari uchun suv ombori sifatida foydalanardim

Men dispenserdagi g'ildirakni servo motorimga uladim

Endi men servo dvigatelim bilan g'ildirakni boshqaraman va ovqatni suv omboridan tashlab yuboraman

Suv omborining oxirida PVX trubkasi ulangan, u ovqatni beshikka yaxshilab tushiradi

Qoplama sifatida men yog'ochdan foydalanaman

9 -qadam: uni birlashtirish

Birgalikda joylashtirish
Birgalikda joylashtirish
Birgalikda joylashtirish
Birgalikda joylashtirish
Birgalikda joylashtirish
Birgalikda joylashtirish

10 -qadam: veb -sayt

Veb -sayt
Veb -sayt
Veb -sayt
Veb -sayt
Veb -sayt
Veb -sayt
Veb -sayt
Veb -sayt

Endi bizning mashinamiz ishlaydi, biz veb -saytni pi -ga olishimiz kerak, endi hamma narsa tayyor va sayt qanday ishlashi haqida bir nechta ko'rsatma.

Siz Wi -Fi tarmog'iga HDMI kabelini ulash orqali ulanishingiz va shu tarzda faollashtirishingiz mumkin

Birinchi sahifa - bu bosh sahifa, bu erda ko'rishingiz mumkin:

  • Chiroq haqida real vaqtda ma'lumot
  • Idishdagi ovqat haqida real vaqtda ma'lumot
  • Siz ovqatni tashlab qo'yishingiz mumkin
  • It haqida ma'lumot

Ikkinchi sahifa - tahrirlash sahifasi, bu erda tahrir qilishingiz mumkin:

  • uy hayvoningizning nomi
  • uy hayvoningizning yoshi
  • uy hayvoningizning og'irligi
  • uy hayvoningizning fotosurati

Uchinchi sahifa - bu tarix sahifasi, bu erda ko'rishingiz mumkin:

  • qachon chiroq yondi
  • it ovqatlangach
  • ovqat tushganda

To'rtinchi sahifa - sozlash sahifasi, bu erda tahrir qilishingiz mumkin:

  • ovqatni tushirish kerak bo'lganda
  • tushadigan oziq -ovqat miqdori
  • maksimal ovqat/kun
  • yorug'lik

Tavsiya: