Sadržaj:
Video: NodeMCU MQTT Iot projekat - dugme za prebacivanje: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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
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
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
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:
Ploča za prebacivanje SIM kartice u "uradi sam": 7 koraka (sa slikama)
Panel za automatsko prebacivanje simulatora leta: Nakon što sam proveo mnogo godina u zajednici letećih sim -ova i uključio se u sve složenije avione, zaželio sam se čežnje za sposobnošću da držim ruke na fizičkim prekidačima umjesto da pokušavam letjeti desnom rukom dok koristim m
IOT projekat kućne automatizacije IOT #1: 7 koraka
IOT projekt kućne automatizacije IOT # 1: # UVOD Kućna automatizacija je proces automatizacije kućnih aparata poput izmjenične struje, ventilatora, hladnjaka, svjetala i lista se nastavlja, tako da se njima može upravljati telefonom, računarom ili čak daljinski. Ovaj projekt bavi se esp2866
Arduino ultrazvučni senzor za prebacivanje svjetla: 6 koraka
Arduino ultrazvučni senzorski prekidač svjetla: Hej momci, danas ću napraviti prekidač za svjetlo. Ponekad imam stvari u ruci, a nemam dodatnu ruku da upalim svjetlo, i to postaje neugodna situacija. Odlučio sam napraviti prekidač za svjetlo koji će mi pomoći da upalim lampicu
Dobijanje vremena s interneta pomoću ESP8266 - Projekat NTP sata sa ESP8266 Nodemcu: 5 koraka
Dobijanje vremena s interneta pomoću ESP8266 | Projekat NTP sata sa ESP8266 Nodemcu: U ovom vodiču ćemo vidjeti kako dobiti vrijeme koristeći ESP8266/nodemcu sa Arduino IDE -om. Dobijanje vremena posebno je korisno pri bilježenju podataka radi vremenske oznake vaših očitanja. Ako vaš ESP8266 projekt ima pristup internetu, možete dobiti vrijeme koristeći Network T
Sklop za prebacivanje zvuka s dvostrukim ulazom: 6 koraka (sa slikama)
Sklop za prebacivanje zvuka s dvostrukim ulazom: Jeste li ikada imali problem s jednim sistemom zvučnika i više ulaza koji zahtijevaju da svaki put kada želite slušati jedan izvor uključite i isključite audio kabele? Pa, imam rješenje za vas! Ovaj Instructable služi za stvaranje vrlo