Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
Son vaxtlar əlimdə çox boş vaxtım olduğu üçün bir çox layihə üzərində işləyirəm.
Bu layihə, Raspberry Pi istifadə edərək Google Home vasitəsilə RGB LED -ləri idarə etməyə imkan verəcək. İndi layihənin 3 hissəsi var, bir Raspberry Pi qurmaq, IFTTT istifadə edərək xüsusi bir əmr ilə Google Home qurmaq və sonra işıqlar üçün bir dövrə yaratmaq. Dövrü özüm etdim, amma bahis edirəm ki, Adafruitdən lazım olanı edə biləcək bir şey əldə edə bilərsiniz.
Raspberry Pi hissəsi üçün materiallar
- Raspberry Pi - hər kəs işləyəcək, amma bir sıfırdan istifadə edirəm
- Simsiz Dongle - Pi -də Wifi qurulmamışdırsa
- Google Evi - Telefonunuzda Google köməkçisi varsa isteğe bağlıdır
Circuit Part üçün materiallar- Bu sizi caydırmasın … Bu olduqca sadədir
- Protoboard
- Tel
- LED şeridi
- 12V Güc Təchizatı - 2 Amperdən yuxarı hər şey yaxşı olmalıdır
- DC Barel Jack - Elektrik təchizatı ilə eyni ölçüdə
- NPN BJT Power Transistors (x3) - TIP31C istifadə edirəm
-
Kişi və Dişi Pin Başlıqları - İsteğe bağlı, lakin çox tövsiyə olunur
Addım 1: Pi üçün Express yükləyin
Pi qurmaqla bağlı çox təfərrüata girməyəcəyəm, çünki onları qurmaq üçün çoxlu dərsliklər var.
Gizlətmədiyim üçün nə etməlisən…
- Ən yeni Raspbian ilə yanıb -sönən Raspberry Pi
- İnternetdən Pi -dən istifadə edə biləcəyiniz üçün şəbəkə kartını qurun
- Raspberry Pi -də statik bir IP təyin edin
İndi əyləncənin başladığı yer budur! NodeJS, npm, express və express-generator qurmalıyıq.
sudo apt-get yeniləməsi
sudo apt-get nodejs npm quraşdırın
Bunlar quraşdırıldıqdan sonra aşağıdakıları işlədin
npm ekspress-generator qurun
Express, Raspberry Pi -nin istifadə etməsi üçün çox sadə bir veb server qurmağa imkan verir. Express-generator yalnız bir ekspress server üçün avtomatik olaraq fayllar yaradır.
Kataloqu və cd -ni qovluğa daxil edin. Özümə piWebpage adını verdim. İndi aşağıdakıları işlədin (şəkildə də görüldü)
mkdir piWebpage
cd piWebpage express --view = ejs webApp
Bu, bütün ekspress faylları olan webApp adlı bir qovluq yaradacaq. Daha sonra bu veb səhifəsi ilə daha çox iş görməyi planlaşdırırsınızsa və PUG -ni sevirsinizsə, --view = ejs -i --view = pug ilə əvəz edin. Veb səhifəyə toxunmayacağıq, buna görə də bu tətbiq üçün nə istifadə etdiyimizin əhəmiyyəti yoxdur.
Addım 2: Pi Server Quraşdırması
Yeni webApp qovluğuna keçin.
cd web proqram
npm quraşdırın
npm quraşdırma bir az vaxt aparacaq, çünki express üçün bütün asılılıqları qurur.
SetColor.py faylını webApp qovluğuna yapışdırın. Bu sənəddə əsas rənglər üçün bəzi ön ayarlar var. İstədiyiniz qədər daha çox əlavə etməkdən çekinmeyin. Aralığı 0 ilə 255 arasındadır, burada 255 tam rənglidir. Bir nöqtədə, ehtimal ki, işıqları söndürmə qabiliyyətini əlavə edəcəyəm, amma hələlik tam parlaqlıqdır.
Marşrutlara keçin
cd marşrutları
İndi index.js faylını əlavə edilmiş faylla əvəz edin. Bu, Google Evinin göndərəcəyi POST əmrini almaq üçün bəzi sətirlər əlavə edəcək. Bu POST -dan, rəngi seçəcəyik və Pi -yə işıqları tənzimləmək üçün setColor python skriptini işə salmasını söyləyəcəyik.
Son bir şey … webApp qovluğuna qayıdın.
cd ~/piWebpage/webApp
Sevdiyiniz redaktordan istifadə edərək aşağıdakı kodu webApp.js -ə yapışdırın və qeyd edin. "Module.exports = app;" əvvəldən olduğu kimi hər yerdə yaxşıdır.
// Quraşdırma LED hardware driverconst {exec} = tələb ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('LED Sürücü yüklənərkən xəta'); qayıt;} else console.log ('LED Sürücü Uğurla Yükləndi'); });
Şərhdə deyildiyi kimi, pigpiod, LED rənglərini tənzimləmək üçün istifadə edəcəyimiz PWM siqnalları üçün aparat sürücüsüdür. İnanıram ki, artıq Raspbian -da quraşdırılıb, amma olmasa …
sudo apt-get install pigpiod
İndi əsl sınaq üçün! Server işə salınır!
DEBUG = webapp:* npm başlanğıcı
Addım 3: IFTTT Quraşdırması (Tetikleyici)
IFTTT çox şey edə bilər və bəzi tətbiqlərə baxmağı məsləhət görürəm.
Əvvəlcə bir hesab yaratmalısınız. Google Evinizlə əlaqəli eyni Google hesabını istifadə edin, əks halda birlikdə sinxronizasiya edilməyəcək. Tamamlandıqdan və daxil olduqdan sonra, adınızı və avatarınızı göstərən IFTTT səhifəsinin yuxarı sağ klikləyin. Sonra açılan menyudan Yeni Tətbiqi vurun.
Əgər maraqlanırsınızsa, IFTTT, açılan ekranda fərq etmədiyiniz təqdirdə IF This Then That sözünün mənasını verir. İstədiyimiz şey Google köməkçisi olsa, seçimlərimiz olaraq Webhookdur.
Axtarış çubuğunu yükləyəcək +bu düyməsini basaraq davam edin. Axtarışa Google köməkçisi yazın və axtarışın altındakı işarəni vurun.
Bir Tətik Seçin bölməsində, mətn tərkibli bir cümlə söyləmək adlanan 3 -cü seçimi seçin. İndi bu, eyni hərəkəti edəcək 3 əmrə sahib olmağınıza imkan verir. Rəngi qeyd edəcəyiniz yerdə $ ifadəsini əlavə edirsiniz. Məsələn, təbii olaraq Hey Google, Mavi LEDlər qurun (bir cihaza qışqırmaq kimi təbii ola bilər) deyərdimsə, Set LEDləri $ sahəsinə yazardım. Əmrin fərqli versiyaları olan bütün 3 sahə üçün bunu edin.
İstifadə etdiyim 3 ədəd idi
LED -lər
LED -ləri təyin edin
$ LED rəngini təyin edin
Son sahə, əmrinizi söylədikdən sonra Google Evinizin cavab verməsini istədiyiniz sahədir. İstədiyiniz hər şey ola bilər, amma Rəng Ayarını $ -dan istifadə etdim. $, Rəngi təkrarlayacağı deməkdir.
Tetikleyici Yarat düyməsini basın
Addım 4: IFTTT Quraşdırması (Fəaliyyət)
Tetikleyici Yarat düyməsini tıkladıqdan sonra, bu görünüşü geri yükləyəcəksiniz, ancaq bu Google köməkçisi loqotipi ilə əvəz edilmişdir. +Üzərinə basaraq davam edin
Axtarış çubuğuna gətirdiyi yerlə eyni şey. Webhooks yazın və axtarış çubuğunun altındakı webhook simgesini basın. Web Hooks üçün Fəaliyyət Seçin altında yalnız bir seçim var, buna görə Veb sorğusu vurun.
İşlərin bir az çətinləşdiyi yer budur. Google evinizdə başqa bir kompüter olmadığı üçün xarici IP ünvanınıza ehtiyacınız olacaq. Bunun üçün müəyyən bir liman yönləndirmə tələb olunacaq, ancaq buna daha sonra toxunacağıq. Xarici IP ünvanınızı əldə etmək üçün https://canyouseeme.org/ ünvanına daxil olun.
URL sahəsinə https://xxx.xxx.xxx.xxx:3000/{{TextField}} yazın (x xarici IP ünvanınızdır). Maraqlandığınız halda, TextField bir əmr verərkən seçdiyiniz rəngə sahib olacaq. 3000 istifadə etməyimizin səbəbi, Raspberry Pi Express serverinin işlədiyi liman olmasıdır. (Koddakı portu dəyişə bilərsiniz, ancaq Express üçün standart parametrlərdən istifadə edirik)
Metod üçün POST seçin.
Məzmun növü üçün mətn/düz seçin.
Bədən üçün {{TextField}} daxil edin
Bir POST əmrinin necə işlədiyini bilənlər, istəyin bədən xüsusiyyətlərini təhlil etsəniz, rəngi əldə edəcəyinizi düşünürsünüz. Nədənsə heç vaxt sorğunun gövdə sahəsinə heç bir şey daxil edilmir, buna görə də əslində URL -in rəngini təhlil edirəm. Ümid edirəm ki, indeks.js marşrutundakı kodumu asanlaşdıracaq. Amma mən kənara çəkilirəm.
Nəhayət, Fəaliyyət Yarat və sonra növbəti səhifədə Bitir düyməsini basın. (Bildirişləri söndürdüm, amma bu üstünlükdür)
Addım 5: Liman yönləndirmə
İşin izah edilməsinin çətin olduğu yer budur, çünki bütün marşrutlaşdırıcılar fərqlidir …
İndi Google 3000 portunu istifadə edərək evimizə bir əmr göndərir, ancaq LAN -da hansı cihaza getməli olduğunu bilmir. Bunu həll etmək üçün 3000 portunu Raspberry Pi -nin yerli IP ünvanına yönləndirməliyik.
10.0.0.1 və ya 192.168.1.1 (son rəqəmin 254 olduğu yerdə də gördüm) istifadə edərək marşrutlaşdırıcınıza daxil olun və liman yönləndirməsini tapın. Limana yönləndirmədə, görüntüyə bənzər şəkildə, yeni bir cihaz (IFTTT) adlandıracaqsınız və portu (3000) Pi -nin IP ünvanına yönləndirəcəksiniz (mənim vəziyyətimdə 10.0.0.11).
Yeni parametrinizi qeyd edin, yönlendiricinizi yenidən başladın və Raspberry Pi serverinizin hələ də işlədiyinə əmin olun. Çalışmırsa, yenidən başladın.
Https://canyouseeme.org/ lazımlı veb saytına qayıdın. IP ünvanınızın altında bir liman yoxlayıcısı var. Liman yönləndirməsinin doğru olduğunu düşünərək 3000 yazın və yoxlama limanına vurun. Uğurla geri dönməlidir.
Addım 6: İşinizi indiyə qədər yoxlayın
İndi… gözlədiyiniz an… Google -a LED -lər mavi kimi bir əmr deyin (mənim nümunəmi təqib edirsinizsə).
Hər şeyin düzgün getdiyini düşünsəniz, şəkildə gördüyünüz nəticəni əldə edəcəksiniz. Hələ bir dövrəmiz yoxdur, buna görə ekranda yalnız mətn görürsünüz. Google -dan işlənmədən və Pi -də görünməzdən əvvəl ümumiyyətlə ikinci və ya 2 gecikmə olur.
(Şəkildə olduğu kimi çıxdısa növbəti addıma keçin)
İşə yaramadığı təqdirdə baxmalı olduğunuz bir neçə şey var …
Şəkildə bir sətir var
POST /rəng /mavi 200 250.458 ms - 2
200 ən vacib hissədir. 200 görmürsənsə, serverin məlumatlarla nə edəcəyini bilmədiyi pis bir POST var idi. Addım 2 -ə qayıdın və index.js faylınızı yoxlayın.
Şəkildə də
stdout: mavi
stderr:
Bu, LEDləri işlədən python faylının çıxışıdır. Orada bir səhv görürsünüzsə, 2 -ci addımda sürücünüzün quraşdırılmaması ola bilər.
Nəhayət, heç bir şey görünməsəydi … IFTTT düzgün qurulmamış və ya serverə qoşula bilməmiş ola bilər. IFTTT səhifəsinə qayıdın və yuxarı naviqasiya çubuğunda Fəaliyyət düyməsini basın. Orada tətbiqinizin hər dəfə işlədiyini görə bilərsiniz və bir səhv olarsa bunun nə olduğunu görə bilərsiniz. Pi serverini söndürüb Google əmri verdim və şəkildəki xətanı gördüm.
Addım 7: Dövrün qurulması
Bunu etməmizin səbəbi, Raspberry Pi -nin kifayət qədər gücə sahib olmamasıdır … Deməli, həll… DAHA GÜC (Taylor uzaqdan qışqırır). AKA başqa bir enerji təchizatı (12V 2A)
Dövrə hissələri üçün materiallar
- Protoboard
- Tel
- RGB LED şeridi
- 12V Güc Təchizatı - 2 Amperdən yuxarı hər şey yaxşı olmalıdır
- DC Barel Jack - Elektrik təchizatı ilə eyni ölçüdə
- NPN BJT Power Transistors (x3) - TIP31C istifadə edirəm
- Kişi və qadın pin başlıqları
Pi Zero GPIO ilə interwebs -dən oğurladığım lazımlı şəkildən istifadə edərək GPIO17, GPIO18 və GPIO 27 -nin GND ilə bir -birinin yanında olduğunu görə bilərsiniz. 4 sancaqlı kvadratdan istifadə edəcəyik (Pins 11, 12, 13, 14).
Əvvəla, görüntüdə göründüyü kimi LED başlığınıza kişi başlıqlarını lehimləməyi məsləhət görürəm (mənim ən yaxşı işim deyil). Lazım gələrsə, bu, asanlıqla ayrılmağa imkan verir. LED şeridi protoboruma bağlamaq üçün qadın başlıqlarından və protoborddan Raspberry Pi -yə olan kişi başlıqlarından istifadə etdim. (Həmişə güc/siqnal mənbəyi üçün qadın əlaqələrindən istifadə edin). Mənim kimi bütün Pi sancaqlarını bir -birinin yanına daşımaq lazım deyil … Sadəcə təmiz görünməsini istədim, amma çox iş idi.
Dövrə izahı
Transistorlar ilə tanış olmayanlarınız üçün tranzistorlar əsasən rəqəmsal keçiddir. Pi -dən GPIO pinləri üç açarı (qırmızı, yaşıl və mavi) işə salır. Xüsusilə dövrə diaqramında RED -ə baxdığımızda, GPIO_17 aktiv olduqda, qırmızı işıqların yandırılmasına səbəb olaraq RED -i GND -yə bağlayan keçid "bağlanır". GPIO_17 sönəndə açar açıqdır və işıqlar sönür.
Baza - GPIO
Kolleksiyaçı - Rənglər (QIRMIZI, YAŞIL, MAVİ)
Emitent - Zəmin (həm Güc Təchizatı, həm də Pi)
Pi zəminini elektrik təchizatı zəmininə bağladığınızdan əmin olun. İşıqlar hələ də işləyəcək, ancaq yer bağlanana qədər çox zəif görünür.
Protoboardda 4 -cü tranzistor görünüşlü cihazım var. 12V -ni 5V -ə çevirmək üçün istifadə olunan bir L7805CV -dir, buna görə Pi -ni eyni dövrədə gücləndirə bilərəm. İşlədi, amma istiləşməyə davam etdi, buna görə əlaqələrini kəsdim.
Addım 8: Test edin
Dövrə tamamlandıqdan sonra hər hansı bir əlaqə qurmadan əvvəl Pi -ni yenidən başladın. Bunun səbəbi, pinlərin server testindən hələ də aktiv olmasıdır. Alternativ olaraq, serveri və pigpiod xidmətini öldürə bilərsiniz.
LEDləri və keçidləri protoborddan Pi -yə qoşun. Güc verməzdən əvvəl bütün əlaqələri iki dəfə yoxlayın. Səhv bağlasanız, Pi -ni qızardın (heç bir təzyiq yoxdur).
Yoxlama siyahısı
- Telləri yoxlayın
- Güc Pi
- Güc Devresi
- Serverə Başla (DEBUG = webapp: ~/piWebpage/webApp qovluğunda olarkən* npm)
- Google -a təklifinizi bildirməsini deyin!
Tebrikler, heç bir şeyi partlatmadınız və indi LED -lərinizi Google Home -dan idarə edə bilərsiniz.
Hər hansı bir probleminiz varsa şərh yazın və mən sizə geri dönmək üçün əlimdən gələni edəcəyəm!
Tövsiyə:
Bluetooth İdarə Edilən Step Motorlu 3D Robotik Qol: 12 addım
Bluetooth İdarə Edilən Stepper Motorlu 3D Robotik Qol: Bu təlimatda 28byj-48 pilləli mühərrikləri, servo mühərriki və 3D çaplı hissələri olan bir 3D robot qolunun necə hazırlanacağını görəcəyik. Çap edilmiş elektron kart, mənbə kodu, elektrik diaqramı, mənbə kodu və çoxlu məlumatlar veb saytımda yer alır
Portativ Disko V2 -Səs İdarə Edilən LEDlər: 11 Addım (Şəkillərlə birlikdə)
Portativ Disko V2 -Səsli İdarə Edilən LEDlər: İlk portativ diskotekamdan bəri elektronika səyahətimlə uzun bir yol qət etdim. Orijinal quruluşda, prototip lövhəsində bir dövrə vurdum və səliqəli, kiçik bir cib diskotekası qurmağı bacardım. Bu dəfə öz PCB -ni hazırladım
Səs İdarə Edilən LEDlər - Cib Diskosu: 11 Addım (Şəkillərlə birlikdə)
Səs İdarə Edilən LEDlər - Cib Diskosu: Bəzi musiqili LED -lərlə öz cib diskotekanızı yaradın. Sadəcə bir az musiqi və ya səs lazımdır və LEDlər səs ətrafında rəqs edəcək. Bu qurmaq üçün həqiqətən işləyən kiçik bir dövrədir və bunu etmək üçün yalnız bir neçə komponentə ehtiyac var. Əsas olan b
ESP8266 və Google Home Mini -dən istifadə edərək DIY Səs/İnternet İdarə Edilən Ev Avtomatlaşdırılması və Monitorinqi: 6 Addım
ESP8266 və Google Home Mini istifadə edərək DIY Səs/İnternetə Nəzarət Ev Avtomatlaşdırılması və Monitorinqi: Hey !! Uzun fasilədən sonra buradayam, çünki hamımız qazanc əldə etmək üçün darıxdırıcı bir şey etməliyik (BLUETOOTH, IR, Local WIFI, Cloud yəni çətin olanlardan yazdığım bütün ev avtomatlaşdırma məqalələrindən sonra * NOW * gəlir) ən asan, lakin ən səmərəli
Açar bordunuz üçün lazerlə idarə olunan ledlər: 5 addım
Açar Bordunuz üçün Lazer Nəzarətli Ledlər: Lazerlərlə bir sıra LED -ləri avtomatik işıqlandırır. Bəli, pis işimə görə üzr istəyirəm, Hollandiyalıyam