Sisukord:

NodeMCU MQTT Iot Project - lüliti nupp: 4 sammu
NodeMCU MQTT Iot Project - lüliti nupp: 4 sammu

Video: NodeMCU MQTT Iot Project - lüliti nupp: 4 sammu

Video: NodeMCU MQTT Iot Project - lüliti nupp: 4 sammu
Video: ESP8266 Smart Light Switch with Servo Motor 2024, Juuli
Anonim
Image
Image

OSOYOO NodeMCU IOT Stardikomplekt

Palun jälgige meid Facebookis, leidke meie uus avaldatud toode ja jagage oma ideed ning videot, kuidas meie tooteid loominguliselt kasutada. Meilt saate raha tagasi või kingitusi! Facebook:

Youtube:

Selles õppetükis ühendame lülitusnupu NodeMCU -ga ja saadame lüliti oleku MQTT maaklerile. Nupu vajutamisel avaldab NodeMCU nupu oleku “vajutatud” MQTT maaklerile ja MQTT klient tellib need sõnumid. Kui nupp vabastatakse, saadetakse teade „pole vajutatud”.

Samm: Ettevalmistus

Ühendusgraafik
Ühendusgraafik

Riistvara:

NodeMCU plaat x 1

Lülitusnupp x 1

1K takisti x 1

Leivalaud x 1

Jumper juhtmed

Tarkvara:

Arduino IDE (versioon 1.6.4+)

ESP8266 pardapakett ja jadapordi draiver

MQTT klient (MQTTBox siin)

Arduino raamatukogu: PubSubClient

2. samm: ühendusgraafik

Selles õppetükis kasutame lülitit juhtimiseks D2 (GPIO4), seadistage riistvara vastavalt ühenduse graafikule.

Märkus: 1k takisti kasutatakse tõmbetakistina. Sellises vooluahelas, kui lüliti on suletud, on NodeMCU sisend loogiliselt kõrge väärtus, kuid kui lüliti on avatud, tõmbab tõmbetakistus sisendpinget maapinnale (loogiline nullväärtus), vältides sisendis määratlemata olekut.

3. samm: kood

Kood
Kood
Kood
Kood

Kopeerige allolev kood Arduino IDE -sse:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Kasutage NodeMCU saadab WiFi kaudu MQTT kliendile lüliti nupu oleku * Õpetuse URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // nupp on ühendatud GPIO pistikuga D1

// Värskendage neid võrgule sobivate väärtustega. const char*ssid = "********"; // pane siia oma wifi ssid const char*password = "********"; // pane siia oma wifi parool. const char* mqtt_server = "maakler.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient klient (espClient); pikk lastMsg = 0; char msg [50];

void setup_wifi () {

viivitus (100); // Alustame WiFi -võrguga ühenduse loomisest Serial.print ("Ühendamine"); Serial.println (ssid); WiFi.begin (ssid, parool); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Seeria.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("WiFi ühendatud"); Serial.println ("IP -aadress:"); Serial.println (WiFi.localIP ()); }

tühine tagasihelistamine (sümbol* teema, bait* kasulik koormus, allkirjastamata int pikkus)

{} // tagasihelistamine

void reconnect () {

// Loop, kuni oleme uuesti ühendatud, kui (! Client.connected ()) {Serial.print ("MQTT ühenduse proovimine…"); // Loo juhuslik kliendi ID String clientId = "ESP8266Client-"; clientId += string (juhuslik (0xffff), HEX); // proovige ühendust luua // kui teil MQTT maakleril on kliendi ID, kasutajanimi ja parool // muutke järgmine rida väärtuseks if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("ühendatud"); // kui olete MQTT maakleriga ühendatud, tellige käsk, kui mõni klient on. tellige ("OsoyooCommand"); } else {Serial.print ("ebaõnnestus, rc ="); Serial.print (client.state ()); Serial.println ("proovi uuesti 5 sekundi pärast"); // Oodake 5 sekundit enne viivituse uuesti proovimist (5000); }}} // lõpetage uuesti ühendamine ()

tühine seadistus () {

Seriaalne algus (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (tagasihelistamine); pinMode (BUTTON_PIN, INPUT); }

void loop () {

if (! client.connected ()) {reconnect (); } klient.loop (); pikk nüüd = millis (); int staatus; // saata sõnum iga 2 sekundi tagant, kui (nüüd - lastMsg> 2000) {lastMsg = now; olek = digitalRead (BUTTON_PIN); String msg = "Nupu olek:"; if (olek == KÕRGE) {msg = msg+ "Vajutatud"; char sõnum [58]; msg.toCharArray (sõnum, 58); Serial.println (sõnum); // avaldada andurite andmed MQTT maaklerile client.publish ("OsoyooData", teade); } else {msg = msg+ "Not Press"; char sõnum [58]; msg.toCharArray (sõnum, 58); Serial.println (sõnum); // avaldada andurite andmed MQTT maaklerile client.publish ("OsoyooData", teade); }}}

Muutke koodi, et see sobiks teie WiFi ja MQTT seadetega järgmiselt: 1) leviala konfiguratsioon: otsige koodirida alt, pange sinna oma SSID ja parool.

const char* ssid = “sinu_hotspot_ssid”; const char* parool = “your_hotspot_password”;

2) MQTT -serveri aadressi seadistus: saate kasutada oma MQTT -maakleri URL -i või IP -aadressi, et määrata väärtus mqtt_server kõrgemale. Projekti testimiseks võite kasutada ka mõnda kuulsat tasuta MQTT-serverit, näiteks „broker.mqtt-dashboard.com”, „iot.eclipse.org” jne.

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

3) MQTT kliendiseaded Kui teie MQTT maakler nõuab kliendi ID, kasutajanime ja parooli autentimist, peate muutma

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

To

if (client.connect (clientId, userName, passWord)) // pane siia oma clientId/userName/passWord

Kui ei, siis jätke need vaikimisi. Pärast seda valige vastav tahvli tüüp ja pordi tüüp, nagu allpool, ja laadige visand NodeMCU -sse.

  • Tahvel: "NodeMCU 0.9 (ESP-12 moodul)"
  • Protsessori sagedus: "80MHz" Välgu suurus:"
  • 4 miljonit (3 miljonit SPIFFS)”
  • Üleslaadimiskiirus: "115200"
  • Port: valige oma NodeMCU jaoks jadaport

Samm: MQTT kliendiseaded

MQTT kliendi seaded
MQTT kliendi seaded
MQTT kliendi seaded
MQTT kliendi seaded

Kui te ei tea, kuidas MQTT klienti seadistada, külastage meie viimast artiklit:

Teemade seaded: avaldatav teema: OsoyooCommand

Tellitav teema: OsoyooData

Jookstulemus

Kui üleslaadimine on lõppenud, kui wifi leviala nimi ja parooli seaded on korras ja MQTT maakler on ühendatud, avage jadamonitor, näete järgmist tulemust: Jätkake selle nupu vajutamist, jadamonitor väljastab iga kahe sekundi järel nupu oleku: vajutatud; kui olete selle nupu vabastanud, väljastab seeriamonitor iga kahe sekundi tagant „Nupu olek: pole vajutatud”.

Soovitan: