Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14
OSOYOO NodeMCU IOT boshlang'ich to'plami
Iltimos, bizni facebook -da kuzatib boring, yangi chiqarilgan mahsulotimizni toping va o'z mahsulotingizni ijodiy ishlatish bo'yicha o'z fikringiz va videongiz bilan o'rtoqlashing. Siz bizdan naqd pulni qaytarishingiz yoki sovg'a olishingiz mumkin! Facebook:
Youtube:
Ushbu darsda biz NodeMCU -ga o'tish tugmachasini ulaymiz va MQTT brokeriga kalit holatini yuboramiz. Tugma bosilganda, NodeMCU MQTT brokeriga "bosilgan" tugma holatini e'lon qiladi va MQTT mijozi bu xabarlarga obuna bo'ladi. Qachonki tugma qo'yib yuborilsa, "bosilmagan" xabar yuboriladi.
1 -qadam: Tayyorgarlik
Uskuna:
NodeMCU taxtasi x 1
Kalit tugmasi x 1
1K qarshilik x 1
Non paneli x 1
Jumper simlari
Dasturiy ta'minot:
Arduino IDE (1.6.4+ versiyasi)
ESP8266 karta to'plami va ketma -ket port drayveri
MQTT mijozi (MQTTBox bu erda)
Arduino kutubxonasi: PubSubClient
2 -qadam: Ulanish grafigi
Ushbu darsda biz kalitni boshqarish uchun D2 (GPIO4) dan foydalanamiz, iltimos, uskunani ulanish grafigiga muvofiq sozlang.
Eslatma: 1k rezistor pastga tushirish qarshiligi sifatida ishlatiladi, bunday sxemada, kalit yopilganda, NodeMCU usuli mantiqiy yuqori qiymatda bo'ladi, lekin kalit ochiq bo'lsa, pastga tushadigan qarshilik kirish voltajini tortadi erga (mantiqiy nol qiymati), kirishda aniqlanmagan holatni oldini oladi.
3 -qadam: kod
Quyidagi kodni Arduino IDE -ga nusxalash:
/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * NodeMCU Wi -Fi orqali MQTT mijoziga kalit tugmasi holatini yuboradi * Qo'llanma URL manzili: * CopyRight www.osoyoo.com */ #include #include
int BUTTON_PIN = D2; // tugmasi D1 GPIO piniga ulangan
// Buni tarmoqqa mos qiymatlar bilan yangilang. const char*ssid = "********"; // wifi ssid -ni bu erga qo'ying const char*password = "********"; // wifi parolingizni bu erga qo'ying. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";
WiFiClient espClient;
PubSubClient mijozi (espClient); long lastMsg = 0; char xabar [50];
void setup_wifi () {
kechikish (100); // Biz Wi -Fi tarmog'iga ulanishdan boshlaymiz Serial.print ("Ulanish"); Serial.println (ssid); WiFi.begin (ssid, parol); while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (500); Serial.print ("."); } randomSeed (mikrosxemalar)); Serial.println (""); Serial.println ("Wi -Fi ulangan"); Serial.println ("IP -manzil:"); Serial.println (WiFi.localIP ()); }
bekor qo'ng'iroq (char* mavzu, bayt* yuk, imzosiz int uzunligi)
{} // qayta qo'ng'iroqni tugatish
bekor qayta ulanish () {
// (! Client.connected ()) {Serial.print ("MQTT ulanishi urinilmoqda …"), biz qayta ulanmagunimizcha aylantiring; // Tasodifiy mijoz identifikatorini yaratish String clientId = "ESP8266Client-"; clientId += String (tasodifiy (0xffff), HEX); // Ulanishga urinish // agar sizda MQTT brokerida clientID, foydalanuvchi nomi va parol bo'lsa // quyidagi satrni if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) ga o'zgartiring. {Serial.println ("ulangan"); // MQTT brokeriga ulanganidan so'ng, agar mijoz bo'lsa, obuna bo'lish buyrug'i.subscribe ("OsoyooCommand"); } boshqa {Serial.print ("muvaffaqiyatsiz, rc ="); Serial.print (client.state ()); Serial.println ("5 soniyadan keyin qayta urinib ko'ring"); // Kechiktirishni qayta urinishdan oldin 5 soniya kuting (5000); }}} // qayta ulanishni tugatish ()
bo'sh o'rnatish () {
Serial.begin (115200); o'rnatish_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (qayta qo'ng'iroq qilish); pinMod (BUTTON_PIN, INPUT); }
void loop () {
if (! client.connected ()) {reconnect (); } client.loop (); uzoq vaqtdan beri = millis (); int holati; // har 2 soniyada xabar yuboring, agar (hozir - lastMsg> 2000) {lastMsg = hozir; holati = digitalRead (BUTTON_PIN); String msg = "Tugma holati:"; if (status == HIGH) {msg = msg+ "Bosildi"; char xabari [58]; msg.toCharArray (xabar, 58); Serial.println (xabar); // sensor ma'lumotlarini MQTT brokeriga chop etish client.publish ("OsoyooData", xabar); } else {msg = msg+ "Bosilmaydi"; char xabari [58]; msg.toCharArray (xabar, 58); Serial.println (xabar); // sensor ma'lumotlarini MQTT brokeriga chop etish client.publish ("OsoyooData", xabar); }}}
O'zingizning WiFi va MQTT sozlamalaringizga mos keladigan kodni quyidagi amallar bilan tahrirlang: 1) Hotspot konfiguratsiyasi: Quyida kod satrini toping, o'z ssid va parolingizni qo'ying.
const char* ssid = "your_hotspot_ssid"; const char* parol = "your_hotspot_password";
2) MQTT Server manzili sozlamalari: Siz mqtt_server qiymatini belgilash uchun o'zingizning MQTT broker URL yoki IP manzilidan foydalanishingiz mumkin. Loyihani sinab ko'rish uchun "broker.mqtt-dashboard.com", "iot.eclipse.org" va boshqalar kabi mashhur bepul MQTT serveridan foydalanishingiz mumkin.
const char* mqtt_server = "broker.mqtt-dashboard.com";
3) MQTT mijoz sozlamalari Agar sizning MQTT brokeringiz mijoz identifikatori, foydalanuvchi nomi va parolni tasdiqlashni talab qilsa, siz o'zgartirishingiz kerak.
if (client.connect (clientId.c_str ()))
Kimga
if (client.connect (clientId, userName, passWord)) // // clientId/userName/passWord -ni bu erga qo'ying
Agar yo'q bo'lsa, ularni odatdagidek saqlang, shundan so'ng koresponding karta turini va port turini quyida tanlang, so'ng eskizni NodeMCU -ga yuklang.
- Kengash: "NodeMCU 0.9 (ESP-12 moduli)"
- CPU chastotasi: "80 MGts" flesh o'lchami:"
- 4M (3M SPIFFS)”
- Yuklash tezligi: 115200 ″
- Port: NodeMCU uchun o'zingizning ketma -ket portingizni tanlang
4 -qadam: MQTT mijoz sozlamalari
Agar siz MQTT mijozini qanday sozlashni bilmasangiz, bizning oxirgi maqolamizga tashrif buyuring:
Mavzular sozlamalari: nashr etiladigan mavzu: OsoyooCommand
Obuna bo'lish uchun mavzu: OsoyooData
Yugurish natijasi
Yuklash tugagandan so'ng, agar Wi -Fi ulanish nuqtasi nomi va parol sozlamalari yaxshi bo'lsa va MQTT brokeri ulangan bo'lsa, ketma -ket monitorni oching, siz quyidagi natijani ko'rasiz: bu tugmani bosib turing, ketma -ket monitor har 2 soniyada "tugma holati: bosiladi" ni chiqaradi.; bu tugmani qo'ygandan so'ng, Serial monitor har 2 soniyada "Tugma holati: bosilmayapti" ni chiqaradi.
Tavsiya:
ESP8266 yordamida Internetdan vaqt olish - ESP8266 Nodemcu bilan NTP soat loyihasi: 5 qadam
ESP8266 yordamida Internetdan vaqt olish | ESP8266 Nodemcu bilan NTP soatlari loyihasi: Ushbu qo'llanmada biz Arduino IDE bilan ESP8266/nodemcu yordamida vaqtni qanday sarflashni bilib olamiz. Vaqt olish, ayniqsa, o'qish vaqtini belgilash uchun ma'lumotlarni jurnalga yozishda foydalidir. Agar sizning ESP8266 loyihangiz Internetga ulangan bo'lsa, siz tarmoq T -dan foydalanib vaqt topishingiz mumkin
Totoro loyihasi - IoT & MQTT & ESP01: 7 qadam (rasmlar bilan)
Totoro loyihasi - IoT va MQTT va ESP01: Totoro loyihasi - bu boshqa har xil shaklda nusxa ko'chirishingiz mumkin bo'lgan yaxshi IoT loyihasi. MQTT protokoli yordamida ESP01 platasidan foydalanib, tugma holatini MQTT Brokeriga etkazish mumkin. case AdafruitIO) .MQTT va reklama uchun foydali qo'llanma
ESP8266 hech qanday RTCsiz tarmoq soati - Nodemcu NTP soati RTC yo'q - INTERNET CLOCK LOYIHASI: 4 qadam
ESP8266 hech qanday RTCsiz tarmoq soati | Nodemcu NTP soati RTC yo'q | INTERNET CLOCK LOYIHASI: Loyihada RTCsiz soat loyihasi yaratiladi, wifi yordamida internetdan vaqt oladi va uni st7735 displeyida ko'rsatadi
IoT tugmasi (D1 Mini): 6 qadam
IoT tugmasi (D1 Mini): Men telefonga bildirishnomalarni yuborish uchun (masalan, bog'da dam olayotganda ichimliklarni to'ldirishni so'rash uchun) IoT tugmachasini (Amazon Dash -ni o'ylab ko'ring) yaratdim. Siz boshqa qurilmalar bilan ishlash uchun osongina sozlashingiz mumkin
Ilovani boshqaradigan IoT tugmasi: 6 qadam
Sizning ilovangizni boshqaradigan IoT tugmasi: Menga mikrokontrollerlar yoqadigan narsalardan biri bu ularni kirish qurilmasi sifatida ishlatish qobiliyati, masalan, Arduino Micro HID (inson interfeysi qurilmasi) sifatida ishlatilishi mumkin, bu ba'zi kodlash va Qanday qilib o'zingiz klaviatura qilishingiz mumkinligini bilasiz