Esp8266 juhtimine interneti kaudu MQTT protokolli abil.

Esp8266 juhtimine interneti kaudu MQTT protokolli abil.
Tere kõigile! Selles artiklis räägime ja näitame üksikasjalikult, kuidas seadistada esp8266-mooduli kaugjuhtimist Androidi rakenduse kaudu MQTT-protokolli abil vaid 20 minuti jooksul.

Kaugjuhtimise ja jälgimise idee on alati köitnud elektroonika ja programmeerimise huvilisi. Võimalus saada vajalikud andmed igal ajal, sõltumata asukohast, avab laiad võimalused. Oma varasemates artiklites ( Artikkel 1 ja Artikkel 2) olen püüdnud käsitleda mitmeid kergesti teostatavaid võimalusi mikrokontrollerite kaugjuhtimiseks interneti kaudu. Kuid aeg ja maailm ei seisa paigal – progress jätkab oma vankumatut liikumist edasi. Selle lühikese aja jooksul on esp8266-moodul, mis tänu madalale hinnale ja sisseehitatud wi-fi-le on saanud üheks peamiseks „Nutika kodu” komponendiks, laialdaselt populaarsust kogunud.

Praegu on MQTT juhtiv ja kõige populaarsem protokoll andmete edastamiseks erinevate seadmete vahel nutikate süsteemide raames. Sellel on mitmeid eeliseid teiste protokollide ees:
— madal andmevoogude tarbimine;
— ühendus kliendi ja serveri vahel on alati avatud;
— ei koorma internetiühendust;
— andmete edastamisel pole viivitusi;
— mugav tellimissüsteem teemadele;
Kõik see võimaldab reaalajas jälgimist ja juhtimist. Siiski nõuab MQTT oma serveri olemasolu, mis toimib vahendajana võrgu klientide vahel. Siin on kaks varianti: kas luua oma server või kasutada kolmanda osapoole teenuseid.

Käesolev juhtimissüsteem koosneb kahest põhiosast: MQTT serverist (mida on tavaliselt üks) ja klientidest, keda võib olla üsna palju. Meie puhul esindavad kliente Androidi rakendus ja esp8266 moodul.

Süsteemi töö algoritm on järgmine. Kliendid ühenduvad serveriga ja kohe pärast ühenduse loomist tellib igaühe huvitavad teemad. Kõik suhtlemine klientide vahel toimub serveri kaudu, mis suunab andmeid teistele klientidele vastavalt nende tellimustele.

MQTT server.

Meie puhul kasutame ülimugavat teenust www.cloudmqtt.com mis pakub tasuta hinnaplaani (Cute Cat), mis katab täielikult väikese oma «nutika kodu» süsteemi rakendamise vajadused.
Esp8266 juhtimine interneti kaudu MQTT protokolli abil.
Registreerime end saidil ja saame vajalikud andmed serverisse sisenemiseks. Klientide seadistamisel tuleb kasutada tavalist porti (ilma SSL ja TLS-ta).
Esp8266 juhtimine interneti kaudu MQTT protokolli abil.

Rakendus Androidile.

Meie rakendus toimib mikrokontrolleri juhtimisseadmestikuna ja võtab vastu ning kuvab kogu teabe, mida esp8266 edastab.

Rakenduse nimi on IoT MQTT Dashboard ja see on valmistanud mqtt klient väikese arvu väga mugavate elementidega. Rakenduse kasutamise kohta saate rohkem vaadata video pealt.

Esp8266.

Moodul programmeeritakse Arduino programmikeskkonnas, kuid tahan märkida, et moodulil on probleeme viimaste Arduino versioonidega, seetõttu soovitan kasutada versiooni 1.6.4.
Näiteks on esp8266-le ühendatud LED (5. pin) ja temperatuuriandur DS18B20 (2. pin).
Kuna LED-i juhtimiseks tuleb andmeid saada, peab esp pärast ühendamist korraldama vastava teema "test/led" tellimise, vastasel korral ei lähe kõik edastatud andmed mööda meie mikrokontrollerist.
Temperatuuri edastamiseks tellimist ei vajata, kuid temperatuuri väärtuste edastamisel tuleb näidata, millisele teemale need andmed saadetakse.

Allpool on esitatud sketš koos üksikasjalike kommentaaridega.

Sketš Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const char *ssid = "AIRPORT"; // WiFi ligipääsupunkti nimi
const char *pass = "PASSWORD"; // Ligipääsupunkti parool

const char *mqtt_server = "server"; // MQTT serveri nimi
const int mqtt_port = 11140; // Port ühendamiseks MQTT serveriga
const char *mqtt_user = "Login"; // Serveri sisselogimise nimi
const char *mqtt_pass = "Pass"; // Serveri parool

#define BUFFER_SIZE 100

bool LedState = false;
int tm=300;
float temp=0;

// Функция получения данных от сервера

void callback(const MQTT::Publish& pub)
{
Serial.print(pub.topic()); // väljastame sarvporti teema nime
Serial.print(" => ");
Serial.print(pub.payload_string()); // kuvame seeriale saadud andmete väärtus

String payload = pub.payload_string();

if (String(pub.topic()) == "test/led") // kontrollime, kas saame andmed soovitud teemast
{
int stled = payload.toInt(); // muundame saadud andmed integer tüübiks
digitalWrite(5, stled); // lülitame sisse või välja LED-d sõltuvalt saadud väärtustest
}
}

WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);

void setup() {

sensors.begin();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(5, OUTPUT);
}

void loop() {
// подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);

if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi ühendatud");
}

// подключаемся к MQTT серверу
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Ühendamine MQTT serveriga");
if (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Ühendatud MQTT serveriga");
client.set_callback(callback);
client.subscribe("test/led"); // tellime teema, mis sisaldab LED andmeid
} else {
Serial.println("Ei saanud ühendada MQTT serveriga");
}
}

if (client.connected()) {
client.loop();
TempSend();
}

}
} // peamise tsükli lõpp

// Функция отправки показаний с термодатчика
void TempSend() {
if (tm == 0)
{
sensors.requestTemperatures(); // saame anduridelt temperatuuri väärtuse
float temp = sensors.getTempCByIndex(0);
client.publish("test/temp", String(temp)); // saadame temperatuuri väärtuse temperatuuri anduri teemale
Serial.println(temp);
tm = 300; \/\/ pausita temperatuuride väärtuste saatmiste vahel umbes 3 sekundit
}
tm--;
delay(10);
}

Tulemusena saame mugava tööriista kaugrakenduseks ja andmete jälgimiseks, mis on üsna lihtne õppida ning sobib ka algajatele.

Süsteemi juhtimise demonstreerimise video

Vaata videot

Üksikasjalik videojuhend süsteemi seadistamiseks

Vaata videot

Üks variant esp8266 juhtimise rakendamiseks MQTT protokolli kaudu

Vaata videot

LED-ribade juhtimine interneti kaudu

Vaata videot

Kui teil on selle materjali kohta küsimusi, soovitan vaadata teist osa videost, kus teema on esitatud visuaalselt arusaadavamalt.

Arhivis on visand ja kõik vajalikud teegid mikrokontrolleri vilkumiseks näidisprogrammist.
Pööran teie tähelepanu, et teek ESP8266WiFi.h ei kuulu sellesse arhiivi, see installitakse Arduino keskkonnas Boards manageri kaudu.

ARHIIV

MQTT server — www.cloudmqtt.com

Link IoT MQTT Dashboard rakendusele — play.google.com\/store\/apps\/details?id=com.thn.iotmqttdashboard&hl=et

Tänan kõiki tähelepanu eest.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster