Innholdsfortegnelse:

NodeMCU MQTT Iot Project - Switch Button: 4 Steps
NodeMCU MQTT Iot Project - Switch Button: 4 Steps

Video: NodeMCU MQTT Iot Project - Switch Button: 4 Steps

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

OSOYOO NodeMCU IOT Startsett

Følg oss på facebook, finn vårt nye utgitte element og del ideen din og videoen om hvordan du kan bruke produktene våre kreativt. Du kan få penger tilbake eller gi fra oss! Facebook:

Youtube:

I denne leksjonen vil vi koble en bryterknapp til NodeMCU, og sende bryterstatusen til en MQTT -megler. Når du trykker på knappen, vil NodeMCU publisere knappestatusen "trykket" til MQTT -megler, og MQTT -klienten vil abonnere på disse meldingene. Når trykknappen slippes, sendes "ikke trykket".

Trinn 1: Forberedelse

Tilkoblingsgraf
Tilkoblingsgraf

Maskinvare:

NodeMCU -kort x 1

Bryterknapp x 1

1K motstand x 1

Brødbrett x 1

Jumper ledninger

Programvare:

Arduino IDE (versjon 1.6.4+)

ESP8266 brettpakke og seriell portdriver

MQTT Client (MQTTBox her)

Arduino bibliotek: PubSubClient

Trinn 2: Tilkoblingsgraf

I denne leksjonen bruker vi D2 (GPIO4) til å kontrollere bryteren. Vennligst sett opp maskinvaren i henhold til tilkoblingsgrafen.

Merk: 1k-motstanden brukes som en nedtrekksmotstand. I en slik krets, når bryteren er lukket, har NodeMCU-inngangen en logisk høy verdi, men når bryteren er åpen, trekker nedtrekksmotstanden inngangsspenningen ned til bakken (logisk nullverdi), og forhindrer en udefinert tilstand ved inngangen.

Trinn 3: Kode

Kode
Kode
Kode
Kode

Kopier koden nedenfor til Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Bruk NodeMCU sender bryterknappstatus til MQTT -klient via WiFi * Opplærings -URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // -knappen er koblet til GPIO -pinne D1

// Oppdater disse med verdier som passer for nettverket ditt. const char*ssid = "********"; // legg wifi -ssid her const char*password = "********"; // legg wifi -passordet ditt her. const char* mqtt_server = "megler.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient -klient (espClient); lang sisteMsg = 0; røykemelding [50];

ugyldig setup_wifi () {

forsinkelse (100); // Vi starter med å koble til et WiFi -nettverk Serial.print ("Koble til"); Serial.println (ssid); WiFi.begin (ssid, passord); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("WiFi tilkoblet"); Serial.println ("IP -adresse:"); Serial.println (WiFi.localIP ()); }

ugyldig tilbakeringing (tegn* emne, byte* nyttelast, usignert int -lengde)

{} // avslutte tilbakeringing

ugyldig tilkobling () {

// Sløyfe til vi blir koblet til igjen mens (! Client.connected ()) {Serial.print ("prøver MQTT -tilkobling …"); // Lag en tilfeldig klient-ID String clientId = "ESP8266Client-"; clientId += String (tilfeldig (0xffff), HEX); // Prøv å koble til // hvis du MQTT -megler har clientID, brukernavn og passord // vennligst endre følgende linje til if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ()))) {Serial.println ("tilkoblet"); // når du er koblet til MQTT -megler, abonnerer du på kommando hvis noen klient.abonnerer ("OsoyooCommand"); } annet {Serial.print ("mislyktes, rc ="); Serial.print (client.state ()); Serial.println ("prøv igjen om 5 sekunder"); // Vent 5 sekunder før forsøk på nytt (5000); }}}} // avslutt tilkoblingen på nytt ()

ugyldig oppsett () {

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

void loop () {

if (! client.connected ()) {reconnect (); } client.loop (); lenge nå = millis (); int status; // send melding hvert 2. sekund hvis (nå - lastMsg> 2000) {lastMsg = nå; status = digitalRead (BUTTON_PIN); String msg = "Knappestatus:"; if (status == HIGH) {msg = msg+ "Presset"; røyemelding [58]; msg.toCharArray (melding, 58); Serial.println (melding); // publisere sensordata til MQTT megler client.publish ("OsoyooData", melding); } annet {msg = msg+ "Ikke trykk"; røyemelding [58]; msg.toCharArray (melding, 58); Serial.println (melding); // publisere sensordata til MQTT megler client.publish ("OsoyooData", melding); }}}

Rediger koden slik at den passer til dine egne WiFi- og MQTT -innstillinger som følgende operasjoner: 1) Hotspot Configration: Finn under kodelinjen, sett ditt eget ssid og passord der.

const char* ssid = “your_hotspot_ssid”; const char* password = “your_hotspot_password”;

2) MQTT -serveradresseinnstilling: Du kan bruke din egen MQTT -megler -URL eller IP -adresse for å angi over mqtt_server -verdien. Du kan også bruke en berømt gratis MQTT-server til å teste prosjektet, for eksempel “broker.mqtt-dashboard.com”, “iot.eclipse.org” etc.

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

3) MQTT -klientinnstillinger Hvis din MQTT -megler krever klient -ID, brukernavn og passordgodkjenning, må du endre

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

Til

if (client.connect (clientId, userName, passWord)) // legg ditt clientId/userName/passWord her

Hvis ikke, må du bare beholde dem som standard. Etter at du har gjort det, velger du korresponderende brettype og porttype som nedenfor, og laster deretter opp skissen til NodeMCU.

  • Styret:”NodeMCU 0.9 (ESP-12 Module)”
  • CPU -frekvens: "80MHz" Flash -størrelse:"
  • 4M (3M SPIFFS)”
  • Last opp hastighet:”115200 ″
  • Port: Velg din egen serieport for NodeMCU

Trinn 4: MQTT -klientinnstillinger

MQTT -klientinnstillinger
MQTT -klientinnstillinger
MQTT -klientinnstillinger
MQTT -klientinnstillinger

Hvis du ikke vet hvordan du konfigurerer MQTT-klienten, kan du gå til vår siste artikkel:

Emneinnstillinger: Emne å publisere: OsoyooCommand

Emne for å abonnere: OsoyooData

Løpende resultat

Når opplastingen er fullført, hvis wifi hotspot -navn og passordinnstilling er ok og MQTT -megler er tilkoblet, åpner du Serial Monitor, du vil se følgende resultat: Fortsett å trykke på denne knappen, Serial Monitor sender ut "Knappstatus: Trykt" hvert 2. sekund; når du slipper denne knappen, sender seriell monitor ut "Knappstatus: Ikke trykket" hvert 2. sekund.

Anbefalt: