İçindekiler:

RasPi ve Telegram Botlu Pet Besleme Makinesi: 4 Adım (Resimli)
RasPi ve Telegram Botlu Pet Besleme Makinesi: 4 Adım (Resimli)

Video: RasPi ve Telegram Botlu Pet Besleme Makinesi: 4 Adım (Resimli)

Video: RasPi ve Telegram Botlu Pet Besleme Makinesi: 4 Adım (Resimli)
Video: Canlı Linux: Pardus 21 Kuruyoruz 2024, Kasım
Anonim
RasPi ve Telegram Botlu Pet Besleme Makinesi
RasPi ve Telegram Botlu Pet Besleme Makinesi
RasPi ve Telegram Botlu Pet Besleme Makinesi
RasPi ve Telegram Botlu Pet Besleme Makinesi

Her şeyden önce, bunun orijinal bir Fikir Madeni olmadığını netleştirmem gerekiyor, sadece programlama komut dosyalarını telgrafla çalışacak şekilde güncelleyin ve uyarlayın, onu önceki bir Eğitilebilir Dosyada buldum, böylece krediler gerçekten yazarıdır.

Bunun İspanyolca versiyonunu kişisel Blogumda görebilirsiniz:

Yüksek torklu bir motoru harekete geçiren küçük bir devre kurmanız gerekiyor ve elektronik bilgim çok, çok kıt olduğu için YouTube'da videolar izleyerek birkaç günümü temel bilgileri öğrenmek için harcamak zorunda kaldım.

Orijinal otomasyon betiği Python'da yazılmıştır ve komutlara başvurmak için bir GMail bağlantısı kullanır, bu programlama dilini hiç kullanmadım ama gerçek diğerlerinden çok farklı değil, biraz değiştirdim, böylece yeniye daha iyi uyum sağlar Python kitaplıkları ve otomasyon süreci, işletim sistemi yapılandırmalarıyla birlikte aşağıdakileri parametreleştirmenize olanak tanır:

  • ChatBot'lar aracılığıyla kontrol edilen Chat'e gönderilen komutlar aracılığıyla etkileşim.
  • Dağıtılan gıdanın durumunu takip etmeyi sağlar.
  • Ne kadar yiyecek dağıtılacağını kontrol eder.
  • Elle beslemenizi sağlayan butonlara sahiptir.
  • 8 saatlik aralıklarla beslemeyi devre dışı bırakarak fazla beslenmeye izin vermez.
  • Bir sonraki güç kaynağı için bir sonraki seferin tarih ve saatini, WiFi'ye bağlı olduğu SSID'yi ve cihazın IP adresini gösteren bir durum LCD'sine sahiptir.
  • İsteğe bağlı: Bir çift genel APIS kullanarak bazı Chuck Norris Rastgele Şakaları ve/veya Sayıların Trivia'sını gösterir (orijinal yazar tarafından dahice).
  • Sistem, bir durum dosyası kaydettiği için elektrik kesintileri nedeniyle yeniden başlatmalara karşı bağışıktır.
  • Sistem, bir bağlantı kaybı olduğunu algılar ve başarılı olana kadar yeniden bağlanmaya çalışır.

Adım 1: Kullanılmış Malzemeler

  • 1 Raperry Pi, tercihen Wireless kartla entegre olan sürüm 3, Pi 3 Zero sürümünü de kullanabilirsiniz, pinleri lehimlemeniz gerektiğinden biraz daha fazla iş gerektirir, ancak çok geç öğrendim. Bunlardan daha ekonomik olanını kullanın.
  • 1 yüksek torklu elektrik motoru, 37mm, 3.5rpm ve 12V.
  • 37mm motor için 1 Braket.
  • HD44780 kontrollü 20x4 satırlık 1 karakter LCD ekran.
  • 1 Tahıl Dispenseri Zevro Model WM1001 5 inç uzunluğunda, 0,63 cm çapında şaft-D (dağıtıcıya takmak için D kesim gereklidir)
  • Motora birleştirmek için 1/4 "ila 6 mm'ye kadar 1 Mil kuplörü.

Son ikisi hariç önceki tüm malzemeleri ülkemde bulamadım (ya da en azından nereden alacağımı bilmiyordum), ancak çubuk ve manşon muhtemelen bir kaynak atölyesinde ama ilk defa bir şey yapıyorum. böyle, motora nasıl sığması gerektiği hakkında hiçbir fikrim yoktu, bu yüzden yukarıda açıklanan linklerin sayfasını sordum; Yerel mağazalardan satın alabileceğim malzemelerin altında:

  • 1 tahta kutu, 20,3 cm genişlik × 26,7 cm yükseklik x 13 cm derinlik kullanıyorum. kutunun sağına açılan 10cm x 4cm lik bir delikle LCD ekranın yerleştirilebileceği bir kapısı vardır (yerel doğrama)
  • 3 Basmalı düğmeler
  • 1 Küçük Protoboard
  • 3,3 Volt'luk 1 LED (Renk önemli değil, voltaj için genellikle Kırmızıdır)
  • 1 NPN PN2222 transistör
  • 1 Direnç 270 Ω
  • 1 Direnç 10 KΩ
  • 1 Potansiyometre 10 KΩ
  • 1 IN4003 diyot (IN4001 veya IN4004 çalışabilir)
  • 1 12V 3A adaptör
  • 1 5V 2A adaptör
  • 1,5 inç ila 2 inç arasında kelebek somunlu 4 vida (kullanılan ahşabın kalınlığına bağlıdır, motor braketini ahşap kutuya sabitlemek içindir)
  • Kablolar Çeşitli renklerde atlama telleri
  • 1 katlanır tüp veya 4 inç çapında bir PVC set, bu ahşap kutunun yerleştirileceği yüksekliğe bağlıdır.
  • Önceki döküme bağlanan 1 PVC dirsek.
  • Araba boruları için 3 kelepçe (Dünya)
  • 4 Feet UTP Kablosu (bağlantıları yapmak için bükümlü çiftlere ihtiyacımız var)
  • 1 USB WebCam, yüksek çözünürlüklü olması gerekli değildir.

Hırdavatçılardan elde edilebilecek veya muhtemelen elimizde bulunan bazı çeşitli malzemeler: Endüstriyel Bant

  • kalay kaynakçı
  • Teneke
  • Delmek
  • Matkap 5/16
  • Genişleticili S8 vidalar

Adım 2: Yapıyı Yerleştirme

Yapının Yerleştirilmesi
Yapının Yerleştirilmesi
Yapının Yerleştirilmesi
Yapının Yerleştirilmesi
Yapının Yerleştirilmesi
Yapının Yerleştirilmesi

Ana fikir, ZEVRO'da gelen dağıtım kolunu, daha sonra Kuplör vasıtasıyla Motora bağlanacak olan D çubuğu ile değiştirmektir. Dispenser ahşap kutuya ve ahşap kutu duvara takılacaktır. Çok fazla elektronik bilmediğim için, devreyi monte etmek için herhangi bir Bakalit plakası kullanmadım, bu yüzden tüm bileşenleri kutunun altına vidalarla tutturmak için breadboard kullandım, böylece Rapberry Pi ve zaten bir yapıştırıcısı olan breadboard vidalarla sabitlendi. arkada, ben de yapıştırmaya gittim. Kutuda, zamanlayıcıyı yeniden başlatma, besleyiciyi etkinleştirme işlevine sahip olacak üç düğme bulunmalıdır ve sonuncusu, devreden geçmeden motoru etkinleştirmek için doğrudan bir adım olacaktır. Motor, braket aracılığıyla kutunun içinde tutulacaktır, böylece yalnızca dağıtıcıya bağlanan çubuk D kutudan dışarı çıkacaktır, kutunun alt kısmında web kamerasını sabitleyin ve ayarlayın, böylece her posta danışma ve onayında I tabağın nasıl olduğuna dair bir fotoğraf gönderdi, bu, yemeğin son turunu bitirmemiş olmaları durumunda fazla beslenmemek için.

Dispenserin alt kısmından tabağa inen tüp ve tabana PVC dirsek yerleştirildi, çıkışa yemek akış hızını minimuma indirmek için biraz Endüstriyel Bant yerleştirdim ve dağıtım tabanı yaptım. yiyeceklerin her yere sıçramasını önleyin. Boruyu duvara sabitlemek için S8 saplama vidaları ile duvara sabitlediğiniz metal braketleri kullanın.

Kutunun kapağında LCD ekranın plakasını tutun ve doğrudan Raspberry'ye götürmek için UTP kablosunun bükümlü çiftlerini kullanın, kabloların diğer ucunda bağlantıyı kolaylaştırmak için jumperların dişi uçlarını birleştirin. Raspberry'nin GPIO bağlantı noktaları. Bu devre şeması olacaktır. Elektronikten alabildiklerimle bunu açıklamaya çalışacağım.

Motor doğrudan 12 volt trafonun artı kutbuna bağlıdır ancak akımın akması için motorun nötr kutbundaki devreden geçmesi gerekir, bunun için N2222 transistör kullanılır. Transistörlerin normalde bir kollektöre, bir tabana ve bir vericiye karşılık gelen 3 bacağı vardır, transistörün modeline bağlı olarak bu bacakların yeri değişebilir; Bu transistör, anahtar işlevini yapar. Burası motorun nötr kutbunu transistörün kollektörüne bağladığımız yer, rapberry'nin 19 nolu pini 270Ω'luk bir dirençle tabana ve emitör ise transistörün nötr terminaline bağlı. Ahududu toprak direklerinden biri ile birlikte 12V trafo; transistör, taban yeterli voltajla uyarıldığı sürece, akımın kollektör ve emitör arasında akmasına izin verecektir; Daha sonra ahududuyu programlayacağız, böylece belirli siparişlere göre port 19, devrenin devam etmesi ve motoru etkinleştirmesi için yeterli olan 3.3 volt yayacak.

LCD ekran için, protobardın başka bir parçası, LCD'de görünen metnin kontrastını reddeden 10KΩ potansiyometreyi bağladığınız farklı bir devrede kullanılır, bu nedenle ekranda hiçbir şey görünmüyorsa, bunun nedeni muhtemelen potansiyometrenin tamamen olmasıdır. kapalı; benim durumumda, metnin daha iyi görselleştirilmesi için tamamen açık bırakıyorum. Sonunda breadboard'daki bağlantılar aşağıdaki gibi olacaktır.

3. Adım: Raspberry Pi Yapılandırması

Her şeyden önce, sistemin yönetileceği Telegram Botunu oluşturmak önemlidir, Ekli python betiğini değiştirmek için bir anahtara ihtiyacınız olacak. Lütfen telgraf Belgelerindeki adımları okuyun:

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

Rapberry'yi yapılandırmak için, Rapbian'ın Lite sürümünü kullanın (grafik arabirimine ihtiyacımız yok) ve kurulduktan sonra raspbian'ı gösteren temel yapılandırmayı uygulayın veya raspi-config komutunu kullanın: alanı %100'e genişletin ve etkinleştirin SSH ama özellikle en önemli şey, varsayılan olarak gelen pi kullanıcısına şifre ve kullanıcı adını değiştirmektir (Aksi takdirde, benim başıma geldiği gibi, ahududuya yönelik bir genel IP'leri varsa, 22 numaralı bağlantı noktasından saldırıya uğrayabilirler). Bunun dışında WiFi ağıma otomatik olarak bağlanma konfigürasyonu (Ağımın "BlogSoriano" ve şifremin "$ecure123!" olduğunu varsayarak) Anahtarı aşağıdaki komutla Kablosuz bağlantılar dosyasına oluşturup kaydediyoruz:

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

sonraki şey python kurulum sistemi "pip" i güncellemek ve kurmak, böylece root olarak giriş yapacağız, gerekli paketleri güncelleyip kuracağız:

sudo -i apt-get güncelleme apt-get kurulum inşa-temel python-dev python-smbus python-pip

Bununla zaten python sınıf kitaplığına erişimimiz var, kullanacağımız komut dosyası için aşağıdakileri yüklememiz gerekiyor:

pip kurulumu RPi. GPIO Adafruit-CharLCD httplib2 html2text netfaces kablosuz telepot cv2

Bağımlılıkların kurulumu bittiğinde, bu adıma ekli komut dosyasını kullanacağız, /opt/petfeeder.py yoluna kaydediyorum ve dosya nano /opt/petfeeder.py komutu kullanılarak ve bu dosyanın içinde oluşturulabilir. kodu yapıştırıyoruz veya daha fazla Linux deneyiminiz varsa doğrudan wget ile indirebilirsiniz. Komut dosyasında BOTKEY (36. satırda) ve SYSPASSWORD (23. satırda) değişkenlerini değiştirmek önemlidir.

Python'da hiç programlamadığım için bu kodun benim tarafımdan yazılmadığını açıklığa kavuşturuyorum, sadece yeni kütüphanelerle ve 20x4 LCD ekranla çalışacak ve Telegram Bot'u kullanacak şekilde değiştirdim.

Script'e sahip olduğumuzda, bot için anahtar ile değişkenlerin değerlerini değiştirmeliyiz; bunun için yeni bir Telegram Botu oluşturmak gerekiyor, bununla birlikte sadece dosyayı kaydedip çıkmak (Ctrl + ile veya save ve ctrl + x ile editör nano'dan çıkıyor), sadece yeniden başlatmaların kanıtı olmamız gerekiyor; betiğin kendisi güç sisteminin en son etkinleştirildiği zamanı kaydeder, bu yüzden yalnızca betiği işletim sistemi her başlatıldığında çalıştırmamız gerekir, bunun için Debian depolarından yüklenen süpervizör adlı bir programla çok özel bir çözüm buldum:

apt-get kurulum sorumlusu

ve kurulduktan sonra, sadece /etc/supervisor/conf.d/petfeeder.conf içinde bir konfigürasyon dosyası oluşturmamız gerekiyor, önceki durumda olduğu gibi nano ile oluşturup kaydedebiliriz, bu dosya aşağıdakilere sahip olacaktır:

[program:petfeederd]dizin=/opt command=python petfeeder.py autostart=true autorestart=true

Dosya kaydedildikten sonra süpervizörctl [start | dur | restart] petfeederd, bu durumda hizmet başlatılmadığı için start ile çalıştırıyoruz:

süpervizörctl petfeederd'i başlat

4. Adım: Teste Hazır

Image
Image
Teste Hazır
Teste Hazır
Teste Hazır
Teste Hazır
Teste Hazır
Teste Hazır

Ve bununla sistem çalışmalı, LCD ekranda bir sonraki yem ne zaman olması gerektiği veya yemlemeye hazır olup olmadığı hakkında bilgi vermeli mi diyeyim. Ayrıca SSH üzerinden bağlanmamız gerekirse, bağlı olduğunuz kablosuz ağın adını ve kullanılan IP adresini de göstermelisiniz, yaptığım küçük bir videoyu paylaşıyorum, kalitesi için özür dilerim, Çok iyi değilim vlogların konusu bu.

Botunuzu Telegram'da arayabilmelisiniz ve sohbetinizi / yetkilendirdikten sonra sonraki komutlardan birini gönderebilmelisiniz:

/feed: Parametreli zaman periyodu geçtiği sürece besleme işlemini başlatır.

/ne zaman: En son ne zaman beslendiği hakkında bilgi ve yemek tabağının bir resmini döndürür.

/photo: Yemek tabağının resmini döndürür.

/restart: Sistemi yeniden başlatın, hemen besleme yapabilmek için son beslemenin değişkenini 0 olarak ayarlayın.

/status İnternet bağlantı durumu hakkında bilgi verir: Bağlanan Kablosuz'un SSID'si ve sistemin ağ içinde sahip olduğu IP adresi.

Önerilen: