
Ahojte všetci! Tento článok podrobne vysvetlí a ukáže, ako nastaviť diaľkové ovládanie modulu esp8266 pomocou aplikácie za púhych 20 minút. Android prostredníctvom protokolu MQTT.
Myšlienka diaľkového ovládania a monitorovania vždy vzrušovala mysle ľudí nadšených pre elektroniku a programovanie. Koniec koncov, možnosť prijímať alebo odosielať potrebné údaje kedykoľvek, bez ohľadu na vašu polohu, poskytuje dostatok príležitostí. V mojich minulých článkoch ( и ) Snažil som sa zvážiť niekoľko dostupných a relatívne jednoduchých možností realizácie diaľkového ovládania mikrokontrolérov cez internet. Čas a celý svet však nestoja – pokrok pokračuje vo svojom neúprosnom pohybe vpred. Za túto krátku dobu si získal širokú obľubu modul esp8266, ktorý sa vďaka nízkej cene a zabudovanej wi-fi stal jedným z hlavných komponentov Smart Home.
V súčasnosti je MQTT pokročilý a najpopulárnejší protokol na prenos dát medzi jednotlivými zariadeniami v rámci systémov Smart Home. Oproti iným protokolom má niekoľko výhod:
— nízka spotreba dopravy;
— spojenie medzi klientom a serverom je vždy otvorené;
— nenačíta internetový kanál;
— žiadne oneskorenia pri prenose údajov;
— pohodlný systém odberov tém;
To všetko umožňuje sledovať a ovládať v reálnom čase. MQTT však vyžaduje vlastný server, ktorý funguje ako sprostredkovateľ medzi sieťovými klientmi. Tu sú dve možnosti: buď si vytvorte vlastný server alebo použite služby tretích strán.
Popisovaný riadiaci systém sa skladá z dvoch hlavných častí: MQTT servera (zvyčajne len jedného) a klientov, ktorých môže byť pomerne veľa. V našom prípade budú klientmi aplikácia bežiaca na Android a samotný modul esp8266.
Algoritmus činnosti systému je nasledujúci. Klienti sa pripájajú na server a hneď po pripojení sa každý z nich prihlási k témam, ktoré ho zaujímajú. Všetka komunikácia medzi klientmi prechádza cez server, ktorý presmeruje údaje na iných klientov na základe ich predplatného.
server MQTT.
V našom prípade využijeme mimoriadne pohodlnú službu ktorá má bezplatný tarifný plán (Cute Cat), ktorý plne pokryje potreby implementácie malého vlastného systému „inteligentnej domácnosti“.

Zaregistrujme sa na stránke a získajme potrebné údaje na prístup na server. Pri konfigurácii klientov musíte použiť bežný port (bez SSL a TLS).

Žiadosť o Android.
Naša aplikácia bude fungovať ako ovládací panel pre mikrokontrolér a bude tiež prijímať a zobrazovať všetky informácie prijaté z esp8266.
Aplikácia sa volá a je to hotový klient mqtt s malým počtom veľmi pohodlných widgetov. Viac podrobností o používaní aplikácie si môžete pozrieť vo videu.
Esp8266.
Modul je flashovaný v programovacom prostredí Arduino, ale rád by som poznamenal, že modul má problémy s firmvérom v najnovších verziách Arduina, preto odporúčam použiť verziu 1.6.4.
Napríklad LED (8266 pinov) a teplotný senzor ds5b18 (20 piny) sú pripojené k esp2.
Keďže na ovládanie LED je potrebné prijímať dáta, po pripojení sa esp musí prihlásiť k odberu príslušnej témy „test/led“, inak všetky odoslané dáta prejdú naším mikrokontrolérom.
Na odosielanie údajov o teplote nepotrebujete predplatné, ale pri odosielaní hodnôt teploty musíte uviesť tému, ku ktorej tieto údaje budú smerovať.
Nižšie je uvedený náčrt s podrobnými komentármi.
Náčrt Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину
#include
#zahrnúť
#zahrnúť
#zahrnúť
#definovať JEDNODRÔTOVÚ_ZBERNICU 2
JedenWire jedenWire(JEDNODRÔTOVÁ_ZBUSNICA);
DallasTeplotné senzory (&oneWire);
const char *ssid = "LETISKO"; // Názov prístupového bodu WiFi
const char *pass = "HESLO"; // Heslo z prístupového bodu
const char *mqtt_server = "server"; // názov servera MQTT
const int mqtt_port = 11140; // Port pre pripojenie k MQTT serveru
const char *mqtt_user = "Prihlásenie"; // Záznamy zo servera
const char *mqtt_pass = "Heslo"; // Heslo servera
#definovať BUFFER_SIZE 100
bool StavLed = false;
int tm=300;
teplota plaváka = 0;
// Funkcia na príjem údajov zo servera
void callback(const MQTT::Publish& pub)
{
Serial.print(pub.topic()); // vypíše názov témy na sériový port
Serial.print(" => ");
Serial.print(pub.payload_string()); // výstup prijatej dátovej hodnoty do sériového portu
Reťazec užitočné zaťaženie = pub.reťazec_užitočného_zaťaženia();
if(String(pub.topic()) == "test/led") // skontrolujeme, či dáta pochádzajú z požadovanej témy
{
int stled = payday.toInt(); // prevod prijatých dát na celočíselný typ
digitalWrite(5,stled); // zapne alebo vypne LED diódu v závislosti od prijatých hodnôt údajov
}
}
WiFiClient wclient;
Klient PubSubClient(wclient, mqtt_server, mqtt_port);
void setup () {
senzory.begin();
Serial.egegin (115200);
oneskorenie (10);
Serial.println ();
Serial.println ();
pinMode (5, VÝSTUP);
}
void loop () {
// pripojenie k Wi-Fi
ak (WiFi.status() != WL_CONNECTED) {
Serial.print("Pripájam sa k ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);
ak (WiFi.waitForConnectResult() != WL_CONNECTED)
návrat;
Serial.println("Pripojené k Wi-Fi");
}
// pripojenie k MQTT serveru
ak (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Pripájam sa k serveru MQTT");
ak (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(používateľ_mqtt, heslo_mqtt))) {
Serial.println("Pripojené k serveru MQTT");
klient.set_callback(spätné volanie);
client.subscribe("test/led"); // prihlásiť sa na odber témy s údajmi pre LED diódu
} Else {
Serial.println("Nepodarilo sa pripojiť k serveru MQTT");
}
}
ak (klient.pripojený()){
klient.loop();
DočasnéOdoslanie();
}
}
} // koniec hlavnej slučky
// Funkcia na odosielanie údajov z teplotného senzora
void TempSend(){
ak (tm==0)
{
sensors.requestTemperatures(); // získame hodnotu teploty zo senzora
float temp = sensors.getTempCByIndex(0);
client.publish("test/temp",String(temp)); // odošle hodnotu teploty do témy pre teplotný senzor
Serial.println(dočasný);
tm = 300; // pauza medzi odosielaním hodnôt teploty približne 3 sekundy
}
tm--;
oneskorenie (10);
}
Výsledkom je pohodlný nástroj na diaľkové ovládanie a monitorovanie údajov, ktorý sa dá celkom ľahko naučiť a môžu ho používať aj začiatočníci.
Video demonštrujúce fungovanie riadiaceho systému

Podrobný video návod na nastavenie systému

Jedna z možností využitia ovládania esp8266 cez protokol MQTT

Ovládanie LED pásika cez internet

Ak máte nejaké otázky k tomuto materiálu, odporúčam pozrieť si druhú časť videa, kde je materiál podaný prehľadnejšie.
Archív obsahuje skicu a všetky potrebné knižnice na flashovanie mikrokontroléra skicou z príkladu.
Upozorňujeme, že knižnica ESP8266WiFi.h nie je súčasťou tohto archívu, inštaluje sa cez Boards manager v prostredí Arduino.
server MQTT -
Odkaz na aplikáciu IoT MQTT Dashboard –
Ďakujem vám všetkým za vašu pozornosť.
Zdroj: hab.com
