Мазмуну:

NodeMCU MQTT Iot Project - Switch Button: 4 Steps
NodeMCU MQTT Iot Project - Switch Button: 4 Steps

Video: NodeMCU MQTT Iot Project - Switch Button: 4 Steps

Video: NodeMCU MQTT Iot Project - Switch Button: 4 Steps
Video: MQTT ESP8266 NodeMCU Home Automation System with cheapest Cloud MQTT broker Reyax RYC1001 - IoT 2021 2024, Июль
Anonim
Image
Image

OSOYOO NodeMCU IOT башталгыч комплект

Сураныч, бизди фейсбуктан ээрчиңиз, биздин жаңы чыгарылган нерсени табыңыз жана биздин өнүмдү кантип чыгармачылык менен колдонуу боюнча өз оюңузду жана видеону бөлүшүңүз. Сиз бизден накталай акча же белек ала аласыз! Facebook:

Youtube:

Бул сабакта биз NodeMCU'га которуу баскычын туташтырабыз жана которуу статусун MQTT брокерине жөнөтөбүз. Кнопка басылганда, NodeMCU MQTT брокерине "басылган" баскычтын статусун жарыялайт жана MQTT кардары бул билдирүүлөргө жазылат. Баскыч басылганда, "басылбайт" жөнөтүлөт.

1 -кадам: даярдоо

Туташуу графиги
Туташуу графиги

Аппараттык:

NodeMCU тактасы x 1

Которуу баскычы x 1

1K каршылыгы x 1

Нан тактасы x 1

Өткөргүч зымдар

Программалык камсыздоо:

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

ESP8266 Board Package жана Serial Port Driver

MQTT Кардары (MQTTBox бул жерде)

Arduino китепканасы: PubSubClient

2 -кадам: Туташуу графиги

Бул сабакта биз которууну башкаруу үчүн D2 (GPIO4) колдонобуз, сураныч, туташуу графигине ылайык жабдыкты орнотуңуз.

Эскертүү: 1k каршылыгы ылдый түшүүчү резистор катары колдонулат, Мындай схемада, которгуч жабылганда, NodeMCU киргизүү логикалык жогорку мааниде болот, бирок которгуч ачык болгондо, түшүүчү резистор кирүү чыңалуусун тартат жерге чейин (логикалык нөл мааниси), кирүүдө аныкталбаган абалга жол бербөө.

3 -кадам: Код

Code
Code
Code
Code

Төмөндөгү кодду Arduino IDEге көчүрүңүз:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Колдонуу NodeMCU которуу баскычынын статусун WiFi аркылуу MQTT кардарына жөнөтөт * Окутуучу URL: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; // баскычы GP1 пин D1 менен туташкан

// Буларды тармагыңызга ылайыктуу баалуулуктар менен жаңыртыңыз. const char*ssid = "********"; // wifi ssid бул жерге коюңуз char 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 ()); }

кайра чакыруу жок

{} // кайра чалууну токтотуу

жараксыз кайра туташуу () {

// (! Client.connected ()) {Serial.print ("MQTT туташуусу аракет кылынууда …") кайра туташканга чейин цикл. // Кокустан кардар ID түзүү String clientId = "ESP8266Client-"; clientId += Стринг (туш келди (0xffff), HEX); // Туташуу аракети // эгерде сизде MQTT брокеринде clientID, колдонуучунун аты жана сырсөз // бар болсо, кийинки сапты if (client.connect (clientId, userName, passWord)) if 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); }}} // кайра туташууну токтотуу ()

жараксыз орнотуу () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (кайра чалуу); pinMode (BUTTON_PIN, INPUT); }

void loop () {

if (! client.connected ()) {reconnect (); } client.loop (); көптөн бери = millis (); int абалы; // 2 секунд сайын билдирүү жөнөтүү, эгерде (азыр - lastMsg> 2000) {lastMsg = азыр; абал = digitalRead (BUTTON_PIN); Strg msg = "Баскычтын абалы:"; if (status == HIGH) {msg = msg+ "Pressed"; char билдирүүсү [58]; msg.toCharArray (билдирүү, 58); Serial.println (билдирүү); // сенсордук маалыматтарды MQTT брокерине жарыялоо client.publish ("OsoyooData", билдирүү); } else {msg = msg+ "Press not"; char билдирүүсү [58]; msg.toCharArray (билдирүү, 58); Serial.println (билдирүү); // сенсордук маалыматтарды MQTT брокерине жарыялоо client.publish ("OsoyooData", билдирүү); }}}

Төмөнкү операциялар катары WiFi жана MQTT жөндөөлөрүңүзгө ылайыктуу кодду түзөтүңүз: 1) Hotspot конфигурациясы: Төмөндөгү код линиясын табыңыз, өзүңүздүн SSID жана сырсөзүңүздү ошол жерге коюңуз.

const char* ssid = "your_hotspot_ssid"; const char* password = "your_hotspot_password";

2) MQTT Server Address Setting: Сиз mqtt_server баалуулугун жогору коюу үчүн өзүңүздүн MQTT брокер URL же IP дарегиңизди колдоно аласыз. Сиз ошондой эле проекти текшерүү үчүн белгилүү акысыз MQTT серверин колдоно аласыз, мисалы "broker.mqtt-dashboard.com", "iot.eclipse.org" ж.

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

3) MQTT Кардар Орнотуулар Сиздин MQTT брокери clientID, колдонуучунун аты жана сырсөз аныктыгын текшерүүнү талап кылса, өзгөртүү керек

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

To

if (client.connect (clientId, userName, passWord)) // // clientId/userName/passWord бул жерге коюңуз

Эгерде андай болбосо, анда аларды демейки катары сактаңыз. Андан кийин, корреспонденттик тактанын түрүн жана порт түрүн төмөндөгүдөй тандап, эскизди NodeMCUге жүктөңүз.

  • Такта: "NodeMCU 0.9 (ESP-12 модулу)"
  • CPU Frequency: "80MHz" Flash Size:"
  • 4M (3M SPIFFS)”
  • Жүктөө ылдамдыгы:”115200 ″
  • Порт: NodeMCU үчүн өзүңүздүн сериялык портуңузду тандаңыз

4 -кадам: MQTT Кардар Орнотуулары

MQTT Кардар Орнотуулары
MQTT Кардар Орнотуулары
MQTT Кардар Орнотуулары
MQTT Кардар Орнотуулары

Эгерде сиз MQTT кардарын кантип конфигурациялоону билбесеңиз, биздин акыркы макалага баш багыңыз:

Темалар Орнотуулар: Жарыялануучу тема: OsoyooCommand

Жазылуу темасы: OsoyooData

Иштөө жыйынтыгы

Жүктөө аяктагандан кийин, эгер wifi түйүнүнүн аталышы жана сырсөзүн жөндөө туура болсо жана MQTT брокери туташса, Сериялык Мониторду ачыңыз, сиз төмөнкү натыйжаны көрөсүз: Бул баскычты басып туруңуз, Сериялык Монитор "Баскычтын абалы: Басылган" чыгарууну ар бир 2 секундда чыгарат.; бул баскычты коё бергенден кийин, Сериялык Монитор ар 2 секундада "Баскычтын абалы: Басылбайт" чыгарат.

Сунушталууда: