Πίνακας περιεχομένων:
Βίντεο: NodeMCU MQTT Iot Project - Κουμπί εναλλαγής: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Κιτ εκκίνησης OSOYOO NodeMCU IOT
Ακολουθήστε μας στο facebook, βρείτε το νέο στοιχείο που κυκλοφόρησε και μοιραστείτε την ιδέα και το βίντεο σας σχετικά με τον τρόπο δημιουργικής χρήσης των προϊόντων μας. Μπορείτε να πάρετε πίσω μετρητά ή δώρο από εμάς! Facebook:
Youtube:
Σε αυτό το μάθημα, θα συνδέσουμε ένα κουμπί εναλλαγής στο NodeMCU και θα στείλουμε την κατάσταση του διακόπτη σε έναν μεσίτη MQTT. Όταν πατηθεί το κουμπί, το NodeMCU θα δημοσιεύσει την κατάσταση του κουμπιού "πατημένο" στον μεσίτη MQTT και ο πελάτης MQTT θα εγγραφεί σε αυτά τα μηνύματα. Όταν απελευθερωθεί το κουμπί, θα σταλεί "δεν πατήθηκε".
Βήμα 1: Προετοιμασία
Σκεύη, εξαρτήματα:
Πίνακας NodeMCU x 1
Κουμπί εναλλαγής x 1
1K αντίσταση x 1
Breadboard x 1
Καλώδια βραχυκυκλωτήρων
Λογισμικό:
Arduino IDE (έκδοση 1.6.4+)
ESP8266 Board Package and the Serial Port Driver
MQTT Client (MQTTBox εδώ)
Βιβλιοθήκη Arduino: PubSubClient
Βήμα 2: Γράφημα σύνδεσης
Σε αυτό το μάθημα, χρησιμοποιούμε το D2 (GPIO4) για τον έλεγχο του διακόπτη, ρυθμίστε το υλικό σύμφωνα με το γράφημα σύνδεσης.
Σημείωση: η αντίσταση 1k χρησιμοποιείται ως αντίσταση έλξης προς τα κάτω, Σε ένα τέτοιο κύκλωμα, όταν ο διακόπτης είναι κλειστός, η είσοδος NodeMCU είναι σε λογική υψηλή τιμή, αλλά όταν ο διακόπτης είναι ανοιχτός, η αντίσταση έλξης τραβά την τάση εισόδου κάτω στη γείωση (λογική μηδενική τιμή), αποτρέποντας μια απροσδιόριστη κατάσταση στην είσοδο.
Βήμα 3: Κωδικός
Αντιγράψτε τον παρακάτω κώδικα στο Arduino IDE:
/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * * _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Χρησιμοποιήστε το NodeMCU κατάσταση κουμπιού αποστολής διακόπτη σε πελάτη MQTT μέσω WiFi * URL διδασκαλίας: * CopyRight www.osoyoo.com */ #include #include
int BUTTON_PIN = D2; // το κουμπί είναι συνδεδεμένο στο pin GP1 GP1
// Ενημερώστε τα με τιμές κατάλληλες για το δίκτυό σας. const char*ssid = "********"; // βάλτε το wifi ssid σας εδώ const char*password = "********"; // βάλτε τον κωδικό πρόσβασης wifi σας εδώ. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";
WiFiClient espClient;
Πελάτης PubSubClient (espClient). long lastMsg = 0; char msg [50];
void setup_wifi () {
καθυστέρηση (100)? // Ξεκινάμε συνδέοντας σε δίκτυο WiFi Serial.print ("Σύνδεση σε"). Serial.println (ssid); WiFi.begin (ssid, κωδικός πρόσβασης); while (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (500); Serial.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("WiFi συνδεδεμένο"); Serial.println ("Διεύθυνση IP:"); Serial.println (WiFi.localIP ()); }
void callback (char* topic, byte* payload, unsigned int length)
{} // τερματισμός επανάκλησης
άκυρη επανασύνδεση () {
// Βρόχος μέχρι να επανασυνδεθούμε ενώ (! Client.connected ()) {Serial.print ("Προσπαθεί σύνδεση MQTT …"); // Δημιουργία τυχαίου αναγνωριστικού πελάτη String clientId = "ESP8266Client-"; clientId += String (τυχαία (0xffff), HEX); // Προσπάθεια σύνδεσης // εάν ο μεσίτης MQTT διαθέτει clientID, όνομα χρήστη και κωδικό πρόσβασης // αλλάξτε την ακόλουθη γραμμή σε if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("συνδεδεμένο"); // μόλις συνδεθεί με μεσίτη MQTT, εγγραφείτε εντολή εάν υπάρχει client.subscribe ("OsoyooCommand"); } else {Serial.print ("απέτυχε, rc ="); Serial.print (client.state ()); Serial.println ("δοκιμάστε ξανά σε 5 δευτερόλεπτα"); // Περιμένετε 5 δευτερόλεπτα πριν επαναλάβετε την καθυστέρηση (5000). }}} // τερματισμός επανασύνδεσης ()
void setup () {
Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (επανάκληση); pinMode (BUTTON_PIN, INPUT); }
void loop () {
if (! client.connected ()) {επανασύνδεση (); } client.loop (); καιρό τώρα = millis (); int κατάσταση? // αποστολή μηνύματος κάθε 2 δευτερόλεπτα εάν (τώρα - lastMsg> 2000) {lastMsg = τώρα; κατάσταση = digitalRead (BUTTON_PIN); String msg = "Κατάσταση κουμπιού:"; if (status == HIGH) {msg = msg+ "Pressed"; char μήνυμα [58]; msg.toCharArray (μήνυμα, 58); Serial.println (μήνυμα); // δημοσίευση δεδομένων αισθητήρα σε μεσίτη MQTT client.publish ("OsoyooData", μήνυμα); } else {msg = msg+ "Not Press"; char μήνυμα [58]; msg.toCharArray (μήνυμα, 58); Serial.println (μήνυμα); // δημοσίευση δεδομένων αισθητήρα σε μεσίτη MQTT client.publish ("OsoyooData", μήνυμα); }}}
Επεξεργαστείτε τον κώδικα ώστε να ταιριάζει στις δικές σας ρυθμίσεις WiFi και MQTT ως εξής: 1) Διαμόρφωση Hotspot: Βρείτε την παρακάτω γραμμή κώδικα, τοποθετήστε το δικό σας ssid και κωδικό πρόσβασης εκεί.
const char* ssid = "your_hotspot_ssid"; const char* password = "your_hotspot_password"?
2) Ρύθμιση διεύθυνσης διακομιστή MQTT: Μπορείτε να χρησιμοποιήσετε τη δική σας διεύθυνση URL μεσίτη MQTT ή διεύθυνση IP για να ορίσετε πάνω από την τιμή του διακομιστή mqtt_server. Μπορείτε επίσης να χρησιμοποιήσετε κάποιο διάσημο δωρεάν διακομιστή MQTT για να δοκιμάσετε το έργο, όπως "broker.mqtt-dashboard.com", "iot.eclipse.org" κ.λπ.
const char* mqtt_server = "broker.mqtt-dashboard.com";
3) Ρυθμίσεις πελάτη MQTT Εάν ο μεσίτης MQTT απαιτεί πιστοποίηση πελάτη, όνομα χρήστη και κωδικό πρόσβασης, πρέπει να αλλάξετε
εάν (client.connect (clientId.c_str ()))
Προς το
if (client.connect (clientId, userName, passWord)) // βάλτε το clientId/userName/passWord σας εδώ
Εάν όχι, απλώς διατηρήστε τα ως προεπιλεγμένα. Μετά από αυτό, επιλέξτε τον τύπο του αντίστοιχου πίνακα και τον τύπο θύρας όπως παρακάτω και, στη συνέχεια, ανεβάστε το σκίτσο στο NodeMCU.
- Πίνακας: "NodeMCU 0.9 (μονάδα ESP-12)"
- Συχνότητα CPU: "80MHz" Μέγεθος φλας:"
- 4M (3M SPIFFS)”
- Ταχύτητα μεταφόρτωσης:”115200
- Θύρα: Επιλέξτε τη δική σας σειριακή θύρα για το NodeMCU
Βήμα 4: Ρυθμίσεις πελάτη MQTT
Εάν δεν γνωρίζετε πώς να διαμορφώσετε το πρόγραμμα-πελάτη MQTT, επισκεφτείτε το τελευταίο μας άρθρο:
Ρυθμίσεις θεμάτων: Θέμα προς δημοσίευση: OsoyooCommand
Θέμα για εγγραφή: OsoyooData
Αποτέλεσμα εκτέλεσης
Μόλις ολοκληρωθεί η μεταφόρτωση, εάν το όνομα και ο κωδικός πρόσβασης Wi -Fi είναι εντάξει και ο μεσίτης MQTT είναι συνδεδεμένος, ανοίξτε το Serial Monitor, θα δείτε το ακόλουθο αποτέλεσμα: Συνεχίστε να πατάτε αυτό το κουμπί, η Serial Monitor θα βγάζει "Κατάσταση κουμπιού: Πατημένο" κάθε 2 δευτερόλεπτα Μόλις αφήσετε αυτό το κουμπί, η Σειριακή οθόνη θα εμφανίζει "Κατάσταση κουμπιού: Δεν πατήθηκε" κάθε 2 δευτερόλεπτα.
Συνιστάται:
Totoro Project - IoT & MQTT & ESP01: 7 βήματα (με εικόνες)
Totoro Project - IoT & MQTT & ESP01: Το Totoro Project είναι ένα ωραίο έργο IoT που μπορείτε να αντιγράψετε σε πολλές άλλες διαφορετικές μορφές. Χρησιμοποιώντας τον πίνακα ESP01, με το πρωτόκολλο MQTT, μπορείτε να επικοινωνήσετε την κατάσταση του κουμπιού στον μεσίτη MQTT (στο περίπτωση AdafruitIO). Ένας χρήσιμος οδηγός για MQTT και διαφήμιση
Τρόπος εναλλαγής δίσκου στο PS1 (ή PSX): 8 βήματα
Πώς να κάνετε εναλλαγή δίσκων στο PS1 (ή PSX): Αυτό θα σας δείξει μια διαδικασία βήμα προς βήμα σχετικά με τον τρόπο ανταλλαγής δίσκων στο Ps1 (PS PSX), αυτό είναι αρκετά δύσκολο. εάν αντιμετωπίζετε προβλήματα, επισκεφτείτε αυτόν τον ιστότοπο http://www.angelfire.com/ca/PlaystationHouse/SwapTrick.html
Κουτί εναλλαγής ήχου (1/8 " Στερεοφωνικά βύσματα): 3 βήματα
Audio Switcher Box (1/8 " Στερεοφωνικά βύσματα): Πέρασα πολλές ώρες ψάχνοντας στο διαδίκτυο, ψάχνοντας να αγοράσω ένα είδος 1/8 " κουτί εναλλαγής ήχου jack, αλλά χωρίς αποτέλεσμα. Έτσι, αποφάσισα να φτιάξω το δικό μου, και ήταν εκπληκτικά εύκολο. Για αυτό το έργο χρησιμοποίησα: 1 - 4x4x2 κουτί διακλάδωσης PVC (από τον Lowes)
Κύκλωμα εναλλαγής: 3 βήματα
Switching Circuit: Σε αυτό το Instructable (το πρώτο μου) έχω δημοσιεύσει το σχέδιο κυκλώματος με το οποίο τσακώνομαι αυτήν τη στιγμή για την ενδεχόμενη χρήση του στο πηνίο μου. Όταν τελειώσει, θα χρησιμεύσει ως διακόπτης ενεργοποίησης για ένα δεύτερο πηνίο. Οπως είπα; Εξακολουθώ να τροποποιώ το
Περιστροφή εναλλαγής ηλεκτρικού κατσαβιδιού: 4 βήματα
Εναλλαγή περιστροφής ηλεκτρικού κατσαβιδιού: Αντικατέστησα το παλιό μου ηλεκτρικό κατσαβίδι NiCd με φθηνό Li-Ion ($ 12,50). Αλλά το νέο μου ηλεκτρικό κατσαβίδι έχει μεγάλο πρόβλημα τουλάχιστον για μένα. Όταν πιέζω στο πάνω μέρος του διακόπτη ξεβιδώνει αλλά χρησιμοποίησα να βιδώσω όταν πιέζω την κορυφή … Αυτό είναι διδακτικό για