Talaan ng mga Nilalaman:

NodeMCU MQTT Iot Project - Button ng Lumipat: 4 Hakbang
NodeMCU MQTT Iot Project - Button ng Lumipat: 4 Hakbang

Video: NodeMCU MQTT Iot Project - Button ng Lumipat: 4 Hakbang

Video: NodeMCU MQTT Iot Project - Button ng Lumipat: 4 Hakbang
Video: LED Controlled by Cell Phone with Wifi 2024, Nobyembre
Anonim
Image
Image

OSOYOO NodeMCU IOT Starter kit

Mangyaring sundin kami sa facebook, hanapin ang aming bagong inilabas na item at ibahagi ang iyong ideya at Video tungkol sa kung paano malikhaing gamitin ang aming mga produkto. Maaari kang makakuha ng cash o giveaway mula sa amin! Facebook:

Youtube:

Sa araling ito, ikonekta namin ang isang pindutan ng paglipat sa NodeMCU, at ipadala ang katayuan ng switch sa isang broker ng MQTT. Kapag pinindot ang pindutan, ilalathala ng NodeMCU ang katayuan ng pindutan na "pinindot" sa MQTT broker at mag-subscribe ang client ng MQTT sa mga mensaheng ito. Kapag ang pindutan ng push ay pinakawalan, "hindi pinindot" ay ipapadala.

Hakbang 1: Paghahanda

Graph ng Koneksyon
Graph ng Koneksyon

Hardware:

Lupon ng NodeMCU x 1

Pindutan ng Lumipat x 1

1K risistor x 1

Breadboard x 1

Jumper wires

Software:

Arduino IDE (bersyon 1.6.4+)

Ang Package ng Board ng ESP8266 at ang Serial Port Driver

MQTT Client (MQTTBox dito)

Library ng Arduino: PubSubClient

Hakbang 2: Graph ng Koneksyon

Sa araling ito, ginagamit namin ang D2 (GPIO4) upang makontrol ang switch, mangyaring i-setup ang hardware ayon sa graph ng koneksyon.

Tandaan: ang 1k risistor ay ginagamit bilang isang pull down risistor, Sa naturang circuit, kapag ang switch ay sarado, ang input ng NodeMCU ay nasa isang lohikal na mataas na halaga, ngunit kapag ang switch ay bukas, ang pull-down na risistor ay hinihila ang input boltahe pababa sa lupa (lohikal na zero halaga), pinipigilan ang isang hindi natukoy na estado sa input.

Hakbang 3: Code

Code
Code
Code
Code

Kopyahin ang code sa ibaba sa Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / * | | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _ / (_ / / _ / / _ | / _ / / _ (_) _) _ / | _ | _ | _ | * (_ / * Gamitin ang Nagpadala ang NodeMCU ng katayuan ng switch button sa MQTT client sa pamamagitan ng WiFi * Tutorial URL: * CopyRight www.osoyoo.com * / #include #include

int BUTTON_PIN = D2; // button ay konektado sa GPIO pin D1

// I-update ang mga ito sa mga halagang angkop para sa iyong network. Const char * ssid = "********"; // ilagay ang iyong wifi ssid dito const char * password = "********"; // ilagay ang iyong wifi password dito. const char * mqtt_server = "broker.mqttdashboard.com"; // const char * mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

PubSubClient client (espClient); mahaba lastMsg = 0; char msg [50];

void setup_wifi () {

pagkaantala (100); // Nagsisimula kami sa pamamagitan ng pagkonekta sa isang WiFi network Serial.print ("Kumokonekta sa"); Serial.println (ssid); WiFi.begin (ssid, password); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } randomSeed (micros ()); Serial.println (""); Serial.println ("Konektado sa WiFi"); Serial.println ("IP address:"); Serial.println (WiFi.localIP ()); }

void callback (char * paksa, byte * payload, unsigned int haba)

{} // tapusin ang callback

walang bisa muling kumonekta () {

// Loop hanggang sa kumonekta ulit kami habang (! Client.connected ()) {Serial.print ("Pagtatangka sa koneksyon ng MQTT …"); // Lumikha ng isang random client ID String clientId = "ESP8266Client-"; clientId + = String (random (0xffff), HEX); // Subukang kumonekta // kung ikaw MQTT broker ay may clientID, username at password // mangyaring baguhin ang sumusunod na linya sa kung (client.connect (clientId, userName, passWord)) kung (client.connect (clientId.c_str ())) {Serial.println ("konektado"); // sa sandaling nakakonekta sa MQTT broker, mag-subscribe ng utos kung mayroong anumang client.subscribe ("OsoyooCommand"); } iba pa {Serial.print ("failed, rc ="); Serial.print (client.state ()); Serial.println ("subukang muli sa 5 segundo"); // Maghintay ng 5 segundo bago subukang muli ang pagkaantala (5000); }}} // end reconnect ()

walang bisa ang pag-setup () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (callback); pinMode (BUTTON_PIN, INPUT); }

void loop () {

kung (! client.connected ()) {muling magkonekta (); } client.loop (); mahaba ngayon = millis (); int status; // send message bawat 2 segundo kung (ngayon - lastMsg> 2000) {lastMsg = now; katayuan = digitalRead (BUTTON_PIN); String msg = "Katayuan ng pindutan:"; kung (status == MATAAS) {msg = msg + "Pinindot"; mensahe ng char [58]; msg.toCharArray (mensahe, 58); Serial.println (mensahe); // publish data ng sensor sa MQTT broker client.publish ("OsoyooData", mensahe); } iba pa {msg = msg + "Not Press"; mensahe ng char [58]; msg.toCharArray (mensahe, 58); Serial.println (mensahe); // publish data ng sensor sa MQTT broker client.publish ("OsoyooData", mensahe); }}}

I-edit ang code upang magkasya sa iyong sariling mga setting ng WiFi at MQTT bilang mga sumusunod na operasyon: 1) Hotspot Configration: Hanapin sa ibaba ang linya ng code, ilagay ang iyong sariling ssid at password doon.

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

2) Pagtatakda ng MQTT Server Address: Maaari mong gamitin ang iyong sariling MQTT broker URL o IP address upang maitakda sa itaas ang halagang mqtt_server. Maaari mo ring gamitin ang ilang sikat na libreng MQTT server upang subukan ang proyekto tulad ng "broker.mqtt-dashboard.com", "iot.eclipse.org" atbp.

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

3) Mga setting ng Client ng MQTT Kung ang iyong MQTT broker ay nangangailangan ng clientID, username at password authentication, kailangan mong baguhin

kung (client.connect (clientId.c_str ()))

Sa

kung (client.connect (clientId, userName, passWord)) // ilagay ang iyong clientId / userName / passWord dito

Kung hindi, panatilihin lamang ang mga ito bilang default. Pagkatapos gawin iyon, piliin ang uri ng coresponding board at uri ng port tulad ng sa ibaba, pagkatapos ay i-upload ang sketch sa NodeMCU.

  • Lupon: "NodeMCU 0.9 (ESP-12 Modyul)"
  • Dalas ng CPU: "80MHz" Laki ng Flash:"
  • 4M (3M SPIFFS)”
  • Bilis ng Pag-upload:”115200 ″
  • Port: Pumili ng iyong sariling Serial Port para sa iyong NodeMCU

Hakbang 4: Mga setting ng MQTT Client

Mga setting ng Client ng MQTT
Mga setting ng Client ng MQTT
Mga setting ng Client ng MQTT
Mga setting ng Client ng MQTT

Kung hindi mo alam kung paano i-configure ang MQTT client, mangyaring bisitahin ang aming huling artikulo:

Mga Setting ng Mga Paksa: Paksa upang mai-publish: OsoyooCommand

Paksa upang mag-subscribe: OsoyooData

Tumatakbo na Resulta

Kapag tapos na ang pag-upload, kung ang pangalan ng wifi hotspot at setting ng password ay ok at ang MQTT broker ay konektado, buksan ang Serial Monitor, makikita mo ang sumusunod na resulta: Patuloy na pindutin ang pindutan na ito, ang Serial Monitor ay maglalabas ng "katayuan ng Button: Pinindot" bawat 2 segundo; sa sandaling bitawan ang pindutang ito, ang Serial Monitor ay maglalabas ng "Katayuan ng pindutan: Hindi Pinindot" bawat 2 segundo.

Inirerekumendang: