Mündəricat:
- Addım 1: Təchizat və Bağlantılar
- Addım 2: PI qurulması
- Addım 3: Kodu yükləyin və tərtib edin
- Addım 4: İstifadə edin
- Addım 5: Kod necə işləyir
- Addım 6: Fərdiləşdirmə və Dostluq Adları
Video: Alexa Raspberry Pi Relay Controller: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
IOT cihazlarının Amazon Alexa ilə inteqrasiyası ilə bağlı təcrübələrimi bölüşmək üçün bu Təlimatı yaratdım.
Bu layihə, moruq pi ilə əlaqəli bir relay kartının smarthome nəzarətçisindən idarə olunmasına imkan verir.
Alexa ilə sınaqdan keçirildi, eyni zamanda bir sıra Belkin Wemo prizlərini təqlid etdiyi üçün Samsung Smartthings və digər idarəetmə interfeysləri ilə yaxşı işləyir.
Mükəmməl FAUXMO koduna əsaslanan çoxlu nümunələr var, amma bu python öyrənmək demək idi və cihazlarım üçün lazım olan detallı idarəetməni verməmişdi və buna görə də əsas kodlaşdırma dili olaraq C istifadə edərək sıfırdan yenidən yaratmağa qərar verdim.
Amazon.com -da lambda kodunun dərinliklərinə getmək istəmədim, buna görə də bunu çox sadə saxladım.
Mənbə və qeydləri Github -da yerləşdirdim:
github.com/Switchdoctorstu/StuPiMo
Dərslik, həqiqətən necə işləyəcəyini və başqalarına kömək etdiyi təqdirdə qeydlərimi dərc etməyi əhatə etməkdir.
Addım 1: Təchizat və Bağlantılar
Lazım olan şeylər Amazon / EBay -də asanlıqla mövcuddur:
- Moruq PI *
- Pi enerji təchizatı
- Dupont bağlayıcıları
- Röle lövhəsi
- Köhnə mikro USB qurğusu (röle kartının gücünü yarıya endirmək üçün)
Hər hansı bir moruq Pi işləyəcək, bunu Model B və Sıfırda sınamışam.
*Pi Zero istifadə edirsinizsə, OTG Şəbəkə Adaptörünə ehtiyacınız olacaq (WiFi -də "W" versiyasını satın almasanız)
Pi -ni şəbəkəyə bağlamalısınız.
Röle kartını Pi -yə bağlamaq üçün dupont konnektorlarından istifadə edin.
Röle kartının xarici gücdən istifadə etməsi lazım olduğunu unutmayın (əlaqəni çıxarın və xarici 5v -ə qoşulun). PI ilə işləyəcək, lakin istehsalın işləməsi üçün tövsiyə edilmir.
Quraşdırma üçün xaricdən işləyən USB HUB istifadə etdim. Bu, PI -yə güc verir.
Köhnə bir USB kabelinin ucunu da kəsdim və təhlükəsiz qalmaq üçün röleləri 2 -ci USB bağlantısından huba bağladım. Mənim "istehsal" versiyamda kiçik 5V 5A keçid rejimi enerji təchizatı istifadə olunur. Yenə Pi-ni Micro-USB vasitəsi ilə gücləndirmək üçün bir USB qurğusunu yarıya endirdim və röle lövhəsini gücləndirmək üçün dupont konnektorlarından ikisini kəsdim. USB qurğusunda 4 tel var, əksəriyyəti 5v təchizatı ifadə etmək üçün qırmızı/qara rəngdən istifadə edir, lakin şübhəniz varsa düzgün telləri aldığınızdan əmin olmaq üçün bir sayğacdan istifadə edin.
Lövhədəki röle pinləri, PI başlığındakı müvafiq GPIO pinlərinə bağlıdır.
Kod GPIO sancaqlarını seçməyə imkan verir, amma istifadə etdiyim standart:
- Relay Pin 1 - Torpaq
- Relay Pin 2 - Relay 1 - GPIO 0
- Relay Pin 3 - Relay 2 - GPIO 1
- Relay Pin 4 - Relay 3 - GPIO 2
- Relay Pin 5 - Relay 4 - GPIO 3
- Relay Pin 6 - Relay 5 - GPIO 4
- Relay Pin 7 - Relay 6 - GPIO 5
- Relay Pin 8 - Relay 7 - GPIO 6
- Relay Pin 9 - Relay 8 - GPIO 7
- Məntiq üçün Relay Pin 10 - +5v
Addım 2: PI qurulması
PI-ni işə salmaq və şəbəkəyə qoşulmaq üçün bir dərslik yenidən yaratmayacağam.
Mükəmməl bir təlimat da daxil olmaqla bir çox bələdçi var:
www.instructables.com/id/Ultimate-Raspberr…
Özünüzü PI -nin şəbəkədə göründüyü nöqtəyə çatdırmalısınız və ona qoşula bilərsiniz.
Bunun Ethernet və ya Simsiz vasitəsilə olmasının əhəmiyyəti yoxdur.
Bu layihə Geany Programmers Redaktorundan istifadə etməklə yalnız Moruq PI ilə tamamlana bilər, amma şəxsən mən Visual Studio və ya Eclipse (və ya hətta Notepad ++) istifadə edərək kompüterdə kod hazırlamağı daha asan tapıram. VNC bağlantısı. Yenə də bunu əhatə etməyəcəyəm, çünki bir RPi -də VNC qurmaq üçün bir çox əla təlimat var.
Lazım olan yalnız kodu yükləyə və tərtib edə biləcəyiniz nöqtəyə çatmaqdır.
Əhəmiyyətli olan bir qeyd, UPNP işləyicisinin UDP çoxlu yayım tələb etdiyindən istifadə olunan interfeyslərin 'Promiscuous' rejiminə qoyulmasıdır.
Bu əmr satırında edilə bilər:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
və / və ya
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
Bunun daimi olması lazımdır, buna görə də /etc/rc.local redaktə etdim
sudo nano / etc / rc.local
xətti daxil etmək üçün:
sudo ifconfig eth0 promisc
ilk banner dəstindən sonra # sətirləri, başlanğıcda interfeyslərin qurulmasını təmin edir.
Addım 3: Kodu yükləyin və tərtib edin
Kodun özü Github depomda oturur;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
anbarı klonlaşdırmanın 'düzgün' yolları olsa da. Pi masaüstündə Geany redaktorunu açmağı və kodu yapışdırmağı daha asan tapdım.
Eyni şəkildə, əmr satırından istifadə edirsinizsə;
Yeni bir kataloq yaradın
mkdir Stu
Buna keçin
cd Stu
Yeni bir mətn faylı yaradın
nano StuPiMo.c
Github raw -dan kodu kopyalayın və yeni fayla yapışdırın
Saxla və çıx.
Dosyanı C mənbə kodu obyekti olaraq əldə etdikdən sonra istifadə edərək tərtib edə bilərsiniz
gcc -o StuPiMo StuPiMo.c -l wiringPi
"-l wiringPi" nin şikayətçi tələb olunan wiringPi kitabxanasında əlaqələndirilməsini təmin etmək üçün lazım olduğunu unutmayın.
Kod sonra istifadə edilə bilər
./StuPiMo
Yenə də bunun başlanğıcda işləməsini istəyirsinizsə, əmrdən istifadə edin:
sudo nano /etc/rc.local
aşağıdakı sətri əlavə etmək üçün
sudo/home/pi/Stu/StuPiMo &
/etc/rc.local faylınıza. Faylınızı çıxışda saxlamağı unutmayın.
Skriptin bu nöqtədə bloklanmadığından əmin olmaq üçün bir alt prosesin əmələ gəlməsini təmin etmək üçün '&' işarəsinin vacib olduğunu unutmayın.
Addım 4: İstifadə edin
Kod işlədildikdən sonra, Alexa'dan 'Cihazları Kəşf et' istəyin və o, bütün 8 virtual Wemo cihazını tapmalıdır.
Sonra "Alexa soketi 1 aç" və ya "Alexa 6 yuvasını söndür" və s. Və müvafiq rölin dəyişdiriləcəyini söyləmək yalnız bir haldır.
Addım 5: Kod necə işləyir
Kod, bir sıra Belkin Wemo yuva cihazlarını təqlid edərək işləyir.
Bunu əldə etmək üçün 2 əsas funksiyanı yerinə yetirməlidir
- bir UPNP kəşf yayım işçisi
- cihaza göndərilən əmrləri və lazımi cavabları idarə etmək üçün 'cihaz işləyicisi' (hər virtual cihaz üçün bir ədəd).
Bir 'bonus' xüsusiyyəti, cihazların idarə olunmasına icazə vermək üçün bir veb səhifəsi də nəşr etməsidir.
UPNP idarəçisi
UPNP işləyicisi, 239.255.255.250 1900 portunda SSDP protokol paketlərini izləmək üçün bir yuva açır.
Fərdi wemo emülatörlerini soruşan hər kəsə xəbər verən bir kəşf cavab paketi ilə daxil olan 'M-SEARCH' sorğularına cavab verir.
Cihaz idarəçisi
Cihaz idarəçiləri (hər bir virtual cihaz üçün bir ədəd) bir sıra IP portlarını izləyir və istəklərə cavab verir.
Sorulduqda bir setup.xml cavabına xidmət edəcək
Soruşanda bir hadisə təsviri faylına xidmət edəcək
GETBINARYSTATE sorğusuna cavab verəcək
SETBINARYSTATE sorğusunu emal edəcək və cavablandıracaq
Veb server
Veb server, röle başına bir düymə olan bir HTML forması quran sadə bir qaydadır.
Düymələrin basılmasına cavab verəcək və rölin vəziyyətini buna uyğun olaraq dəyişəcək.
Addım 6: Fərdiləşdirmə və Dostluq Adları
Sadə və düzəliş etmək üçün koddan dəli olmamışam.
Əsaslar, kodun əvvəlindəki təriflərlə fərdiləşdirilə bilər:
// qlobal təriflər#veb serveri işə salmaq üçün WEBPORT 5353 // portunu təyin edir
#define NUMDEVICES 8 // Yaratılacaq virtual cihazların sayı
#define PORTBASE 43450 // -dən artım üçün əsas IP portu
WEBPORT, quraşdırılmış veb serverin işlədiyi liman nömrəsidir. Bu işi asanlaşdırmaq üçün 80 -də oturmaq olardı, ancaq tomcat və ya yerli olaraq işləyən digər xidmətlərlə ziddiyyət təşkil etdiyini gördüm.
NUMDEVICES, işə salınacaq fərdi WEMO emulyatorlarının sayını təyin edir. 2 portlu röle kartınız varsa, bunu 2, 4 port = 4 və s.
Cihazlar üçün uyğun adlar, setup_names adlı bir iş rejimində qurulur:
int setup_names (dostluq [NUMDEVICES] [NAMELEN]) {int i = 0;
// bu döngədən istifadə edin
üçün (i = 0; i <NUMDEVICES; i ++) {
sprintf (dostluq , "Soket %d", i + 1);
}
cihaz adlarını doldurmaq üçün // və ya aşağıdakı təlimat cədvəlini istifadə edin
/*
strcpy (dostluq [0], "Yataq otağı TV");
strcpy (dostluq [1], "Elektrik Blanket");
strcpy (dostluq [2], "Yataq otağı lampası");
strcpy (dostluq [3], "Soket 4");
strcpy (dostluq [4], "Socket 5");
strcpy (dostluq [5], "Soket 6");
strcpy (dostluq [6], "Soket 7");
strcpy (dostluq [7], "Soket 8");
*/
qayıt i;
}
Cihazların hər birini 'Socket n' adlandırmaq üçün bir döngə istifadə etdim, ancaq / * * /
Hər hansı bir dəyişiklik etsəniz kodu yenidən tərtib etməyi unutmayın.
Tövsiyə:
NodeMCU Relay Modulundan istifadə edən Alexa Ağıllı Ev Sistemi: 10 addım
NodeMCU Relay Modulundan istifadə edən Alexa Ağıllı Ev Sistemi: Bu IoT layihəsində, NodeMCU ESP8266 və Alexa Smart Home Automation sistemini hazırladım. Relay Modulu. Səs əmri ilə işığı, fanatı və digər məişət cihazlarını asanlıqla idarə edə bilərsiniz. Echo Dot ağıllı dinamikini cihaza bağlamaq üçün
Arduino əsaslı səsli idarə olunan IOT Relay Switch (Google Home və Alexa dəstəklənir): 11 addım
Arduino əsaslı səslə idarə olunan IOT Relay Switch (Google Home və Alexa tərəfindən dəstəklənir): Bu layihə Arduino əsaslı, səslə idarə olunan, IOT rölesi açarının necə hazırlanacağını izah edir. Bu, iOS və Android üçün bir tətbiqdən istifadə edərək uzaqdan yandırıb söndürə biləcəyiniz, habelə IFTTT -ə bağlaya biləcəyiniz və Goog istifadə edərək səsinizlə idarə edə biləcəyiniz bir relaydır
Relay Board istifadə edərək Raspberry Pi ilə Ev Avtomatlaşdırması: 7 addım
Relay Board istifadə edərək Raspberry Pi ilə Ev Avtomatlaşdırması: Çox sayda insan böyük rahatlıq istəyir, lakin münasib qiymətlərlə. Hər axşam gün batanda və sabah səhər işıqları yenidən söndürəndə evləri işıqlandırmaq və ya Kondisioneri/Fanı/Qızdırıcıları açmaq/söndürmək üçün tənbəllik hiss edirik
Raspberry Pi və Relay istifadə edərək bir cihazı necə idarə etmək olar - ƏSASLARI: 6 addım
Raspberry Pi və Röleyi istifadə edərək bir cihazı necə idarə etmək olar - ƏSASLARI: Bu, IoT Layihələri hazırlamaq üçün faydalı olan Raspberry Pi və Relay istifadə edərək cihazı idarə etmək üçün əsas və düz bir dərsdir. Bu dərs yeni başlayanlar üçündür, Moruqdan istifadə haqqında sıfır biliyiniz olsa belə davam edin
Raspberry Pi ilə Relay Control: 3 addım
Raspberry Pi ilə Relay Control: Moruq pi lövhəsi eyni anda birdən çox cihaz arasında keçid edə bilmədikdə bir çoxumuz problemlə üzləşdik. 26 GPIO pinindən istifadə edərək birdən çox cihazı birləşdirmək mümkün deyil. Üstəlik, 26 aydan çox uzadıla bilməz