Kazalo:

Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom: 4 koraki (s slikami)
Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom: 4 koraki (s slikami)

Video: Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom: 4 koraki (s slikami)

Video: Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom: 4 koraki (s slikami)
Video: Meeting #5 - 4/29/2022 | ETF team meeting and dialogue 2024, Julij
Anonim
Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom
Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom
Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom
Stroj za hranjenje hišnih ljubljenčkov z RasPi in Telegram Botom

Najprej moram pojasniti, da to ni izvirni Idea Mine, samo posodobim in prilagodim programske skripte za delo s telegramom, našel sem ga v prejšnjem Instructable, tako da so zasluge res avtor tega.

To špansko različico si lahko ogledate na mojem osebnem blogu:

Zgraditi morate majhno vezje, ki aktivira motor z visokim navorom, in ker je moje znanje o elektroniki zelo, zelo malo, sem moral nekaj dni učiti osnove z ogledom videoposnetkov na YouTubu.

Prvotni skript za avtomatizacijo je napisan v Pythonu in uporablja povezavo GMail za iskanje ukazov, tega programskega jezika še nikoli nisem uporabljal, vendar resnica ni tako drugačna od drugih, nekoliko sem jo spremenil, da se bolje prilagodi novim one knjižnice Python in postopek avtomatizacije skupaj s konfiguracijami operacijskega sistema vam omogočajo, da parametrizirate naslednje:

  • Interakcija prek ukazov, poslanih v Chat, nadzorovanih prek ChatBots.
  • Omogoča spremljanje stanja izdane hrane.
  • Nadzira, koliko hrane bo razdeljeno.
  • Ima gumbe, ki omogočajo ročno hranjenje.
  • Ne dovoljuje prekomernega hranjenja, tako da onemogoči hranjenje v 8-urnih presledkih.
  • Ima statusni LCD, ki prikazuje podatke kot datum in uro naslednjič za naslednji napajalnik, SSID, na katerega je povezan z WiFi in naslov IP naprave.
  • Izbirno: prikazuje nekaj naključnih šal Chucka Norrisa in / ali malenkosti o številkah z uporabo par javnih APIS (izvirno avtor izvirno).
  • Sistem je odporen na ponovni zagon zaradi izpada električne energije, saj shrani datoteko stanja.
  • Sistem zazna, ko pride do prekinitve povezave, in se poskuša znova povezati, dokler ne uspe.

Korak: Uporabljeni materiali

  • 1 Raperry Pi, po možnosti različica 3, ki je že integrirana z brezžično kartico, lahko uporabite tudi različico Pi 3 Zero, traja malo več dela, ker morate spajkati zatiče, vendar sem zelo pozno ugotovil, da bi lahko uporabite eno izmed teh, ki je bolj ekonomična.
  • 1 elektromotor z visokim navorom, 37 mm, 3,5 vrtljajev na minuto in 12V.
  • 1 Nosilec za motor 37 mm.
  • 1 -mestni LCD zaslon velikosti 20x4 s krmilnikom HD44780.
  • 1 Dozirnik za žita Zevro Model WM1001 gred-D dolžine 5 palcev, premera 0,63 cm (D-rez je potreben za pritrditev na razdelilnik)
  • 1 Spojka gredi od 1/4 "do 6 mm za priključitev na motor.

Vseh prejšnjih materialov, razen zadnjih dveh, jih v svoji državi nisem mogel dobiti (ali vsaj nisem vedel, kje bi jih dobil), vendar sta palica in spojka verjetno v varilni delavnici, vendar prvič nekaj naredim takole nisem imel pojma, kako bi moralo biti vgrajeno v motor, zato sem vprašal stran zgoraj opisanih povezav; Spodaj so materiali, ki jih lahko kupim v lokalnih trgovinah:

  • 1 lesena škatla, uporabljam širino 20,3 cm × 26,7 cm visoko x 13 cm globoko. škatla ima vrata, ki se odpirajo na desni z luknjo 10 cm x 4 cm za namestitev LCD zaslona (lokalno pohištvo)
  • 3 Pritisnite gumbe
  • 1 Majhna protoboard
  • 1 LED 3,3 voltov (barva ni pomembna, za napetost pa so običajno rdeče)
  • 1 tranzistor NPN PN2222
  • 1 Upor 270 Ω
  • 1 Odpornost 10 KΩ
  • 1 Potenciometer 10 KΩ
  • 1 dioda IN4003 (lahko delujeta IN4001 ali IN4004)
  • 1 adapter 12V 3A
  • 1 adapter 5V 2A
  • 4 vijaki s krilno matico od 1,5 do 2 palca (odvisno od debeline uporabljenega lesa, pritrditi morajo nosilec motorja na leseno škatlo)
  • Kabli Jumper prameni različnih barv
  • 1 zložljiva cev ali komplet PVC -ja s premerom 4 palcev, to je odvisno od višine, na katero bo postavljena lesena škatla.
  • 1 PVC komolec, ki se pritrdi na prejšnji odliv.
  • 3 objemke za avtomobilske cevi (The World)
  • 4 noge UTP kabla (za povezavo potrebujemo zvite pare)
  • 1 USB WebCam, ni nujno, da je visoke ločljivosti.

Nekaj različnih materialov, ki jih je mogoče dobiti v trgovinah s strojno opremo ali pa jih že imamo: Industrial Tape

  • Varilec kositra
  • Kositer
  • Vrtalnik
  • Vrtanje 5/16
  • S8 vijaki z ekspanderji

2. korak: Postavitev strukture

Postavitev strukture
Postavitev strukture
Postavitev strukture
Postavitev strukture
Postavitev strukture
Postavitev strukture

Glavna ideja je, da ročaj za razdeljevanje, ki je priložen ZEVRO, zamenjate s palico D, ki bo nato s pomočjo sklopke povezana z motorjem. Razpršilnik bo pritrjen na leseno škatlo, lesena škatla pa na steno. Ker ne poznam veliko elektronike, za montažo vezja nisem uporabil nobene bakelitske plošče, zato sem vse komponente sestavil tako, da sem na dnu škatle pritrdil vijake Rapberry Pi in ploščo, ki je že imela lepilo na hrbtni strani, zato sem ga šel le prilepiti. Škatla mora imeti tri gumbe, ki bodo imeli funkcijo ponovnega zagona časovnika, aktiviranja podajalnika in zadnji bo neposreden korak za aktiviranje motorja, ne da bi šel skozi vezje. Motor bo v nosilcu nameščen s pomočjo nosilca, zato bo iz palice štrlela le palica D, ki se poveže z razdelilnikom, na dnu škatle pa fiksirala in prilagodila spletno kamero, tako da bo pri vsakem posvetovanju in potrditvi po pošti poslal fotografijo, kako je na krožniku, to pa ne preko krme, če niso končali zadnjega kroga hrane.

Z dna razdelilnika je bila postavljena cev, ki se je spustila na ploščo, in PVC komolec na podstavek, v odprtino pa sem postavil majhen industrijski trak, da sem zmanjšal hitrost pretoka hrane, in naredil podlago za točenje preprečite škropljenje hrane povsod. Če želite pritrditi cev na steno, uporabite kovinske nosilce, ki jih pritrdite na steno z vijaki S8.

Na vratih škatle držite ploščo LCD zaslona in z zvitimi pari kabla UTP pripeljite neposredno do maline, na drugem koncu kablov pa spojite ženske konice skakalcev, da olajšate povezavo vrata GPIO v malini. To bi bil diagram vezja. Poskušal bom to razložiti s tem, kar lahko malo dobim od elektronike.

Motor je priključen neposredno na pozitivni pol 12 -voltnega transformatorja, vendar mora tok teči skozi vezje v nevtralnem polu motorja, za ta tranzistor se uporablja N2222. Tranzistorji imajo običajno 3 krake, ki ustrezajo kolektorju, podnožju in oddajniku, odvisno od modela tranzistorja se lahko lokacija teh krakov razlikuje; Ta tranzistor omogoča stikalo. Tu priključimo nevtralni pol motorja na zbiralnik tranzistorja, pin # 19 maline je s pomočjo upora 270Ω povezan z bazo, oddajnik pa na nevtralni priključek tranzistorja. 12V transformator skupaj z enim od ozemljitvenih polov maline; tranzistor bo pustil tok med kolektorjem in oddajnikom, dokler je osnova stimulirana z zadostno napetostjo; kasneje bomo malino programirali tako, da bo v skladu z določenimi naročili vrata 19 oddajala 3,3 volta, kar je dovolj za nadaljevanje vezja in aktiviranje motorja.

Za zaslon LCD se drugi del protobarda uporablja v drugem vezju, kjer priključite 10KΩ potenciometer, ki zavrača kontrast besedila, ki se prikaže na LCD -ju, tako da, če se na zaslonu nič ne prikaže, je to verjetno zato, ker je potenciometer popolnoma zaprto; v mojem primeru pustim popolnoma odprto, da bo besedilo bolje vizualizirano. Na koncu bi bile povezave na plošči naslednje.

3. korak: Konfiguracija Raspberry Pi

Najprej je pomembno, da ustvarite Telegram Bota, ki bo upravljal sistem. Za spremembo priloženega skripta python boste potrebovali ključ. Preberite korake v dokumentaciji telegrama:

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

Če želite konfigurirati rapberry, uporabite Lite različico Rapbiana (ne potrebujemo grafičnega vmesnika) in uporabite osnovno konfiguracijo, ki prikazuje raspbian po namestitvi ali z ukazom raspi-config: razširite prostor na 100% in omogočite SSH, predvsem pa najpomembnejša stvar je, da spremenite geslo in uporabniško ime pri uporabniku pi, ki privzeto prihaja (V nasprotnem primeru se lahko, kot se je zgodilo meni, zgodi napad na vrata 22, če imajo javni IP naslov na malino). Poleg konfiguracije za samodejno povezavo z mojim omrežjem WiFi (ob predpostavki, da se moje omrežje imenuje "BlogSoriano" in je moje geslo "$ ecure123!") Ključ v datoteki za brezžične povezave ustvarimo in shranimo z naslednjim ukazom:

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

naslednja stvar je, da posodobimo in namestimo namestitveni sistem python "pip", da se bomo prijavili kot root, posodobili in namestili potrebne pakete:

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

S tem imamo že dostop do knjižnice razredov python, za skript, ki ga bomo uporabljali, moramo namestiti naslednje:

pip install RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces brezžični telepot cv2

Ko je namestitev odvisnosti končana, bomo uporabili skript, priložen temu koraku, ga shranim na pot /opt/petfeeder.py in datoteko lahko ustvarim z ukazom nano /opt/petfeeder.py in znotraj te datoteke kodo prilepimo ali, če imate več izkušenj z Linuxom, jo prenesete neposredno z wget. V skriptu je pomembno spremeniti spremenljivki BOTKEY (v vrstici 36) in SYSPASSWORD (v vrstici 23).

Pojasnjujem, da te kode nisem napisal jaz, saj nikoli nisem programiral v Pythonu, le spremenil sem jo za delo z novimi knjižnicami in z LCD -zaslonom 20x4 ter za uporabo telegrama Bot.

Ko imamo skript, moramo spremeniti vrednosti spremenljivk s ključem za bot; za to je potrebno ustvariti novega Telegram Bota, s katerim bi samo shranili datoteko in izstopili (s tipkama Ctrl + ali shrani in ctrl + x zapusti urejevalnik nano), le dokaz o ponovnem zagonu moramo biti; skript sam shrani zadnjič, ko je sistem za napajanje aktiviran, zato moramo skript zagnati le ob vsakem zagonu operacijskega sistema, za to sem našel zelo posebno rešitev s programom, imenovanim supervizor, ki je nameščen iz skladišč Debian:

apt-get namestite nadzornika

in ko smo enkrat nameščeni, moramo ustvariti samo konfiguracijsko datoteko v /etc/supervisor/conf.d/petfeeder.conf, saj jo lahko v prejšnjem primeru ustvarimo in shranimo z nano, ta datoteka bo imela naslednje:

[program: petfeederd] imenik =/opt ukaz = python petfeeder.py samodejni zagon = resnično samodejni ponovni zagon = res

Ko je datoteka shranjena, lahko uporabimo ukaz nadzornikctl [start | ustaviti | restart] petfeederd, saj v tem primeru storitev ni bila zagnana, jo izvedemo z zagonom:

nadzornik začne petfeederd

4. korak: Pripravljen na preizkus

Image
Image
Pripravljen za testiranje
Pripravljen za testiranje
Pripravljen za testiranje
Pripravljen za testiranje
Pripravljen za testiranje
Pripravljen za testiranje

S tem bi moral sistem delovati, na LCD zaslonu bi morali biti prikazani podatki o tem, kdaj naj bo naslednji vir, ali če je pripravljen za hranjenje, naj to povem. Prav tako morate prikazati ime brezžičnega omrežja, s katerim ste povezani, in naslov IP, ki se uporablja v primeru, da se moramo povezati prek SSH, delim majhen video, ki sem ga naredil, se opravičujem za kakovost, nisem ravno dober ta tema vlog.

Bota bi morali iskati v Telegramu in po tem, ko ste pooblastili klepet, poslati enega od naslednjih ukazov:

/krma: Zažene postopek podajanja, dokler ne preteče parametrizirano časovno obdobje.

/kdaj: vrne podatke o tem, kdaj je bilo zadnje hranjenje, in sliko krožnika s hrano.

/fotografija: Vrnite sliko krožnika s hrano.

/restart: Znova zaženite sistem, spremenljivko zadnjega vira nastavite na 0, da se bo lahko takoj podajal.

/status Obvešča o stanju internetne povezave: SSID povezane brezžične povezave in naslov IP, ki ga ima sistem v omrežju.

Priporočena: