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

Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux): 9 βήματα (με εικόνες)
Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux): 9 βήματα (με εικόνες)

Βίντεο: Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux): 9 βήματα (με εικόνες)

Βίντεο: Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux): 9 βήματα (με εικόνες)
Βίντεο: Νέα Raspberry Pi 3 Tutorial - Πώς να δημιουργήσει για Gaming & Entertainment Έργα 2024, Νοέμβριος
Anonim
Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux)
Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux)
Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux)
Τηλεχειριστήριο βασισμένο σε πρόγραμμα περιήγησης Arduino (linux)

Έχουμε παιδιά. Μου αρέσουν πολύ αλλά συνεχίζουν να κρύβουν το τηλεχειριστήριο για το δορυφόρο και την τηλεόραση όταν ανοίγουν τα παιδικά κανάλια. Αφού συνέβη αυτό σε καθημερινή βάση για αρκετά χρόνια, και αφού η αγαπημένη μου γυναίκα μου επέτρεψε να έχω Arduino για τα Χριστούγεννα, αποφάσισα ότι ήρθε η ώρα να κάνω κάτι χρήσιμο (στα μάτια της!) Με το Arduino. Εδώ λοιπόν έχουμε το αποκορύφωμα αυτού: μια διαδικτυακή διεπαφή με το Arduino που αντικαθιστά τα τηλεχειριστήρια μου και είναι προσβάσιμη από το εσωτερικό δίκτυό μου. Όταν καταλάβω γιατί το ethernet shield μου δεν επιτρέπει στο arduino μου να κρατήσει ένα σκίτσο, θα γράψω ένα νέο σκίτσο που χρησιμοποιεί την ασπίδα ethernet ως διακομιστή ιστού, πράγμα που σημαίνει ότι δεν χρειάζομαι apache εγκατεστημένο στον υπολογιστή μου. Μείνετε συντονισμένοι, θα φτάσω εκεί!

Βήμα 1: Προαπαιτούμενα

Προαπαιτούμενα
Προαπαιτούμενα

Υλικό: Arduino πλευρά: Arduino - Χρησιμοποιώ Arduino Uno R2 Breadboard - το τοπικό σας κατάστημα ηλεκτρονικών ειδών ή την κουζίνα εάν θέλετε ένα αυθεντικό περίβλημα για τοποθέτηση ψωμιού - χρησιμοποίησα μια παλιά πλαστική θήκη με διαφανές καπάκι ένα από ένα σπασμένο τηλεχειριστήριο (ευχαριστώ παιδιά!) Δέκτης υπέρυθρων - πήρα το δικό μου από ένα μαγικό μάτι τηλεχειριστήριο Transistor - χρησιμοποίησα μια αντίσταση BC547 - χρησιμοποίησα μεταβλητή αντίσταση 1.5k ohm σε 1k ohm καλώδια βραχυκυκλωτήρα ψωμιού - πήρα το δικό μου από συμπαγές κύλινδρο καλωδίου RJ45 Πλευρά υπολογιστή: Υπολογιστής για χρήση ως διακομιστής USB καλώδιο στο λογισμικό Arduino: Λογισμικό Arduino - από arremino.cc irremote βιβλιοθήκη - από https://www.arcfn.com/2009/08/multi-protocol- infrared -remote -library.html (ευχαριστώ Ken, εξαιρετική δουλειά!) Διακομιστής Ιστού Apache με εγκατεστημένη PHP - apache.org Εσωτερική διεύθυνση IP - η δική μου είναι 192.168.0.9 Εικόνα του τηλεχειριστηρίου σας - google ή μια φωτογραφία που τραβήχτηκε στην κάμερα. Έχω αποθηκεύσει το δικό μου σε ανάλυση 200x600

Βήμα 2: Χτίζοντας το Διοικητικό Συμβούλιο

Χτίζοντας το Διοικητικό Συμβούλιο
Χτίζοντας το Διοικητικό Συμβούλιο

Συνιστάται ιδιαίτερα η χρήση ενός breadboard για ένα arduino. Τοποθέτησα το Arduino μου και ένα breadboard στο ίδιο περίβλημα και ένωσα όλες τις καρφίτσες που χρησιμοποιώ τακτικά απευθείας στο breadboard μόνιμα. Καρφίτσες Arduino που χρησιμοποιούνται για αυτό το έργο: 5v, γείωση Digitalηφιακές ακίδες 3, 11 (ο ακροδέκτης 3 ελέγχει το LED LED, ο πείρος 11 συνδέεται με τον δέκτη IR)

Βήμα 3: Σχηματικό

Σχηματικός
Σχηματικός

Αυτό το σχηματικό είναι πολύ απλό, 4 εξαρτήματα και 6 καλώδια. Συνδέσεις LED IR: Συνδέστε το ένα από τα πόδια της αντίστασης στην ψηφιακή ακίδα Arduino 3 Συνδέστε το άλλο σκέλος της αντίστασης στη βάση του τρανζίστορ (το μεσαίο σκέλος στην περίπτωσή μου) Συνδέστε τον πομπό του τρανζίστορ στη γείωση Συνδέστε τον συλλέκτη του τρανζίστορ στο αρνητικό σκέλος του LED (κοντό πόδι, επίπεδη πλευρά του LED) Συνδέστε το θετικό πόδι (μακρύ πόδι, καμπύλη πλευρά) του LED στις συνδέσεις δέκτη IR 5 ακίδων (θα πρέπει να βρείτε το pinout για ο συγκεκριμένος δέκτης IR): καρφίτσα GND στη γείωση VS pin έως 5v VO pin στο ψηφιακό pin Arduino 11

Βήμα 4: Προσθήκη Irremote Library στο λογισμικό Arduino

Προσθήκη Irremote Library στο λογισμικό Arduino
Προσθήκη Irremote Library στο λογισμικό Arduino

Το irremote είναι μια μεγάλη βιβλιοθήκη που γράφτηκε από τον Ken Shirriff και διατίθεται από το ιστολόγιό του στη διεύθυνση https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Λήψη της βιβλιοθήκης από https:// arcfn.com/files/IRremote.zip και εγκαταστήστε το όπως θα κάνατε σε οποιαδήποτε άλλη βιβλιοθήκη για το arduino. Το ιστολόγιό του έχει πολλές χρήσιμες πληροφορίες σχετικά με τη βιβλιοθήκη και τον τρόπο εγκατάστασής της.

Βήμα 5: Καταγράψτε τους κωδικούς από τα τηλεχειριστήριά σας

Εδώ ξεκινά το βαρετό (αλλά αναπόφευκτο) μέρος: Πατώντας κάθε κουμπί στο τηλεχειριστήριο, αποθηκεύοντας τη συμβολοσειρά εξόδου και αντιστοιχίζοντάς την στο εικονικό τηλεχειριστήριο. Χρειάζεται μόνο να το κάνετε μία φορά, περιμένετε περίπου 20 λεπτά περίπου. Ξεκινήστε έναν επεξεργαστή κειμένου για να αποθηκεύσετε την έξοδο. Δημιουργήστε ένα νέο έγγραφο και πληκτρολογήστε κάθε κουμπί στο τηλεχειριστήριό σας, ένα ανά γραμμή: Power Up Down Left Right.. et cetera Ξεκινήστε το Arduino IDE και κάντε κλικ στο "Αρχεία-> Παραδείγματα-> IRremote-> IRrecvDump" και ανεβάστε το το Arduino σας. Αυτό το παράδειγμα θα ρίξει τους απομακρυσμένους κωδικούς στη σειριακή θύρα. Ξεκινήστε την οθόνη σειριακής θύρας και πατήστε ένα πλήκτρο στο τηλεχειριστήριό σας. Θα δείτε μια συμβολοσειρά να εμφανίζεται στο παράθυρο σειριακής οθόνης: "Αποκωδικοποιημένο *: * (* bit)". Αντιγράψτε αυτήν τη γραμμή και αποθηκεύστε την στο έγγραφό σας στην κατάλληλη γραμμή. Επαναλάβετε μέχρι να αποθηκεύσετε όλα τα κλειδιά σας στο αρχείο κειμένου. Ξέρω πόσο διασκεδαστικό είναι αυτό το κομμάτι, το έχω κάνει δύο φορές μέχρι τώρα: P Τώρα πρέπει να κάνουμε μια μικρή αναζήτηση και αντικατάσταση στο αρχείο κειμένου: αναζήτηση για "Αποκωδικοποιημένο" αντικατάσταση με "" αναζήτηση για: "0x" αντικατάσταση με "," αναζήτηση για "(" αντικατάσταση με "," αναζήτηση για "bits" "αντικατάσταση με" "Άρα για μια γραμμή όπως: Αποκωδικοποιημένο NEC: 0x000110 (15 bits) θα πρέπει τώρα να έχουμε μια γραμμή που λέει: NEC, 000110, 15

Βήμα 6: Δημιουργήστε την ιστοσελίδα για το τηλεχειριστήριό σας

Τώρα πρέπει να χαρτογραφήσουμε τα κουμπιά στην εικόνα του τηλεχειριστηρίου σας.

Χρησιμοποίησα τη διεύθυνση https://www.maschek.hu/imagemap/imgmap για να αντιστοιχίσω τα κουμπιά και τροποποίησα τον κώδικα που σας δίνει ο ιστότοπος για να λειτουργήσει.

Κάντε κλικ στο "Χρήση εικόνας στον υπολογιστή σας: [επιλογή αρχείου]", επιλέξτε την εικόνα σας, κάντε κλικ στο [μεταφόρτωση], κάντε κλικ στο [αποδοχή] Αποθέστε ορθογώνια, κύκλους κ.λπ. σε κάθε κουμπί. Για το HREF βάλτε /remote.php?command= και τη γραμμή για αυτό το κουμπί από το έγγραφο κειμένου για παράδειγμα /remote.php?command=NEC, 000110, 15 Θα ήταν σοφό (και να βοηθήσετε πάρα πολύ στον εντοπισμό σφαλμάτων) αν συμπληρώσετε επίσης Alt: με το όνομα του κουμπιού, αλλά αυτό εξαρτάται από εσάς.

Επαναλάβετε για κάθε κουμπί.

Ολα τελείωσαν? Μετά θα συνεχίσουμε. Στο κάτω μέρος αυτής της σελίδας είναι "Κωδικός", κάντε κλικ σε αυτό και θα ανοίξει ένα πλαίσιο που θα εμφανίζει τον κωδικό για τον χάρτη εικόνας. Αντιγράψτε το και επικολλήστε το σε ένα νέο έγγραφο κειμένου. Αυτό είναι το κύριο μέρος της ιστοσελίδας μας.

Εδώ είναι η πλήρης ιστοσελίδα μου, απλώς αντικαταστήστε την…

με τον δικό σας κωδικό παραπάνω και αποθηκεύστε τον ως remote.php στον κατάλογο ιστού σας (/var/www στο linux) μαζί με τις εικόνες του τηλεχειριστηρίου σας. Αλλάξτε τις γραμμές για τις δικές σας εικόνες:

"https://www.w3.org/TR/html4/loose.dtd">

Έλεγχος LED Arduino

Βήμα 7: Ανεβάστε τον κωδικό τηλεχειριστηρίου στο Arduino σας

Ανεβάστε τον κωδικό τηλεχειριστηρίου στο Arduino σας
Ανεβάστε τον κωδικό τηλεχειριστηρίου στο Arduino σας

Δημιουργήστε ένα νέο σκίτσο και επικολλήστε τον ακόλουθο κώδικα σε αυτό:/ * * WebRemote * Ένα IR LED πρέπει να είναι συνδεδεμένο στο Arduino PWM pin 3. * Έκδοση 0.1 Ιούλιος, 2009 * Αυτός ο κωδικός πνευματικών δικαιωμάτων Gregory Fenton, https://labby.co. uk/2012/02/irremote-arduino-πειραματισμός/ * IRremote Library copyright 2009 Ken Shirriff, https://arcfn.com */#include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); επιστροφή obj? } boolean end = false; char inData [64]; // Μέγεθος ανάλογα με το δείκτη byte = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Σειριακός << "Σειριακή θύρα προετοιμασμένη" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; μακρύ sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (index == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {end = true; δείκτης = 0; Διακοπή; } else {if (index <64) // Μέγεθος πίνακα {pch += inChar; ευρετήριο ++; }}} εάν (έληξε) {// Αναλύστε τα δεδομένα στα inData εδώ… pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++? // παραλείψτε ',' ή '' // i τώρα δείχνει την αρχή του hex j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j τώρα δείχνει "," ή "" μετά το εξάγωνο sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); για (i = 0; i <sTemp.length (); i ++) {k = sTemp ; αν (! ((k> = '0' && k = 'A' && k <= 'F'))) σπάσει. sHex *= 16; εάν (k> = '0' && k <= '9') sHex += (k - '0'); αλλιώς αν (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); αν (! ((k> = '0' && k = 'A' && k <= 'F'))) σπάσει. } sTemp = pch.substring (j+1); sBits = 0; για (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; εάν (k> = '0' && k <= '9') sBits += (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Τύπος κώδικα:" << sType << "Hex:"; Serial.print (sHex, HEX); Σειριακό << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; τελείωσε = 0; }}} void sendIt (String sType, long sHex, int sBits) {for (int i = 0; i <2; i ++) {if (sType.equals (String ("RC6"))) {irsend.sendRC6 (sHex, sBits); } else if (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } else if (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } else if (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } else if (sType.equals (String (""))) {Serial << "Delaying" << EOP; καθυστέρηση (450)? } καθυστέρηση (30); }}

Βήμα 8: Συνδεθείτε στον διακομιστή Web από τον υπολογιστή σας

Συνδεθείτε στον διακομιστή Web από τον υπολογιστή σας
Συνδεθείτε στον διακομιστή Web από τον υπολογιστή σας

.. ή τηλέφωνο ή android ή ipad ή οτιδήποτε άλλο: μεταβείτε στη διεύθυνση https:// webserver IP/remote.php στο πρόγραμμα περιήγησής σας Για μένα η διεύθυνση είναι https://192.168.0.9/remote.php, αλλά η δική σας αναμφίβολα θα είναι διαφορετική. Εάν όλα λειτουργούν, θα πρέπει να δείτε μια εικόνα του τηλεχειριστηρίου σας με κουμπιά στα οποία μπορείτε να κάνετε κλικ.

Βήμα 9: Προαιρετικό Βήμα: Επεξεργαστείτε το αρχείο Hosts σας για να το κάνετε πιο εύκολο στη χρήση

Προαιρετικό βήμα: Επεξεργαστείτε το αρχείο των κεντρικών υπολογιστών σας για να το κάνετε πιο εύκολο στη χρήση
Προαιρετικό βήμα: Επεξεργαστείτε το αρχείο των κεντρικών υπολογιστών σας για να το κάνετε πιο εύκολο στη χρήση

Ένα βήμα που έκανα ήταν η επεξεργασία του αρχείου κεντρικών υπολογιστών μου (/etc/hosts σε linux, C: / Windows / System32 / Drivers / etc / hosts στα windows). Σημειώστε ότι αυτό το αρχείο μπορεί να επεξεργαστεί μόνο σε μια γραμμή εντολών διαχειριστή (windows) ή από su (linux) Προσθέστε τη γραμμή ip.add.re.ss τηλεχειριστήριο αντικαταστήστε το ip.add.re.ss με τη διεύθυνση IP του διακομιστή και αποθηκεύστε το αρχείο Το Θα πρέπει να το κάνετε αυτό σε κάθε συσκευή που θέλετε να αποκτήσετε πρόσβαση στην ιστοσελίδα με το σύντομο όνομα. Τώρα μπορείτε να αποκτήσετε πρόσβαση στο τηλεχειριστήριο με https://remote/remote.php Αυτή είναι η πρώτη μου κατάλληλη οδηγία, να είστε ευγενικοί και ενημερώστε με αν υπάρχουν προβλήματα ώστε να τα διορθώσω.

Συνιστάται: