Kontrol Internet Esp8266 liwat protokol MQTT

Kontrol Internet Esp8266 liwat protokol MQTT
Halo kabeh! Artikel iki bakal njelasake kanthi rinci lan nduduhake carane nyetel remot kontrol modul esp8266 nggunakake aplikasi mung sajrone 20 menit. Android ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ MQTT.

Gagasan babagan remote control lan ngawasi mesthi nyenengake pikirane wong sing seneng babagan elektronik lan program. Sawise kabeh, kemampuan kanggo nampa utawa ngirim data sing dibutuhake ing sembarang wektu, preduli saka lokasi sampeyan, menehi kesempatan akeh. Ing artikel sadurunge Artikel 1 ΠΈ Artikel 2) Aku nyoba nimbang sawetara opsi terjangkau lan relatif prasaja kanggo ngleksanakake remot kontrol mikrokontroler liwat Internet. Nanging, wektu lan jagad iki ora mandheg - kemajuan terus maju. Sajrone wektu sing cendhak, modul esp8266 entuk popularitas sing akeh, amarga rega murah lan wi-fi sing dibangun, wis dadi salah sawijining komponen utama Smart Home.

Saiki, MQTT minangka protokol transfer data sing maju lan paling populer ing antarane piranti individu ing sistem Smart Home. Nduwe sawetara kaluwihan tinimbang protokol liyane:
- konsumsi lalu lintas kurang;
- sambungan antarane klien lan server tansah mbukak;
- ora mbukak saluran Internet;
- ora ana wektu tundha ing transmisi data;
- sistem langganan sing trep kanggo topik;
Kabeh iki ndadekake iku bisa kanggo ngawasi lan kontrol ing wektu nyata. Nanging, MQTT mbutuhake server dhewe, sing tumindak minangka perantara antarane klien jaringan. Ana rong cara kanggo nggawe server dhewe utawa nggunakake layanan pihak katelu.

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΠ°Ρ систСма управлСния состоит ΠΈΠ· Π΄Π²ΡƒΡ… основных частСй: сСрвСра MQTT (ΠΎΠ½ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ΄ΠΈΠ½) ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ. Π’ нашСм случаС Π² качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Android ΠΈ сам ΠΌΠΎΠ΄ΡƒΠ»ΡŒ esp8266.

Algoritma operasi sistem kaya ing ngisor iki. Klien nyambung menyang server lan sanalika sawise nyambungake, saben wong langganan topik sing menarik kanggo dheweke. Kabeh komunikasi antarane klien transit liwat server, kang pangalihan data kanggo klien liyane adhedhasar lengganan.

server MQTT.

Ing kasus kita, kita bakal nggunakake layanan sing trep banget www.cloudmqtt.com sing duwe rencana tarif gratis (Cute Cat) sing bakal nyukupi kabutuhan kanggo ngleksanakake sistem omah pinter cilik ing omah.
Kontrol Internet Esp8266 liwat protokol MQTT
Ayo ndhaptar ing situs kasebut lan entuk data sing dibutuhake kanggo ngakses server. Nalika ngatur klien, sampeyan kudu nggunakake Port biasa (tanpa SSL lan TLS).
Kontrol Internet Esp8266 liwat protokol MQTT

Aplikasi aktif Android.

Aplikasi kita bakal tumindak minangka panel kontrol kanggo mikrokontroler, lan uga bakal nampa lan nampilake kabeh informasi sing ditampa saka esp8266.

Aplikasi kasebut diarani Dasbor MQTT IoT lan klien mqtt siap-digawe karo nomer cilik widget banget Handy. Sampeyan bisa nonton video kanggo rincian liyane babagan carane nggunakake app.

Esp8266.

Modul flashed ing lingkungan program Arduino, Nanging, aku pengin Wigati sing modul duwe masalah karo perangkat kukuh ing versi paling anyar saka Arduino, aku nyaranake nggunakake versi 1.6.4.
Contone, LED (8266 pin) lan sensor suhu ds5b18 (20 pin) disambungake menyang esp2.
Amarga kudu nampa data kanggo ngontrol LED, sawise nyambungake, esp kudu langganan topik "test / led" sing cocog, yen kabeh data sing dikirim bakal dilewati dening mikrokontroler kita.
Sampeyan ora perlu langganan kanggo ngirim data suhu, nanging nalika ngirim nilai suhu, sampeyan kudu nemtokake topik sing data iki bakal pindhah.

Ing ngisor iki sketsa kanthi komentar sing rinci.

Sketsa Esp8266_mqtt.ino// Π‘Π²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ ΠΏΠΎΠ΄Π»ΠΊΡŽΡ‡Π΅Π½ ΠΊ 5 ΠΏΠΈΠ½Ρƒ
// Π”Π°Ρ‚Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ds18b20 ΠΊ 2 ΠΏΠΈΠ½Ρƒ

#kalebu
#kalebu
#kalebu
#kalebu

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

const char *ssid = "BANDARA"; // Jeneng titik akses WiFi
const char *pass = "PASSWORD"; // Sandi saka titik akses

const char *mqtt_server = "server"; // Jeneng server MQTT
const int mqtt_port = 11140; // Port kanggo nyambungake menyang server MQTT
const char *mqtt_user = "Login"; // Log saka server
const char *mqtt_pass = "Pass"; // Sandi server

#define BUFFER_SIZE 100

bool LedState = palsu;
int tm=300;
suhu ngambang = 0;

// Fungsi kanggo nampa data saka server

void callback(const MQTT::Publish&pub)
{
Serial.print(pub.topic()); // output jeneng topik menyang port serial
Serial.print(" => ");
Serial.print(pub.payload_string()); // output Nilai saka data ditampa menyang port serial

String muatan = pub.payload_string();

if(String(pub.topic()) == "test/led") // priksa manawa data teka saka topik sing kita butuhake
{
int stled = payload.toInt(); // Ngonversi data sing ditampa menyang jinis integer
digitalWrite(5,stled); // nguripake utawa mateni LED gumantung ing nilai data ditampa
}
}

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

persiyapan batal () {

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

void loop () {
// nyambung menyang wi-fi
yen (WiFi.status() != WL_CONNECTED) {
Serial.print("Sambung menyang ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);

yen (WiFi.waitForConnectResult() != WL_CONNECTED)
bali;
Serial.println("WiFi disambungake");
}

// nyambung menyang server MQTT
yen (WiFi.status() == WL_CONNECTED) {
yen (!client.connected()) {
Serial.println("Sambungake menyang server MQTT");
yen (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Sambung menyang server MQTT");
client.set_callback(callback);
client.subscribe("test/led"); // langganan topik karo data kanggo LED
} Else {
Serial.println("Ora bisa nyambung menyang server MQTT");
}
}

yen (klien.disambungake()){
klien.loop();
TempSend();
}

}
} // pungkasan loop utama

// Fungsi kanggo ngirim maca saka sensor suhu
void TempSend(){
yen (tm==0)
{
sensors.requestTemperatures(); // kita entuk nilai suhu saka sensor
float temp = sensors.getTempCByIndex(0);
client.publish("test/temp",String(temp)); // ngirim nilai suhu kanggo topik kanggo sensor suhu
Serial.println(temp);
tm = 300; // ngaso antarane ngirim nilai suhu babagan 3 detik
}
tm--;
tundha (10);
}

AkibatΓ©, kita entuk alat sing trep kanggo remot kontrol lan ngawasi data, sing cukup gampang kanggo sinau lan malah pamula bakal bisa nindakake.

Video sing nuduhake operasi sistem kontrol

Muter video

Pandhuan video rinci kanggo nyetel sistem

Muter video

Salah siji opsi kanggo nggunakake kontrol esp8266 liwat protokol MQTT

Muter video

Kontrol internet strip LED

Muter video

Yen sampeyan duwe pitakon babagan materi iki, mula aku nyaranake nonton bagean kapindho video, ing ngendi materi kasebut ditampilake kanthi luwih jelas.

Arsip ngemot sketsa lan kabeh perpustakaan sing dibutuhake kanggo sumunar mikrokontroler kanthi sketsa saka conto kasebut.
Elinga yen perpustakaan ESP8266WiFi.h ora klebu ing arsip iki, diinstal liwat manager Boards ing lingkungan Arduino.

ARSIP

Server MQTT - www.cloudmqtt.com

Link menyang Aplikasi Dashboard IoT MQTT βˆ’ play.google.com/store/apps/details?id=com.thn.iotmqttdashboard&hl=ru

Matur nuwun kanggo kabeh perhatian.

Source: www.habr.com

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS πŸ”₯ Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster