Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:59
OSOYOO „NodeMCU IOT“pradinis rinkinys
Sekite mus „Facebook“, suraskite mūsų naują išleistą elementą ir pasidalykite savo idėja bei vaizdo įrašu, kaip kūrybingai naudoti mūsų produktus. Iš mūsų galite atgauti grynuosius pinigus ar dovanas! Facebook:
Youtube:
Šioje pamokoje mes prijungsime jungiklio mygtuką prie „NodeMCU“ir išsiųsime jungiklio būseną MQTT tarpininkui. Paspaudus mygtuką, „NodeMCU“paskelbs mygtuko būseną „paspaustas“MQTT brokeriui, o MQTT klientas prenumeruos šiuos pranešimus. Kai mygtukas bus atleistas, bus išsiųstas pranešimas „nespaustas“.
1 žingsnis: Paruošimas
Techninė įranga:
„NodeMCU“plokštė x 1
Perjungimo mygtukas x 1
1K rezistorius x 1
Duonos lenta x 1
Jumperio laidai
Programinė įranga:
„Arduino IDE“(1.6.4 ir naujesnė versija)
ESP8266 plokštės paketas ir nuoseklaus prievado tvarkyklė
„MQTT“klientas („MQTTBox“čia)
„Arduino“biblioteka: „PubSubClient“
2 veiksmas: ryšio schema
Šioje pamokoje jungikliui valdyti naudojame D2 (GPIO4), nustatykite aparatūrą pagal ryšio grafiką.
Pastaba: 1k rezistorius naudojamas kaip ištraukiamas rezistorius. Tokioje grandinėje, kai jungiklis uždarytas, „NodeMCU“įvestis yra logiškai didelė, tačiau kai jungiklis yra atidarytas, ištraukiamas rezistorius traukia įėjimo įtampą žemyn (loginė nulinė vertė), užkertant kelią neapibrėžtai būsenai įvestyje.
3 žingsnis: kodas
Nukopijuokite žemiau esantį kodą į „Arduino IDE“:
/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * Naudokite „NodeMCU“siunčia jungiklio mygtuko būseną MQTT klientui per „WiFi“* Mokymo URL: * „CopyRight“www.osoyoo.com */ #include #include
int BUTTON_PIN = D2; // mygtukas prijungtas prie GPIO kaiščio D1
// Atnaujinkite jas naudodami tinklui tinkamas vertes. const char*ssid = "********"; // padėkite čia savo "wifi ssid" const char*password = "********"; // įdėkite čia savo "wifi" slaptažodį. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";
„WiFiClient espClient“;
„PubSubClient“klientas (espClient); ilgas paskutinisMsg = 0; žinučių žinutė [50];
void setup_wifi () {
vėlavimas (100); // Pradedame nuo prisijungimo prie WiFi tinklo Serial.print ("Connecting to"); Serial.println (ssid); WiFi.begin (ssid, slaptažodis); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serijinis atspaudas ("."); } randomSeed (micros ()); Serial.println (""); Serial.println („WiFi prijungtas“); Serial.println ("IP adresas:"); Serial.println (WiFi.localIP ()); }
negaliojantis atgalinis skambutis (char* tema, baitas* naudingoji apkrova, nepasirašytas int ilgis)
{} // baigti atgalinį skambutį
void reconnect () {
// Ciklas, kol vėl prisijungsime, kol (! Client.connected ()) {Serial.print ("Bandomas MQTT ryšys …"); // Sukurkite atsitiktinį kliento ID String clientId = "ESP8266Client-"; clientId += Styga (atsitiktinė (0xffff), HEX); // bandymas prisijungti // jei MQTT brokeris turi kliento ID, vartotojo vardą ir slaptažodį // pakeiskite šią eilutę į if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("prijungtas"); // prisijungę prie MQTT brokerio, užsisakykite komandą, jei yra klientas.subscribe ("OsoyooCommand"); } else {Serial.print ("nepavyko, rc ="); Serial.print (client.state ()); Serial.println ("bandykite dar kartą po 5 sekundžių"); // Palaukite 5 sekundes prieš vėl bandydami uždelsti (5000); }}} // pabaigos prisijungimas ()
void setup () {
Serial.begin (115200); „setup_wifi“(); client.setServer (mqtt_server, 1883); client.setCallback (atšaukimas); pinMode (BUTTON_PIN, INPUT); }
void loop () {
if (! client.connected ()) {reconnect (); } client.loop (); ilgas dabar = milis (); int statusas; // siųsti pranešimą kas 2 sekundes, jei (dabar - lastMsg> 2000) {lastMsg = now; status = digitalRead (BUTTON_PIN); String msg = "Mygtuko būsena:"; if (status == HIGH) {msg = msg+ "Paspaustas"; char pranešimas [58]; msg.toCharArray (pranešimas, 58); Serial.println (pranešimas); // paskelbti jutiklių duomenis MQTT brokeriui client.publish ("OsoyooData", pranešimas); } else {msg = msg+ "Nespausti"; char pranešimas [58]; msg.toCharArray (pranešimas, 58); Serial.println (pranešimas); // paskelbti jutiklių duomenis MQTT brokeriui client.publish ("OsoyooData", pranešimas); }}}
Redaguokite kodą, kad jis atitiktų jūsų „WiFi“ir MQTT nustatymus, kaip nurodyta toliau: 1) „Hotspot“konfigūracija: Raskite žemiau esančią kodo eilutę, įdėkite savo SSID ir slaptažodį.
const char* ssid = „your_hotspot_ssid“; const char* password = „your_hotspot_password“;
2) MQTT serverio adreso nustatymas: Galite naudoti savo MQTT tarpininko URL arba IP adresą, kad nustatytumėte didesnę nei mqtt_server reikšmę. Taip pat galite naudoti žinomą nemokamą MQTT serverį projektui išbandyti, pvz., „Broker.mqtt-dashboard.com“, „iot.eclipse.org“ir kt.
const char* mqtt_server = „broker.mqtt-dashboard.com“;
3) MQTT kliento nustatymai Jei jūsų MQTT brokeriui reikalingas kliento ID, vartotojo vardo ir slaptažodžio autentifikavimas, turite pakeisti
if (client.connect (clientId.c_str ()))
Į
if (client.connect (clientId, userName, passWord)) // padėkite čia savo clientId/userName/passWord
Jei ne, tiesiog palikite juos kaip numatytuosius. Po to pasirinkite atitinkamą plokštės tipą ir prievado tipą, kaip nurodyta toliau, tada įkelkite eskizą į „NodeMCU“.
- Lenta: „NodeMCU 0.9 (ESP-12 modulis)“
- CPU dažnis: „80MHz“Blykstės dydis:
- 4 mln. (3 mln. SPIFFS) “
- Įkėlimo greitis: "115200"
- Uostas: pasirinkite savo „NodeMCU“nuoseklųjį prievadą
4 žingsnis: MQTT kliento nustatymai
Jei nežinote, kaip sukonfigūruoti MQTT klientą, apsilankykite mūsų paskutiniame straipsnyje:
Temų nustatymai: paskelbiama tema: „OsoyooCommand“
Prenumeruojama tema: OsoyooData
Bėgimo rezultatas
Kai įkėlimas bus baigtas, jei „wifi“viešosios interneto prieigos taško pavadinimo ir slaptažodžio nustatymai yra tinkami ir prijungtas MQTT brokeris, atidarykite serijinį monitorių, pamatysite tokį rezultatą: Laikykite nuspaudę šį mygtuką, serijinis monitorius kas 2 sekundes išves „Mygtuko būsena: paspaustas“; Atleidus šį mygtuką, serijinis monitorius kas 2 sekundes išves „Mygtuko būsena: nepaspaustas“.
Rekomenduojamas:
„Microsoft Teams“nutildymo mygtukas: 4 žingsniai
„Microsoft Teams“nutildymo mygtukas: sukurkite lengvai pasiekiamą mygtuką, kad nutildytumėte/įjungtumėte garsą „Microsoft Teams“skambučio metu! Kadangi 2020 m. Šiame projekte naudojamas „Adafruit Circuit Playground Express“(CPX) ir didelis mygtukas, kad būtų sukurtas „Microsoft Teams“nutildymo mygtukas sparčiuoju klavišu
„Glass IoT“jutiklinis mygtukas: 10 žingsnių
„Glass IoT“jutiklinis mygtukas: aną dieną aplink parduotuvę uždėjau ITO stiklo gabalėlį ir galvojau, kaip jį panaudoti. ITO, indžio alavo oksidas, stiklas dažniausiai randamas skystųjų kristalų ekranuose, saulės elementuose, lėktuvo kabinos languose ir kt
„IoT“mygtukas („D1 Mini“): 6 žingsniai
„IoT“mygtukas („D1 Mini“): aš sukūriau „IoT“mygtuką (pagalvokite apie tuos „Amazon Dash“dalykus), kuriuos galite naudoti norėdami siųsti pranešimus į savo telefoną (pavyzdžiui, atsipalaiduodami sode prašydami papildyti gėrimus). Galite lengvai iš naujo sukonfigūruoti sąveiką su daugeliu kitų įrenginių
Avarinis mygtukas su „NodeMCU“: 7 žingsniai
Avarinis mygtukas su „NodeMCU“: Avarinis mygtukas padeda jums gauti pagalbos, jei yra kokia nors avarinė situacija, tiesiog paspauskite mygtuką ir jis automatiškai paskelbs „Facebook“ar „Twitter“pranešimą, kurį įdėjote į kodą, jei norite, galite pridėti kitą mygtuką medicininė būklė
„IoT“mygtukas, valdantis jūsų programą: 6 veiksmai
„IoT“mygtukas, valdantis jūsų programą: Vienas iš dalykų, kurie man labiausiai patinka mikrovaldikliuose, yra galimybė juos naudoti kaip įvesties įrenginį, pavyzdžiui, „Arduino Micro“galima naudoti kaip HID (žmogaus sąsajos įrenginį), o tai reiškia, kad su tam tikru kodavimu ir žinote, kaip galite pasigaminti savo keyboa