Obsah:

NodeMCU MQTT Iot Project - Tlačítko přepínače: 4 kroky
NodeMCU MQTT Iot Project - Tlačítko přepínače: 4 kroky

Video: NodeMCU MQTT Iot Project - Tlačítko přepínače: 4 kroky

Video: NodeMCU MQTT Iot Project - Tlačítko přepínače: 4 kroky
Video: Apa Itu? ESP 01- Smart Lamp (Subtittled) 2024, Červenec
Anonim
Image
Image

Startovací sada OSOYOO NodeMCU IOT

Sledujte nás na Facebooku, najděte naši novou vydanou položku a podělte se o svůj nápad a video o tom, jak kreativně využívat naše produkty. Můžete od nás získat peníze zpět nebo dárky! Facebook:

Youtube:

V této lekci připojíme přepínač k NodeMCU a odešleme stav přepínače makléři MQTT. Když je tlačítko stisknuto, NodeMCU zveřejní stav tlačítka „stisknuto“brokerovi MQTT a klient MQTT se přihlásí k odběru těchto zpráv. Po uvolnění tlačítka se odešle „nestlačeno“.

Krok 1: Příprava

Graf připojení
Graf připojení

Hardware:

Deska NodeMCU x 1

Přepínací tlačítko x 1

1K odpor x 1

Prkénko x 1

Propojovací vodiče

Software:

Arduino IDE (verze 1.6.4+)

Balíček desky ESP8266 a ovladač sériového portu

Klient MQTT (MQTTBox zde)

Knihovna Arduino: PubSubClient

Krok 2: Graf připojení

V této lekci používáme k ovládání přepínače D2 (GPIO4), nastavte hardware podle grafu připojení.

Poznámka: rezistor 1k používá jako stahovací odpor. V takovém obvodu, když je spínač sepnutý, je vstup NodeMCU na logicky vysoké hodnotě, ale když je spínač otevřený, stahovací odpor táhne vstupní napětí až na zem (logická nulová hodnota), čímž se zabrání nedefinovanému stavu na vstupu.

Krok 3: Kód

Kód
Kód
Kód
Kód

Zkopírujte níže uvedený kód do Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Použijte NodeMCU odeslat stav tlačítka přepínače klientovi MQTT přes WiFi * URL tutoriálu: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // Tlačítko je připojeno ke kolíku GPIO D1

// Aktualizujte je pomocí hodnot vhodných pro vaši síť. const char*ssid = "********"; // sem vložte svůj wifi ssid const char*heslo = "********"; // sem vložte své wifi heslo. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

Klient PubSubClient (espClient); long lastMsg = 0; char msg [50];

neplatné nastavení_wifi () {

zpoždění (100); // Začneme připojením k WiFi síti Serial.print („Připojování k“); Serial.println (ssid); WiFi.begin (ssid, heslo); while (WiFi.status ()! = WL_CONNECTED) {zpoždění (500); Serial.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("WiFi připojeno"); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); }

neplatné zpětné volání (znak* téma, byte* užitečné zatížení, délka bez znaménka)

{} // ukončení zpětného volání

void reconnect () {

// Smyčka, dokud se znovu nepřipojíme while (! Client.connected ()) {Serial.print ("Pokus o připojení MQTT …"); // Vytvoření náhodného ID klienta Řetězec clientId = "ESP8266Client-"; clientId += String (náhodný (0xffff), HEX); // Pokus o připojení // pokud váš broker MQTT má ID klienta, uživatelské jméno a heslo // prosím změňte následující řádek na if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("připojeno"); // po připojení k brokerovi MQTT, příkaz subscribe if any client.subscribe ("OsoyooCommand"); } else {Serial.print ("se nezdařilo, rc ="); Serial.print (client.state ()); Serial.println („zkuste to znovu za 5 sekund“); // Počkejte 5 sekund, než se zpoždění opakuje (5 000); }}} // konec opětovného připojení ()

neplatné nastavení () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (zpětné volání); pinMode (BUTTON_PIN, INPUT); }

prázdná smyčka () {

if (! client.connected ()) {reconnect (); } client.loop (); nyní dlouho = millis (); int stav; // odesílání zpráv každé 2 sekundy if (now - lastMsg> 2000) {lastMsg = now; status = digitalRead (BUTTON_PIN); String msg = "Stav tlačítka:"; if (status == HIGH) {msg = msg+ "Pressed"; char zpráva [58]; msg.toCharArray (zpráva, 58); Serial.println (zpráva); // publikování dat senzoru na MQTT broker client.publish ("OsoyooData", zpráva); } else {msg = msg+ "Not Press"; char zpráva [58]; msg.toCharArray (zpráva, 58); Serial.println (zpráva); // publikování dat senzoru na MQTT broker client.publish ("OsoyooData", zpráva); }}}

Upravte kód tak, aby odpovídal vašemu vlastnímu nastavení WiFi a MQTT, následujícími operacemi: 1) Konfigurace hotspotu: Najděte níže řádek kódu, vložte tam svůj vlastní ssid a heslo.

const char* ssid = „your_hotspot_ssid“; const char* heslo = „your_hotspot_password“;

2) Nastavení adresy serveru MQTT: K nastavení výše hodnoty mqtt_server můžete použít vlastní URL nebo IP adresu brokera MQTT. K testování projektu můžete také použít nějaký slavný bezplatný server MQTT, například „broker.mqtt-dashboard.com“, „iot.eclipse.org“atd.

const char* mqtt_server = „broker.mqtt-dashboard.com“;

3) Nastavení klienta MQTT Pokud váš broker MQTT vyžaduje ID klienta, uživatelské jméno a heslo, musíte změnit

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

Na

if (client.connect (clientId, userName, passWord)) // sem vložte clientId/userName/passWord

Pokud tomu tak není, ponechte je jako výchozí. Poté proveďte výběr odpovídajícího typu desky a typu portu, jak je uvedeno níže, a poté nahrajte skicu na NodeMCU.

  • Deska: „NodeMCU 0.9 (modul ESP-12)“
  • Frekvence CPU: „80 MHz“Velikost blesku: „
  • 4M (3M SPIFFS) “
  • Rychlost nahrávání: "115200"
  • Port: Vyberte si vlastní sériový port pro váš NodeMCU

Krok 4: Nastavení klienta MQTT

Nastavení klienta MQTT
Nastavení klienta MQTT
Nastavení klienta MQTT
Nastavení klienta MQTT

Pokud nevíte, jak konfigurovat klienta MQTT, navštivte náš poslední článek:

Nastavení témat: Téma k publikování: OsoyooCommand

Téma k odběru: OsoyooData

Výsledek běhu

Jakmile je nahrávání dokončeno, pokud je název a heslo hotspotu wifi v pořádku a je připojen broker MQTT, otevřete sériový monitor, zobrazí se následující výsledek: Stiskněte toto tlačítko, sériový monitor vydá „Stav tlačítka: stisknuto“každé 2 sekundy; jakmile toto tlačítko uvolníte, bude sériový monitor vydávat „Stav tlačítka: Nestisknuto“každé 2 sekundy.

Doporučuje: