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

ESP-12 Infra Red Blaster: 7 Βήματα
ESP-12 Infra Red Blaster: 7 Βήματα

Βίντεο: ESP-12 Infra Red Blaster: 7 Βήματα

Βίντεο: ESP-12 Infra Red Blaster: 7 Βήματα
Βίντεο: My journey of making a PERFECT! Universal IR Blaster 👀 2024, Ιούλιος
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Blaster τηλεχειριστηρίου υπερύθρων με χρήση esp8266

Μεταδίδει κωδικούς τηλεχειριστηρίου που λαμβάνονται από Web υποστηρίζοντας πολλαπλές συσκευές εξόδου.

Ενσωματωμένη απλή ιστοσελίδα κυρίως για δοκιμή.

Η κανονική χρήση γίνεται μέσω μηνυμάτων POST που μπορούν να προέρχονται από ιστοσελίδες ή από φωνητικό έλεγχο IFTTT / Alexa.

Υποστηρίζει έναν ανιχνευτή ενεργοποίησης Amazon Echo / Dot για σίγαση / σίγαση μόλις ειπωθεί η λέξη ενεργοποίησης.

Οι εντολές είναι είτε μεμονωμένες εντολές είτε ακολουθίες. Οι ακολουθίες μπορούν να αποθηκευτούν ως μακροεντολές που μπορούν να χρησιμοποιηθούν ως εντολές ή σε άλλες ακολουθίες.

Το πρόσφατο ιστορικό και η λίστα μακροεντολών μπορούν να ληφθούν μέσω της διεπαφής ιστού

Υποστηρίζει τη μεταφόρτωση νέου υλικολογισμικού μέσω OTA και χρησιμοποιεί τη βιβλιοθήκη WifiManager για την αρχική ρύθμιση wifi

Βήμα 1: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

Χρησιμοποιεί τα ακόλουθα στοιχεία

  • Ενότητα ESP-12F
  • Ρυθμιστής 3.3V (ρυθμιστής MP2307 mini buck)
  • Διακόπτες MOSFET (AO3400)
  • Υπέρυθρο πομπό (3mm)
  • Αντίσταση εξαρτημένης από το φως GL2258 (προαιρετικός ανιχνευτής δραστηριότητας Alexa)
  • Αντιστάσεις
  • Πυκνωτής αποσύνδεσης (20uF)
  • Θηλυκή πρίζα USB (κατά προτίμηση φιλική προς συγκόλληση με μανίκι
  • Λουρίδα υποδοχής IC 3 ακίδων για ανιχνευτή Alexa
  • Μηχανικά μέρη (μπορούν να εκτυπωθούν 3D)

Μπορεί να συναρμολογηθεί σε κουτί έργου ESP-12F

  • Συνδέστε το ρυθμιστικό στην υποδοχή USB και τοποθετήστε το στο κουτί
  • Συνθέστε το πρόγραμμα οδήγησης IR σε μικρό κομμάτι χαρτόνι vero (3 καλώδια, +5V, είσοδος πύλης 0V)
  • Συνδέστε το πρόγραμμα οδήγησης IR σε USB +5V, 0V
  • Τοποθετήστε υποδοχή IC 3 ακίδων στο πλαίσιο έργου εάν χρησιμοποιείτε ανιχνευτή Alexa. Συνδεθείτε σε +3.3V, 0V και καλώδιο για είσοδο
  • Συμπληρώστε το ESP-12F με 2,2K από GPIO15 σε GND, EN σε Vdd, 4K7 GPIO13 σε Vdd, είσοδο Alexa στο GPIO13, πρόγραμμα οδήγησης IR σε GPIO14, 0V και Vdd σε 3,3V
  • Δημιουργήστε ανιχνευτή Alexa και υποστηρίξτε το buffer εάν απαιτείται.

Σημειώστε ότι μπορεί να είναι ευκολότερο να προγραμματίσετε πρώτα το ESP-12F εάν έχετε κάποιο είδος σειριακής εγκατάστασης προγραμματισμού ή προσωρινής εγκατάστασης ψωμιού όπως αυτή για να συνδεθείτε στις σειριακές θύρες.

Ο επόμενος προγραμματισμός μπορεί να γίνει χρησιμοποιώντας την ενσωματωμένη ενημέρωση OTA.

Βήμα 2: Λογισμικό

Το ir Blaster χρησιμοποιεί ένα σκίτσο Arduino που διατίθεται στο github

Αυτό πρέπει να προσαρμοστεί ώστε να ταιριάζει στις τοπικές συνθήκες και στη συνέχεια να μεταγλωττιστεί σε ένα περιβάλλον arduino esp8266.

Οι παρακάτω βιβλιοθήκες χρειάζονται, οι περισσότερες είναι τυπικές ή μπορούν να προστεθούν. Τα δύο τελευταία περιλαμβάνονται στο git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (περιλαμβάνεται στο Git)
  • BitMessages (περιλαμβάνεται στο Git)

Τα στοιχεία στο σκίτσο που πρόκειται να αλλάξουν περιλαμβάνουν

  • Κωδικός εξουσιοδότησης για πρόσβαση στον ιστό AP_AUTHID
  • Κωδικός πρόσβασης διαχειριστή WFI WM_PASSWORD
  • firmware OTA password_ update_password
  • Νέες συσκευές IR / κωδικοί κουμπιών (δείτε αργότερα)

Μόλις γίνει αυτό, θα πρέπει πρώτα να μεταφορτωθεί χρησιμοποιώντας συμβατική σειριακή μεταφόρτωση.

Καθώς χρησιμοποιείται το SPIFFS τότε η μνήμη θα πρέπει να προετοιμαστεί εγκαθιστώντας και χρησιμοποιώντας το εργαλείο μεταφόρτωσης δεδομένων arduino ESP8266 Sketch Data. Αυτό θα ανεβάσει το φάκελο δεδομένων ως αρχικό περιεχόμενο SPIFFS

Όταν η συσκευή δεν μπορεί να συνδεθεί στο τοπικό δίκτυο (όπως θα συμβεί την πρώτη φορά), τότε ο διαχειριστής Wifi θα δημιουργήσει ένα σημείο πρόσβασης (192.168.4.1). Συνδεθείτε σε αυτό το δίκτυο από τηλέφωνο ή tablet και, στη συνέχεια, περιηγηθείτε στο 192.168.4.1. Θα λάβετε μια διεπαφή ιστού για σύνδεση στο τοπικό wifi. Οι μεταγενέστερες προσβάσεις θα το χρησιμοποιήσουν. Εάν αλλάξει το τοπικό δίκτυο, τότε θα επιστρέψει σε αυτήν τη λειτουργία διαμόρφωσης.

Η επόμενη ενημέρωση μπορεί να γίνει με τη σύνταξη ενός δυαδικού αρχείου εξαγωγής στο περιβάλλον Arduino και στη συνέχεια την πρόσβαση στη διεπαφή OTA στο ip/firmware.

Βήμα 3: Προσθήκη κωδικών συσκευής / κουμπιού

Σημείωση: Αυτή η ενότητα άλλαξε από την προηγούμενη μέθοδο όπου η διαμόρφωση που είχε προηγουμένως μεταγλωττιστεί στον κώδικα. Τώρα χρησιμοποιεί αρχεία που φορτώνονται από το σύστημα αρχειοθέτησης SPIFF. Αυτό διευκολύνει πολύ τη μεταφόρτωση νέων ορισμών.

Οι ορισμοί των κουμπιών περιλαμβάνονται στο αρχείο buttonnames.txt. Είναι ένας παγκόσμιος κατάλογος ονομάτων σε όλα τα τηλεχειριστήρια που χρησιμοποιούνται καθώς πολλά ονόματα τείνουν να είναι κοινά. Όπως παρέχεται, αυτό περιέχει λεπτομέρειες για τα τηλεχειριστήρια που χρησιμοποιώ. Μπορούν να προστεθούν νέες καταχωρήσεις. Υπάρχει χώρος για συνολικά 160 ονόματα, αλλά αυτό μπορεί να αυξηθεί προσαρμόζοντας σταθερές στο bitMessages.h και επανασυσκευάζοντας. Τα ονόματα που ορίζονται εδώ είναι τα ονόματα που πρέπει να χρησιμοποιούνται κατά την αποστολή εντολών.

Κάθε απομακρυσμένη συσκευή ορίζεται σε ένα αρχείο που ονομάζεται dev_remotename. Αποτελείται από ένα τμήμα διαμόρφωσης στο επάνω μέρος και στη συνέχεια έναν πίνακα αντιστοίχισης από ονόματα κουμπιών σε κώδικες που είναι εξαγωνικές συμβολοσειρές που περιέχουν τα δυαδικά ψηφία προς αποστολή. Πρέπει να οριστούν μόνο τα απαιτούμενα ονόματα κουμπιών.

Η ενότητα διαμόρφωσης στην αρχή ενός αρχείου συσκευής περιέχει παραμέτρους που πρέπει να χρησιμοποιηθούν κατά την αποστολή ενός κωδικού. Η πρώτη καταχώριση είναι το όνομα devicen που χρησιμοποιείται κατά την αποστολή μιας εντολής. Άλλες παράμετροι περιγράφονται στο readme στον ιστότοπο του κώδικα.

Τα περισσότερα τηλεχειριστήρια ανήκουν σε μία από τις 3 κατηγορίες πρωτοκόλλων (nec, rc5 και rc6). Το nec είναι ίσως το πιο κοινό και έχει απλή δομή κεφαλίδας και χρονισμό bit. Υπάρχει μια μικρή παραλλαγή αυτού που διαφέρει μόνο στο χρονισμό του παλμού κεφαλίδας. Τα rc5 και rc6 είναι πρωτόκολλα που ορίζονται από τη Philips αλλά χρησιμοποιούνται και από άλλους κατασκευαστές. Είναι λίγο πιο περίπλοκα και το rc6 έχει συγκεκριμένες απαιτήσεις χρονισμού για ένα από τα δυαδικά ψηφία.

Για να καταγράψω τους κωδικούς για ένα νέο τηλεχειριστήριο, χρησιμοποιώ έναν δέκτη IR (TSOP) που χρησιμοποιείται συνήθως με σύνδεση σε απομακρυσμένους δέκτες. Αυτό κάνει τη βασική αποκωδικοποίηση και δίνει έξοδο σε επίπεδο λογικής. Συνήθως έρχονται με υποδοχή 3,5 mm με συνδέσεις +5V, GND, DATA. Θυσίασα ένα, συντόμευσα το προβάδισμα και το έβαλα μέσω ενός ανεστραμμένου buffer 3.3V για να τροφοδοτήσει μια καρφίτσα GPIO σε ένα Raspberry Pi.

Στη συνέχεια, χρησιμοποιώ ένα εργαλείο python rxir.py (στο φάκελο git tools) για τη λήψη κωδικών. Για να διευκολυνθεί η χρήση της λήψης μεγάλου αριθμού κουμπιών, το εργαλείο χρησιμοποιεί ένα αρχείο ορισμού κειμένου για να ορίσει τα κουμπιά στο τηλεχειριστήριο και είναι μόνο τα ονόματα των κουμπιών μιας ομάδας στο τηλεχειριστήριο. Για παράδειγμα, κάποιος μπορεί να έχει ένα νέο τηλεχειριστήριο της Sony και να ρυθμίσει 3 αρχεία κειμένου που ονομάζονται sonytv-cursor, sonytv-numbers, sonytv-playcontrols καθένα με τα σχετικά ονόματα κουμπιών. Το εργαλείο θα ζητήσει τη συσκευή (sonytv), την ενότητα (δρομέας) και ποιο πρωτόκολλο να χρησιμοποιήσετε (nec, nec1, rc5, rc6). Στη συνέχεια, θα ζητάει διαδοχικά για κάθε κουμπί πατήστε και γράψτε αποτελέσματα σε ένα αρχείο κώδικα sonytv. Οι ενότητες μπορούν να επαναληφθούν εάν απαιτείται για να ελέγξετε ότι οι λήψεις είναι καλές. Τα bit από το αρχείο.ircodes μπορούν να επεξεργαστούν στους πίνακες BitDevices.

Βήμα 4: Έλεγχος Ιστού και μακροεντολές

Το βασικό στοιχείο ελέγχου ιστού είναι είτε ένα μόνο λήμμα είτε μια ανάρτηση json που μπορεί να περιέχει μια ακολουθία.

Το get to /ir έχει 6 παραμέτρους

  • Author - περιέχει τον κωδικό εξουσιοδότησης
  • συσκευή - το όνομα της απομακρυσμένης συσκευής
  • παράμετρος - το όνομα του κουμπιού
  • bits - ένας προαιρετικός αριθμός bit
  • επανάληψη - ένας προαιρετικός αριθμός επαναλήψεων
  • αναμονή - μια καθυστέρηση σε δευτερόλεπτα για να εκτελεστεί η επόμενη εντολή.

Η συσκευή μπορεί επίσης να είναι «μηδενική» για απλή καθυστέρηση, «μακροεντολή» για χρήση της μακροεντολής που αναφέρεται στην παράμετρο ή «ανίχνευση» για χρήση της λειτουργίας ανίχνευσης Alexa (δείτε αργότερα).

Η ανάρτηση στο /irjson αποτελείται από μια δομή json όπως

{

"auth": "1234", "εντολές": [{"device": "yamahaAV", "parameter": "hdmi4", "wait": "5000", "bits": "0", "repeat": "1"}, {"συσκευή": "yamahaAV", "παράμετρος": "σίγαση", "αναμονή": "100", "bits": "0", "επανάληψη": "1"}]

}

Η ακολουθία μπορεί να έχει οποιοδήποτε μήκος και οι συσκευές μπορεί να είναι μακροαναφορές.

Η ίδια δομή μπορεί να χρησιμοποιηθεί για τον ορισμό των μακροεντολών. Απλώς συμπεριλάβετε τη μακροεντολή: "macroname", στο ανώτερο επίπεδο π.χ. μετά από το author. Τα πραγματικά περιεχόμενα αποθηκεύονται σε ένα αρχείο που ονομάζεται macroname.txt

Οι μακροεντολές μπορούν να διαγραφούν με τον ορισμό τους χωρίς "εντολές".

Άλλες εντολές ιστού

  • /πρόσφατη (παραθέτει πρόσφατη δραστηριότητα)
  • /έλεγχος (εμφανίζει τη βασική κατάσταση)
  • / (φορτώνει μια φόρμα ιστού για μη αυτόματη αποστολή εντολών)
  • / επεξεργασία (φορτώνει μια φόρμα ιστού για προβολή της λίστας αρχείων και διαγραφή/ αποστολή αρχείων)
  • /edit? file = όνομα αρχείου (δείτε τα περιεχόμενα ενός συγκεκριμένου αρχείου)
  • /επαναφόρτωση (επαναφόρτωση ονομάτων κουμπιών και αρχείων συσκευής. Χρήση αφού αλλάξετε οποιοδήποτε από αυτά)

Βήμα 5: Alexa Voice Control χρησιμοποιώντας IFTTT

Ο απλούστερος τρόπος για να χρησιμοποιήσετε το ir Blaster με την Alexa είναι να χρησιμοποιήσετε το IFTTT ως πύλη.

Πρώτη θύρα προς τα εμπρός η θύρα που χρησιμοποιείται στο blaster σας στο δρομολογητή σας, ώστε να είναι προσβάσιμη από το διαδίκτυο. Μπορεί να είναι καλό να χρησιμοποιείτε μια υπηρεσία dns όπως τα freedns για να δώσετε ένα όνομα στο εξωτερικό ip των δρομολογητών σας και να διευκολύνετε τον χειρισμό εάν αλλάξει αυτό το ip.

Δημιουργήστε έναν λογαριασμό IFTTT και ενεργοποιήστε το κανάλι Maker Webhooks και το κανάλι Alexa. Θα χρειαστεί να συνδεθείτε στον ιστότοπο του Amazon όταν το κάνετε αυτό για να ενεργοποιήσετε την πρόσβαση IFTT.

Δημιουργήστε μια σκανδάλη IF χρησιμοποιώντας το κανάλι IFTTT Alexa, επιλέξτε την ενέργεια με βάση μια φράση και εισαγάγετε τη φράση που θέλετε (π.χ. αύξηση της έντασης).

Δημιουργήστε την ενέργεια επιλέγοντας το κανάλι Maker webhooks. Εισαγάγετε στο πεδίο URL κάτι παρόμοιο

myip: port/irjson? plain = {"auth": "1234", "comm…

Αυτή η ενέργεια θα σταλεί στο ir blaster όπου θα προσπαθήσει να εκτελέσει την αύξηση της μακροεντολής. Κάποιος μπορεί να είναι συγκεκριμένη συσκευή/κουμπιά εδώ, αν το θέλω, αλλά θεωρώ ότι είναι καλύτερο να ορίσω και να χρησιμοποιήσω μακροεντολές, επειδή τότε η ακολουθία ενεργειών μπορεί εύκολα να αλλάξει απλώς επαναπροσδιορίζοντας τη μακροεντολή.

Για κάθε εντολή απαιτείται ξεχωριστή μικροεφαρμογή IFTTT.

Βήμα 6: Δεξιότητα εγγενών Alexa Voice

Αντί για IFTTT, μπορείτε να δημιουργήσετε μια προσαρμοσμένη δεξιότητα μέσα στην ανάπτυξη της Alexa. Αυτό συγκεντρώνει όλη την επεξεργασία σε ένα μέρος και σημαίνει ότι δεν χρειάζεται να δημιουργήσετε ξεχωριστές ενέργειες για κάθε κουμπί.

Πρέπει να εγγραφείτε ως προγραμματιστής Amazon Alexa και πρέπει να εγγραφείτε στην υπηρεσία lambda της κονσόλας Amazon AWS. Θα χρειαστεί επίσης να δείτε τα μαθήματα για να καταλάβετε λίγο τη διαδικασία.

Από την πλευρά του προγραμματιστή Alexa πρέπει να δημιουργήσετε μια νέα προσαρμοσμένη δεξιότητα, να εισαγάγετε τη λέξη ενεργοποίησης και να δημιουργήσετε μια λίστα με λέξεις εντολών όπως αύξηση της έντασης, οδηγός κ.

Στη συνέχεια, η Alexa στέλνει τη φράση σε ένα πρόγραμμα που εκτελείται στην υπηρεσία lamda, η οποία ερμηνεύει τη φράση και πραγματοποιεί μια κλήση URL στο IR blaster για να την ενεργοποιήσει.

Έχω συμπεριλάβει το σχήμα πρόθεσης Alexa και τη λειτουργία λάμδα κονσόλας που χρησιμοποιώ στο git. Η διεύθυνση URL θα πρέπει να τροποποιηθεί για να αναφέρει το κατάλληλο ip και να έχει τη σωστή εξουσιοδότηση. Για να είναι απλό, οι συναρτήσεις λάμδα καλεί μια μακροεντολή η οποία έχει μια κενή έκδοση της φράσης με κενό χώρο. Προσπαθεί επίσης να αφαιρέσει τη λέξη -κλειδί σκανδάλης που μπορεί μερικές φορές να συμπεριληφθεί. Π.χ. blaster VOLUME up θα καλέσει μια μακροεντολή που ονομάζεται ένταση ήχου εάν η λέξη σκανδάλης ήταν blaster.

Βήμα 7: Ανιχνευτής ενεργοποίησης Alexa

Παρόλο που η αναγνώριση φωνής Echo / Dot είναι καλή, μερικές φορές μπορεί να μπερδευτεί εάν ο ήχος αναπαράγεται από την τηλεόραση, εκτός εάν πλησιάσετε και μιλήσετε δυνατά.

Για να βελτιώσω αυτό, πρόσθεσα έναν ανιχνευτή ενεργοποίησης στο Dot μου. Μόλις η λέξη -κλειδί (λέγεται Alexa) ο δακτύλιος των LED ανάβει. Ο ανιχνευτής τροφοδοτεί αυτό στο blaster όπου θα χρησιμοποιήσει τη μακροεντολή alexaon για να απενεργοποιήσει την τηλεόραση, ομοίως στο τέλος της επεξεργασίας μιας εντολής τα φώτα σβήνουν και η μακροεντολή alexaoff επαναφέρει τον ήχο.

Η εντολή "ανίχνευση" μπορεί επίσης να χρησιμοποιηθεί για να την ενεργοποιήσετε και να την απενεργοποιήσετε. Έτσι, για παράδειγμα, χρησιμοποιώ την αρχική μακροεντολή turnon για να ενεργοποιήσω την ανίχνευση και τη μακροεντολή turnoff για να την απενεργοποιήσω. Αυτό μπορεί επίσης να χρησιμοποιηθεί στο πλαίσιο των μακροεντολών δράσης για να υποστηρίξει μια πραγματική σίγαση και σίγαση του βραχίονα που διαφορετικά θα ήταν προβληματική.

Ο φυσικός ανιχνευτής είναι μια εξαρτώμενη από το φως αντίσταση την οποία υποστηρίζει το κύκλωμα. Τοποθετώ το δικό μου στο Dot με ένα βραχίονα 3D εκτύπωσης

Συνιστάται: