Sadržaj:

NodeMCU MQTT Iot projekat - dugme za prebacivanje: 4 koraka
NodeMCU MQTT Iot projekat - dugme za prebacivanje: 4 koraka

Video: NodeMCU MQTT Iot projekat - dugme za prebacivanje: 4 koraka

Video: NodeMCU MQTT Iot projekat - dugme za prebacivanje: 4 koraka
Video: Kako programirati ESP8266 ESP-01 Wi-Fi relejni modul 2024, Novembar
Anonim
Image
Image

OSOYOO NodeMCU IOT Starter kit

Pratite nas na facebooku, pronađite našu novu objavljenu stavku i podijelite svoju ideju i video o tome kako kreativno koristiti naše proizvode. Od nas možete dobiti gotovinu ili nagradnu igru! Facebook:

Youtube:

U ovoj lekciji ćemo spojiti dugme za prebacivanje na NodeMCU i status prebacivanja poslati posredniku MQTT. Kada je dugme pritisnuto, NodeMCU će objaviti status dugmeta „pritisnut“u MQTT brokeru i MQTT klijent će se pretplatiti na ove poruke. Kada pritisnete dugme, biće poslano „nije pritisnuto“.

Korak 1: Priprema

Grafikon povezivanja
Grafikon povezivanja

Hardver:

NodeMCU ploča x 1

Dugme za prebacivanje x 1

1K otpornik x 1

Oglasna ploča x 1

Žice za kratkospojnike

Softver:

Arduino IDE (verzija 1.6.4+)

Paket ploča ESP8266 i upravljački program za serijski port

MQTT klijent (MQTTBox ovdje)

Arduino biblioteka: PubSubClient

Korak 2: Grafikon povezivanja

U ovoj lekciji koristimo D2 (GPIO4) za kontrolu prekidača. Postavite hardver prema grafikonu veze.

Napomena: 1k otpornik koristi se kao otpornik za povlačenje. U takvom krugu, kada je sklopka zatvorena, ulaz NodeMCU ima logičku visoku vrijednost, ali kada je prekidač otvoren, padajući otpornik povlači ulazni napon do temelja (logička nulta vrijednost), sprječavajući nedefinirano stanje na ulazu.

Korak 3: Kodirajte

Kod
Kod
Kod
Kod

Kopirajte donji kod u Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * * _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Koristite NodeMCU šalje status dugmeta za prebacivanje MQTT klijentu putem WiFi -a * URL vodiča: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // tipka je spojena na GPIO pin D1

// Ažurirajte ih vrijednostima koje odgovaraju vašoj mreži. const char*ssid = "********"; // ovdje postavite svoj wifi ssid const char*password = "********"; // ovdje postavite svoju WiFi lozinku. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient klijent (espClient); long lastMsg = 0; char msg [50];

void setup_wifi () {

kašnjenje (100); // Počinjemo povezivanjem na WiFi mrežu Serial.print ("Povezivanje na"); Serial.println (ssid); WiFi.begin (ssid, lozinka); while (WiFi.status ()! = WL_CONNECTED) {kašnjenje (500); Serial.print ("."); } randomSeed (mikro (()); Serial.println (""); Serial.println ("WiFi povezan"); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); }

void povratni poziv (char* tema, bajt* korisni teret, nepotpisana int dužina)

{} // prekid povratnog poziva

void reconnect () {

// Ponavljamo dok se ponovo ne povežemo while (! Client.connected ()) {Serial.print ("Pokušaj MQTT veze …"); // Kreira nasumični ID klijenta String clientId = "ESP8266Client-"; clientId += String (nasumično (0xffff), HEX); // Pokušaj povezivanja // ako vaš MQTT posrednik ima clientID, korisničko ime i lozinku // promijenite sljedeći red u if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("povezano"); // kada se jednom povežete s posrednikom MQTT, naredba subscribe ako postoji neki client.subscribe ("OsoyooCommand"); } else {Serial.print ("nije uspjelo, rc ="); Serial.print (client.state ()); Serial.println ("pokušajte ponovo za 5 sekundi"); // Pričekajte 5 sekundi prije ponovnog pokušaja odgode (5000); }}} // prekini ponovno povezivanje ()

void setup () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (povratni poziv); pinMode (BUTTON_PIN, INPUT); }

void loop () {{100} {101}

if (! client.connected ()) {ponovno povezivanje (); } client.loop (); long now = millis (); int status; // šalje poruku svake 2 sekunde if (now - lastMsg> 2000) {lastMsg = now; status = digitalRead (BUTTON_PIN); String msg = "Status dugmeta:"; if (status == HIGH) {msg = msg+ "Pritisnuto"; char poruka [58]; msg.toCharArray (poruka, 58); Serial.println (poruka); // objaviti podatke senzora u MQTT brokeru client.publish ("OsoyooData", poruka); } else {msg = msg+ "Not Press"; char poruka [58]; msg.toCharArray (poruka, 58); Serial.println (poruka); // objaviti podatke senzora u MQTT brokeru client.publish ("OsoyooData", poruka); }}}

Uredite kôd tako da odgovara vašim vlastitim postavkama za WiFi i MQTT na sljedeći način: 1) Konfiguracija pristupne tačke: Pronađite donju liniju koda, stavite svoj ssid i lozinku tamo.

const char* ssid = “your_hotspot_ssid”; const char* password = “your_hotspot_password”;

2) Postavka adrese servera MQTT: Možete koristiti vlastiti URL ili IP adresu posrednika za MQTT da postavite iznad vrijednosti mqtt_servera. Takođe možete koristiti neki poznati besplatni MQTT server za testiranje projekta, poput „broker.mqtt-dashboard.com“, „iot.eclipse.org“itd.

const char* mqtt_server = “broker.mqtt-dashboard.com”;

3) Postavke klijenta MQTT Ako vaš MQTT posrednik zahtijeva identifikaciju klijenta, korisničko ime i lozinku, morate promijeniti

if (client.connect (clientId.c_str ()))

To

if (client.connect (clientId, userName, passWord)) // ovdje postavite svoj clientId/userName/passWord

Ako ne, samo ih zadržite kao zadane. Nakon toga odaberite odgovarajući tip ploče i tip porta kao što je dolje, a zatim prenesite skicu u NodeMCU.

  • Ploča:”NodeMCU 0.9 (modul ESP-12)”
  • Frekvencija procesora:”80MHz” Veličina blica:”
  • 4M (3M SPIFFS)”
  • Brzina otpremanja:”115200 ″
  • Port: Odaberite vlastiti serijski port za svoj NodeMCU

Korak 4: Postavke klijenta MQTT

Postavke klijenta MQTT
Postavke klijenta MQTT
Postavke klijenta MQTT
Postavke klijenta MQTT

Ako ne znate kako konfigurirati MQTT klijenta, posjetite naš zadnji članak:

Teme Postavke: Tema za objavljivanje: OsoyooCommand

Tema za pretplatu: OsoyooData

Running Result

Kada se učitavanje završi, ako je ime i lozinka za WiFi pristupnu tačku u redu i MQTT posrednik je povezan, otvorite serijski monitor, vidjet ćete sljedeći rezultat: Nastavite pritiskati ovo dugme, serijski monitor će prikazati „Status dugmeta: pritisnuto“svake 2 sekunde; nakon što otpustite ovo dugme, serijski monitor će svake 2 sekunde prikazivati „Status dugmeta: Nije pritisnuto“.

Preporučuje se: