Innehållsförteckning:

NodeMCU MQTT Iot Project - Switch -knapp: 4 steg
NodeMCU MQTT Iot Project - Switch -knapp: 4 steg

Video: NodeMCU MQTT Iot Project - Switch -knapp: 4 steg

Video: NodeMCU MQTT Iot Project - Switch -knapp: 4 steg
Video: Погодная станция на ESP8266, MQTT и Epaper дисплее 2024, Juli
Anonim
Image
Image

OSOYOO NodeMCU IOT Startpaket

Följ oss på facebook, hitta vårt nya släppta objekt och dela din idé och video om hur du kreativt använder våra produkter. Du kan få pengar tillbaka eller gåva från oss! Facebook:

Youtube:

I den här lektionen kommer vi att ansluta en switch -knapp till NodeMCU och skicka switch -statusen till en MQTT -mäklare. När knappen trycks in kommer NodeMCU att publicera knappstatusen”tryckt” till MQTT -mäklaren och MQTT -klienten kommer att prenumerera på dessa meddelanden. När tryckknappen släpps skickas "ej tryckt".

Steg 1: Förberedelse

Anslutningsgraf
Anslutningsgraf

Hårdvara:

NodeMCU -kort x 1

Växelknapp x 1

1K motstånd x 1

Brödbräda x 1

Bygelkablar

Programvara:

Arduino IDE (version 1.6.4+)

ESP8266 -kortpaket och seriell portdrivrutin

MQTT Client (MQTTBox här)

Arduino bibliotek: PubSubClient

Steg 2: Anslutningsgraf

I den här lektionen använder vi D2 (GPIO4) för att styra omkopplaren, ställ in hårdvaran enligt anslutningsdiagrammet.

Obs: 1k-motståndet används som ett neddragningsmotstånd. I en sådan krets, när omkopplaren är stängd, har NodeMCU-ingången ett logiskt högt värde, men när omkopplaren är öppen drar neddragningsmotståndet ingångsspänningen ner till marken (logiskt nollvärde), vilket förhindrar ett odefinierat tillstånd vid ingången.

Steg 3: Kod

Koda
Koda
Koda
Koda

Kopiera koden nedan till Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Använd NodeMCU skickar status för switchknapp till MQTT -klient via WiFi * Handledning URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // -knappen är ansluten till GPIO -stift D1

// Uppdatera dessa med värden som passar ditt nätverk. const char*ssid = "********"; // lägg din wifi ssid här const char*password = "********"; // lägg ditt wifi -lösenord här. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient -klient (espClient); lång lastMsg = 0; char msg [50];

ogiltig setup_wifi () {

fördröjning (100); // Vi börjar med att ansluta till ett WiFi -nätverk Serial.print ("Ansluter till"); Serial.println (ssid); WiFi.begin (ssid, lösenord); medan (WiFi.status ()! = WL_CONNECTED) {fördröjning (500); Serial.print ("."); } randomSeed (mikro ()); Serial.println (""); Serial.println ("WiFi ansluten"); Serial.println ("IP -adress:"); Serial.println (WiFi.localIP ()); }

ogiltig återuppringning (karaktär* ämne, byte* nyttolast, osignerad intlängd)

{} // avsluta återuppringning

void reconnect () {

// Slinga tills vi återansluts medan (! Client.connected ()) {Serial.print ("Försöker MQTT -anslutning …"); // Skapa ett slumpmässigt klient-ID String clientId = "ESP8266Client-"; clientId += String (random (0xffff), HEX); // Försök att ansluta // om din MQTT -mäklare har clientID, användarnamn och lösenord // vänligen ändra följande rad till if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ()))) {Serial.println ("ansluten"); // en gång ansluten till MQTT -mäklare, prenumerera kommando om någon client.subscribe ("OsoyooCommand"); } annat {Serial.print ("misslyckades, rc ="); Serial.print (client.state ()); Serial.println ("försök igen om 5 sekunder"); // Vänta 5 sekunder innan försöket försöker igen (5000); }}} // avsluta återanslutning ()

void setup () {

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

void loop () {

if (! client.connected ()) {reconnect (); } client.loop (); länge nu = millis (); int status; // skicka meddelande varannan sekund om (nu - lastMsg> 2000) {lastMsg = nu; status = digitalRead (BUTTON_PIN); String msg = "Knappstatus:"; if (status == HIGH) {msg = msg+ "Tryckt"; rödingmeddelande [58]; msg.toCharArray (meddelande, 58); Serial.println (meddelande); // publicera sensordata till MQTT -mäklare client.publish ("OsoyooData", meddelande); } annars {msg = msg+ "Not Press"; rödingmeddelande [58]; msg.toCharArray (meddelande, 58); Serial.println (meddelande); // publicera sensordata till MQTT -mäklare client.publish ("OsoyooData", meddelande); }}}

Redigera koden så att den passar dina egna WiFi- och MQTT -inställningar enligt följande operationer: 1) Hotspot Configration: Hitta nedanför kodrad, sätt in din egen ssid och lösenord där.

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

2) MQTT -serveradressinställning: Du kan använda din egen MQTT -mäklares URL eller IP -adress för att ange över mqtt_server -värdet. Du kan också använda någon berömd gratis MQTT-server för att testa projektet som "broker.mqtt-dashboard.com", "iot.eclipse.org" etc.

const char* mqtt_server = “mäklare.mqtt-dashboard.com”;

3) MQTT -klientinställningar Om din MQTT -mäklare kräver klient -ID, användarnamn och lösenordsautentisering måste du ändra

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

Till

if (client.connect (clientId, userName, passWord)) // lägg ditt clientId/userName/passWord här

Om inte, behåll bara dem som standard. Efter det, välj motsvarande korttyp och porttyp enligt nedan, ladda sedan upp skissen till NodeMCU.

  • Kort:”NodeMCU 0.9 (ESP-12-modul)”
  • CPU -frekvens:”80 MHz” Flashstorlek:”
  • 4M (3M SPIFFS)”
  • Uppladdningshastighet:”115200 ″
  • Port: Välj din egen serieport för din NodeMCU

Steg 4: MQTT -klientinställningar

MQTT -klientinställningar
MQTT -klientinställningar
MQTT -klientinställningar
MQTT -klientinställningar

Om du inte vet hur du konfigurerar MQTT-klient, besök vår senaste artikel:

Ämnesinställningar: Ämne att publicera: OsoyooCommand

Ämne att prenumerera på: OsoyooData

Körresultat

När uppladdningen är klar, om wifi -hotspots namn och lösenord är ok och MQTT -mäklaren är ansluten, öppnar du Serial Monitor, du kommer att se följande resultat: Fortsätt att trycka på den här knappen, Serial Monitor kommer att mata ut "Knappstatus: tryckt" varannan sekund; när du släpper den här knappen kommer seriell bildskärm att mata ut "knappstatus: inte tryckt" varannan sekund.

Rekommenderad: