INHOUDSOPGAWE:

NodeMCU MQTT Iot -projek - skakelknoppie: 4 stappe
NodeMCU MQTT Iot -projek - skakelknoppie: 4 stappe

Video: NodeMCU MQTT Iot -projek - skakelknoppie: 4 stappe

Video: NodeMCU MQTT Iot -projek - skakelknoppie: 4 stappe
Video: tutorial install home assistant on stb 2024, November
Anonim
Image
Image

OSOYOO NodeMCU IOT Starter kit

Volg ons op facebook, vind ons nuwe item wat vrygestel is en deel u idee en video oor hoe ons ons produkte kreatief kan gebruik. U kan kontant terugbetaal of weggee van ons! Facebook:

Youtube:

In hierdie les sal ons 'n skakelknoppie aan die NodeMCU koppel en die skakelaarstatus na 'n MQTT -makelaar stuur. As die knoppie ingedruk word, sal NodeMCU die knoppiestatus "ingedruk" aan die MQTT -makelaar publiseer, en die MQTT -kliënt sal op hierdie boodskappe inteken. As die drukknop losgelaat word, word 'nie ingedruk' gestuur nie.

Stap 1: Voorbereiding

Verbindingsgrafiek
Verbindingsgrafiek

Hardeware:

NodeMCU -bord x 1

Skakelknoppie x 1

1K weerstand x 1

Broodbord x 1

Springdrade

Sagteware:

Arduino IDE (weergawe 1.6.4+)

ESP8266 Board Package en die Serial Port Driver

MQTT -kliënt (MQTTBox hier)

Arduino -biblioteek: PubSubClient

Stap 2: Verbindingsgrafiek

In hierdie les gebruik ons D2 (GPIO4) om die skakelaar te beheer; stel die hardeware op volgens die verbindingsgrafiek.

Let wel: die 1k-weerstand word gebruik as 'n aftrekweerstand; in so 'n stroombaan, as die skakelaar gesluit is, het die NodeMCU-ingang 'n logiese hoë waarde, maar as die skakelaar oop is, trek die aftrekweerstand die insetspanning tot op die grond (logiese nulwaarde), wat 'n ongedefinieerde toestand by die invoer voorkom.

Stap 3: Kodeer

Kode
Kode
Kode
Kode

Kopieer die onderstaande kode na Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Gebruik die NodeMCU stuur die skakelaarstatus na die MQTT -kliënt via WiFi * Tutoriaal -URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // -knoppie is gekoppel aan GPIO -pen D1

// Werk hierdie op met waardes wat geskik is vir u netwerk. const char*ssid = "********"; // sit jou wifi ssid hier const char*password = "********"; // sit jou wifi wagwoord hier. const char* mqtt_server = "makelaar.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient -kliënt (espClient); lang laasteMsg = 0; char msg [50];

ongeldig setup_wifi () {

vertraging (100); // Ons begin deur aan te sluit op 'n WiFi -netwerk Serial.print ("Koppel aan"); Serial.println (ssid); WiFi.begin (ssid, wagwoord); terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (500); Serial.print ("."); } randomSeed (mikros ()); Serial.println (""); Serial.println ("WiFi gekoppel"); Serial.println ("IP -adres:"); Serial.println (WiFi.localIP ()); }

nietige terugbel (char* onderwerp, byte* laai, ongetekende int lengte)

{} // beëindig terugbel

leemte herkoppel () {

// Herhaal totdat ons weer verbind is terwyl (! Client.connected ()) {Serial.print ("Poging tot MQTT -verbinding …"); // Skep 'n ewekansige kliënt-ID String clientId = "ESP8266Client-"; clientId += String (ewekansig (0xffff), HEX); // Probeer om aan te sluit // as u MQTT -makelaar clientID, gebruikersnaam en wagwoord het // verander die volgende reël na if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ()))) {Serial.println ("verbind"); // sodra u gekoppel is aan die MQTT -makelaar, teken die opdrag in, indien enige client.subscribe ("OsoyooCommand"); } anders {Serial.print ("misluk, rc ="); Serial.print (client.state ()); Serial.println ("probeer weer oor 5 sekondes"); // Wag 5 sekondes voordat die vertraging weer probeer (5000); }}}} // sluit weer aan ()

ongeldige opstelling () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (terugbel); pinMode (BUTTON_PIN, INPUT); }

leemte -lus () {

as (! client.connected ()) {heraansluit (); } client.loop (); nou lank = millis (); int status; // stuur elke 2 sekondes 'n boodskap as (nou - lastMsg> 2000) {lastMsg = nou; status = digitalRead (BUTTON_PIN); String msg = "Knoppie status:"; if (status == HOOG) {msg = msg+ "Gedruk"; char boodskap [58]; msg.toCharArray (boodskap, 58); Serial.println (boodskap); // publiseer sensordata aan die MQTT -makelaar client.publish ("OsoyooData", boodskap); } anders {msg = msg+ "Nie druk nie"; char boodskap [58]; msg.toCharArray (boodskap, 58); Serial.println (boodskap); // publiseer sensordata aan die MQTT -makelaar client.publish ("OsoyooData", boodskap); }}}

Wysig die kode om by u eie WiFi- en MQTT -instellings te pas soos volg: 1) Hotspot -konfigrasie: vind onder die kodelyn, sit u eie ssid en wagwoord daar.

const char* ssid = "your_hotspot_ssid"; const char* password = "your_hotspot_password";

2) MQTT -bedieneradresinstelling: u kan u eie MQTT -makelaar -URL of IP -adres gebruik om die bogenoemde mqtt_server -waarde in te stel. U kan ook 'n bekende MQTT-bediener gebruik om die projek te toets, soos 'broker.mqtt-dashboard.com', 'iot.eclipse.org', ens.

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

3) MQTT -kliëntinstellings As u MQTT -makelaar clientID, gebruikersnaam en wagwoordverifikasie benodig, moet u verander

as (client.connect (clientId.c_str ()))

Aan

as (client.connect (clientId, userName, passWord)) // plaas u clientId/userName/passWord hier

As dit nie die geval is nie, hou dit dan as standaard; kies dan die ooreenstemmende bordtipe en poorttipe soos hieronder, en laai dan die skets op na die NodeMCU.

  • Raad: "NodeMCU 0.9 (ESP-12-module)"
  • CPU -frekwensie: "80MHz" flitsgrootte:"
  • 4M (3M SPIFFS)”
  • Oplaaisnelheid:”115200 ″
  • Poort: kies u eie seriële poort vir u NodeMCU

Stap 4: MQTT -kliëntinstellings

MQTT -kliëntinstellings
MQTT -kliëntinstellings
MQTT -kliëntinstellings
MQTT -kliëntinstellings

As u nie weet hoe om die MQTT-kliënt op te stel nie, besoek ons laaste artikel:

Onderwerpe -instellings: Onderwerp om te publiseer: OsoyooCommand

Onderwerp om in te teken: OsoyooData

Lopende resultaat

Sodra die oplaai voltooi is, as die naam van die wifi -hotspot en die wagwoord goed is en die MQTT -makelaar gekoppel is, maak die Serial Monitor oop, en u sal die volgende resultaat sien: Hou aan om op hierdie knoppie te druk, die seriële monitor sal elke 2 sekondes 'Knoppie status: ingedruk' lewer; sodra u hierdie knoppie loslaat, lewer die seriële monitor elke 2 sekondes 'Knoppie status: nie ingedruk' nie.

Aanbeveel: