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

NodeMCU MQTT Iot Project - Κουμπί εναλλαγής: 4 βήματα
NodeMCU MQTT Iot Project - Κουμπί εναλλαγής: 4 βήματα

Βίντεο: NodeMCU MQTT Iot Project - Κουμπί εναλλαγής: 4 βήματα

Βίντεο: NodeMCU MQTT Iot Project - Κουμπί εναλλαγής: 4 βήματα
Βίντεο: MQTT Protocol with NodeMCU ESP8266 Tutorial 2024, Νοέμβριος
Anonim
Image
Image

Κιτ εκκίνησης 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
Ρυθμίσεις πελάτη MQTT
Ρυθμίσεις πελάτη MQTT
Ρυθμίσεις πελάτη MQTT

Εάν δεν γνωρίζετε πώς να διαμορφώσετε το πρόγραμμα-πελάτη MQTT, επισκεφτείτε το τελευταίο μας άρθρο:

Ρυθμίσεις θεμάτων: Θέμα προς δημοσίευση: OsoyooCommand

Θέμα για εγγραφή: OsoyooData

Αποτέλεσμα εκτέλεσης

Μόλις ολοκληρωθεί η μεταφόρτωση, εάν το όνομα και ο κωδικός πρόσβασης Wi -Fi είναι εντάξει και ο μεσίτης MQTT είναι συνδεδεμένος, ανοίξτε το Serial Monitor, θα δείτε το ακόλουθο αποτέλεσμα: Συνεχίστε να πατάτε αυτό το κουμπί, η Serial Monitor θα βγάζει "Κατάσταση κουμπιού: Πατημένο" κάθε 2 δευτερόλεπτα Μόλις αφήσετε αυτό το κουμπί, η Σειριακή οθόνη θα εμφανίζει "Κατάσταση κουμπιού: Δεν πατήθηκε" κάθε 2 δευτερόλεπτα.

Συνιστάται: