Spisu treści:

Projekt NodeMCU MQTT Iot - przycisk przełącznika: 4 kroki
Projekt NodeMCU MQTT Iot - przycisk przełącznika: 4 kroki

Wideo: Projekt NodeMCU MQTT Iot - przycisk przełącznika: 4 kroki

Wideo: Projekt NodeMCU MQTT Iot - przycisk przełącznika: 4 kroki
Wideo: [HA] ESPeasy start jak zacząć, instalacja - ESP8266 + DS18B20 + Home Asisstant - monitor temperatury 2024, Lipiec
Anonim
Image
Image

Zestaw startowy OSOYOO NodeMCU IOT

Śledź nas na Facebooku, znajdź nasz nowy produkt i podziel się swoim pomysłem oraz filmem o tym, jak twórczo korzystać z naszych produktów. Możesz otrzymać od nas zwrot gotówki lub gratisy! Facebook:

Youtube:

W tej lekcji połączymy przycisk przełącznika z NodeMCU i wyślemy status przełącznika do brokera MQTT. Po naciśnięciu przycisku NodeMCU opublikuje status przycisku „wciśnięty” do brokera MQTT, a klient MQTT zasubskrybuje te komunikaty. Po zwolnieniu przycisku zostanie wysłane „nie wciśnięte”.

Krok 1: Przygotowanie

Wykres połączenia
Wykres połączenia

Sprzęt komputerowy:

Płyta NodeMCU x 1

Przycisk przełącznika x 1

Rezystor 1K x 1

Deska do krojenia chleba x 1

Przewody połączeniowe

Oprogramowanie:

Arduino IDE (wersja 1.6.4+)

Pakiet płyty ESP8266 i sterownik portu szeregowego

Klient MQTT (tutaj MQTTBox)

Biblioteka Arduino: PubSubClient

Krok 2: Wykres połączenia

W tej lekcji używamy D2 (GPIO4) do sterowania przełącznikiem, ustaw sprzęt zgodnie z wykresem połączeń.

Uwaga: rezystor 1k jest używany jako rezystor pull down. W takim obwodzie, gdy przełącznik jest zamknięty, wejście NodeMCU ma logicznie wysoką wartość, ale gdy przełącznik jest otwarty, rezystor pull down ciągnie napięcie wejściowe aż do masy (wartość logiczna zero), zapobiegając niezdefiniowanemu stanowi na wejściu.

Krok 3: Kod

Kod
Kod
Kod
Kod

Skopiuj poniższy kod do Arduino IDE:

/* _ _ _ _ _ _ _ _ _ _ * / _ / /_)/ _ \| | | |/ _ / / _ / / _) _ \| / *| |_| |_ | |_| | |_| | |_| | |_| ((_| |_| | | | * \_/(_/ \_/ \_ |\_/ \_(_)_)_/|_|_|_| * (_/ * Użyj NodeMCU wysyła status przycisku przełącznika do klienta MQTT przez Wi-Fi * Adres URL samouczka: * CopyRight www.osoyoo.com */ #include #include

int PIN_PRZYCISKU = D2; //przycisk jest podłączony do pinu GPIO D1

// Zaktualizuj je wartościami odpowiednimi dla Twojej sieci. const char* ssid = "********";//podaj tutaj swój identyfikator Wi-Fi const char* password = "**********";//podaj tutaj swoje hasło Wi-Fi. const char* mqtt_server = "broker.mqttdashboard.com"; //const char* mqtt_server = "iot.eclipse.org";

Klient Wi-Fi espKlient;

Klient PubSubClient (espClient); dluga ostatnia wiadomosc = 0; wiadomość char[50];

void setup_wifi() {

opóźnienie (100); // Zaczynamy od połączenia z siecią WiFi Serial.print("Łączenie z "); Serial.println(ssid); WiFi.begin(SSid, hasło); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(mikros()); Serial.println(""); Serial.println("Połączenie WiFi"); Serial.println("adres IP: "); Serial.println(WiFi.localIP()); }

void callback(char* temat, bajt* ładunku, unsigned int length)

{ } //zakończ oddzwonienie

nieważne ponowne połączenie () {

// Pętla do ponownego połączenia while (!client.connected()) { Serial.print("Próba połączenia MQTT…"); // Utwórz losowy identyfikator klienta String clientId = "ESP8266Client-"; identyfikator klienta += String(losowy (0xffff), HEX); // Próba połączenia //jeśli broker MQTT posiada identyfikator klienta, nazwę użytkownika i hasło //zmień następującą linię na if (client.connect(clientId, userName, passWord)) if (client.connect(clientId.c_str())) { Serial.println("podłączony"); //po połączeniu z brokerem MQTT, polecenie subskrypcji, jeśli jakaś client.subscribe("OsoyooCommand"); } else { Serial.print("nie powiodło się, rc="); Serial.print(klient.stan()); Serial.println("spróbuj ponownie za 5 sekund"); // Poczekaj 5 sekund przed ponowną próbą delay(5000); } } } //zakończ ponowne połączenie()

pusta konfiguracja () {

Serial.początek(115200); setup_wifi(); klient.setServer(mqtt_server, 1883); klient.setCallback(oddzwanianie); pinMode(PIN_PIN, WEJŚCIE); }

pusta pętla () {

if (!client.connected()) { reconnect(); } klient.pętla(); długie teraz = mili(); stan int; //wysyłaj wiadomość co 2 sekundy if (teraz - lastMsg > 2000) { lastMsg = now; status=odczyt cyfrowy(PIN_PRZYCISKU); String msg="Status przycisku: "; if(status==WYSOKI) { msg= msg+ "Wciśnięty"; wiadomość char[58]; msg.toCharArray(komunikat, 58); Serial.println(wiadomość); //opublikuj dane czujnika w brokerze MQTT client.publish("OsoyooData", komunikat); } else { msg= msg+ " Nie wciskaj"; wiadomość char[58]; msg.toCharArray(komunikat, 58); Serial.println(wiadomość); //opublikuj dane czujnika w brokerze MQTT client.publish("OsoyooData", komunikat); } } }

Edytuj kod, aby dopasować go do własnych ustawień Wi-Fi i MQTT, wykonując następujące operacje: 1) Konfiguracja Hotspot: Znajdź poniżej linię kodu, umieść tam swój własny identyfikator SSID i hasło.

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

2) Ustawienie adresu serwera MQTT: Możesz użyć własnego adresu URL brokera MQTT lub adresu IP, aby ustawić powyżej wartość mqtt_server. Możesz także użyć jakiegoś słynnego darmowego serwera MQTT do przetestowania projektu, takiego jak „broker.mqtt-dashboard.com”, „iot.eclipse.org” itp.

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

3) Ustawienia klienta MQTTJeśli Twój broker MQTT wymaga uwierzytelnienia identyfikatora klienta, nazwy użytkownika i hasła, musisz to zmienić

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

Do

if (client.connect(clientId, userName, passWord)) //wstaw tutaj swój ClientId/userName/passWord

Jeśli nie, po prostu zachowaj je jako domyślne. Następnie wybierz odpowiedni typ płyty i typ portu, jak poniżej, a następnie prześlij szkic do NodeMCU.

  • Płytka:”NodeMCU 0.9 (moduł ESP-12)”
  • Częstotliwość procesora:”80MHz”Rozmiar pamięci:”
  • 4M (3M SPIFF)”
  • Szybkość przesyłania: „115200”
  • Port: wybierz własny port szeregowy dla swojego NodeMCU

Krok 4: Ustawienia klienta MQTT

Ustawienia klienta MQTT
Ustawienia klienta MQTT
Ustawienia klienta MQTT
Ustawienia klienta MQTT

Jeśli nie wiesz, jak skonfigurować klienta MQTT, odwiedź nasz ostatni artykuł:

Ustawienia tematów: Temat do opublikowania: OsoyooCommand

Temat do subskrybowania: OsoyooData

Uruchomiony wynik

Po zakończeniu przesyłania, jeśli nazwa hotspotu Wi-Fi i ustawienie hasła są w porządku, a broker MQTT jest podłączony, otwórz Monitor szeregowy, zobaczysz następujący wynik: Naciskaj ten przycisk, monitor szeregowy będzie co 2 sekundy wyświetlał komunikat „Stan przycisku: Wciśnięty”; po zwolnieniu tego przycisku, monitor szeregowy będzie co 2 sekundy wysyłał komunikat „Stan przycisku: nie wciśnięty”.

Zalecana: