Isi kandungan:

Projek Iot NodeMCU MQTT - Butang Tukar: 4 Langkah
Projek Iot NodeMCU MQTT - Butang Tukar: 4 Langkah

Video: Projek Iot NodeMCU MQTT - Butang Tukar: 4 Langkah

Video: Projek Iot NodeMCU MQTT - Butang Tukar: 4 Langkah
Video: Membuat Alat Pemantauan Kadar Jantung Berasaskan IoT Menggunakan Esp8266 2024, Julai
Anonim
Image
Image

Kit Permulaan OSOYOO NodeMCU IOT

Ikuti kami di facebook, cari item yang baru dikeluarkan dan kongsi idea dan Video anda mengenai cara menggunakan produk kami secara kreatif. Anda boleh mendapatkan wang tunai atau hadiah dari kami! Facebook:

Youtube:

Dalam pelajaran ini, kita akan menyambungkan butang beralih ke NodeMCU, dan mengirim status beralih ke broker MQTT. Apabila butang ditekan, NodeMCU akan menerbitkan status butang "ditekan" kepada broker MQTT dan klien MQTT akan melanggan mesej ini. Apabila butang tekan dilepaskan, "tidak ditekan" akan dikirim.

Langkah 1: Persiapan

Graf Sambungan
Graf Sambungan

Perkakasan:

Papan NodeMCU x 1

Butang Tukar x 1

Perintang 1K x 1

Papan roti x 1

Wayar pelompat

Perisian:

Arduino IDE (versi 1.6.4+)

Pakej Papan ESP8266 dan Pemandu Pelabuhan Serial

Pelanggan MQTT (MQTTBox di sini)

Perpustakaan Arduino: PubSubClient

Langkah 2: Graf Sambungan

Dalam pelajaran ini, kami menggunakan D2 (GPIO4) untuk mengawal suis, sila siapkan perkakasan mengikut grafik sambungan.

Catatan: perintang 1k digunakan sebagai penarik tarik ke bawah, Dalam litar seperti itu, apabila suis ditutup, input NodeMCU berada pada nilai tinggi yang logik, tetapi apabila suis terbuka, perintang penarik tarik voltan masukan turun ke bawah (nilai sifar logik), mencegah keadaan tidak ditentukan pada input.

Langkah 3: Kod

Kod
Kod
Kod
Kod

Salin kod di bawah ke Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / * | | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _ / (_ / / _ / / _ | / _ / / _ (_) _) _ / | _ | _ | _ | * (_ / * Gunakan Status butang suis hantar NodeMCU kepada klien MQTT melalui WiFi * URL Tutorial: * CopyRight www.osoyoo.com * / #include #include

int BUTTON_PIN = D2; // butang disambungkan ke pin GPIO D1

// Kemas kini dengan nilai yang sesuai untuk rangkaian anda. const char * ssid = "********"; // letakkan wifi ssid anda di sini const char * password = "********"; // masukkan kata laluan wifi anda di sini. const char * mqtt_server = "broker.mqttdashboard.com"; // const char * mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

Pelanggan PubSubClient (espClient); lama terakhirMsg = 0; char msg [50];

batal setup_wifi () {

kelewatan (100); // Kita mulakan dengan menyambung ke rangkaian WiFi Serial.print ("Menyambung ke"); Serial.println (ssid); WiFi.begin (ssid, kata laluan); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); Cetakan bersiri ("."); } randomSeed (mikro ()); Serial.println (""); Serial.println ("WiFi disambungkan"); Serial.println ("Alamat IP:"); Serial.println (WiFi.localIP ()); }

kekosongan panggilan balik (topik char *, bait * muatan, panjang int tidak ditandatangani)

{} // menamatkan panggilan balik

batal sambungkan semula () {

// Gelung sehingga kita disambungkan semula sementara (! Client.connected ()) {Serial.print ("Mencuba sambungan MQTT …"); // Buat ID pelanggan rawak String clientId = "ESP8266Client-"; clientId + = Rentetan (rawak (0xffff), HEX); // Cuba sambung // jika anda broker MQTT mempunyai ID pelanggan, nama pengguna dan kata laluan // sila ubah baris berikut menjadi jika (client.connect (clientId, userName, passWord)) jika (client.connect (clientId.c_str ())) {Serial.println ("bersambung"); // setelah disambungkan ke broker MQTT, langgan perintah jika ada pelanggan.subscribe ("OsoyooCommand"); } lain {Serial.print ("gagal, rc ="); Serial.print (pelanggan.state ()); Serial.println ("cuba lagi dalam 5 saat"); // Tunggu 5 saat sebelum mencuba penundaan (5000); }}} // sambung semula ()

batal persediaan () {

Serial.begin (115200); persediaan_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (panggilan balik); pinMode (BUTTON_PIN, INPUT); }

gelung kosong () {

jika (! client.connected ()) {reconnect (); } pelanggan.loop (); lama sekarang = millis (); status int; // hantar mesej setiap 2 saat jika (sekarang - lastMsg> 2000) {lastMsg = sekarang; status = digitalRead (BUTTON_PIN); String msg = "Status butang:"; jika (status == TINGGI) {msg = msg + "Ditekan"; mesej char [58]; msg.toCharArray (mesej, 58); Serial.println (mesej); // terbitkan data sensor ke klien broker MQTT.publish ("OsoyooData", mesej); } lain {msg = msg + "Not Press"; mesej char [58]; msg.toCharArray (mesej, 58); Serial.println (mesej); // terbitkan data sensor ke klien broker MQTT.publish ("OsoyooData", mesej); }}}

Edit kod tersebut agar sesuai dengan tetapan WiFi dan MQTT anda sendiri seperti operasi berikut: 1) Konfigurasi Hotspot: Cari baris kod di bawah ini, masukkan ssid dan kata laluan anda sendiri di sana.

const char * ssid = "your_hotspot_ssid"; const char * kata laluan = "your_hotspot_password";

2) Tetapan Alamat Pelayan MQTT: Anda boleh menggunakan URL atau alamat IP broker MQTT anda sendiri untuk menetapkan nilai mqtt_server di atas. Anda juga boleh menggunakan beberapa pelayan MQTT percuma yang terkenal untuk menguji projek seperti "broker.mqtt-dashboard.com", "iot.eclipse.org" dll.

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

3) Tetapan Pelanggan MQTTJika broker MQTT anda memerlukan pengesahan pelanggan, nama pengguna dan kata laluan, anda perlu menukar

jika (client.connect (clientId.c_str ()))

Ke

jika (client.connect (clientId, userName, passWord)) // letakkan clientId / userName / passWord anda di sini

Sekiranya tidak, simpan sahaja sebagai lalai. Selepas melakukannya, pilih jenis papan dan jenis port yang sesuai seperti di bawah, kemudian muat naik lakaran ke NodeMCU.

  • Papan: "NodeMCU 0.9 (Modul ESP-12)"
  • Kekerapan CPU: "80MHz" Saiz Kilat:"
  • 4M (SPIFFS 3M)"
  • Kelajuan Muat Naik:”115200 ″
  • Port: Pilih Port Serial anda sendiri untuk NodeMCU anda

Langkah 4: Tetapan Pelanggan MQTT

Tetapan Pelanggan MQTT
Tetapan Pelanggan MQTT
Tetapan Pelanggan MQTT
Tetapan Pelanggan MQTT

Sekiranya anda tidak tahu cara mengkonfigurasi klien MQTT, sila lawati artikel terakhir kami:

Tetapan Topik: Topik untuk diterbitkan: OsoyooCommand

Topik untuk melanggan: OsoyooData

Keputusan Menjalankan

Setelah muat naik selesai, jika tetapan nama dan kata laluan hotspot wifi baik dan broker MQTT disambungkan, buka Serial Monitor, anda akan melihat hasil berikut: Terus menekan butang ini, Serial Monitor akan mengeluarkan "Status butang: Ditekan" setiap 2 saat sekali melepaskan butang ini, Serial Monitor akan mengeluarkan "Status butang: Tidak Ditekan" setiap 2 saat.

Disyorkan: