Kazalo:

NodeMCU MQTT Iot Project - gumb za preklop: 4 koraki
NodeMCU MQTT Iot Project - gumb za preklop: 4 koraki

Video: NodeMCU MQTT Iot Project - gumb za preklop: 4 koraki

Video: NodeMCU MQTT Iot Project - gumb za preklop: 4 koraki
Video: ESP32 ALL IN ONE home automation module for home assistant 2024, Julij
Anonim
Image
Image

OSOYOO NodeMCU IOT Začetni komplet

Sledite nam na Facebooku, poiščite naš novi objavljeni izdelek in delite svojo idejo in video o tem, kako ustvarjalno uporabljati naše izdelke. Pri nas lahko dobite denar ali nagradno igro! Facebook:

Youtube:

V tej lekciji bomo gumb za preklop povezali z NodeMCU in stanje stikala poslali posredniku MQTT. Ko pritisnete gumb, bo NodeMCU objavil stanje gumba "pritisnjeno" posredniku MQTT in odjemalec MQTT se bo naročil na ta sporočila. Ko spustite gumb, bo poslano sporočilo »ni pritisnjeno«.

1. korak: Priprava

Graf povezave
Graf povezave

Strojna oprema:

Plošča NodeMCU x 1

Gumb za preklop x 1

1K upor x 1

Ogledna plošča x 1

Mostične žice

Programska oprema:

Arduino IDE (različica 1.6.4+)

Paket plošč ESP8266 in gonilnik za serijska vrata

Odjemalec MQTT (MQTTBox tukaj)

Knjižnica Arduino: PubSubClient

2. korak: Povezovalni graf

V tej lekciji uporabljamo D2 (GPIO4) za krmiljenje stikala. Prosimo, nastavite strojno opremo glede na grafikon povezave.

Opomba: 1k upor se uporablja kot izvlečni upor. V takem vezju, ko je stikalo zaprto, je vhod NodeMCU na logično visoki vrednosti, ko pa je stikalo odprto, spustni upor potegne vhodno napetost navzdol (logična ničelna vrednost), kar preprečuje nedefinirano stanje na vhodu.

3. korak: Koda

Koda
Koda
Koda
Koda

Kopirajte spodnjo kodo v Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * * _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Uporabite NodeMCU pošlje stanje gumba za preklop odjemalcu MQTT prek WiFi * URL vadnice: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // gumb je priključen na GPIO pin D1

// Posodobite jih z vrednostmi, primernimi za vaše omrežje. const char*ssid = "********"; // tukaj vstavite svoj wifi ssid const char*password = "********"; // tukaj vnesite geslo za wifi. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

Odjemalec PubSubClient (espClient); dolga lastMsg = 0; char msg [50];

void setup_wifi () {

zamuda (100); // Začnemo s povezavo z omrežjem WiFi Serial.print ("Povezovanje z"); Serial.println (ssid); WiFi.begin (ssid, geslo); while (WiFi.status ()! = WL_CONNECTED) {zamuda (500); Serial.print ("."); } randomSeed (mikro (()); Serial.println (""); Serial.println ("WiFi povezan"); Serial.println ("naslov IP:"); Serial.println (WiFi.localIP ()); }

void povratni klic (char* tema, bajt* koristna obremenitev, dolžina brez podpisane int)

{} // končaj povratni klic

void reconnect () {

// Zanka, dokler se znova ne povežemo while (! Client.connected ()) {Serial.print ("Poskus povezave MQTT …"); // Ustvari naključni ID odjemalca String clientId = "ESP8266Client-"; clientId += niz (naključno (0xffff), HEX); // Poskus povezave // če ima posrednik MQTT odjemalec, uporabniško ime in geslo // prosimo, da naslednjo vrstico spremenite v if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("povezan"); // ko se povežete s posrednikom MQTT, naročite ukaz, če je kateri koli client.subscribe ("OsoyooCommand"); } else {Serial.print ("ni uspelo, rc ="); Serial.print (client.state ()); Serial.println ("poskusite znova čez 5 sekund"); // Počakajte 5 sekund, preden zamudite ponovni poskus (5000); }}} // končaj ponovno povezavo ()

void setup () {

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

void loop () {

if (! client.connected ()) {ponovno povežite (); } client.loop (); dolgo zdaj = millis (); int status; // pošiljanje sporočila vsaki 2 sekundi if (now - lastMsg> 2000) {lastMsg = now; status = digitalno branje (BUTTON_PIN); String msg = "Status gumba:"; if (status == HIGH) {msg = msg+ "Pritisnjeno"; sporočilo char [58]; msg.toCharArray (sporočilo, 58); Serial.println (sporočilo); // objavi podatke senzorja posredniku MQTT client.publish ("OsoyooData", sporočilo); } else {msg = msg+ "Ne pritisnite"; sporočilo char [58]; msg.toCharArray (sporočilo, 58); Serial.println (sporočilo); // objavi podatke senzorja posredniku MQTT client.publish ("OsoyooData", sporočilo); }}}

Kodo uredite tako, da ustreza vašim lastnim nastavitvam WiFi in MQTT, na naslednji način: 1) Konfiguracija vroče točke: Poiščite spodnjo vrstico kode, vnesite svoj ssid in geslo.

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

2) Nastavitev naslova strežnika MQTT: Za nastavitev nad vrednost mqtt_server lahko uporabite svoj URL posrednika ali naslov IP posrednika MQTT. Za preizkus projekta lahko uporabite tudi kakšen znani brezplačni strežnik MQTT, na primer “broker.mqtt-dashboard.com”, “iot.eclipse.org” itd.

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

3) Nastavitve odjemalca MQTT Če vaš posrednik MQTT zahteva identifikacijo odjemalca, uporabniško ime in geslo, morate spremeniti

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

Za

if (client.connect (clientId, userName, passWord)) // tukaj vnesite vaš clientId/userName/passWord

Če ne, jih obdržite kot privzete. Po tem izberite ustrezno vrsto plošče in vrsto vrat, kot je prikazano spodaj, nato naložite skico v NodeMCU.

  • Plošča: "NodeMCU 0,9 (modul ESP-12)"
  • Frekvenca procesorja: "80MHz" Velikost bliskavice:"
  • 4M (3M SPIFFS)”
  • Hitrost nalaganja:”115200 ″
  • Vrata: Izberite svoja serijska vrata za svoj NodeMCU

4. korak: nastavitve odjemalca MQTT

Nastavitve odjemalca MQTT
Nastavitve odjemalca MQTT
Nastavitve odjemalca MQTT
Nastavitve odjemalca MQTT

Če ne veste, kako konfigurirati odjemalca MQTT, obiščite naš zadnji članek:

Nastavitve tem: Tema za objavo: OsoyooCommand

Tema za naročanje: OsoyooData

Tekaški rezultat

Ko je nalaganje končano, če sta ime in geslo dostopne točke Wi -Fi v redu in je posrednik MQTT povezan, odprite serijski monitor in videli boste naslednji rezultat: Nadaljujte s pritiskom na ta gumb, serijski monitor bo vsake 2 sekundi prikazal "Status gumba: pritisnjen"; ko enkrat spustite ta gumb, bo serijski monitor vsake 2 sekundi izpisal "Status gumba: ni pritisnjen".

Priporočena: