Spisu treści:
Wideo: Projekt NodeMCU MQTT Iot - przycisk przełącznika: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
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
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
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
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:
Przełącznik dotykowy do urządzeń domowych -- Kontroluj swoje urządzenia domowe bez dotykania dowolnego przełącznika: 4 kroki
Przełącznik dotykowy do urządzeń domowych || Kontroluj swoje urządzenia domowe bez przełącznika dotykowego: jest to przełącznik bezdotykowy do urządzeń domowych. Możesz użyć tego w dowolnym miejscu publicznym, aby pomóc w walce z dowolnym wirusem. Obwód oparty na ciemnym obwodzie czujnika wykonanym przez wzmacniacz operacyjny i LDR. Druga ważna część tego obwodu Flip-Flop SR z sekwencją
Dodatki do przełącznika ściennego Sonoff: 4 kroki
Dodatki do przełączników ściennych Sonoff: Jeśli używasz przełączników ściennych Sonoff T1, zrezygnowałeś z używania serwerów opartych na chmurze do automatyki domowej i chciałbyś uzyskać więcej funkcji z naściennego przełącznika światła. Ta instrukcja pokazuje, jak dodać czujnik temperatury
Dotknij przełącznika ON-OFF z usługą UTSOURCE: 3 kroki
Przełącznik dotykowy ON-OFF Z usługą UTSOURCE: Stworzyliśmy już przełącznik dotykowy wykorzystujący tranzystor NPN. Ale ten przełącznik miał tylko jedną funkcję, aby włączyć obwód, ale nie ma możliwości wyłączenia obwodu bez odłączania zasilania. W tym obwodzie zbudujemy przełącznik dotykowy, który
Mikrokontroler AVR. Przełącz diody LED za pomocą przełącznika przyciskowego. Odbijanie przycisku.: 4 kroki
Mikrokontroler AVR. Przełącz diody LED za pomocą przełącznika przyciskowego. Push Button Debouncing.: W tej sekcji dowiemy się, jak utworzyć kod programu C dla ATMega328PU, aby przełączać stan trzech diod LED zgodnie z sygnałem wejściowym z przełącznika przyciskowego. Zbadaliśmy również rozwiązania problemu „Switch Bounce”. Jak zwykle wi
Dwa obwody przełącznika klaśnięcia przejściowego: 3 kroki
Dwa obwody przełącznika klaśnięć przejściowych: Obwód przełącznika klaśnięć przejściowych to obwód, który włącza się z dźwiękiem klaśnięcia. Wyjście pozostaje włączone przez pewien czas, a następnie automatycznie wyłącza się. Czas działania można kontrolować zmieniając wartość pojemności kondensatora. Więcej ca