İçindekiler:
- 1. Adım: Sarf Malzemeleri ve Bağlantılar
- Adım 2: PI Kurulumu
- Adım 3: Kodu İndirme ve Derleme
- Adım 4: Kullanmak
- Adım 5: Kod Nasıl Çalışır?
- 6. Adım: Özelleştirme ve Kolay Adlar
Video: Alexa Raspberry Pi Röle Kontrol Cihazı: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu Eğitilebilir Yazıyı, IOT cihazlarını Amazon'un Alexa'sıyla entegre etme konusundaki deneyimlerimi paylaşmak için oluşturdum.
Bu proje, bir ahududu pi'ye bağlı bir röle kartının akıllı ev denetleyicisinden kontrol edilmesini sağlar.
Alexa ile test edildi, ancak bir dizi Belkin Wemo soketini taklit ettiği için Samsung Smartthings ve diğer kontrol arayüzleriyle de iyi çalışıyor gibi görünüyor.
Mükemmel FAUXMO koduna dayanan bir sürü örnek var ama bu python öğrenmek anlamına geliyordu ve bana cihazlarım için gereken ayrıntılı kontrolü vermedi ve bu yüzden temel kodlama dili olarak C kullanarak sıfırdan bir tane oluşturmaya karar verdim.
Ayrıca Amazon.com'da lambda kodunun derinliklerine inmek zorunda kalmak istemedim, bu yüzden gerçekten basit tuttum.
Kaynağı ve notları Github'a gönderdim:
github.com/Switchdoctorstu/StuPiMo
Öğretici, gerçekten nasıl çalıştırılacağını ele almak ve başkalarına yardımcı olması durumunda notlarımı yayınlamak içindir.
1. Adım: Sarf Malzemeleri ve Bağlantılar
İhtiyacınız olan şeyler Amazon / EBay'de hazır:
- Ahududu PI *
- Pi güç kaynağı
- Dupont konektörleri
- Röle Kurulu
- Eski mikro USB kablosu (röle kartının gücünü yarıya indirmek için)
Herhangi bir ahududu Pi çalışacak, bunu bir Model B ve Sıfır üzerinde test ettim.
*Pi Zero kullanıyorsanız bir OTG Ağ Adaptörüne ihtiyacınız olacaktır (WiFi'da yerleşik 'W' sürümünü satın almadığınız sürece)
Pi'yi ağa bağlamanız gerekecek.
Röle kartını Pi'ye bağlamak için dupont konektörlerini kullanın.
Röle kartının harici güç kullanması gerektiğini unutmayın (bağlantıyı kaldırın ve harici 5v'ye bağlayın). PI'den güç alarak çalışacak, ancak üretim çalışması için tavsiye edilmiyor.
Kurulumum için harici olarak çalışan bir USB HUB kullandım. Bu, PI'ye güç sağlar.
Ayrıca eski bir USB kablosunun ucunu kestim ve güvende kalmak için rölelere 2. USB bağlantısından hub'a güç verdim. 'Üretim' versiyonum küçük bir 5V 5A anahtar modlu güç kaynağı kullanıyor. Yine, Pi'yi Micro-USB aracılığıyla çalıştırmak için bir USB kablosunu yarıya indirdim ve röle kartına güç sağlamak için iki dupont konektörü kestim. USB kablosunda 4 kablo vardır, çoğu 5v beslemesini belirtmek için kırmızı/siyah kullanır, ancak şüpheniz varsa doğru kabloları aldığınızdan emin olmak için bir ölçüm cihazı kullanın.
Kart üzerindeki röle pinleri PI başlığındaki ilgili GPIO pinlerine bağlanır.
Kod, GPIO pinlerini seçmenize izin veriyor ancak kullandığım varsayılan şuydu:
- Röle Pimi 1 - Toprak
- Röle Pimi 2 - Röle 1 - GPIO 0
- Röle Pimi 3 - Röle 2 - GPIO 1
- Röle Pimi 4 - Röle 3 - GPIO 2
- Röle Pimi 5 - Röle 4 - GPIO 3
- Röle Pimi 6 - Röle 5 - GPIO 4
- Röle Pimi 7 - Röle 6 - GPIO 5
- Röle Pimi 8 - Röle 7 - GPIO 6
- Röle Pimi 9 - Röle 8 - GPIO 7
- Röle Pimi 10 - mantık için +5v
Adım 2: PI Kurulumu
PI'nizi nasıl çalıştırıp ağa bağlayacağınıza dair bir öğreticiyi yeniden oluşturmayacağım.
Mükemmel bir talimat içeren birçok kılavuz vardır:
www.instructables.com/id/Ultimate-Raspberr…
Kendinizi PI'nin ağda göründüğü noktaya getirmeniz gerekecek ve ona bağlanabilirsiniz.
Bunun Ethernet veya Kablosuz üzerinden olması önemli değil.
Bu proje Geany Programmers Editor kullanılarak yalnızca Raspberry PI ile tamamlanabilir, ancak ben şahsen Visual Studio veya Eclipse (veya hatta Notepad++) kullanarak bir PC'de kod hazırlığımı yapmayı daha kolay buluyorum ve ardından bir kullanarak hata ayıklamak için PI'ye yükleyin. VNC bağlantısı. Bir RPi'de VNC kurma konusunda birçok mükemmel talimat olduğu için yine burada ele almayacağım.
Tek ihtiyacınız olan, kodu yükleyip derleyebileceğiniz noktaya gelmek.
Önemli olan bir not, UPNP işleyicisi UDP çok noktaya yayın gerektirdiğinden, kullanılan arabirimlerin 'Karmaşık' moda ayarlanması gerektiğidir.
Bu komut satırında yapılabilir:
pi@raspberrypi:~ $ ifconfig eth0 söz
ve / veya
pi@raspberrypi:~ $ ifconfig wlan0 söz
Bunun kalıcı hale getirilmesi gerekiyor, bu yüzden /etc/rc.local dosyasını düzenledim
sudo nano \etc\rc.local
satırı dahil etmek için:
sudo ifconfig eth0 söz
arabirimlerin başlangıçta ayarlandığından emin olmak için ilk başlık satırı # satırından sonra.
Adım 3: Kodu İndirme ve Derleme
Kodun kendisi Github depomda bulunur;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
depoyu klonlamanın 'doğru' yolları varken. Pi masaüstünde Geany editörünü açıp kodu yapıştırmayı daha kolay buldum.
Benzer şekilde, komut satırını kullanıyorsanız;
Yeni bir dizin oluştur
mkdir Stu
değiştir
cd Stu
Yeni bir metin dosyası oluşturun
nano StuPiMo.c
Kodu Github ham dosyasından kopyalayın ve yeni dosyaya yapıştırın
Kaydet ve çık.
Dosyayı bir C kaynak kodu nesnesi olarak aldıktan sonra, onu kullanarak derleyebilirsiniz.
gcc -o StuPiMo StuPiMo.c -l kablolamaPi
Gerekli kablolamaPi kitaplığındaki compliler bağlantılarını sağlamak için "-l kablolamaPi" gerekli olduğuna dikkat edin.
Kod daha sonra kullanılarak çalıştırılabilir
./StuPiMo
Yine, bunun başlangıçta çalışmasını istiyorsanız, şu komutu kullanın:
sudo nano /etc/rc.local
aşağıdaki satırı eklemek için
sudo /home/pi/Stu/StuPiMo &
/etc/rc.local dosyanıza. Çıkışta dosyanızı kaydetmeyi unutmayın.
Komut dosyasının bu noktada engellenmediğinden emin olmak için bir alt işlemin oluşturulmasını sağlamak için '&' işaretinin gerekli olduğunu unutmayın.
Adım 4: Kullanmak
Kodu çalıştırdıktan sonra, alexa'dan 'Cihazları Keşfet' yapmasını isteyin ve o, sanal Wemo cihazlarının 8'ini de bulmalıdır.
O zaman sadece "Alexa soket 1'i aç" veya "Alexa soketi 6 kapat" vb. Deme durumu olur ve ilgili röle değiştirilir.
Adım 5: Kod Nasıl Çalışır?
Kod, bir dizi Belkin Wemo soket cihazını taklit ederek çalışır.
Bunu başarmak için 2 ana işlevi yerine getirmesi gerekir.
- bir UPNP keşif yayın işleyicisi
- cihaza gönderilen komutları ve gerekli yanıtları yönetmek için bir 'aygıt işleyicisi' (sanal cihaz başına bir tane).
Bir 'bonus' özelliği, cihazların kontrolüne izin vermek için bir web sayfası da yayınlamasıdır.
UPNP İşleyicisi
UPNP işleyicisi, 239.255.255.250 bağlantı noktası 1900'deki SSDP protokol paketlerini izlemek için bir yuva açar.
Bireysel wemo öykünücülerini soran herkese bildiren bir keşif yanıt paketi ile gelen herhangi bir 'M-SEARCH' sorgusuna yanıt verir.
Cihaz İşleyici
Aygıt işleyicileri (sanal aygıt başına bir tane) bir dizi IP bağlantı noktasını izler ve isteklere yanıt verir.
Sorulduğunda bir setup.xml yanıtı sunacak
Sorulduğunda bir olay açıklama dosyası sunacak
Bir GETBINARYSTATE isteğine yanıt verecek
Bir SETBINARYSTATE isteğini işleyecek ve yanıtlayacaktır.
Web sunucusu
Web sunucusu, geçiş başına bir düğme içeren bir HTML formu oluşturan basit bir rutindir.
Basılan düğmelere yanıt verecek ve buna göre rölenin durumunu değiştirecektir.
6. Adım: Özelleştirme ve Kolay Adlar
Basit ve düzenlenebilir olması için koda deli olmadım.
Temel bilgiler, kodun başlangıcındaki tanımlara göre özelleştirilebilir:
// global tanımlar#define WEBPORT 5353 // web sunucusunun çalıştırılacağı bağlantı noktası
#define NUMDEVICES 8 // Oluşturulacak sanal cihaz sayısı
#define PORTBASE 43450 // artırılacak temel IP bağlantı noktası
WEBPORT, yerleşik web sunucusunun üzerinde çalıştığı bağlantı noktası numarasıdır. Bu, işleri kolaylaştırmak için 80'de oturmak için yapılabilir, ancak yerel olarak çalışan Tomcat veya diğer hizmetlerle çeliştiğini buldum.
NUMDEVICES, başlatılacak bireysel WEMO öykünücülerinin sayısını tanımlar. 2 portlu bir röle kartınız varsa, bunu 2, 4 port = 4 vb. olarak ayarlayın.
Cihazlar için kolay adlar, setup_names adlı bir rutinde ayarlanır:
int setup_names(char dostu[NUMDEVICES][NAMELEN]) { int i = 0;
// bu döngüyü kullan
for (i = 0; i < NUMDEVICES; i++) {
sprintf(dostu, "Soket %d", i + 1);
}
// veya cihaz adlarını doldurmak için aşağıdaki manuel tablo
/*
strcpy(dostu[0], "Yatak Odası TV");
strcpy(dostu[1], "Elektrikli Battaniye");
strcpy(dostu[2], "Yatak Odası Lambası");
strcpy(dostu[3], "Soket 4");
strcpy(dostu[4], "Soket 5");
strcpy(dostu[5], "Soket 6");
strcpy(dostu[6], "Soket 7");
strcpy(dostu[7], "Soket 8");
*/
dönüş i;
}
Aygıtların her birini 'Soket n' olarak adlandırmak için bir döngü kullandım, ancak /* */ silerseniz bu döngüyü silebilir ve bunun yerine kendi kolay adlarınızı ekleyebilirsiniz (sadece NUMDEVICES ile aynı numarayı eklediğinizden emin olun).
Herhangi bir değişiklik yaparsanız kodu yeniden derlemeyi unutmayın.
Önerilen:
Arduino DMX 512 Test Cihazı ve Kontrol Cihazı: 19 Adım
Arduino DMX 512 Test Cihazı ve Denetleyici: Actualizaciones, ficheros, códigos…English versionFacebookHerramienta para pruebas ve espectáción de espectáción de iluminación de iluminación de iluminación de iluminación de iluminación DMX-512, ideal para hacer pruebas rápidas en instalaciones fijas o temporales. Este p
Arduino DMX 512 Test Cihazı ve Kontrol Cihazı ENG: 19 Adım
Arduino DMX 512 Test Cihazı ve Kontrol Cihazı ENG: Güncellemeler, dosyalar, kodlar, şemalar…Versión en EspañolFacebookDMX-512 protokolü ile test ve ışık gösterisi için kontrol aracı, sabit veya geçici aydınlatma kurulumlarında hızlı testler için ideal. Bu proje, bir portab
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
HW30A Fırçasız Motor Hız Kontrol Cihazı ve Servo Test Cihazı Kullanılarak Drone Quadcopter Fırçasız DC Motor Nasıl Çalıştırılır: 3 Adım
HW30A Fırçasız Motor Hız Kontrol Cihazı ve Servo Test Cihazı Kullanılarak Drone Quadcopter Fırçasız DC Motor Nasıl Çalıştırılır: Açıklama: Bu cihaz, servo motoru basit bir servo motora takmak ve ona güç beslemesi ile çalıştırmak için kullanılabilen Servo Motor Test Cihazı olarak adlandırılır. Cihaz ayrıca elektrikli hız kontrol cihazı (ESC) için bir sinyal üreteci olarak da kullanılabilir, o zaman
Servo Test Cihazı Kullanarak 30A Mikro Fırça Motorlu Fren Kontrol Cihazı Eğitimi: 3 Adım
Servo Test Cihazı Kullanarak Öğretici 30A Mikro Fırça Motor Fren Kontrol Cihazı: Özellikler: 30A fırça hız kontrolörü. Fonksiyon: ileri, geri, fren Çalışma voltajı: 3.0V---5.0V. Akım(A): 30A BEC: 5V/1A Sürücü frekansı: 2KHz Giriş: 2-3 Li-Po / Ni-Mh/Ni-cd 4-10cell Sabit akım 30A Max 30A<