Indholdsfortegnelse:

NodeMCU MQTT Iot Project - Switch -knap: 4 trin
NodeMCU MQTT Iot Project - Switch -knap: 4 trin

Video: NodeMCU MQTT Iot Project - Switch -knap: 4 trin

Video: NodeMCU MQTT Iot Project - Switch -knap: 4 trin
Video: MQTT ESP8266 NodeMCU Home Automation System with cheapest Cloud MQTT broker Reyax RYC1001 - IoT 2021 2024, Juli
Anonim
Image
Image

OSOYOO NodeMCU IOT Starter kit

Følg os venligst på facebook, find vores nye udgivne vare og del din idé og video om, hvordan du kreativt kan bruge vores produkter. Du kan få penge tilbage eller giveaway fra os! Facebook:

Youtube:

I denne lektion forbinder vi en switch -knap til NodeMCU og sender switchstatus til en MQTT -mægler. Når der trykkes på knappen, vil NodeMCU offentliggøre knapstatus "trykket" til MQTT -mægler, og MQTT -klienten vil abonnere på disse meddelelser. Når trykknappen slippes, sendes "ikke trykket".

Trin 1: Forberedelse

Forbindelsesgraf
Forbindelsesgraf

Hardware:

NodeMCU -kort x 1

Skift knap x 1

1K modstand x 1

Brødbræt x 1

Jumper ledninger

Software:

Arduino IDE (version 1.6.4+)

ESP8266 Board Package og den serielle portdriver

MQTT Client (MQTTBox her)

Arduino bibliotek: PubSubClient

Trin 2: Forbindelsesgraf

I denne lektion bruger vi D2 (GPIO4) til at styre kontakten, opsæt venligst hardwaren i henhold til forbindelsesgrafen.

Bemærk: 1k-modstanden bruges som en pull down-modstand, I et sådant kredsløb, når kontakten er lukket, har NodeMCU-indgangen en logisk høj værdi, men når kontakten er åben, trækker pull-down-modstanden indgangsspændingen ned til jorden (logisk nulværdi), hvilket forhindrer en udefineret tilstand ved indgangen.

Trin 3: Kode

Kode
Kode
Kode
Kode

Kopiér nedenstående kode til Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Brug NodeMCU sender switch -knapstatus til MQTT -klient via WiFi * Tutorial URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // knappen er forbundet til GPIO pin D1

// Opdater disse med værdier, der passer til dit netværk. const char*ssid = "********"; // læg din wifi ssid her const char*password = "********"; // sæt din wifi -adgangskode her. const char* mqtt_server = "mægler.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient -klient (espClient); lang sidsteMsg = 0; char msg [50];

ugid setup_wifi () {

forsinkelse (100); // Vi starter med at oprette forbindelse til et WiFi -netværk Serial.print ("Opretter forbindelse til"); Serial.println (ssid); WiFi.begin (ssid, adgangskode); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("WiFi tilsluttet"); Serial.println ("IP -adresse:"); Serial.println (WiFi.localIP ()); }

ugyldig tilbagekald (tegn* emne, byte* nyttelast, usigneret int -længde)

{} // afslut opkald

ugyldig forbindelse igen () {

// Sløjfe, indtil vi genopretter forbindelse, mens (! Client.connected ()) {Serial.print ("Forsøger MQTT -forbindelse …"); // Opret et tilfældigt klient-ID String clientId = "ESP8266Client-"; clientId += String (tilfældig (0xffff), HEX); // Forsøg at oprette forbindelse // hvis din MQTT -mægler har clientID, brugernavn og adgangskode // skift venligst følgende linje til if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ()))) {Serial.println ("forbundet"); // når den er tilsluttet MQTT -mægler, kan du abonnere på kommando, hvis nogen client.subscribe ("OsoyooCommand"); } ellers {Serial.print ("mislykkedes, rc ="); Serial.print (client.state ()); Serial.println ("prøv igen om 5 sekunder"); // Vent 5 sekunder, før forsinkelsen forsøger igen (5000); }}} // afslut forbindelse igen ()

ugyldig opsætning () {

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

void loop () {

hvis (! client.connected ()) {genforbind (); } client.loop (); længe nu = millis (); int status; // send besked hvert 2. sekund, hvis (nu - lastMsg> 2000) {lastMsg = nu; status = digitalRead (BUTTON_PIN); String msg = "Knapstatus:"; if (status == HIGH) {msg = msg+ "Presset"; forkælelsesmeddelelse [58]; msg.toCharArray (meddelelse, 58); Serial.println (besked); // offentliggøre sensordata til MQTT -mægler client.publish ("OsoyooData", meddelelse); } ellers {msg = msg+ "Ikke tryk"; forkælelsesmeddelelse [58]; msg.toCharArray (meddelelse, 58); Serial.println (besked); // offentliggøre sensordata til MQTT -mægler client.publish ("OsoyooData", meddelelse); }}}

Rediger koden, så den passer til dine egne WiFi- og MQTT -indstillinger som følgende operationer: 1) Hotspot -konfiguration: Find nedenfor kodelinjen, sæt din egen ssid og adgangskode der.

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

2) MQTT -serveradresseindstilling: Du kan bruge din egen MQTT -mægler -URL eller IP -adresse til at angive over mqtt_server -værdi. Du kan også bruge en berømt gratis MQTT-server til at teste projektet, f.eks. “Broker.mqtt-dashboard.com”, “iot.eclipse.org” osv.

const char* mqtt_server = “mægler.mqtt-dashboard.com”;

3) MQTT -klientindstillinger Hvis din MQTT -mægler kræver clientID, brugernavn og adgangskodegodkendelse, skal du ændre

hvis (client.connect (clientId.c_str ()))

Til

hvis (client.connect (clientId, userName, passWord)) // læg dit clientId/userName/passWord her

Hvis ikke, skal du bare beholde dem som standard. Efter at have gjort det, skal du vælge den tilsvarende korttype og porttype som nedenfor, og derefter uploade skitsen til NodeMCU.

  • Board:”NodeMCU 0.9 (ESP-12 Modul)”
  • CPU -frekvens:”80MHz” Flashstørrelse:”
  • 4M (3M SPIFFS)”
  • Uploadhastighed:”115200 ″
  • Port: Vælg din egen serielle port til din NodeMCU

Trin 4: MQTT -klientindstillinger

MQTT -klientindstillinger
MQTT -klientindstillinger
MQTT -klientindstillinger
MQTT -klientindstillinger

Hvis du ikke ved, hvordan du konfigurerer MQTT-klient, kan du besøge vores sidste artikel:

Emner Indstillinger: Emne at udgive: OsoyooCommand

Emne for at abonnere: OsoyooData

Kørende resultat

Når overførslen er udført, hvis wifi -hotspots navn og adgangskodeindstilling er ok, og MQTT -mægler er tilsluttet, skal du åbne Serial Monitor, du vil se følgende resultat: Fortsæt med at trykke på denne knap, Serial Monitor udsender "Knapstatus: Trykkes" hvert 2. sekund; når du slipper denne knap, udsender den serielle skærm "Knapstatus: Ikke trykket" hvert 2. sekund.

Anbefalede: