Πώς να φτιάξετε το δικό σας συνδεδεμένο κουμπί Wi-Fi με ESP8266
Διαφήμιση
Το Διαδίκτυο των πραγμάτων έχει τεράστιο δυναμικό DIY. Με αρκετή τεχνογνωσία και λίγα φθηνά εξαρτήματα, θα μπορούσατε να δημιουργήσετε ένα σύνθετο σύστημα συνδεδεμένων συσκευών.
Μερικές φορές, ωστόσο, θέλετε κάτι απλό. Δεν κουδούνια ή σφυρίχτρες, απλά ένα κουμπί που εκτελεί μια μόνο εργασία. Ίσως να είστε ήδη εξοικειωμένοι με κάτι τέτοιο εάν έχετε χρησιμοποιήσει ποτέ ένα κουμπί του Dash Amazon για να αναδιατάξετε καθημερινά οικιακά αντικείμενα.
Σήμερα θα κάνουμε ένα κουμπί ενεργοποιημένο με Wi-Fi χρησιμοποιώντας ένα NodeMCU και θα το προγραμματίσουμε για να χρησιμοποιήσουμε το IFTTT για να το κάνουμε ... καλά, οτιδήποτε! Γραπτές οδηγίες που ακολουθούν το βίντεο, αν προτιμάτε.
Τι χρειάζεστε
Θα χρειαστείτε:
- 1 x NodeMCU (ESP8266), διαθέσιμο για $ 2-3 στο AliExpress
- 1 κουμπιά
- 1 x LED (προαιρετικό)
- 1 x 220 Ohm αντίσταση (προαιρετικά)
- Συρματόπλεγμα και καλώδια σύνδεσης
- Micro USB για προγραμματισμό
- Υπολογιστής με εγκατεστημένο τον IDE του Arduino
Εκτός από το NodeMCU, θα πρέπει να είστε σε θέση να βρείτε τα περισσότερα από αυτά τα μέρη σε οποιοδήποτε αρχικό κιτ Arduino. 4 Best Starter Kits για αρχάριους Arduino 4 Best Starter Kits για αρχάριους Arduino Υπάρχουν πολλά σπουδαία αρχάριοι έργα Arduino που μπορείτε να χρησιμοποιήσετε για να ξεκινήσετε, αλλά θα χρειαστείτε πρώτα ένα Arduino και κάποια εξαρτήματα. Εδώ είναι η επιλογή μας από 4 από τα καλύτερα πακέτα εκκίνησης για ... Διαβάστε περισσότερα. Αυτό το σεμινάριο θα υποθέσει ότι χρησιμοποιείτε το προαιρετικό LED και την αντίσταση, αλλά δεν είναι απαραίτητα.
Βήμα 1: Ρύθμιση του κυκλώματος
Η εγκατάσταση του υλικού είναι πολύ απλή για αυτό το έργο. Ρυθμίστε το διοικητικό συμβούλιο σύμφωνα με αυτό το διάγραμμα.
Το μοβ καλώδιο συνδέει τον πείρο D0 στη μία πλευρά του κουμπιού. Το πράσινο καλώδιο συνδέει την άλλη πλευρά του κουμπιού με τον ακροδέκτη RST . Το μπλε σύρμα τρέχει από τον ακροδέκτη D1 στην αντίσταση και το LED. Το αρνητικό πόδι του LED συνδέεται με τον ακροδέκτη GND του NodeMCU.
Όταν το breadboard έχει ρυθμιστεί, θα πρέπει να φαίνεται κάτι τέτοιο:
Αν αναρωτιέστε πώς έχω το LED που πηγαίνει στο pin pin χρησιμοποιώντας μόνο τα μικροσκοπικά κομμάτια του καλωδίου, το γρήγορο μάθημα συντριβής breadboard Τι είναι ένα Breadboard και πώς λειτουργεί; Ένα γκολφ γρήγορης σύγκρουσης Τι είναι το Breadboard και πώς λειτουργεί; Ένα μάθημα γρήγορης σύγκρουσης Θέλετε να μάθετε ηλεκτρονικά είδη DIY; Ίσως έχετε λάβει ένα breadboard στο κιτ εκκίνησης. Αλλά τι είναι ένα breadboard και πώς λειτουργεί; Διαβάστε περισσότερα πρέπει να βοηθήσετε να ξεκαθαρίσετε! Ελέγξτε τη ρύθμισή σας και συνδέστε το NodeMCU στον υπολογιστή μέσω USB.
Βήμα 2: Ρύθμιση του IDE
Πριν συνεχίσετε με την κωδικοποίηση, πρέπει να κάνετε κάποια προετοιμασία. Εάν δεν το έχετε ήδη, ρυθμίστε το IDE του Arduino για να αναγνωρίσετε την πλακέτα NodeMCU. Μπορείτε να το προσθέσετε στη λίστα των πινάκων σας μέσω του Αρχείου> Προτιμήσεις .
Μπορείτε να βρείτε πιο λεπτομερή επεξήγηση αυτού του βήματος στο άρθρο εισαγωγής του NodeMCU.
Απαιτούνται δύο βιβλιοθήκες για αυτό το έργο. Μεταβείτε στην επιλογή Σκίτσο> Συμπερίληψη βιβλιοθήκης> Διαχείριση βιβλιοθηκών . Αναζητήστε το ESP8266WIFI από τον Ivan Grokhotkov και εγκαταστήστε το. Αυτή η βιβλιοθήκη είναι γραμμένη για τη δημιουργία συνδέσεων Wi-Fi με την πλακέτα NodeMCU.
Στη συνέχεια αναζητήστε το IFTTTWebhook από τον John Romkey και εγκαταστήστε την τελευταία έκδοση. Αυτή η βιβλιοθήκη έχει σχεδιαστεί για να απλοποιεί τη διαδικασία αποστολής webhooks στο IFTTT.
Αυτή είναι όλη η προετοιμασία που χρειαζόμαστε, αφήνει κώδικα!
Πώς θα λειτουργήσει ο Κώδικας
Θα χρησιμοποιήσουμε τη βιβλιοθήκη ESP8266WIFI για να δημιουργήσουμε μια σύνδεση Wi-Fi. Η βιβλιοθήκη IFTTTWebhooks υποβάλλει αίτημα στο IFTTT - σε αυτή την περίπτωση, για να δημοσιεύσετε στο Twitter. Στη συνέχεια, δώστε εντολή στην πλακέτα NodeMCU να κοιμάται όταν δεν χρησιμοποιείται για εξοικονόμηση ενέργειας.
Όταν πιέσετε το κουμπί, θα συνδέσει τους ακροδέκτες D0 και RST . Αυτό επαναφέρει τον πίνακα και η διαδικασία ξανασυμβεί.
Το μεγαλύτερο μέρος του κώδικα σε αυτό το σεμινάριο είναι αρκετά απλό για αρχάριους. Τούτου λεχθέντος, αν ξεκινάτε, θα το βρείτε πολύ πιο εύκολο να καταλάβετε αφού ακολουθήσετε τον αρχαίο οδηγό του Arduino.
Αυτό το σεμινάριο περνάει από τον κώδικα σε κομμάτια για να βοηθήσει με την κατανόηση. Εάν θέλετε να πάτε κατευθείαν στην επιχείρηση, μπορείτε να βρείτε τον πλήρη κωδικό στο Pastebin. Σημειώστε ότι θα πρέπει ακόμα να συμπληρώσετε τα διαπιστευτήρια Wi-Fi και IFTTT σε αυτόν τον κώδικα για να λειτουργήσει!
Βήμα 3: Έλεγχος βαθιάς ύπνου
Αρχικά, θα δημιουργήσουμε μια απλή δοκιμασία για να δείξουμε πόσο βαθιά λειτουργεί ο ύπνος. Ανοίξτε ένα νέο σκίτσο στο ID του Arduino. Καταχωρίστε τα ακόλουθα δύο κομμάτια κώδικα.
#include #include #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #define password "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Εδώ, συμπεριλαμβάνουμε τις βιβλιοθήκες μας, μαζί με τον ορισμό ορισμένων μεταβλητών που θα χρειαστούμε στο σκίτσο μας. Θα παρατηρήσετε ότι το ledPin και το wakePin αριθμούνται διαφορετικά εδώ σε σύγκριση με το διάγραμμα Fritzing παραπάνω. Το NodeMCU έχει διαφορετικό pinout σε πίνακες Arduino. Αυτό όμως δεν είναι πρόβλημα, λόγω του εύχρηστου αυτού διαγράμματος:
Τώρα δημιουργήστε μια λειτουργία ρύθμισης:
void setup() { Serial.begin(115200); while(!Serial) { } Serial.println(" ");// print an empty line before and after Button Press Serial.println("Button Pressed"); Serial.println(" ");// print an empty line ESP.deepSleep(wakePin); }
Εδώ, δημιουργήσαμε τη σειριακή θύρα και χρησιμοποιήσαμε ένα βρόχο για να περιμένουμε μέχρι να αρχίσει. Δεδομένου ότι αυτός ο κωδικός θα ενεργοποιηθεί μετά την πίεση του πλήκτρου επαναφοράς, εκτυπώνουμε το "Button Pressed" στη σειριακή οθόνη. Στη συνέχεια, λέμε στο NodeMCU να πάει σε βαθύ ύπνο μέχρι να πατηθεί το κουμπί που συνδέει το wakePin με τον ακροδέκτη RST .
Τέλος, για έλεγχο, προσθέστε αυτό στη μέθοδο του βρόχου () :
void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed"); }
Συνήθως, τα σκίτσα Arduino εκτελούν συνεχώς τη λειτουργία βρόχου μετά τη ρύθμιση. Εφόσον στέλνουμε το σκάφος στον ύπνο πριν τελειώσει η εγκατάσταση, ο βρόχος δεν τρέχει ποτέ.
Αποθηκεύστε το σκίτσο και ανεβάστε το στο σκάφος. Ανοίξτε τη σειριακή οθόνη και θα πρέπει να δείτε το κουμπί "Πατημένο πλήκτρο". Κάθε φορά που ενεργοποιείται το κουμπί, ο πίνακας επαναφέρεται και το μήνυμα εκτυπώνεται εκ νέου. Δουλεύει!
Μια σημείωση σχετικά με τη σειριακή οθόνη
Μπορεί να έχετε παρατηρήσει μερικούς χαρακτήρες ανοησία στη σειριακή οθόνη κατά τη διάρκεια ορισμένων από τα έργα σας. Αυτό οφείλεται συνήθως στο να μην ρυθμίσετε τη σειριακή οθόνη στην ίδια ταχύτητα μετάδοσης με την τιμή Serial.begin (XXXX) .
Πολλοί οδηγοί προτείνουν την έναρξη της σειριακής σύνδεσης με ρυθμό baud 115200 για ένα τέτοιο έργο. Δοκίμασα πολλούς συνδυασμούς και όλοι είχαν ποικίλους βαθμούς gibberish πριν και μετά από σειριακά μηνύματα. Σύμφωνα με διάφορες θέσεις του φόρουμ, αυτό θα μπορούσε να οφείλεται σε ένα ελαττωματικό ζήτημα συμβιβασμού με το συμβούλιο ή το λογισμικό. Καθώς δεν επηρεάζει το έργο πολύ άσχημα, επιλέγω να προσποιούμαι ότι δεν συμβαίνει.
Εάν αντιμετωπίζετε προβλήματα με τη σειριακή οθόνη, δοκιμάστε διαφορετικές ταχύτητες baud και δείτε ποιες είναι οι καλύτερες για εσάς.
Βήμα 4: Σύνδεση με Wi-Fi
Τώρα δημιουργήστε μια λειτουργία για σύνδεση στο δίκτυο Wi-Fi.
void connectToWifi() { Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name //Serial.print(ssid); WiFi.begin(ssid, password); Serial.println(" ");// print an empty line Serial.print("Attempting to connect: "); //try to connect for 10 seconds int i = 10; while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } Serial.println(" ");// print an empty line //print connection result if(WiFi.status() == WL_CONNECTED){ Serial.print("Connected."); Serial.println(" ");// print an empty line Serial.print("NodeMCU ip address: "); Serial.println(WiFi.localIP()); } else { Serial.println("Connection failed - check your credentials or connection"); } }
Αυτή η μέθοδος προσπαθεί να συνδεθεί στο δίκτυό σας δέκα φορές με ένα δευτερόλεπτο ενδιάμεσα. Η επιτυχία ή η αποτυχία της σύνδεσης εκτυπώνεται στη σειριακή οθόνη.
Βήμα 5: Κλήση της μεθόδου σύνδεσης
Αυτή τη στιγμή, το connectToWifi () δεν καλείται ποτέ. Προσθέστε μια κλήση στη λειτουργία ρύθμισης μεταξύ του μηνύματος "Πιέζοντας το κουμπί" και στέλνοντας την πλακέτα στον ύπνο.
connectToWifi();
Σε περίπτωση που αναρωτιέστε πού συμβαίνει αυτό, θα πρέπει να μοιάζει με αυτό:
Στο επάνω μέρος του σκίτσου αντικαταστήστε τις μεταβλητές ssid και κωδικού πρόσβασης με τα διαπιστευτήριά σας Wi-Fi. Αποθηκεύστε το σκίτσο σας και ανεβάστε το στο σκάφος.
Τώρα όταν η πλακέτα ξεκινά, θα επιχειρήσει να συνδεθεί στο δίκτυό σας Wi-Fi, πριν επιστρέψει στη λειτουργία ρύθμισης. Τώρα, μπορείτε να ρυθμίσετε την ενσωμάτωση IFTTT.
Βήμα 6: Εγκατάσταση της ενσωμάτωσης IFTTT
Το IFTTT επιτρέπει την ενοποίηση με μια μεγάλη γκάμα υπηρεσιών ιστού. Το χρησιμοποιήσαμε στο εκπαιδευτικό μας διήγημα Wi-Fi PC tower LED για να στείλουμε μια ειδοποίηση κάθε φορά που λαμβάνουμε ένα νέο μήνυμα ηλεκτρονικού ταχυδρομείου. Σήμερα θα το χρησιμοποιήσουμε για να στείλουμε ένα τιτίβισμα με το πάτημα ενός κουμπιού.
Πλοηγηθείτε στη σελίδα My Applets και επιλέξτε New Applet
Κάντε κλικ στο + αυτό και συνδεθείτε στο Webhooks . Επιλέξτε "Λήψη αιτήματος ιστού" και ονομάστε το συμβάν σας. Κρατήστε το απλό ! Σημειώστε το όνομα του συμβάντος, θα πρέπει να το προσθέσετε αργότερα στον κώδικα NodeMCU. Κάντε κλικ στην επιλογή "Δημιουργία σκανδαλισμού" .
Τώρα επιλέξτε + αυτό . Αναζητήστε την υπηρεσία Twitter και συνδεθείτε με αυτήν - θα πρέπει να την εξουσιοδοτήσετε να δημοσιεύσει στο λογαριασμό σας στο Twitter. Επιλέξτε "Δημοσίευση tweet" και επιλέξτε το μήνυμά σας.
Η επόμενη οθόνη θα σας ζητήσει να ελέγξετε την εφαρμογή. Κάντε κλικ στο τέλος. Αυτό είναι!
Βήμα 7: Προσθήκη των διαπιστευτηρίων IFTTT στον κώδικα
Πίσω στο ID του Arduino θα πρέπει να προσθέσετε το κλειδί API του IFTTT και το όνομα του συμβάντος στις καθορισμένες μεταβλητές. Για να βρείτε το κλειδί API, μεταβείτε στο My Applets και επιλέξτε Webhooks στην καρτέλα Υπηρεσίες . Επιλέξτε Τεκμηρίωση για να αποκτήσετε πρόσβαση στο κλειδί σας.
Αντιγράψτε το κλειδί και το όνομα του συμβάντος στον κώδικα σας, αντικαθιστώντας τα προσωρινά ονόματα που έχουν οριστεί γι 'αυτά.
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Σημειώστε ότι τα ανεστραμμένα κόμματα πρέπει να μείνουν, αντικαταστήστε μόνο το κείμενο.
Μεταξύ της κλήσης του connectToWifi () και της αποστολής της κάρτας σε ύπνο, δημιουργήστε μια παρουσία του αντικειμένου βιβλιοθήκης IFTTTWebhook. Το LED σηματοδοτεί την ολοκλήρωση της εργασίας πριν αρχίσει ξανά ο βαθύς ύπνος.
//just connected to Wi-Fi IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger(); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); //now sending board to sleep
Η ενεργοποίηση κλήσης στο αντικείμενο αγκίστρου ενεργοποιεί τη μικροεφαρμογή IFTTT και θα πρέπει να δημοσιεύει στο λογαριασμό σας στο Twitter. Αποθηκεύστε το σκίτσο και ανεβάστε το. Τώρα πρέπει να έχετε ένα πλήρως λειτουργικό κουμπί tweeting.
Αν δεν φαίνεται να λειτουργεί, ελέγξτε προσεκτικά τον κωδικό και τα διαπιστευτήρια σας για λάθη. Αν πραγματικά κολλήσετε, πάρτε τον πλήρη κωδικό από ψηλά και συγκρίνετε τον με τον δικό σας.
Εγινε! Πώς μπορείτε να το βελτιώσετε περαιτέρω;
Αυτή είναι μια βασική έκδοση ενός κουμπιού Wi-Fi, αλλά υπάρχουν πολλοί τρόποι με τους οποίους θα μπορούσε να βελτιωθεί. Για απλότητα, η σύνδεση USB χρησιμοποιείται εδώ. Μια μπαταρία θα το έκανε εντελώς κινητό, και μια υπόθεση που κρατά το κύκλωμα θα ήταν το τέλειο αρχαίο σχέδιο 3D εκτύπωσης.
Παρά τη χρήση βαθιά ύπνου, μπορεί να βρείτε μια μπαταρία θα τελειώσει αρκετά γρήγορα. Υπάρχουν πολλές άκρες εξοικονόμησης ενέργειας Arduino που βοηθούν σε αυτά τα είδη έργων. Ενώ είναι πιο δύσκολο από αυτό το σεμινάριο, εάν κάνατε το δικό σας συνειδητό Arduino από την αρχή, ένα κουμπί Wi-Fi με μπαταρία θα μπορούσε να διαρκέσει μερικούς μήνες!
Αυτό το έργο θα έκανε το τέλειο για ένα απομακρυσμένο για έξυπνες οικιακές εφαρμογές. Υπάρχει ήδη ένα σημαντικό μέρος των μικροεφαρμογών οικιακής αυτοματοποίησης 10 από τις καλύτερες συνταγές IFTTT για Smart Home Automation 10 από τις καλύτερες συνταγές IFTTT για Smart Home Automation Οι σωστές συνταγές IFTTT για το έξυπνο σπίτι σας μπορούν να σας εξοικονομήσουν χρόνο, προσπάθεια και ενέργεια. Εδώ είναι δέκα από τα αγαπημένα μας για να ξεκινήσετε. Διαβάστε περισσότερα διαθέσιμα στο IFTTT. Μόλις έχετε τα βασικά κάτω, μπορείτε να χρησιμοποιήσετε σχεδόν οποιοδήποτε αισθητήρα ή διακόπτη για να ενεργοποιήσετε πρακτικά οποιαδήποτε υπηρεσία μπορείτε να φανταστείτε.
Πιστωτική εικόνα: Vadmary / Depositphotos
Εξερευνήστε περισσότερα σχετικά με: Arduino, DIY Project Tutorials.