Sadržaj:

NodeMCU MQTT Iot projekt - gumb za prebacivanje: 4 koraka
NodeMCU MQTT Iot projekt - gumb za prebacivanje: 4 koraka

Video: NodeMCU MQTT Iot projekt - gumb za prebacivanje: 4 koraka

Video: NodeMCU MQTT Iot projekt - gumb za prebacivanje: 4 koraka
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Studeni
Anonim
Image
Image

OSOYOO NodeMCU IOT Početni komplet

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

Youtube:

U ovoj lekciji povezat ćemo prekidač s NodeMCU -om i status prebacivanja poslati posredniku MQTT -a. Kada je gumb pritisnut, NodeMCU će objaviti status gumba "pritisnut" posredniku MQTT, a klijent MQTT će se pretplatiti na ove poruke. Kad otpustite gumb, bit će poslano "nije pritisnuto".

Korak 1: Priprema

Grafikon povezivanja
Grafikon povezivanja

Hardver:

NodeMCU ploča x 1

Gumb za prebacivanje x 1

1K otpornik x 1

Oglasna ploča x 1

Kratkospojne žice

Softver:

Arduino IDE (verzija 1.6.4+)

Paket ploča ESP8266 i upravljački program za serijski priključak

MQTT klijent (MQTTBox ovdje)

Arduino biblioteka: PubSubClient

Korak 2: Grafikon povezivanja

U ovoj lekciji koristimo D2 (GPIO4) za upravljanje prekidačem. Molimo postavite hardver prema grafikonu povezivanja.

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 dolje (vrijednost logičke nule), sprječavajući nedefinirano stanje na ulazu.

Korak 3: Kodirajte

Kodirati
Kodirati
Kodirati
Kodirati

Kopirajte donji kod u Arduino IDE:

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

int BUTTON_PIN = D2; // gumb je spojen 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 ("Spajanje na"); Serijski.println (ssid); WiFi.započni (ssid, lozinka); while (WiFi.status ()! = WL_CONNECTED) {odgoda (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, duljina nepotpisanog inta)

{} // prekid povratnog poziva

void reconnect () {

// Petlja dok se ponovno ne povežemo while (! Client.connected ()) {Serial.print ("Pokušaj MQTT veze …"); // Stvaranje slučajnog ID-a klijenta String clientId = "ESP8266Client-"; clientId += String (slučajni (0xffff), HEX); // Pokušaj povezivanja // ako vaš MQTT posrednik ima clientID, korisničko ime i lozinku // promijenite sljedeći redak u if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("povezan"); // 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 ponovno 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 = digitalno čitanje (BUTTON_PIN); String msg = "Status gumba:"; 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+ "Ne pritisnite"; 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 WiFi -a i MQTT -a na sljedeći način: 1) Konfiguracija žarišne točke: Pronađite donji redak koda, tamo postavite vlastiti ssid i lozinku.

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

2) Postavka adrese poslužitelja MQTT: Možete koristiti vlastiti URL ili IP adresu posrednika za MQTT za postavljanje iznad vrijednosti mqtt_servera. Također možete koristiti neki poznati besplatni MQTT poslužitelj za testiranje projekta, poput "broker.mqtt-dashboard.com", "iot.eclipse.org" itd.

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

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

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

Do

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

Ako nije, samo ih zadržite kao zadane. Nakon toga odaberite odgovarajuću vrstu ploče i vrstu priključka kao što je prikazano u nastavku, a zatim prenesite skicu na NodeMCU.

  • Ploča: "NodeMCU 0.9 (modul ESP-12)"
  • Frekvencija procesora:”80MHz” Veličina bljeskalice:”
  • 4M (3M SPIFFS)”
  • Brzina prijenosa:”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 klijent, posjetite naš zadnji članak:

Postavke tema: Tema za objavljivanje: OsoyooCommand

Tema za pretplatu: OsoyooData

Trčanje Rezultat

Nakon što je prijenos završen, ako su naziv i lozinka za WiFi pristupnu točku u redu i MQTT posrednik je povezan, otvorite Serijski monitor, vidjet ćete sljedeći rezultat: Nastavite pritiskati ovaj gumb, serijski monitor će prikazati "Status gumba: pritisnuto" svake 2 sekunde; nakon što otpustite ovaj gumb, serijski monitor će svake 2 sekunde prikazivati "Status gumba: Nije pritisnuto".

Preporučeni: