İçindekiler:

Raspberry Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir: 6 Adım
Raspberry Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir: 6 Adım

Video: Raspberry Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir: 6 Adım

Video: Raspberry Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir: 6 Adım
Video: Raspberry Pi Nedir? Nasıl kullanılır? Single Board Computer 2024, Haziran
Anonim
Ahududu Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir
Ahududu Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir
Ahududu Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir
Ahududu Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir
Ahududu Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir
Ahududu Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir

Bu Eğitilebilir Kitapta, size bir Raspberry Pi kullanarak evinizdeki prizleri kontrol etmek için bir web arayüzünün nasıl oluşturulacağını göstereceğim. Sensörler yarışmasını gördüğümde bu projeyi yazmayı seçtim ve bu proje, satın aldığınız prizlerle birlikte verilen uzaktan kumandadan kodları okumak için bir sensör kullanmayı içerdiğinden, bu projenin mükemmel bir uyum olacağını düşündüm.

Bunu mümkün olduğunca yüksek seviyede tutmak için çalışacağım ve tüm bunların işe yaraması için kod sağlayacağım. Hepiniz kod maymunları için, kodun içinde dolaşmaktan çekinmeyin ve yorumlarda beni inceleyin! Her zaman iyileştirmenin peşindeyim. Bu konuda oldukça fazla şey oluyor, bu nedenle herhangi bir adımla ilgili sorularınız varsa, lütfen bir yorum bırakın, böylece Talimatı gerekli ayrıntılarla güncelleyebilirim.

Bu proje, ahududu pi'nize bağlı bir RF vericisi ile birleştirilmiş 433MHz'de radyo frekansı kontrollü çıkışlar kullanır. Çıkışlar, çıkışları açıp kapatabilen uzaktan kumandalarla gelir, ancak bu hiç eğlenceli değil! Bunun yerine, ağa bağlı herkesin belirli çıkışları açıp kapatmasına izin veren ahududu pi üzerinde çalışan bir web sunucusu kullanacağız. Ağınızdaki herhangi bir web bağlantılı cihaz uzaktan kumandanız olarak kullanılabildiğinden, bu proje için bir web ön ucu idealdir.

Bu benim yıllardır hayalini kurduğum bir proje ve hala eklemeler yapılsa da aşağıda anlatılan proje işlevsel bir sistem.

Gereçler

  • Ahududu Pi (RPi 3 Model B+ kullandım)
  • 433MHz Verici ve Alıcı (Bunu kullandım)
  • 433MHz Çıkışlar (Bunu kullandım)
  • Kadından Kadına Süveterler (Bu demeti aldım)
  • İnternete erişebilen bir bilgisayar veya el cihazı

1. Adım: Raspberry Pi'nizi Kurun

Raspberry Pi'nizi Kurun
Raspberry Pi'nizi Kurun

Yeni Raspberry Pi'nize Raspbian'ın en son sürümünü yükleyerek başlayın. Mevcut bir Pi kullanmayı planlıyorsanız (ki bunu tamamen yapabilirsiniz), tüm yapmanız gereken Pi'nizde Python 3 olduğundan emin olmaktır, çünkü sağladığım tüm kaynak kodlar bu şekilde yazılmıştır. Bunu yapmak için, tip

piton3

komut satırına girin. Python 3'ünüz varsa, python terminalinin açık olduğunu görmelisiniz. Kapatarak veya yazarak terminalden çıkın

çıkış()

Bunu onayladıktan sonra, Pi'nize şişe yüklemeniz gerekir. Flask, web sunucumuzu oluşturmamıza izin verir. Pi komut satırından şunu yazın

sudo pip3 yükleme şişesi

Pi'nizde pip kurulu değilse, yazmanız gerekecektir.

sudo apt-get install python3-pip

Raspberry Pi'mi masaüstü bilgisayarımın rahatlığında geliştirmeyi tercih ediyorum. Siz de bu seçeneği tercih ederseniz, Pi'ye SSH'ye bir tür ortam yüklemeniz gerekir. PuTTY çalışacak, ancak doğrudan Pi'deymişsiniz gibi görünmesini sağlayan bir GUI'ye (grafik kullanıcı arayüzü) sahip olmayı tercih ediyorum. GUI seçeneği için, üzerinde çalışmayı planladığınız bilgisayara VNC Viewer'ı kurmak isteyeceksiniz. Pi'nizde ayarlamanız gereken ayarlar da vardır. Ayarları değiştirme talimatları burada bulunabilir.

2. Adım: Donanımınızı Bağlama

Donanımınızı Bağlama
Donanımınızı Bağlama

Bu noktada, bu proje için kaynak kodunun kurulumuna hazırlanmak için yapmanız gereken tüm fiziksel bağlantıları yapmanın zamanı geldi. Verici ve alıcının pinlerini Pi'nizin GPIO pinlerine bağlayacaksınız. GPIO pinlerinin pinout şemasına dini olarak başvurmak isteyeceksiniz. Bunu yapmak için Pi'nizdeki terminali açın ve şunu yazın

Pin yapısı

Yaptığım bağlantılar aşağıdadır. Girişte belirttiğimden farklı bir verici/alıcı donanımı satın aldıysanız farklı bir konfigürasyona sahip olabilirsiniz. Aşağıda belirttiğim pin numaralarından farklı bir pin numarası seçmeye karar verirseniz korkmayın! Kaynak kodunu indirdiğinizde, pin numaralarını RxTx.py dosyasında gerektiği gibi değiştirin.

Alıcı (büyük çip):

  • GND - Herhangi bir belirlenmiş topraklama pimi
  • VERİ - Pim 11
  • DER - Bağlı değil
  • +5V - Belirlenen herhangi bir +5V pini
  • ------
  • +5V - Belirlenen herhangi bir +5V pini
  • GND - Herhangi bir belirlenmiş topraklama pimi
  • GND - Bağlı değil
  • ANT - Bağlı değil

Not: Gerektiğinde bir anten bağlayabilirsiniz, ancak gerek duymadım. Bu küçük çip şaşırtıcı derecede hassastı ve oturduğu yerden en az 50 fit uzağa ve en az iki duvardan gelen sinyalleri güvenilir bir şekilde algılar.

verici:

  • P - 3.3V pimi
  • DA - Pim 7
  • G - Herhangi bir belirlenmiş topraklama pimi
  • AN - bağlı değil

Not: Yine, gerektiğinde vericiye bir anten bağlayabilirsiniz, ancak gerek duymadım. Menzil fazlasıyla yeterli (50+ft).

Adım 3: Kodu Ekleme

Bu projeyi geliştirirken zamanımın çoğunu harcadığım kısım burasıydı. Mümkün olduğunca yorum yapmaya çalışıyorum, ancak herhangi biriniz anlamaya çalışmak için zaman harcarsanız, muhtemelen açıklama gerektirebilecek boşluklar bıraktım. Bu size olursa, lütfen bir yorum bırakın!

Burada yer alan diller şunlardır:

  • piton
  • CSS
  • Javascript
  • HTML
  • JQuery/Ajax

Python, şişe sunucusunda ve

RxTx.py

kod iletimini ve alınmasını işleyen dosya. CSS, web sayfasının stilini oluşturmak için kullanılır. Kim sıkıcı bir web sitesi ister!? Javascript, herhangi bir olay işlemede kullanılır (bir düğmeye basmak, vb.). HTML, web sayfasının temel yapı taşıdır. Son olarak, web sayfası ve Python arka ucu arasında iletişim kurmak için JQuery/Ajax kullanılır.

Tüm bu diller kulağa korkutucu geliyorsa endişelenmeyin! Ben sadece Python'un bu projeye dahil olduğunu biliyordum, ki bu en az kodlama gerektiren dildi, haydi bakalım… Şunu söyleyelim, eğer yapmayı tercih ettiğiniz buysa, kodu taramak için biraz zaman ayırın. İstemiyorsan, zorunda değilsin!

Bu web sayfasıyla kullanmayı seçtiğim dizin yapısı aşağıdadır. Bu adıma eklenen sıkıştırılmış klasör, aşağıdaki yapıda kaynak kodunun tamamını içerir.

Çıkış Anahtarı-> iletişim-- DataRW.py--keys.py-- RxTx.py-> web sayfası-- statik----- favicon.ico----- style.css-- şablonlar----- index.html----- program.html-- app.py-- data.file

Outlet Switch klasörünü Pi'nizin herhangi bir yerine koyabilirsiniz. Web sunucunuzu çalıştırmaya hazır olduğunuzda, Pi'nizdeki terminali açın ve

CD

(dizini değiştir) web sayfası dizinine. Sonra yazın

python3 uygulaması.py

terminalin içine. Herhangi bir hata olmasaydı, gitmeniz iyi olur!

not Herhangi bir hatayla karşılaşırsanız lütfen sabırlı olun. Yüklemeden önce hepsini ezmeye çalıştım.

Adım 4: Bir şans verin

Bi dene!
Bi dene!

Artık kodu çalıştırdığınıza göre, parmaklarınızın ucunda web arayüzü hakkında bir fikir edinebilirsiniz. Sistemin kontrolü çok basittir:

  • Web arayüzünü kullanarak istediğiniz kadar çıkış ekleyebilirsiniz.
  • Silme, düzenle'ye tıklamak, silmek istediğiniz çıkışları seçmek ve sil'e tıklamak kadar basittir.

Yukarıdaki YouTube videosu, listenize yeni bir çıkış noktası eklemenin nasıl yapılacağını gösteriyor. Gösterdiklerini özetlemek gerekirse:

  • Önce Başlık alanına satış yerinin adını girin
  • Programın başlığın mevcut olmadığını kontrol etmesine izin vermek için Başlık alanının dışına tıklayın veya dokunun. Aynı ada sahip başlıklara sahip olamazsınız
  • Onaylandıktan sonra AÇIK Kodu ve KAPALI Kodu düğmeleri etkinleştirilir.
  • Sağladığınız uzaktan kumandadaki AÇIK düğmesini basılı tutun ve arayüzdeki AÇIK Kodu düğmesini hızlı bir şekilde tıklayın. İkili kodunuz bitişik alanı doldurana kadar uzaktan kumandadaki düğmeyi basılı tutun.
  • KAPALI Kodu için önceki adımı tekrarlayın.
  • Tamam'a tıklayın ve şimdi bu prizi değiştirmeye hazırsınız!

Girişte belirtildiği gibi, proje kendi kullanımlarım için %100 tamamlanmış değil. Henüz tamamlamam ve uygulamam gereken en büyük bileşen, zamanlama yeteneğidir. Kullanıcının, çıkışların belirlenen zamanlarda otomatik olarak açılıp kapanmasına izin verecek bir program oluşturmasına izin vermeyi planlıyorum.

Adım 5: Hata Ayıklama ve RxTx.py Dosyası

Hata Ayıklama ve RxTx.py Dosyası
Hata Ayıklama ve RxTx.py Dosyası
Hata Ayıklama ve RxTx.py Dosyası
Hata Ayıklama ve RxTx.py Dosyası
Hata Ayıklama ve RxTx.py Dosyası
Hata Ayıklama ve RxTx.py Dosyası
Hata Ayıklama ve RxTx.py Dosyası
Hata Ayıklama ve RxTx.py Dosyası

Sistemin bilinen tek sınırlaması, farklı satıcının satış noktaları arasında uyumsuzluk olasılığı olmasıdır. Sistemim için açma ve kapama kodu mesajları 25 bittir ve eğer bir sistem farklı bir mesaj uzunluğuna sahipse bu proje ile hemen uyumlu değildir. Talimatları tam olarak izlediyseniz ve bunun işe yaramasıyla ilgili hala sorun yaşıyorsanız, sorunun hatalarını ayıklamanın en iyi yolu aşağıdakiler olacaktır.

  • Pi'nizde matplotlib'in kurulu olduğundan emin olun. Bunu Pi'nin terminaline aşağıdakini yazarak yapabilirsiniz:

    • piton3

    • matplotlib'i içe aktar

    • Bir hata alırsanız, matplotlib'i yüklemeniz gerekir.
    • kullanarak python kabuğundan çıkın

      çıkış()

  • matplotlib'i yüklemek için şunu yazın

    sudo pip3 matplotlib yükleyin

  • terminale
  • Ekli test.py dosyasını indirin ve Pi'nizdeki RxTx.py dosyasının yanına yerleştirin.
  • Python terminalini açın ve dizini comm klasörüne değiştirin.
  • Tip

    python3 testi.py

  • "**Kayıt Başladı**" yazdığında, uzaktan kumandanızdaki AÇMA veya KAPATMA düğmesini kayıt bitene kadar basılı tutun.
  • Program, yukarıdakine benzeyen bir matplotlib figürü yükleyecektir. Yukarıdaki fotoğraflarda gösterildiği gibi tekrarlayan sinyali görene kadar yakınlaştırın.
  • Her mesaj için toplam mantıksal 1 ve mantıksal 0'ı sayın, burada bir mesaj yukarıda görülen tekrarlayan sinyalin bir yinelemesidir. Toplam 25 ise, RxTx.py dosyası büyük olasılıkla hatalı değildir. 25 dışında bir şeyle karşılaşırsanız, aşağıda yorum yaptığınızdan emin olun; RxTx.py dosyasını daha açık uçlu olacak şekilde yeniden düzenleyeceğim (veya elinizi denemekten çekinmeyin).

Tekrarlayan bir sinyal görmezsem ne olur?

Tekrarlayan bir sinyal görmüyorsanız, iki şeyden biri yanlıştır. İlk olarak, tüm jumper kablo bağlantılarınızın doğru yapıldığını kontrol edin. Her şey iyi görünüyorsa, kötü bir alıcınız olabilir. Önerdiğimi satın aldın mı? İlk alıcı çipimi aldığımda çok gürültülüydü. O kadar gürültülü ki net bir sinyal alamadım. Daha sonra o çipi iade ettim ve bağladığım çipi aldım ve daha iyi çalışamazdı.

Adım 6: Keyfini çıkarın

Telefonunuzdan, tabletinizden, bilgisayarınızdan veya diğer web özellikli cihazlardan çıkışları açıp kapatabileceğinizi biliyorsunuz! Bana yorumlarda ne düşündüğünüzü söyleyin!

Önerilen: