Sisällysluettelo:

NodeMCU MQTT Iot Project - Kytkinpainike: 4 vaihetta
NodeMCU MQTT Iot Project - Kytkinpainike: 4 vaihetta

Video: NodeMCU MQTT Iot Project - Kytkinpainike: 4 vaihetta

Video: NodeMCU MQTT Iot Project - Kytkinpainike: 4 vaihetta
Video: MQTT Protocol with NodeMCU ESP8266 Tutorial 2024, Heinäkuu
Anonim
Image
Image

OSOYOO NodeMCU IOT Aloituspakkaus

Seuraa meitä Facebookissa, löydä uusi julkaistu tuotteemme ja jaa ideasi ja video tuotteidemme luovasta käytöstä. Meiltä saat rahat takaisin tai lahjoituksia! Facebook:

Youtube:

Tässä oppitunnissa liitämme kytkinpainikkeen NodeMCU: hon ja lähetämme kytkimen tilan MQTT -välittäjälle. Kun painiketta painetaan, NodeMCU julkaisee painikkeen tilan "painettuna" MQTT -välittäjälle ja MQTT -asiakas tilaa nämä viestit. Kun painike vapautetaan, “ei painettu” lähetetään.

Vaihe 1: Valmistelu

Yhteyskaavio
Yhteyskaavio

Laitteisto:

NodeMCU -levy x 1

Kytkinpainike x 1

1K vastus x 1

Leipälauta x 1

Hyppyjohdot

Ohjelmisto:

Arduino IDE (versio 1.6.4+)

ESP8266 -korttipaketti ja sarjaportin ohjain

MQTT -asiakas (MQTTBox täällä)

Arduino -kirjasto: PubSubClient

Vaihe 2: Yhteyskaavio

Tässä oppitunnissa käytämme D2: ta (GPIO4) kytkimen ohjaamiseen, asenna laitteisto kytkentäkaavion mukaan.

Huomautus: 1k-vastusta käytetään alasvetovastana, Tällaisessa piirissä, kun kytkin on suljettu, NodeMCU-tulo on loogisessa korkeassa arvossa, mutta kun kytkin on auki, alasvetovastus vetää syöttöjännitettä alas (looginen nolla -arvo), mikä estää määrittelemättömän tilan tulossa.

Vaihe 3: Koodi

Koodi
Koodi
Koodi
Koodi

Kopioi alla oleva koodi Arduino IDE: hen:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Käytä NodeMCU lähettää kytkimen painikkeen tilan MQTT -asiakkaalle WiFi -yhteyden kautta * Opetusohjelman URL -osoite: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // -painike on kytketty GPIO -nastaan D1

// Päivitä nämä verkkoosi sopivilla arvoilla. const char*ssid = "********"; // laita wifi ssid tänne const char*password = "********"; // laita wifi -salasanasi tähän. const char* mqtt_server = "välittäjä.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient -asiakas (espClient); pitkä lastMsg = 0; char msg [50];

void setup_wifi () {

viive (100); // Aloitamme yhdistämällä WiFi -verkkoon Serial.print ("Connecting to"); Sarja.println (ssid); WiFi.begin (ssid, salasana); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } satunnaisiemen (micros ()); Serial.println (""); Serial.println ("WiFi -yhteys"); Serial.println ("IP -osoite:"); Serial.println (WiFi.localIP ()); }

mitätön takaisinsoitto (char* aihe, tavu* hyötykuorma, allekirjoittamaton int pituus)

{} // lopeta soittopyyntö

void reconnect () {

// Kierrä, kunnes muodostamme yhteyden uudelleen (! Client.connected ()) {Serial.print ("Yritetään MQTT -yhteyttä…"); // Luo satunnainen asiakastunnus String clientId = "ESP8266Client-"; clientId += Merkkijono (satunnainen (0xffff), HEX); // Yritä muodostaa yhteys // jos MQTT -välittäjälläsi on asiakkaan tunnus, käyttäjätunnus ja salasana // muuta seuraava rivi tilaksi if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("kytketty"); // kun olet muodostanut yhteyden MQTT -välittäjään, tilaa komento, jos jokin asiakas.subscribe ("OsoyooCommand"); } else {Serial.print ("epäonnistui, rc ="); Serial.print (client.state ()); Serial.println ("yritä uudelleen 5 sekunnin kuluttua"); // Odota 5 sekuntia ennen viiveen uudelleen yrittämistä (5000); }}} // lopeta uudelleen yhdistäminen ()

void setup () {

Sarja.alku (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (takaisinsoitto); pinMode (BUTTON_PIN, INPUT); }

void loop () {

if (! client.connected ()) {reconnect (); } client.loop (); pitkä nyt = millis (); int -tila; // lähetä viesti 2 sekunnin välein, jos (nyt - lastMsg> 2000) {lastMsg = now; tila = digitalRead (BUTTON_PIN); String msg = "Painikkeen tila:"; if (tila == KORKEA) {msg = msg+ "Painettu"; char -viesti [58]; msg.toCharArray (viesti, 58); Serial.println (viesti); // julkaista anturitiedot MQTT -välittäjälle client.publish ("OsoyooData", viesti); } else {msg = msg+ "Ei paina"; char -viesti [58]; msg.toCharArray (viesti, 58); Serial.println (viesti); // julkaista anturitiedot MQTT -välittäjälle client.publish ("OsoyooData", viesti); }}}

Muokkaa koodia vastaamaan omia WiFi- ja MQTT -asetuksiasi seuraavasti: 1) Hotspot -määritys: Etsi koodirivin alapuolelta, kirjoita oma SSID ja salasana.

const char* ssid =”oma_pisteen_tunnus”; const char* salasana = “oma_pisteen_salasana”;

2) MQTT -palvelimen osoiteasetus: Voit käyttää omaa MQTT -välittäjän URL -osoitetta tai IP -osoitetta asettaaksesi mqtt_server -arvon yläpuolelle. Voit myös käyttää jotakin kuuluisaa ilmaista MQTT-palvelinta projektin testaamiseen, kuten "broker.mqtt-dashboard.com", "iot.eclipse.org" jne.

const char* mqtt_server =”välittäjä.mqtt-dashboard.com”;

3) MQTT -asiakasasetukset Jos MQTT -välittäjäsi vaatii asiakastunnuksen, käyttäjätunnuksen ja salasanan todennuksen, sinun on muutettava

jos (client.connect (clientId.c_str ()))

Vastaanottaja

if (client.connect (clientId, userName, passWord)) // laita clientId/userName/passWord tähän

Jos näin ei ole, pidä ne oletusarvoisina. Valitse sen jälkeen vastaava korttityyppi ja porttityyppi alla kuvatulla tavalla ja lataa luonnos NodeMCU: hon.

  • Taulu:”NodeMCU 0.9 (ESP-12-moduuli)”
  • Suorittimen taajuus:”80 MHz” Salaman koko:”
  • 4M (3M SPIFFS)”
  • Latausnopeus: "115200"
  • Portti: Valitse oma sarjaporttisi NodeMCU: lle

Vaihe 4: MQTT -asiakasasetukset

MQTT -asiakasasetukset
MQTT -asiakasasetukset
MQTT -asiakasasetukset
MQTT -asiakasasetukset

Jos et tiedä kuinka määrittää MQTT-asiakas, käy viimeisessä artikkelissamme:

Aiheasetukset: Julkaistava aihe: OsoyooCommand

Tilattava aihe: OsoyooData

Juokseva tulos

Kun lataus on suoritettu, jos wifi -yhteyspisteen nimi ja salasana -asetus on kunnossa ja MQTT -välittäjä on kytketty, avaa sarjamonitori, näet seuraavan tuloksen: Pidä tätä painiketta painettuna, sarjamonitori näyttää “Painikkeen tila: painettu” joka toinen sekunti; kun vapautat tämän painikkeen, sarjamonitori lähettää "Painikkeen tila: Ei painettu" -painiketta 2 sekunnin välein.

Suositeltava: