İçindekiler:
- Gereçler
- 1. Adım: Raspberry Pi'nizi Kurun
- 2. Adım: Donanımınızı Bağlama
- Adım 3: Kodu Ekleme
- Adım 4: Bir şans verin
- Adım 5: Hata Ayıklama ve RxTx.py Dosyası
- Adım 6: Keyfini çıkarın
Video: Raspberry Pi Kullanarak Çıkışlar Nasıl Kontrol Edilir: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
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
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
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
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ı
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:
Visuino Sıra Bileşenini Kullanarak Servo Motor Açısı Nasıl Kontrol Edilir: 10 Adım
Kendin Yap Visuino Sıra Bileşenini Kullanarak Servo Motor Açısını Kontrol Etme: Bu derste Servo Motor ve Arduino UNO ve Visuino'yu dizi bileşenini kullanarak servo motor Açısını kontrol etmek için kullanacağız. Dizi bileşeni, sırayla birkaç olayı tetiklemek istediğimiz durumlar için mükemmeldir. bizim durumumuzda servo motor derece
RC Verici Kullanarak GoPro Hero 4 Nasıl Kontrol Edilir: 4 Adım (Resimlerle)
Bir GoPro Hero 4 RC Vericisi Kullanarak Nasıl Kontrol Edilir: Bu projenin amacı, bir GoPro Hero 4'ü bir RC Vericisi aracılığıyla uzaktan kontrol edebilmektir. Bu yöntem, GoPro'nun yerleşik Wifi & Cihazı kontrol etmek için HTTP API & PROTOTİP'ten ilham almıştır: EN KÜÇÜK VE EN UCUZ
Raspberry Pi ve Röle Kullanarak Bir Cihaz Nasıl Kontrol Edilir - TEMEL BİLGİLER: 6 Adım
Raspberry Pi ve Röle Kullanarak Bir Cihaz Nasıl Kontrol Edilir - TEMEL BİLGİLER: Bu, Raspberry Pi ve Röle kullanarak bir cihazın nasıl kontrol edileceğine dair temel ve anlaşılır bir eğitimdir, IoT Projeleri yapmak için faydalıdır. Raspberry kullanma konusunda sıfır bilginiz olsa bile takip edin
160A Fırçalı Elektronik Hız Kontrol Cihazı ve Servo Test Cihazı Kullanılarak DC Dişli Motor Nasıl Kontrol Edilir: 3 Adım
160A Fırçalı Elektronik Hız Kontrol Cihazı ve Servo Test Cihazı Kullanılarak DC Dişli Motor Nasıl Kontrol Edilir: Özellikler: Voltaj: 2-3S Lipo veya 6-9 NiMH Sürekli akım: 35A Patlama akımı: 160A BEC: 5V / 1A, lineer mod Modlar: 1. ileri &ters; 2. ileri &fren; 3. ileri & fren & ters Ağırlık: 34g Boyut: 42*28*17mm
Web Sitesinden ESP8266 NodemCU Lua WiFi Kullanarak LED Nasıl Kontrol Edilir: 7 Adım
Web Sitesinden ESP8266 NodemCU Lua WiFi Kullanarak LED'i Kontrol Etme: Bu eğitim size, LED'i web'den kontrol etmek için ESP8266 NodemCU Lua WiFi kullanımına ilişkin bazı temel bilgileri öğretecektir. Başlamadan önce, gereken tüm malzemelere sahip olduğunuzdan emin olun: ESP8266 NodeMCU Lua WiFi LED Breadboard Jumper (gerekirse)