Სარჩევი:

Google Home კონტროლირებადი LED- ები: 8 ნაბიჯი
Google Home კონტროლირებადი LED- ები: 8 ნაბიჯი

ვიდეო: Google Home კონტროლირებადი LED- ები: 8 ნაბიჯი

ვიდეო: Google Home კონტროლირებადი LED- ები: 8 ნაბიჯი
ვიდეო: wifi დისტანციური IR და RF კოდების Broadlink RM4C Pro, Home Assistant - აკონტროლეთ კონდიციონერი 2024, ნოემბერი
Anonim
Google Home კონტროლირებადი LED- ები
Google Home კონტროლირებადი LED- ები
Google Home კონტროლირებადი LED- ები
Google Home კონტროლირებადი LED- ები

ამ ბოლო დროს, მე მქონდა ბევრი თავისუფალი დრო ხელში, ამიტომ ვმუშაობ რამოდენიმე პროექტზე.

ეს პროექტი საშუალებას მოგცემთ გააკონტროლოთ RGB LED- ები Google Home– ის საშუალებით Raspberry Pi– ს გამოყენებით. ახლა არის პროექტის 3 ნაწილი, Raspberry Pi- ს დაყენება, Google Home- ის დაყენება მორგებული ბრძანებით IFTTT- ის გამოყენებით და შემდეგ შუქების ჩართვის შექმნა. მე თვითონ გავაკეთე წრე, მაგრამ დავდებ, რომ თქვენ შეგიძლიათ მიიღოთ რაღაც ადაფრუტიდან, რაც აკეთებს იმას, რაც საჭიროა.

მასალები ჟოლოს ნაწილისთვის

  • Raspberry Pi - ნებისმიერი იმუშავებს, მაგრამ მე ვიყენებ ნულს
  • უკაბელო Dongle - თუ Pi არ აქვს ჩაშენებული Wifi
  • Google Home - სურვილისამებრ, თუ თქვენს ტელეფონში გაქვთ Google ასისტენტი

მასალები წრიული ნაწილისთვის- ნუ მოგაშორებთ ამას … ეს საკმაოდ მარტივია

  • პროტობორდი
  • მავთული
  • LED ზოლები
  • 12 ვ ელექტროენერგიის მიწოდება - ყველაფერი, რაც 2 ამპერს აღემატება, კარგად უნდა იყოს
  • DC Barrel Jack - იგივე ზომა, როგორც თქვენი კვების ბლოკი
  • NPN BJT დენის ტრანზისტორები (x3) - მე ვიყენებ TIP31C- ს
  • მამრობითი და მდედრობითი Pin სათაურები - სურვილისამებრ, მაგრამ რეკომენდირებულია

ნაბიჯი 1: ჩამოტვირთეთ Express Pi- სთვის

ჩამოტვირთეთ ექსპრესი Pi- სთვის
ჩამოტვირთეთ ექსპრესი Pi- სთვის

მე არ ვაპირებ ძალიან ბევრ დეტალს ჩავუყარო Pi- ს დაყენების შესახებ, რადგან ამდენი გაკვეთილი არსებობს მათ შესაქმნელად.

რა უნდა გააკეთო, რომ მე არ ვფარავ …

  • მოციმციმე ჟოლო Pi უახლესი Raspbian– ით
  • დააინსტალირეთ ქსელის ბარათი, ასე რომ თქვენ შეგიძლიათ წვდეთ ინტერნეტს Pi- დან
  • დააყენეთ სტატიკური IP Raspberry Pi– ზე

ახლა აქ იწყება გართობა! ჩვენ უნდა დავაინსტალიროთ nodeJS, npm, express და express-generator.

sudo apt-get განახლება

sudo apt-get დააინსტალირეთ nodejs npm

მას შემდეგ რაც დაინსტალირდება, გაუშვით შემდეგი

npm დააინსტალირეთ ექსპრესი გენერატორი

Express გაძლევთ საშუალებას შექმნათ ძალიან ძირითადი ვებ სერვერი თქვენი Raspberry Pi– ს გამოსაყენებლად. ექსპრეს გენერატორი უბრალოდ ავტომატურად ქმნის ფაილებს ექსპრეს სერვერისთვის.

შექმენით დირექტორია და დაამატეთ cd დირექტორიაში. მე ჩემი piWebpage დავარქვი. ახლა გაუშვით შემდეგი (სურათზეც ჩანს)

mkdir piWebpage

cd piWebpage express -ნახვა = ejs webApp

ეს შექმნის საქაღალდეს სახელად webApp ყველა ექსპრეს ფაილში. თუ თქვენ გეგმავთ უფრო მეტის გაკეთებას ამ ვებგვერდით მოგვიანებით და მოგწონთ PUG, შეცვალეთ --view = ejs– ით --view = pug. ჩვენ არ შევეხებით ვებ გვერდს, ამიტომ ამ პროგრამისთვის არ აქვს მნიშვნელობა რას ვიყენებთ.

ნაბიჯი 2: Pi სერვერის დაყენება

გადადით ახალ webApp დირექტორიაში.

cd webApp

npm ინსტალაცია

npm ინსტალაციას გარკვეული დრო დასჭირდება, რადგან ის აყენებს ყველა დამოკიდებულებას ექსპრესისთვის.

ჩასვით setColor.py webApp საქაღალდეში. ამ ფაილს აქვს რამდენიმე წინასწარ განსაზღვრული ფერი. მოგერიდებათ დაამატოთ მეტი როგორც მოგწონთ. დიაპაზონი არის 0 -დან 255 -მდე, სადაც 255 არის სრული ფერი. რაღაც მომენტში, მე ალბათ დავამატებ შუქის ჩაქრობის უნარს, მაგრამ ჯერჯერობით, ისინი სრული სიკაშკაშეა.

გადადით მარშრუტებში

cd მარშრუტები

ახლა შეცვალეთ index.js თანდართული ფაილით. ეს დაამატებს რამდენიმე ხაზს POST ბრძანების მისაღებად, რასაც Google Home გამოგიგზავნით. ამ პოსტიდან ჩვენ შევარჩევთ ფერს და ვეტყვით Pi- ს, რომ აწარმოოს setColor python სკრიპტი განათების შესაცვლელად.

ერთი ბოლო … დაბრუნდი webApp საქაღალდეში.

cd ~/piWebpage/webApp

თქვენი საყვარელი რედაქტორის გამოყენებით ჩასვით და შეინახეთ ქვემოთ მოცემული კოდი თქვენს webApp.js- ში. ყველგან კარგია მანამ სანამ არის "module.exports = app;"

// LED ტექნიკის დრაივერის დაყენება {exec} = მოითხოვს ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ("შეცდომა LED მძღოლის ჩატვირთვისას"); დაბრუნება;} else console.log ("LED მძღოლი წარმატებით დატვირთულია"); });

როგორც კომენტარში ნათქვამია, pigpiod არის PWM სიგნალების აპარატურის მამოძრავებელი, რომელსაც ჩვენ გამოვიყენებთ LED ფერების შესაცვლელად. მე მჯერა, რომ ის უკვე დამონტაჟებულია Raspbian– ში, მაგრამ თუ არა…

sudo apt-get დააინსტალირეთ pigpiod

ახლა კი ნამდვილი გამოცდისთვის! იწყება სერვერი!

DEBUG = webapp:* npm დაწყება

ნაბიჯი 3: IFTTT დაყენება (გააქტიურება)

IFTTT დაყენება (გააქტიურება)
IFTTT დაყენება (გააქტიურება)
IFTTT დაყენება (გააქტიურება)
IFTTT დაყენება (გააქტიურება)

IFTTT– ს ბევრი რამის გაკეთება შეუძლია და მე გირჩევთ გადახედოთ ზოგიერთ პროგრამას.

პირველ რიგში, თქვენ უნდა გააკეთოთ ანგარიში. გამოიყენეთ იგივე Google ანგარიში, რომელიც დაკავშირებულია თქვენს Google Home- თან, წინააღმდეგ შემთხვევაში ისინი არ სინქრონიზდება ერთად. დასრულების და შესვლის შემდეგ დააწკაპუნეთ IFTTT გვერდის ზედა მარჯვენა მხარეს, სადაც ნაჩვენებია თქვენი სახელი და ავატარი. შემდეგ დააჭირეთ ახალ აპლეტს ჩამოსაშლელი სიიდან.

თუ გაინტერესებთ, IFTTT ნიშნავს IF This Then That თუ არ შეამჩნიეთ ეკრანზე, რომელიც გამოჩნდება. ასე რომ, ჩვენ გვინდა, თუ Google ასისტენტი, მაშინ Webhook, როგორც ჩვენი პარამეტრები.

გააგრძელეთ +ამ ღილაკზე დაჭერით, რომელიც ჩატვირთავს საძიებო ზოლს. ძიებისას ჩაწერეთ Google ასისტენტი და დააწკაპუნეთ ძიების ქვემოთ არსებულ ხატულაზე.

არჩევა გამომწვევის, აირჩიეთ მე -3 ვარიანტი სახელწოდებით თქვი ფრაზა ტექსტური ინგრედიენტით. ახლა ეს საშუალებას გაძლევთ გქონდეთ 3 ბრძანება, რომელიც გააკეთებს იგივე მოქმედებას. თქვენ დაამატებთ $ ფრაზას, სადაც აღნიშნავთ ფერს. მაგალითად, თუ მე ბუნებრივად ვიტყოდი Hey Google, დააყენეთ LED- ები ლურჯი (რაც შეიძლება ბუნებრივი იყოს მოწყობილობაზე ყვირილი), მაშინ ველში ჩავწერდი Set LED- ები $. გააკეთეთ ეს სამივე ველზე, ბრძანების სხვადასხვა ვერსიით.

3 მე ვიყენებდი

LED- ები $

LED- ების დაყენება $

დააყენეთ LED ფერი $

ბოლო ველი არის ის, რაც გსურთ რომ თქვენს Google Home- ს უპასუხოს თქვენი ბრძანების თქმის შემდეგ. ეს შეიძლება იყოს ყველაფერი, რაც გსურთ, მაგრამ მე გამოვიყენე $ - ის დაყენება. $ ნიშნავს, რომ იგი გაიმეორებს ფერს უკან.

დააწკაპუნეთ ტრიგერის შექმნაზე

ნაბიჯი 4: IFTTT დაყენება (მოქმედება)

IFTTT დაყენება (მოქმედება)
IFTTT დაყენება (მოქმედება)
IFTTT დაყენება (მოქმედება)
IFTTT დაყენება (მოქმედება)

მას შემდეგ რაც დააწკაპუნებთ შექმნის გამომწვევზე, თქვენ იტვირთებით უკან, თუ ეს მაშინდელი ხედია, მაგრამ ის შეიცვალა Google ასისტენტის ლოგოთი. გააგრძელეთ +მასზე დაჭერით

იგივე, რაც ადრე, სადაც მიგიყვანთ საძიებო ზოლში. ჩაწერეთ Webhooks და დააწკაპუნეთ webhook ხატულაზე ძებნის ზოლის ქვემოთ. Webhooks– ის არჩევა მოქმედებაში არის მხოლოდ ერთი ვარიანტი, ასე რომ დააწკაპუნეთ ვებ მოთხოვნის გაკეთებაზე.

აქ ყველაფერი ცოტა რთულდება. იმის გამო, რომ Google არ არის სხვა კომპიუტერი თქვენს სახლში, თქვენ დაგჭირდებათ თქვენი გარე IP მისამართი. ამას დასჭირდება პორტის გადაგზავნა, მაგრამ ამას მოგვიანებით შევეხებით. თქვენი გარე IP მისამართის მისაღებად გადადით

URL ველში ჩაწერეთ https://xxx.xxx.xxx.xxx:3000/{{TextField}} (x– ით არის თქვენი გარე IP მისამართი). თუ გაინტერესებთ, TextField– ს ექნება ფერი, რომელიც თქვენ შეარჩიეთ ბრძანების მიღებისას. მიზეზი, რის გამოც ჩვენ ვიყენებთ 3000 -ს, არის ის, რომ ეს არის პორტი, რომელზეც Raspberry Pi Express სერვერი მუშაობს. (თქვენ შეგიძლიათ შეცვალოთ პორტი კოდში, მაგრამ ჩვენ უბრალოდ ვიყენებთ ნაგულისხმევ პარამეტრებს ექსპრესისთვის)

მეთოდისთვის აირჩიეთ POST.

შინაარსის ტიპისთვის შეარჩიეთ ტექსტი/უბრალო.

სხეულისთვის, ჩაწერეთ {{TextField}}

თქვენ, ვინც იცით როგორ მუშაობს POST ბრძანება, თქვენ იფიქრებდით, რომ თუ თქვენ გააანალიზებთ მოთხოვნის სხეულის თვისებას, რომ მიიღოთ ფერი. რატომღაც, მოთხოვნის ძირითად ველში არაფერია ჩაწერილი, ამიტომ მე ფაქტობრივად ვანალიზებ URL- ს ფერისთვის. ვიმედოვნებ, რომ მალე დაფიქსირდება, რადგან ეს გაამარტივებს ჩემს კოდს index.js მარშრუტში. მაგრამ მე ვბრუნდები.

დაბოლოს, დააწკაპუნეთ მოქმედების შექმნაზე და შემდეგ დასრულება შემდეგ გვერდზე. (მე გავთიშე შეტყობინებები, მაგრამ ეს უპირატესობაა)

ნაბიჯი 5: პორტის გადაგზავნა

Პორტის გადამისამართება
Პორტის გადამისამართება
Პორტის გადამისამართება
Პორტის გადამისამართება

ეს არის ის, რაც ძნელია ახსნა, რადგან ყველა როუტერი განსხვავებულია…

ახლა ჩვენ გვაქვს Google, რომელიც აგზავნის ჩვენს სახლს ბრძანებას 3000 პორტის გამოყენებით, მაგრამ მან არ იცის, რომელ მოწყობილობაზე უნდა წავიდეს LAN. ამის გამოსასწორებლად, ჩვენ გვჭირდება 3000 პორტის გადაგზავნა თქვენი Raspberry Pi- ის ადგილობრივ IP მისამართზე.

შედით თქვენს როუტერში 10.0.0.1 ან 192.168.1.1 გამოყენებით (მე ასევე ვნახე ის, სადაც ბოლო ციფრია 254) და იპოვეთ პორტის გადაგზავნა. პორტის გადაგზავნაში, სურათის მსგავსი, თქვენ დაასახელებთ ახალ მოწყობილობას (IFTTT) და გადაგზავნით პორტს (3000) Pi- ს IP მისამართზე (ჩემს შემთხვევაში 10.0.0.11).

შეინახეთ ახალი პარამეტრი, გადატვირთეთ თქვენი როუტერი და შეამოწმეთ, რომ დარწმუნდეთ, რომ თქვენი Raspberry Pi სერვერი კვლავ მუშაობს. თუ ის არ მუშაობს, დაიწყეთ ისევ.

დაუბრუნდით იმ მოსახერხებელ ვებგვერდს https://canyouseeme.org/. თქვენი IP მისამართის ქვემოთ, მას აქვს პორტის შემოწმება. დავუშვათ თქვენი პორტის გადაგზავნა სწორია, ჩაწერეთ 3000 და დააჭირეთ გამშვებ პორტს. ის უნდა დაბრუნდეს წარმატებით.

ნაბიჯი 6: შეამოწმეთ თქვენი სამუშაო ჯერჯერობით

შეამოწმეთ თქვენი სამუშაო ჯერჯერობით
შეამოწმეთ თქვენი სამუშაო ჯერჯერობით
შეამოწმეთ თქვენი სამუშაო ჯერჯერობით
შეამოწმეთ თქვენი სამუშაო ჯერჯერობით

ახლა… ის მომენტი, რომელსაც ელოდებოდი… უთხარი Google- ს ისეთი ბრძანება, როგორიცაა ლურჯი LED- ები (თუ თქვენ ჩემს მაგალითს მიჰყვებოდით).

თუ დავუშვებთ, რომ ყველაფერი სწორად მოხდა, თქვენ მიიღებთ სურათზე ნაჩვენებ შედეგს. ჩვენ ჯერ არ გვაქვს წრე, ასე რომ თქვენ ნახავთ მხოლოდ ტექსტს ეკრანზე. ჩვეულებრივ ხდება მეორე ან 2 შეფერხება, სანამ ის დამუშავდება Google– დან და გამოჩნდება Pi– ზე.

(გადადით შემდეგ საფეხურზე, თუ ეს გამოვიდა სურათის მსგავსად)

ახლა არის რამდენიმე რამ, რაც უნდა გამოიყურებოდეს, თუ ის არ მუშაობს …

სურათზე არის ხაზი, რომელიც ამბობს

POST /ფერი /ლურჯი 200 250.458 ms - 2

200 არის მნიშვნელოვანი ნაწილი. თუ თქვენ არ ხედავთ 200 -ს, მაშინ იყო ცუდი POST, რაც იმას ნიშნავდა, რომ თქვენმა სერვერმა არ იცოდა რა ექნა მონაცემებთან. დაუბრუნდით მე –2 ნაბიჯს და შეამოწმეთ თქვენი index.js ფაილი.

ასევე სურათზე

stdout: ლურჯი

stderr:

ეს არის გამოსავალი პითონის ფაილიდან, რომელიც მუშაობს LED- ებზე. თუ თქვენ ხედავთ შეცდომას იქ, შეიძლება იყოს ის, რომ თქვენ არ გაქვთ დრაივერი დაყენებული ნაბიჯი 2 -ზე.

დაბოლოს, თუ საერთოდ არაფერი გამოჩნდა … თქვენი IFTTT შეიძლება არ იყო სწორად დაყენებული ან ვერ მოხერხდა სერვერთან დაკავშირება. დაბრუნდით IFTTT გვერდზე და ნავიგაციის ზედა ზოლში დააწკაპუნეთ აქტივობაზე. იქ, თქვენ ხედავთ ყოველ ჯერზე, როდესაც თქვენი აპლიკაცია მუშაობს და თუ იყო შეცდომა, ხედავთ რა იყო. მე გავაკეთე Google ბრძანება Pi სერვერით და მივიღე შეცდომა სურათზე.

ნაბიჯი 7: წრის შექმნა

წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა

მიზეზი, რის გამოც ჩვენ გვჭირდება ამის გაკეთება, არის ის, რომ Raspberry Pi– ს არ აქვს საკმარისი ძალა… ასე რომ, გამოსავალი არის… მეტი ძალა (ტიმ ტელორ კაცი, რომელიც შორ მანძილზე ღრიალებს). AKA სხვა კვების წყარო (12V 2A)

მასალები წრიული ნაწილისთვის

  • პროტობორდი
  • მავთული
  • RGB LED ზოლები
  • 12 ვ ელექტროენერგიის მიწოდება - ყველაფერი, რაც 2 ამპერს აღემატება, კარგად უნდა იყოს
  • DC Barrel Jack - იგივე ზომა, როგორც თქვენი კვების ბლოკი
  • NPN BJT დენის ტრანზისტორები (x3) - მე ვიყენებ TIP31C- ს
  • მამაკაცი და ქალი პინ ჰედერები

მოსახერხებელი სურათის გამოყენებით, რომელიც მე მოვიპარე Pi Zero– ს GPIO– სთან ურთიერთკავშირიდან, თქვენ ხედავთ GPIO17, GPIO18 და GPIO 27 ერთმანეთის გვერდით GND– ით. ჩვენ გამოვიყენებთ კვადრატს 4 ქინძისთავით (ქინძისთავები 11, 12, 13, 14).

პირველ რიგში, მე გირჩევთ შეაერთოთ მამრობითი სათაურები თქვენს LED ზოლზე, როგორც სურათზე ჩანს (არა ჩემი საუკეთესო ნამუშევარი). ეს საშუალებას გაძლევთ ადვილად გათიშოთ, თუკი ოდესმე დაგჭირდებათ. მე გამოვიყენე ქალი სათაურები LED ზოლის ჩემს პროტობორდთან დასაკავშირებლად და მამრობითი სათაურები პროტობორდიდან ჟოლოს პიამდე. (ყოველთვის გამოიყენეთ ქალი კავშირები დენის/სიგნალის წყაროსთვის). თქვენ არ გჭირდებათ პის ყველა ქინძისთავის გადატანა ერთმანეთის გვერდით, როგორც მე … მე უბრალოდ მინდოდა, რომ ის სუფთა ყოფილიყო, მაგრამ ეს იყო ბევრი სამუშაო.

წრიული ახსნა

მათთვის, ვინც არ იცნობს ტრანზისტორებს, ტრანზისტორები ძირითადად ციფრული გადამრთველია. PiI– დან GPIO ქინძისთავები იწვევს სამ გადამრთველს (წითელი, მწვანე და ლურჯი). მიკროსქემის დიაგრამაზე კონკრეტულად RED- ს ეძებს, როდესაც GPIO_17 ჩართულია, გადამრთველი "იხურება", რომელიც აკავშირებს RED- ს GND- თან და იწვევს წითელი შუქების ჩართვას. როდესაც GPIO_17 გამორთულია, მაშინ გადამრთველი ღიაა და ამდენად განათება გამორთულია.

ბაზა - GPIO– ები

კოლექტორი - ფერები (წითელი, მწვანე, ლურჯი)

Emitter - Ground (როგორც კვების ბლოკი, ასევე Pi)

დარწმუნდით, რომ დააკავშიროთ Pi- ს მიწა დენის წყაროსთან. განათება კვლავ იმუშავებს, მაგრამ ისინი ძალიან ჩამქრალი იქნებიან, სანამ მიწა არ იქნება დაკავშირებული.

მე მაქვს მე -4 ტრანზისტორი, რომელიც ეძებს მოწყობილობას ჩემს პროტობორდზე. ეს არის L7805CV, რომელიც გამოიყენება 12V– ის 5V– ზე გადასაყვანად, ასე რომ მე შემიძლია Pi– ს ჩართვა იმავე წრეზე. ის მუშაობდა, მაგრამ იმატებდა გათბობას, ამიტომ მისი კავშირები მოვაშორე.

ნაბიჯი 8: გამოსცადეთ

როდესაც ჩართავთ სქემას, გადატვირთეთ თქვენი Pi სანამ რაიმე კავშირს დაამყარებთ. ეს არის იმის გამო, რომ ქინძისთავები ალბათ ჯერ კიდევ აქტიურია სერვერის ტესტიდან. გარდა ამისა, თქვენ შეგიძლიათ მოკლათ სერვერი და pigpiod სერვისი.

ჩართეთ LED- ები და მხტუნავები პროტობორდიდან Pi- მდე. ელექტროენერგიის მიწოდებამდე ორმაგად შეამოწმეთ ყველა კავშირი. თუ ის არასწორად დააკავშირეთ, შეიძლება გაწუროთ თქვენი Pi (წნევის გარეშე).

საკონტროლო სია

  • შეამოწმეთ მავთულები
  • Power Pi
  • დენის წრე
  • სერვერის დაწყება (DEBUG = webapp:* npm დაწყება while/piWebpage/webApp დირექტორიაში ყოფნისას)
  • უთხარით Google- ს, შეასრულოს თქვენი სატენდერო წინადადება!

გილოცავთ, თქვენ არაფერი ააფეთქეთ და ახლა თქვენ შეგიძლიათ გააკონტროლოთ თქვენი LED- ები Google Home– დან.

დატოვეთ კომენტარები, თუ თქვენ გაქვთ რაიმე პრობლემა და მე ყველაფერს გავაკეთებ იმისათვის, რომ დაგიბრუნდეთ!

გირჩევთ: