
Helô bawb! Bydd yr erthygl hon yn esbonio'n fanwl ac yn dangos sut i sefydlu rheolaeth o bell ar y modiwl esp8266 gan ddefnyddio ap mewn dim ond 20 munud o amser rhydd. Android trwy brotocol MQTT.
Mae'r syniad o reolaeth o bell a monitro bob amser wedi cyffroi meddyliau pobl sy'n angerddol am electroneg a rhaglennu. Wedi'r cyfan, mae'r gallu i dderbyn neu anfon y data angenrheidiol ar unrhyw adeg, waeth beth fo'ch lleoliad, yn darparu digon o gyfleoedd. Yn fy erthyglau blaenorol и ) Ceisiais ystyried sawl opsiwn fforddiadwy a chymharol syml ar gyfer gweithredu rheolaeth bell ar ficroreolyddion trwy'r Rhyngrwyd. Fodd bynnag, nid yw amser a'r byd i gyd yn aros yn ei unfan - mae cynnydd yn parhau â'i symudiad di-ildio ymlaen. Yn ystod yr amser byr hwn, mae'r modiwl esp8266 wedi ennill poblogrwydd eang, sydd, diolch i'w bris isel a'i wi-fi adeiledig, wedi dod yn un o brif gydrannau'r Cartref Clyfar.
Ar hyn o bryd, MQTT yw'r protocol trosglwyddo data datblygedig a mwyaf poblogaidd rhwng dyfeisiau unigol o fewn systemau Cartref Clyfar. Mae ganddo nifer o fanteision dros brotocolau eraill:
— defnydd isel o draffig;
- mae'r cysylltiad rhwng y cleient a'r gweinydd bob amser ar agor;
- nid yw'n llwytho'r sianel Rhyngrwyd;
— absenoldeb oedi wrth drosglwyddo data;
— system gyfleus o danysgrifiadau i bynciau;
Mae hyn i gyd yn ei gwneud hi'n bosibl monitro a rheoli mewn amser real. Fodd bynnag, mae angen ei weinydd ei hun ar MQTT, sy'n gweithredu fel cyfryngwr rhwng cleientiaid rhwydwaith. Mae dwy ffordd i naill ai greu eich gweinydd eich hun neu ddefnyddio gwasanaethau trydydd parti.
Mae'r system reoli a ddisgrifir yn cynnwys dau brif ran: gweinydd MQTT (fel arfer dim ond un) a chleientiaid, y gall fod cryn nifer ohonynt. Yn ein hachos ni, bydd y cleientiaid yn gymhwysiad sy'n rhedeg ar Android a'r modiwl esp8266 ei hun.
Mae algorithm gweithredu'r system fel a ganlyn. Mae cleientiaid yn cysylltu â'r gweinydd ac yn syth ar ôl cysylltu, mae pob un ohonynt yn tanysgrifio i'r pynciau sydd o ddiddordeb iddo. Mae'r holl gyfathrebu rhwng cleientiaid yn mynd trwy'r gweinydd, sy'n ailgyfeirio data i gleientiaid eraill yn seiliedig ar eu tanysgrifiadau.
gweinydd MQTT.
Yn ein hachos ni, byddwn yn defnyddio gwasanaeth hynod gyfleus sydd â chynllun tariff rhad ac am ddim (Cute Cat) a fydd yn cwmpasu'n llawn yr anghenion ar gyfer gweithredu system cartref smart fach fewnol.

Gadewch i ni gofrestru ar y wefan a chael y data angenrheidiol i gael mynediad i'r gweinydd. Wrth ffurfweddu cleientiaid, rhaid i chi ddefnyddio Porthladd rheolaidd (heb SSL a TLS).

Cais ymlaen Android.
Bydd ein cais yn gweithredu fel panel rheoli ar gyfer y microreolydd, a bydd hefyd yn derbyn ac yn arddangos yr holl wybodaeth a dderbyniwyd gan yr esp8266.
Gelwir y cais ac mae'n gleient mqtt parod gyda nifer fach o widgets defnyddiol iawn. Gallwch wylio'r fideo am fwy o fanylion ar sut i ddefnyddio'r ap.
Esp8266.
Mae'r modiwl wedi'i fflachio yn amgylchedd rhaglennu Arduino, fodd bynnag, rwyf am nodi bod gan y modiwl broblemau gyda'r firmware yn y fersiynau diweddaraf o Arduino, felly rwy'n argymell defnyddio fersiwn 1.6.4.
Er enghraifft, mae LED (8266 pin) a synhwyrydd tymheredd ds5b18 (20 bin) wedi'u cysylltu â'r esp2.
Gan fod angen derbyn data i reoli'r LED, ar ôl cysylltu, rhaid i esp danysgrifio i'r pwnc “prawf / dan arweiniad” cyfatebol, fel arall bydd yr holl ddata a anfonir yn cael ei basio gan ein microreolydd.
Nid oes angen tanysgrifiad arnoch i anfon data tymheredd, ond wrth anfon gwerthoedd tymheredd, rhaid i chi nodi'r pwnc y bydd y data hwn yn mynd iddo.
Isod mae braslun gyda sylwadau manwl.
Braslun Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину
#cynnwys
#cynnwys
#cynnwys
#cynnwys
#diffinio BWS_UN_GWIFREN 2
UnWire unWire(BWS_UN_WIRE);
Synwyryddion tymheredd Dallas (&oneWire);
const char *ssid = "MAES AWR"; // Enw'r pwynt mynediad WiFi
const char *pass = "CYFRINAIR"; // Cyfrinair o'r pwynt mynediad
const char *mqtt_server = "gweinydd"; // enw gweinydd MQTT
const int mqtt_port = 11140; // Porthladd i gysylltu â gweinydd MQTT
const char *mqtt_user = "Mewngofnodi"; // Logiau o'r gweinydd
const char *mqtt_pass = "Pas"; // Cyfrinair y gweinydd
#diffinio MAINT_BYFFER 100
bool LedState = ffug;
int tm=300;
tymheredd arnofio=0;
// Swyddogaeth ar gyfer derbyn data o'r gweinydd
galwad yn ôl gwag (constant MQTT::Publish& pub)
{
Serial.print(pub.topic()); // allbynnu enw'r pwnc i'r porthladd cyfresol
Cyfresol.argraffu(" => ");
Serial.print(pub.payload_string()); // allbynnu'r gwerth data a dderbyniwyd i'r porthladd cyfresol
Llinyn llwyth tâl = pub.payload_string();
os(String(pub.topic()) == "test/led") // gwirio a ddaeth y data o'r pwnc sydd ei angen arnom
{
int stled = payload.toInt(); // trosi'r data a dderbyniwyd i fath cyfanrif
digitalWrite(5,stled); // trowch y LED ymlaen neu i ffwrdd yn dibynnu ar y gwerthoedd data a dderbynnir
}
}
Cleient WiFi wcleient;
Cleient PubSubClient(wclient, mqtt_server, mqtt_port);
setup gwag () {
synwyryddion.dechrau();
Serial.begin (115200);
oedi (10);
Serial.println ();
Serial.println ();
pinMode (5, ALLBWN);
}
dolen gwag () {
// cysylltu â wi-fi
os (WiFi.status() != WL_CONNECTED) {
Serial.print("Yn cysylltu â");
Cyfresol.argraffu(ssid);
Cyfresol.println("...");
WiFi.begin(ssid, pasio);
os (WiFi.waitForConnectResult() != WL_CONNECTED)
dychwelyd;
Serial.println("WiFi wedi'i gysylltu");
}
// cysylltu â gweinydd MQTT
os (WiFi.status() == WL_CONNECTED) {
os (!cleient.connected()) {
Serial.println("Cysylltu â gweinydd MQTT");
os (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Wedi'i gysylltu â gweinydd MQTT");
cleient.set_alwad_yn_ôl(galwad_yn_ôl);
client.subscribe("prawf/led"); // tanysgrifiwch i'r pwnc gyda data ar gyfer y LED
} {Arall
Serial.println("Methwyd cysylltu â gweinydd MQTT");
}
}
os (cleient.connected()){
cleient.loop();
Anfon Dros Dro();
}
}
} // diwedd y brif ddolen
// Swyddogaeth ar gyfer anfon darlleniadau o synhwyrydd tymheredd
gwag Anfon Dros Dro() {
os (tm==0)
{
sensors.requestTemperatures(); // rydym yn cael y gwerth tymheredd o'r synhwyrydd
tymheredd arnofio = sensors.getTempCByIndex(0);
client.publish("prawf/temp",Llinyn(temp)); // anfon y gwerth tymheredd i'r pwnc ar gyfer y synhwyrydd tymheredd
Serial.println(dros dro);
tm = 300; // saib rhwng anfon gwerthoedd tymheredd tua 3 eiliad
}
tm--;
oedi (10);
}
O ganlyniad, rydym yn cael offeryn cyfleus ar gyfer rheoli o bell a monitro data, sy'n eithaf hawdd i'w ddysgu a bydd hyd yn oed dechreuwyr yn gallu ei wneud.
Fideo yn dangos gweithrediad y system reoli

Cyfarwyddiadau fideo manwl ar gyfer sefydlu'r system

Un o'r opsiynau ar gyfer defnyddio rheolaeth esp8266 trwy'r protocol MQTT

Rheolaeth rhyngrwyd o stribed LED

Os oes gennych unrhyw gwestiynau am y deunydd hwn, yna rwy'n argymell gwylio ail ran y fideo, lle cyflwynir y deunydd yn gliriach.
Mae'r archif yn cynnwys y braslun a'r holl lyfrgelloedd angenrheidiol ar gyfer fflachio'r microreolydd gyda'r braslun o'r enghraifft.
Sylwch nad yw llyfrgell ESP8266WiFi.h wedi'i chynnwys yn yr archif hon, fe'i gosodir trwy reolwr y Byrddau yn amgylchedd Arduino.
gweinydd MQTT -
Dolen i Ap Dangosfwrdd IoT MQTT −
Diolch i chi gyd am eich sylw.
Ffynhonnell: hab.com
