Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08
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
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
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
Č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:
Preklop, samodejna vtičnica z merjenjem toka v realnem času: 6 korakov
Preklopi, samodejna vtičnica z merjenjem toka v realnem času: zelo mi je všeč avtomatizacija, možnost nadzora, kdaj se mora kaj zgoditi. To je tisto, zaradi česar sem prišel na to idejo: avtomatska, samodejna vtičnica. Uporablja se lahko za načrtovanje, kdaj je treba prižgati luči, kdaj je treba telefone napolniti ali
Shelly EM samodejni preklop na osnovi proizvodnje sončnih plošč: 6 korakov
Shelly EM Auto Toggle, ki temelji na proizvodnji sončnih plošč: P1: poraba v hiši (npr. "P1 = 1 kW" ⇒ porabimo 1 kW) P2: proizvodnja sončnih celic (npr. "P2 = - 4 kW" ⇒ proizvajamo 4 kW) grelnik ob vklopu porabi 2kW. Vklopiti ga želimo, če sončna plošča proizvaja
Vadnica za preklop funkcije: 9 korakov
Vadnica za preklop funkcij: G å v p å https://www.arduino.cc
Samodejni preklop Bluetooth ojačevalnika: 3 koraki
Samodejni preklop ojačevalnika Bluetooth: V moji sprednji sobi imam na televizor priključene nekaj velikih zvočnikov in ojačevalnik. Vendar včasih nočem, da je televizor vklopljen, in nočem velikega okorelega ojačevalnika - samo želim nekaj glasbe v ozadju, ki se predvaja s telefona, da jo lahko vklopim in nadaljujem
Preklop treh bank LED z enim stikalom in Visuinom: 9 korakov (s slikami)
Preklop treh bank LED z enim stikalom in Visuinom: Ta projekt je nastal iz poskusa, ki sem ga želel preizkusiti, želel sem videti, koliko UV -svetlobe je potrebno, da vidim različne dele dolarjev in varnostne preglede. To mi je prišlo na misel in sem želel deliti ta navodila tukaj