Съдържание:

NodeMCU MQTT Iot Project - Бутон за превключване: 4 стъпки
NodeMCU MQTT Iot Project - Бутон за превключване: 4 стъпки

Видео: NodeMCU MQTT Iot Project - Бутон за превключване: 4 стъпки

Видео: NodeMCU MQTT Iot Project - Бутон за превключване: 4 стъпки
Видео: NodeMCU IOT Kit Lesson 17: Servo & MQTT 2024, Ноември
Anonim
Image
Image

Стартов комплект OSOYOO NodeMCU IOT

Моля, следвайте ни във facebook, намерете новия ни пуснат артикул и споделете вашата идея и видео за това как да използваме творчески нашите продукти. Можете да получите обратно пари или подарък от нас! Facebook:

Youtube:

В този урок ще свържем бутон за превключване към NodeMCU и ще изпратим състоянието на превключвателя до брокер MQTT. Когато бутонът е натиснат, NodeMCU ще публикува състоянието на бутона „натиснат“в брокер MQTT и клиентът MQTT ще се абонира за тези съобщения. Когато бутонът е освободен, ще бъде изпратено „не натиснат“.

Стъпка 1: Подготовка

Графика за свързване
Графика за свързване

Хардуер:

Платка NodeMCU x 1

Бутон за превключване x 1

1K резистор x 1

Платформа x 1

Кабелни проводници

Софтуер:

Arduino IDE (версия 1.6.4+)

Пакет ESP8266 платка и драйвер за сериен порт

MQTT клиент (MQTTBox тук)

Библиотека на Arduino: PubSubClient

Стъпка 2: Графика за свързване

В този урок използваме D2 (GPIO4) за управление на превключвателя, моля, настройте хардуера според графиката на връзката.

Забележка: 1k резисторът се използва като издърпващ резистор, В такава верига, когато превключвателят е затворен, входът NodeMCU е на логическа висока стойност, но когато превключвателят е отворен, падащият резистор издърпва входното напрежение надолу (логическа нулева стойност), предотвратявайки неопределено състояние на входа.

Стъпка 3: Код

Код
Код
Код
Код

Копирайте кода по -долу в Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * * _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Използвайте NodeMCU изпраща състоянието на бутона за превключване към MQTT клиент чрез WiFi * Урок URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // бутонът е свързан към GPIO извод D1

// Актуализирайте ги със стойности, подходящи за вашата мрежа. const char*ssid = "********"; // поставете вашия wifi ssid тук const char*password = "********"; // поставете вашата парола за wifi тук. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient клиент (espClient); long lastMsg = 0; char msg [50];

void setup_wifi () {

забавяне (100); // Започваме със свързване към WiFi мрежа Serial.print ("Свързване към"); Serial.println (ssid); WiFi.begin (ssid, парола); while (WiFi.status ()! = WL_CONNECTED) {забавяне (500); Serial.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("WiFi свързан"); Serial.println ("IP адрес:"); Serial.println (WiFi.localIP ()); }

невалидно обратно повикване (char* тема, байт* полезен товар, беззначна дължина int)

{} // прекратяване на обратното повикване

void повторно свързване () {

// Цикъл, докато не се свържем отново докато (! Client.connected ()) {Serial.print ("Опит за MQTT връзка …"); // Създаване на случаен клиент ID String clientId = "ESP8266Client-"; clientId += Низ (произволен (0xffff), HEX); // Опит за свързване // ако вашият брокер на MQTT има clientID, потребителско име и парола // моля, променете следния ред на if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("свързан"); // веднъж свързан с брокер MQTT, команда за абониране, ако има някой client.subscribe ("OsoyooCommand"); } else {Serial.print ("неуспешно, rc ="); Serial.print (client.state ()); Serial.println ("опитайте отново след 5 секунди"); // Изчакайте 5 секунди, преди да опитате отново забавяне (5000); }}} // край на повторното свързване ()

void setup () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (обратно повикване); pinMode (BUTTON_PIN, INPUT); }

void loop () {

if (! client.connected ()) {повторно свързване (); } client.loop (); long now = millis (); int статус; // изпраща съобщение на всеки 2 секунди if (now - lastMsg> 2000) {lastMsg = now; status = digitalRead (BUTTON_PIN); String msg = "Статус на бутона:"; if (status == HIGH) {msg = msg+ "Натиснат"; char съобщение [58]; msg.toCharArray (съобщение, 58); Serial.println (съобщение); // публикуване на сензорни данни в брокер на MQTT client.publish ("OsoyooData", съобщение); } else {msg = msg+ "Not Press"; char съобщение [58]; msg.toCharArray (съобщение, 58); Serial.println (съобщение); // публикуване на сензорни данни в брокер на MQTT client.publish ("OsoyooData", съобщение); }}}

Редактирайте кода, за да отговаря на вашите собствени настройки за WiFi и MQTT, както следва: 1) Конфигурация на гореща точка: Намерете по -долу кодовия ред, поставете своя собствен ssid и парола там.

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

2) Настройка на адреса на сървъра на MQTT: Можете да използвате свой собствен URL адрес на MQTT брокер или IP адрес, за да зададете над стойността на mqtt_server. Можете също да използвате известен известен безплатен MQTT сървър, за да тествате проекта, като „broker.mqtt-dashboard.com“, „iot.eclipse.org“и т.н.

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

3) Клиентски настройки на MQTT Ако вашият брокер на MQTT изисква идентификация на клиента, потребителско име и парола, трябва да промените

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

Да се

if (client.connect (clientId, userName, passWord)) // поставете вашия clientId/userName/passWord тук

Ако не, просто ги запазете по подразбиране. След като направите това, изберете съответстващия тип платка и тип порт, както е показано по -долу, след което качете скицата в NodeMCU.

  • Табло: „NodeMCU 0.9 (модул ESP-12)“
  • Честота на процесора:”80MHz” Размер на светкавицата:”
  • 4M (3M SPIFFS)”
  • Скорост на качване:”115200 ″
  • Порт: Изберете свой собствен сериен порт за вашия NodeMCU

Стъпка 4: Настройки на клиента на MQTT

MQTT клиентски настройки
MQTT клиентски настройки
MQTT клиентски настройки
MQTT клиентски настройки

Ако не знаете как да конфигурирате MQTT клиент, моля, посетете последната ни статия:

Настройки на теми: Тема за публикуване: OsoyooCommand

Тема за абониране: OsoyooData

Текущ резултат

След като качването приключи, ако името и паролата за wifi точка са наред и MQTT брокерът е свързан, отворете серийния монитор, ще видите следния резултат: Продължете да натискате този бутон, серийният монитор ще извежда „Състояние на бутона: Натиснат“на всеки 2 секунди; след като освободите този бутон, серийният монитор ще извежда „Състояние на бутона: Не е натиснат“на всеки 2 секунди.

Препоръчано: