Inhoudsopgave:

NodeMCU MQTT Iot Project - Schakelknop - Ajarnpa
NodeMCU MQTT Iot Project - Schakelknop - Ajarnpa

Video: NodeMCU MQTT Iot Project - Schakelknop - Ajarnpa

Video: NodeMCU MQTT Iot Project - Schakelknop - Ajarnpa
Video: Home Assistant - подключаем адресную ленту WS2812B через ESP8266 с прошивкой WLED 2024, Juli-
Anonim
Image
Image

OSOYOO NodeMCU IOT-startpakket

Volg ons op facebook, vind ons nieuw uitgebrachte item en deel uw idee en video over hoe u onze producten creatief kunt gebruiken. U kunt bij ons geld terugkrijgen of weggeven! Facebook:

Youtube:

In deze les zullen we een schakelknop verbinden met de NodeMCU en de schakelstatus naar een MQTT-makelaar sturen. Wanneer de knop wordt ingedrukt, zal NodeMCU de knopstatus "ingedrukt" publiceren naar MQTT-broker en de MQTT-client zal zich abonneren op deze berichten. Wanneer de drukknop wordt losgelaten, wordt "niet ingedrukt" verzonden.

Stap 1: Voorbereiding

Verbindingsgrafiek
Verbindingsgrafiek

Hardware:

NodeMCU-bord x 1

Schakelknop x 1

1K weerstand x 1

Broodplank x 1

Doorverbindingsdraden

Software:

Arduino IDE (versie 1.6.4+)

ESP8266-kaartpakket en het stuurprogramma voor de seriële poort

MQTT-client (MQTTBox hier)

Arduino-bibliotheek: PubSubClient

Stap 2: Verbindingsgrafiek

In deze les gebruiken we D2(GPIO4) om de switch te bedienen. Stel de hardware in volgens de verbindingsgrafiek.

Opmerking: de 1k-weerstand wordt gebruikt als een pull-down-weerstand. In zo'n circuit, wanneer de schakelaar gesloten is, heeft de NodeMCU-ingang een logische hoge waarde, maar wanneer de schakelaar open is, trekt de pull-down-weerstand de ingangsspanning down to ground (logische nulwaarde), waardoor een ongedefinieerde toestand bij de ingang wordt voorkomen.

Stap 3: Coderen

Code
Code
Code
Code

Kopieer de onderstaande code naar Arduino IDE:

/* _ _ _ _ _ _ _ _ _ _ * / _ / /_)/ _ \| | | |/ _ / / _ / / _) _ \| / *| |_| |_ | |_| | |_| | |_| | |_| ((_| |_| | | | | * \_/(_/ \_/ \_ |\_/ \_(_)_)_/|_|_|_| * (_/ * Gebruik de NodeMCU stuurt de status van de schakelknop naar de MQTT-client via wifi * Tutorial-URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // knop is verbonden met GPIO-pin D1

// Werk deze bij met waarden die geschikt zijn voor uw netwerk. const char* ssid = "********";//plaats hier uw wifi-ssid const char* wachtwoord = "********";//plaats hier uw wifi-wachtwoord. const char* mqtt_server = "broker.mqttdashboard.com"; //const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient-client (espClient); lange laatsteMsg = 0; char bericht [50];

ongeldig setup_wifi() {

vertraging (100); // We beginnen door verbinding te maken met een WiFi-netwerk Serial.print ("Verbinden met "); Seriële.println(ssid); WiFi.begin(ssid, wachtwoord); while (WiFi.status() != WL_CONNECTED) {vertraging (500); Serieel.print("."); } randomSeed(micros()); Serieel.println(""); Serial.println("WiFi verbonden"); Serial.println("IP-adres: "); Serial.println(WiFi.localIP()); }

void callback(char* topic, byte* payload, unsigned int lengte)

{ } // terugbellen beëindigen

ongeldig opnieuw verbinden() {

// Loop totdat we opnieuw verbonden zijn while (!client.connected()) { Serial.print("Poging tot MQTT-verbinding…"); // Maak een willekeurige client-ID String clientId = "ESP8266Client-"; clientId += String (willekeurig (0xffff), HEX); // Poging om verbinding te maken // als je MQTT-makelaar een client-ID, gebruikersnaam en wachtwoord heeft // verander de volgende regel in if (client.connect(clientId, userName, passWord)) if (client.connect(clientId.c_str())) { Serial.println("verbonden"); // eenmaal verbonden met MQTT-broker, abonneer de opdracht indien van toepassing client.subscribe ("OsoyooCommand"); } else { Serial.print("mislukt, rc="); Serial.print(client.state()); Serial.println ("probeer het over 5 seconden opnieuw"); // Wacht 5 seconden voordat u de vertraging opnieuw probeert (5000); } } } // end reconnect()

ongeldige setup() {

Serieel.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setTerugbellen (terugbellen); pinMode (BUTTON_PIN, INPUT); }

lege lus() {

if (!client.connected()) { opnieuw verbinden(); } cliënt.loop(); lang nu = millis(); int-status; // stuur elke 2 seconden een bericht als (nu - lastMsg > 2000) { lastMsg = nu; status=digitalRead (BUTTON_PIN); String msg="Knopstatus: "; if(status==HIGH) { msg= msg+ "Ingedrukt"; char bericht[58]; msg.naarCharArray(bericht, 58); Serial.println(bericht); //publiceer sensorgegevens naar MQTT broker client.publish ("OsoyooData", bericht); } else { msg= msg+ "Niet drukken"; char bericht[58]; msg.naarCharArray(bericht, 58); Serial.println(bericht); //publiceer sensorgegevens naar MQTT broker client.publish ("OsoyooData", bericht); } } }

Bewerk de code zodat deze past bij uw eigen WiFi- en MQTT-instellingen als volgt: 1) Hotspot-configuratie: zoek de onderstaande coderegel, plaats uw eigen ssid en wachtwoord daar.

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

2) MQTT-serveradresinstelling: u kunt uw eigen MQTT-broker-URL of IP-adres gebruiken om boven de mqtt_server-waarde in te stellen. Je kunt ook een beroemde gratis MQTT-server gebruiken om het project te testen, zoals "broker.mqtt-dashboard.com", "iot.eclipse.org" enz.

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

3) MQTT-clientinstellingen Als uw MQTT-makelaar client-ID, gebruikersnaam en wachtwoordverificatie vereist, moet u dit wijzigen:

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

Tot

if (client.connect(clientId, userName, passWord)) // plaats hier uw clientId/userName/passWord

Als dat niet het geval is, houdt u ze gewoon als standaard. Kies daarna het overeenkomstige bordtype en poorttype zoals hieronder en upload de schets naar de NodeMCU.

  • Bord: "NodeMCU 0.9 (ESP-12-module)"
  • CPU-frequentie: "80 MHz" Flash-grootte:"
  • 4M (3M SPIFFS)”
  • Uploadsnelheid: "115200"
  • Poort: kies uw eigen seriële poort voor uw NodeMCU

Stap 4: MQTT-clientinstellingen

MQTT-clientinstellingen
MQTT-clientinstellingen
MQTT-clientinstellingen
MQTT-clientinstellingen

Als je niet weet hoe je de MQTT-client moet configureren, bezoek dan ons laatste artikel:

Onderwerpen Instellingen:Onderwerp om te publiceren: OsoyooCommand

Onderwerp om in te schrijven: OsoyooData

Lopend resultaat

Zodra de upload is voltooid, als de wifi-hotspotnaam en het wachtwoord in orde zijn en de MQTT-broker is verbonden, opent u de seriële monitor, u ziet het volgende resultaat: blijf op deze knop drukken, de seriële monitor geeft elke 2 seconde "Knopstatus: ingedrukt" weer;nadat u deze knop loslaat, geeft de seriële monitor elke 2 seconden de melding "Knopstatus: niet ingedrukt".

Aanbevolen: