Sadržaj:
Video: NodeMCU MQTT Iot projekt - gumb za prebacivanje: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
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
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
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
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:
Ploča za prebacivanje SIM kartice leta: 7 koraka (sa slikama)
Ploča za prebacivanje sim kartica za letače: Nakon što sam proveo mnogo godina u zajednici letećih sim -ova i uključio se u sve složenije zrakoplove, zaželio sam se želje za sposobnošću držanja ruku na fizičkim prekidačima umjesto pokušaja letenja desnom rukom dok koristim m
Fizičko dugme za prebacivanje: 4 koraka
Fizičko dugme za prebacivanje: Zdravo, ja sam Mesut. Toggl aplikacija za praćenje vremena jako mi se sviđa. Odlučio sam napraviti fizički Toggl gumb s jednostavnim setom potrepština
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 sustavom 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 govori o tome da napravite vrlo
Prebacivanje pristupa s Makeyjem Makeyjem: 3 koraka (sa slikama)
Pristup pomoću prekidača s Makeyjem Makeyjem: Ovaj sustav s dva prekidača koristi preklopni pladanj (koristila sam ovaj iz IKEA -e), vodljivi materijal (koristila sam aluminijsku i bakrenu traku, ali uvijek možete koristiti dobru staru kuhinjsku aluminijsku foliju), ljepljivu traku i Makey Makey za stvaranje prekidača samo za dodir. Sustav c
Automatsko prebacivanje Bluetooth pojačala: 3 koraka
Automatsko prebacivanje Bluetooth pojačala: U prednjoj sobi imam neke velike zvučnike i pojačalo spojeno na televizor. Međutim, ponekad ne želim uključiti televizor i ne želim veliko nespretno pojačalo - samo želim glazbu u pozadini, puštenu s telefona, koju mogu uključiti i nastaviti