
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 ΠΈ ) 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 sing duwe rencana tarif gratis (Cute Cat) sing bakal nyukupi kabutuhan kanggo ngleksanakake sistem omah pinter cilik ing omah.

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).

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 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

Pandhuan video rinci kanggo nyetel sistem

Salah siji opsi kanggo nggunakake kontrol esp8266 liwat protokol MQTT

Kontrol internet strip LED

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.
Server MQTT -
Link menyang Aplikasi Dashboard IoT MQTT β
Matur nuwun kanggo kabeh perhatian.
Source: www.habr.com
