
Živjo vsem! Ta članek bo podrobno razložil in prikazal, kako nastaviti daljinsko upravljanje modula esp8266 z aplikacijo v samo 20 minutah. Android по протоколу MQTT.
Zamisel o daljinskem nadzoru in nadzoru je vedno vznemirjala ljudi, ki so navdušeni nad elektroniko in programiranjem. Navsezadnje možnost prejemanja ali pošiljanja potrebnih podatkov kadar koli, ne glede na vašo lokacijo, ponuja veliko možnosti. V mojih prejšnjih člankih и ) Poskušal sem razmisliti o več cenovno dostopnih in razmeroma preprostih možnostih za izvedbo daljinskega upravljanja mikrokontrolerjev prek interneta. Vendar pa čas in ves svet ne miruje - napredek nadaljuje svoje neizprosno gibanje naprej. V tem kratkem času je široko priljubljenost pridobil modul esp8266, ki je zaradi nizke cene in vgrajenega wi-fija postal ena glavnih komponent pametnega doma.
MQTT je trenutno napreden in najbolj priljubljen protokol za prenos podatkov med posameznimi napravami znotraj sistemov Smart Home. Pred drugimi protokoli ima več prednosti:
— nizka poraba prometa;
- povezava med odjemalcem in strežnikom je vedno odprta;
- ne naloži internetnega kanala;
— odsotnost zamud pri prenosu podatkov;
— priročen sistem naročanja na teme;
Vse to omogoča spremljanje in nadzor v realnem času. Vendar pa MQTT potrebuje lasten strežnik, ki deluje kot posrednik med omrežnimi odjemalci. Obstajata dva načina za ustvarjanje lastnega strežnika ali uporabo storitev tretjih oseb.
Описываемая система управления состоит из двух основных частей: сервера MQTT (он как правило один) и клиентов, которых может быть довольно много. В нашем случае в качестве клиентов будут выступать приложение на Android и сам модуль esp8266.
Algoritem delovanja sistema je naslednji. Odjemalci se povežejo s strežnikom in takoj po povezavi se vsak od njih naroči na teme, ki ga zanimajo. Vsa komunikacija med odjemalci poteka prek strežnika, ki preusmerja podatke k drugim odjemalcem glede na njihove naročnine.
MQTT strežnik.
V našem primeru bomo uporabili izjemno priročno storitev ki ima brezplačen tarifni načrt (Cute Cat), ki bo v celoti pokril potrebe po implementaciji malega lastnega sistema pametnega doma.

Registrirajmo se na spletnem mestu in pridobimo potrebne podatke za dostop do strežnika. Pri konfiguriranju odjemalcev morate uporabiti običajna vrata (brez SSL in TLS).

Aplikacija na Android.
Naša aplikacija bo delovala kot nadzorna plošča za mikrokontroler, prav tako pa bo sprejemala in prikazovala vse informacije, ki jih prejme od esp8266.
Aplikacija se imenuje in je že pripravljen odjemalec mqtt z majhnim številom zelo priročnih pripomočkov. Za več podrobnosti o uporabi aplikacije si lahko ogledate video.
Esp8266.
Modul je utripal v programskem okolju Arduino, vendar želim opozoriti, da ima modul težave z vdelano programsko opremo v najnovejših različicah Arduino, zato priporočam uporabo različice 1.6.4.
Na primer, LED (8266 zatičev) in temperaturni senzor ds5b18 (20 zatiča) sta priključena na esp2.
Ker je za krmiljenje LED potrebno prejeti podatke, se mora esp po povezavi prijaviti na ustrezno temo “test / led”, sicer bodo vsi poslani podatki šli mimo našega mikrokontrolerja.
Za pošiljanje temperaturnih podatkov ne potrebujete naročnine, vendar morate pri pošiljanju temperaturnih vrednosti določiti temo, v katero bodo ti podatki šli.
Spodaj je skica s podrobnimi komentarji.
Skica Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину
#include
#vključi
#vključi
#vključi
#definiraj ENA_ŽIČNA_VODILA 2
EnaŽica enaŽica(ENA_ŽIČNA_VODILA);
DallasTemperaturni senzorji (&oneWire);
const char *ssid = "LETALIŠČE"; // Ime dostopne točke WiFi
const char *pass = "GESLO"; // Geslo iz dostopne točke
const char *mqtt_server = "strežnik"; // Ime strežnika MQTT
const int mqtt_port = 11140; // Vrata za povezavo s strežnikom MQTT
const char *mqtt_user = "Prijava"; // Dnevniki s strežnika
const char *mqtt_pass = "Prehod"; // Geslo strežnika
#definiraj VELIKOST_MEDPOMOČNIKA 100
bool LedState = false;
int tm=300;
plavajoča temperatura = 0;
// Funkcija za prejemanje podatkov s strežnika
void povratni klic(const MQTT::Publish& pub)
{
Serijska.tisk(pub.topic()); // izpiši ime teme na serijska vrata
Serijska.tisk("=>");
Serijska.tisk(pub.niz_koristnega_naloga()); // izpiši vrednost prejetih podatkov na serijska vrata
niz koristnih podatkov = pub.string_koristne_telesnosti();
if(String(pub.topic()) == "test/led") // preveri, ali podatki prihajajo iz teme, ki jo potrebujemo
{
int stled = payload.toInt(); // pretvori prejete podatke v celoštevilski tip
digitalWrite(5,stled); // vklop ali izklop LED diode glede na prejete vrednosti podatkov
}
}
WiFiClient wclient;
Odjemalec PubSubClient(wclient, mqtt_server, mqtt_port);
nična namestitev () {
senzorji.začetek();
Serial.begin (115200);
zakasnitev (10);
Serial.println ();
Serial.println ();
pinMode (5, OUTPUT);
}
void loop () {
// povezava z omrežjem Wi-Fi
če (WiFi.status() != WL_CONNECTED) {
Serial.print("Vzpostavljanje povezave z");
Serijska.tisk(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);
če (WiFi.waitForConnectResult() != WL_CONNECTED)
vrnitve;
Serial.println("Wi-Fi vzpostavljen");
}
// povezava s strežnikom MQTT
če (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Vzpostavljanje povezave s strežnikom MQTT");
če (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(uporabnik_mqtt, geslo_mqtt))) {
Serial.println("Povezan s strežnikom MQTT");
odjemalec.set_callback(povratni klic);
odjemalec.naroči se("test/led"); // naročite se na temo s podatki za LED
} Else {
Serial.println("Ni se bilo mogoče povezati s strežnikom MQTT");
}
}
če (odjemalec.povezan()){
odjemalec.zanka();
ZačasnoPošlji();
}
}
} // konec glavne zanke
// Funkcija za pošiljanje odčitkov s temperaturnega senzorja
void TempSend(){
če (tm==0)
{
senzorji.zahtevaTemperature(); // dobimo vrednost temperature iz senzorja
float temp = senzorji.getTempCByIndex(0);
odjemalec.objava("test/začasno", niz(začasno)); // pošlji vrednost temperature v temo za temperaturni senzor
Serial.println(temp);
tm = 300; // premor med pošiljanjem temperaturnih vrednosti približno 3 sekunde
}
tm--;
zakasnitev (10);
}
Posledično dobimo priročno orodje za daljinsko upravljanje in spremljanje podatkov, ki je precej enostavno za učenje in ga bodo zmogli tudi začetniki.
Video, ki prikazuje delovanje krmilnega sistema

Podrobna video navodila za nastavitev sistema

Ena izmed možnosti uporabe nadzora esp8266 prek protokola MQTT

Internetni nadzor LED traku

Če imate kakršna koli vprašanja o tem gradivu, potem priporočam ogled drugega dela videa, kjer je gradivo predstavljeno bolj jasno.
Arhiv vsebuje skico in vse potrebne knjižnice za flashanje mikrokontrolerja s skico iz primera.
Upoštevajte, da knjižnica ESP8266WiFi.h ni vključena v ta arhiv, nameščena je prek upravitelja plošč v okolju Arduino.
MQTT strežnik -
Povezava do aplikacije IoT MQTT Dashboard −
Hvala vsem za vašo pozornost.
Vir: www.habr.com
