Πίνακας περιεχομένων:

Λυχνίες LED ελεγχόμενες από το Google Home: 8 βήματα
Λυχνίες LED ελεγχόμενες από το Google Home: 8 βήματα

Βίντεο: Λυχνίες LED ελεγχόμενες από το Google Home: 8 βήματα

Βίντεο: Λυχνίες LED ελεγχόμενες από το Google Home: 8 βήματα
Βίντεο: Smart Home: WiFi ντουί τηλεχειριζόμενο από το κινητό @ 19,90€ 2024, Νοέμβριος
Anonim
LED που ελέγχονται από το Google Home
LED που ελέγχονται από το Google Home
LED που ελέγχονται από το Google Home
LED που ελέγχονται από το Google Home

Τον τελευταίο καιρό, είχα πολύ ελεύθερο χρόνο στα χέρια μου, οπότε δούλευα σε ένα σωρό έργα.

Αυτό το έργο θα σας επιτρέψει να ελέγξετε τα LED RGB μέσω του Google Home χρησιμοποιώντας ένα Raspberry Pi. Τώρα υπάρχουν 3 μέρη του έργου, η δημιουργία ενός Raspberry Pi, η ρύθμιση του Google Home με μια προσαρμοσμένη εντολή χρησιμοποιώντας το IFTTT και στη συνέχεια η δημιουργία ενός κυκλώματος για τα φώτα. Έκανα το κύκλωμα μόνος μου, αλλά στοιχηματίζω ότι μπορείτε να πάρετε κάτι από το Adafruit που κάνει ό, τι χρειάζεται.

Υλικά για το Raspberry Pi Part

  • Raspberry Pi - οποιοδήποτε θα λειτουργήσει, αλλά χρησιμοποιώ μηδέν
  • Ασύρματο Dongle - εάν το Pi δεν έχει ενσωματωμένο Wifi
  • Google Home - Προαιρετικό εάν έχετε τον Βοηθό Google στο τηλέφωνό σας

Υλικά για κύκλωμα- Μην αφήσετε αυτό να σας αποθαρρύνει … Είναι αρκετά απλό

  • Protoboard
  • Σύρμα
  • Λωρίδα LED
  • Τροφοδοσία 12V - Οτιδήποτε πάνω από 2 Amps θα πρέπει να είναι εντάξει
  • DC Barrel Jack - sizeδιο μέγεθος με το τροφοδοτικό σας
  • NPN BJT Power Transistors (x3) - Χρησιμοποιώ το TIP31C
  • Κεφαλίδες ανδρικών και θηλυκών καρφιών - Προαιρετικά, αλλά συνιστάται ιδιαίτερα

Βήμα 1: Λήψη του Express για το Pi

Λήψη του Express για το Pi
Λήψη του Express για το Pi

Δεν πρόκειται να αναφερθώ σε πολλές λεπτομέρειες σχετικά με τη ρύθμιση του Pi επειδή υπάρχουν τόσα πολλά μαθήματα για τη ρύθμιση τους.

Τι θα χρειαστεί να κάνετε που δεν καλύπτω…

  • Αναβοσβήνει το Raspberry Pi με το νεότερο Raspbian
  • Ρυθμίστε την κάρτα δικτύου ώστε να έχετε πρόσβαση στο διαδίκτυο από το Pi
  • Ορίστε μια στατική IP στο Raspberry Pi

Τώρα εδώ ξεκινάει η διασκέδαση! Πρέπει να εγκαταστήσουμε nodeJS, npm, express και express-generator.

sudo apt-get ενημέρωση

sudo apt-get install nodejs npm

Μόλις εγκατασταθούν, εκτελέστε τα παρακάτω

npm εγκατάσταση express express-generator

Το Express σας επιτρέπει να δημιουργήσετε έναν πολύ βασικό διακομιστή ιστού για χρήση με το Raspberry Pi. Η Express-generator απλώς δημιουργεί αυτόματα αρχεία για έναν διακομιστή express.

Δημιουργήστε έναν κατάλογο και εισαγάγετε cd στον κατάλογο. Ονόμασα το δικό μου piWebpage. Τώρα εκτελέστε το παρακάτω (φαίνεται και στην εικόνα)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Αυτό θα δημιουργήσει ένα φάκελο που ονομάζεται webApp με όλα τα αρχεία express σε αυτόν. Εάν σκοπεύετε να κάνετε περισσότερα με αυτήν την ιστοσελίδα αργότερα και σας αρέσει το PUG, αντικαταστήστε το --view = ejs με --view = pug. Δεν θα αγγίξουμε την ιστοσελίδα, οπότε για αυτήν την εφαρμογή, δεν έχει σημασία τι χρησιμοποιούμε.

Βήμα 2: Ρύθμιση διακομιστή Pi

Μεταβείτε στον νέο κατάλογο webApp.

cd webApp

npm εγκατάσταση

Η εγκατάσταση npm θα πάρει λίγο χρόνο επειδή εγκαθιστά όλες τις εξαρτήσεις για express.

Επικολλήστε το setColor.py στο φάκελο webApp. Αυτό το αρχείο περιέχει ορισμένες προεπιλογές για βασικά χρώματα. Μη διστάσετε να προσθέσετε περισσότερα όπως σας αρέσει. Το εύρος είναι από 0 έως 255 όπου το 255 είναι πλήρες χρώμα. Κάποια στιγμή, πιθανότατα θα προσθέσω τη δυνατότητα να μειώσω τα φώτα, αλλά προς το παρόν, έχουν πλήρη φωτεινότητα.

Μετακινηθείτε σε διαδρομές

cd διαδρομές

Τώρα αντικαταστήστε το index.js με το συνημμένο αρχείο. Αυτό θα προσθέσει μερικές γραμμές για να λάβετε μια εντολή POST, την οποία θα στείλει το Google Home. Από αυτό το POST, θα επιλέξουμε το χρώμα και θα πούμε στο Pi να εκτελέσει το σενάριο python setColor για να ρυθμίσει τα φώτα.

Ένα τελευταίο πράγμα … Επιστροφή στο φάκελο webApp.

cd ~/piWebpage/webApp

Χρησιμοποιώντας τον αγαπημένο σας επεξεργαστή, επικολλήστε και αποθηκεύστε τον παρακάτω κώδικα στο webApp.js σας. Οπουδήποτε είναι καλά, αρκεί να είναι πριν από το "module.exports = app;"

// Ρύθμιση οδηγού υλικού LEDconst {exec} = απαιτεί ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ("Σφάλμα κατά τη φόρτωση του οδηγού LED"); return;} else console.log ("Οδηγός LED φορτώθηκε επιτυχώς"); });

Όπως λέει και το σχόλιο, το pigpiod είναι το πρόγραμμα οδήγησης υλικού για σήματα PWM που θα χρησιμοποιήσουμε για να προσαρμόσουμε τα χρώματα των LED. Πιστεύω ότι είναι ήδη εγκατεστημένο στο Raspbian, αλλά αν όχι…

sudo apt-get install pigpiod

Τώρα για την πραγματική δοκιμή! Εκκίνηση του διακομιστή!

DEBUG = webapp:* έναρξη npm

Βήμα 3: Εγκατάσταση IFTTT (Ενεργοποίηση)

Ρύθμιση IFTTT (Ενεργοποίηση)
Ρύθμιση IFTTT (Ενεργοποίηση)
Ρύθμιση IFTTT (Ενεργοποίηση)
Ρύθμιση IFTTT (Ενεργοποίηση)

Το IFTTT μπορεί να κάνει πολλά και θα συνιστούσα ιδιαίτερα να κοιτάξετε μερικές από τις εφαρμογές.

Αρχικά, θα πρέπει να δημιουργήσετε έναν λογαριασμό. Χρησιμοποιήστε τον ίδιο λογαριασμό Google που σχετίζεται με το Google Home σας, διαφορετικά δεν θα συγχρονιστούν μαζί. Μόλις ολοκληρωθεί και συνδεθεί, κάντε κλικ στην επάνω δεξιά γωνία της σελίδας IFTTT όπου εμφανίζεται το όνομα και το avatar σας. Στη συνέχεια, κάντε κλικ στην επιλογή Νέα εφαρμογή από το αναπτυσσόμενο μενού.

Εάν είστε περίεργοι, το IFTTT σημαίνει IF This then That εάν δεν το παρατηρήσατε από την οθόνη που εμφανίζεται. Αυτό λοιπόν που θέλουμε είναι Εάν ο Βοηθός Google, τότε το Webhook ως επιλογές μας.

Προχωρήστε κάνοντας κλικ στο +αυτό, το οποίο θα φορτώσει μια γραμμή αναζήτησης. Στην αναζήτηση, πληκτρολογήστε Google Assistant και κάντε κλικ στο εικονίδιο κάτω από την αναζήτηση.

Στο Select a Trigger, επιλέξτε την 3η επιλογή που ονομάζεται Πείτε μια φράση με ένα συστατικό κειμένου. Τώρα αυτό σας επιτρέπει να έχετε 3 εντολές που θα κάνουν την ίδια ενέργεια. Προσθέτετε το $ στη φράση όπου θα αναφέρετε το χρώμα. Για παράδειγμα, αν φυσικά έλεγα Hey Google, Ρυθμίστε LED μπλε (όσο φυσικό και αν είναι να φωνάζετε σε μια συσκευή), τότε θα πληκτρολογούσα στο πεδίο Ορισμός LED $. Κάντε το και για τα 3 πεδία με διαφορετικές εκδόσεις της εντολής.

Τα 3 που χρησιμοποίησα ήταν

LEDs $

Ορίστε 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. (Μπορείτε να αλλάξετε τη θύρα στον κώδικα, αλλά χρησιμοποιούμε απλώς τις προεπιλεγμένες ρυθμίσεις για το Express)

Για τη μέθοδο, επιλέξτε POST.

Για τον τύπο περιεχομένου, επιλέξτε κείμενο/απλό.

Για σώμα, πληκτρολογήστε {{TextField}}

Όσοι γνωρίζετε πώς λειτουργεί μια εντολή POST, θα σκεφτόσασταν ότι αν αναλύσετε την ιδιότητα σώματος του αιτήματος ότι θα λάβετε το χρώμα. Για κάποιο λόγο, τίποτα δεν μπαίνει ποτέ στο πεδίο του αιτήματος, οπότε στην πραγματικότητα αναλύω τη διεύθυνση URL για το χρώμα. Ελπίζω να διορθωθεί σύντομα, καθώς αυτό θα απλοποιούσε τον κωδικό μου στη διαδρομή index.js. Αλλά αποπροσανατολίζομαι.

Τέλος, κάντε κλικ στην επιλογή Δημιουργία ενέργειας και, στη συνέχεια, Τέλος στην επόμενη σελίδα. (Απενεργοποίησα τις ειδοποιήσεις, αλλά αυτή είναι η προτίμηση)

Βήμα 5: Προώθηση θυρών

Προώθηση λιμένων
Προώθηση λιμένων
Προώθηση λιμένων
Προώθηση λιμένων

Αυτό είναι όπου τα πράγματα είναι δύσκολο να εξηγηθούν επειδή όλοι οι δρομολογητές είναι διαφορετικοί…

Τώρα έχουμε την Google να στέλνει μια εντολή στο σπίτι μας χρησιμοποιώντας τη θύρα 3000, αλλά δεν γνωρίζει σε ποια συσκευή στο LAN πρέπει να μεταβεί. Για να διορθωθεί αυτό, πρέπει να προωθήσουμε τη θύρα 3000 στην τοπική διεύθυνση IP του Raspberry Pi σας.

Μεταβείτε στο δρομολογητή σας χρησιμοποιώντας 10.0.0.1 ή 192.168.1.1 (το έχω δει επίσης όπου το τελευταίο ψηφίο είναι 254) και βρείτε προώθηση θυρών. Στην προώθηση θυρών, παρόμοια με την εικόνα, θα ονομάσετε μια νέα συσκευή (IFTTT) και θα προωθήσετε τη θύρα (3000) στη διεύθυνση IP του Pi (στην περίπτωσή μου 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:

Αυτή είναι η έξοδος από το αρχείο python που εκτελεί τα LED. Εάν δείτε κάποιο σφάλμα εκεί, ίσως να μην έχετε εγκατεστημένο το πρόγραμμα οδήγησης στο Βήμα 2.

Τέλος, αν δεν εμφανιζόταν απολύτως τίποτα … το IFTTT ενδέχεται να μην έχει ρυθμιστεί σωστά ή να μην έχει συνδεθεί με τον διακομιστή. Επιστρέψτε στη σελίδα IFTTT και στην επάνω γραμμή πλοήγησης, κάντε κλικ στην επιλογή Δραστηριότητα. Εκεί, μπορείτε να βλέπετε κάθε φορά που εκτελείται η εφαρμογή σας και εάν υπήρχε σφάλμα, μπορείτε να δείτε τι ήταν. Έκανα μια εντολή Google με τον διακομιστή Pi απενεργοποιημένο και πήρα το σφάλμα στην εικόνα.

Βήμα 7: Δημιουργία κυκλώματος

Χτίζοντας το κύκλωμα
Χτίζοντας το κύκλωμα
Χτίζοντας το κύκλωμα
Χτίζοντας το κύκλωμα
Χτίζοντας το κύκλωμα
Χτίζοντας το κύκλωμα

Ο λόγος για τον οποίο πρέπει να το κάνουμε αυτό είναι επειδή το Raspberry Pi δεν έχει αρκετή δύναμη… Η λύση λοιπόν είναι… ΠΕΡΙΣΣΟΤΕΡΑ ΔΥΝΑΜΗ (Ο Tim the man man Taylor γκρινιάζει σε απόσταση). AKA άλλο τροφοδοτικό (12V 2A)

Υλικά για τμήμα κυκλώματος

  • Protoboard
  • Σύρμα
  • Λωρίδα LED RGB
  • Τροφοδοσία 12V - Οτιδήποτε πάνω από 2 Amps θα πρέπει να είναι εντάξει
  • DC Barrel Jack - sizeδιο μέγεθος με το τροφοδοτικό σας
  • NPN BJT Power Transistors (x3) - Χρησιμοποιώ το TIP31C
  • Κεφαλίδες ανδρικών και θηλυκών καρφιτσών

Χρησιμοποιώντας την εύχρηστη εικόνα που έκλεψα από τα interwebs με το GPIO του Pi Zero, μπορείτε να δείτε τα GPIO17, GPIO18 και GPIO 27 να βρίσκονται το ένα δίπλα στο άλλο με GND. Θα χρησιμοποιήσουμε αυτό το τετράγωνο των 4 ακίδων (καρφίτσες 11, 12, 13, 14).

Αρχικά, θα συνιστούσα να κολλήσετε αρσενικές κεφαλίδες στη λωρίδα LED σας όπως φαίνεται στην εικόνα (όχι η καλύτερη δουλειά μου). Αυτό επιτρέπει την εύκολη αποσύνδεση εάν χρειαστεί ποτέ. Χρησιμοποίησα γυναικείες κεφαλίδες για τη σύνδεση της λωρίδας LED στο protoboard και τις ανδρικές κεφαλίδες από το protoboard στο Raspberry Pi. (Χρησιμοποιείτε πάντα θηλυκές συνδέσεις για πηγή ισχύος/σήματος). Δεν χρειάζεται να μετακινείτε όλες τις καρφίτσες του Pi, το ένα δίπλα στο άλλο, όπως εγώ… Απλώς ήθελα να φαίνεται καθαρό, αλλά ήταν πολλή δουλειά.

Επεξήγηση κυκλώματος

Για όσους από εσάς δεν γνωρίζετε τα τρανζίστορ, τα τρανζίστορ είναι βασικά ένας ψηφιακός διακόπτης. Οι ακίδες GPIO από το Pi ενεργοποιούν τους τρεις διακόπτες (κόκκινο, πράσινο και μπλε). Κοιτάζοντας συγκεκριμένα το RED στο διάγραμμα κυκλώματος, όταν είναι ενεργοποιημένο το GPIO_17, ο διακόπτης "κλείνει" συνδέοντας το RED με το GND προκαλώντας την ενεργοποίηση των κόκκινων φώτων. Όταν το GPIO_17 απενεργοποιηθεί, τότε ο διακόπτης είναι ανοιχτός και έτσι τα φώτα είναι σβηστά.

Βάση - GPIO

Συλλέκτης - Χρώματα (ΚΟΚΚΙΝΟ, ΠΡΑΣΙΝΟ, ΜΠΛΕ)

Emitter - Ground (τόσο του τροφοδοτικού όσο και του Pi)

Βεβαιωθείτε ότι έχετε συνδέσει τη γείωση του Pi με τη γείωση του τροφοδοτικού. Τα φώτα θα εξακολουθούν να λειτουργούν, αλλά θα φαίνονται πολύ αμυδρά μέχρι να συνδεθεί το έδαφος.

Έχω μια τέταρτη συσκευή με εμφάνιση τρανζίστορ στο protoboard μου. Είναι ένας L7805CV που χρησιμοποιείται για τη μετατροπή 12V σε 5V, ώστε να μπορώ να τροφοδοτήσω το Pi στο ίδιο κύκλωμα. Λειτούργησε αλλά διατηρήθηκε υπερθέρμανση, οπότε αφαίρεσα τις συνδέσεις του.

Βήμα 8: Δοκιμάστε το

Μόλις ολοκληρώσετε το κύκλωμα, κάντε επανεκκίνηση του Pi πριν κάνετε οποιεσδήποτε συνδέσεις. Αυτό συμβαίνει επειδή οι καρφίτσες είναι πιθανώς ακόμα ενεργές από τη δοκιμή διακομιστή. Εναλλακτικά, μπορείτε να σκοτώσετε τον διακομιστή και την υπηρεσία pigpiod.

Συνδέστε τις λυχνίες LED και τους βραχυκυκλωτήρες από το protoboard στο Pi. Ελέγξτε ξανά όλες τις συνδέσεις πριν από την παροχή ρεύματος. Εάν το συνδέσατε λάθος, μπορεί να τηγανίσετε το Pi (χωρίς πίεση).

ΛΙΣΤΑ ΕΛΕΓΧΟΥ

  • Ελέγξτε τα καλώδια
  • Power Pi
  • Κύκλωμα ισχύος
  • Έναρξη διακομιστή (DEBUG = webapp:* npm εκκίνηση ενώ βρίσκεστε στον κατάλογο ~/piWebpage/webApp)
  • Πείτε στην Google να κάνει την προσφορά σας!

ΣΥΓΧΑΡΗΤΗΡΙΑ δεν ανατινάξατε τίποτα και μπορείτε πλέον να ελέγχετε τα LED σας από το Google Home.

Αφήστε σχόλια εάν αντιμετωπίζετε προβλήματα και θα κάνω ό, τι μπορώ για να επικοινωνήσω μαζί σας!

Συνιστάται: