
అందరికీ నమస్కారం! ఈ ఆర్టికల్, కేవలం 20 నిమిషాల్లో ఒక యాప్ను ఉపయోగించి esp8266 మాడ్యూల్ యొక్క రిమోట్ కంట్రోల్ను ఎలా సెటప్ చేయాలో వివరంగా వివరిస్తుంది మరియు చేసి చూపిస్తుంది. Android MQTT ప్రోటోకాల్ ద్వారా.
రిమోట్ కంట్రోల్ మరియు పర్యవేక్షణ యొక్క ఆలోచన ఎల్లప్పుడూ ఎలక్ట్రానిక్స్ మరియు ప్రోగ్రామింగ్ పట్ల మక్కువ ఉన్న వ్యక్తుల మనస్సులను ఉత్తేజపరుస్తుంది. అన్నింటికంటే, మీ స్థానంతో సంబంధం లేకుండా ఎప్పుడైనా అవసరమైన డేటాను స్వీకరించే లేదా పంపగల సామర్థ్యం పుష్కల అవకాశాలను అందిస్తుంది. నా గత వ్యాసాలలో ( и ) నేను ఇంటర్నెట్ ద్వారా మైక్రోకంట్రోలర్ల రిమోట్ కంట్రోల్ని అమలు చేయడానికి అనేక ప్రాప్యత మరియు సాపేక్షంగా సరళమైన ఎంపికలను పరిగణించడానికి ప్రయత్నించాను. అయినప్పటికీ, సమయం మరియు ప్రపంచం మొత్తం నిశ్చలంగా నిలబడలేదు - పురోగతి దాని అనిర్వచనీయమైన కదలికను కొనసాగిస్తుంది. ఈ తక్కువ సమయంలో, esp8266 మాడ్యూల్ విస్తృత ప్రజాదరణ పొందింది, ఇది తక్కువ ధర మరియు అంతర్నిర్మిత wi-fiకి ధన్యవాదాలు, స్మార్ట్ హోమ్ యొక్క ప్రధాన భాగాలలో ఒకటిగా మారింది.
ప్రస్తుతానికి, MQTT అనేది స్మార్ట్ హోమ్ సిస్టమ్లలోని వ్యక్తిగత పరికరాల మధ్య డేటా బదిలీ కోసం అధునాతన మరియు అత్యంత ప్రజాదరణ పొందిన ప్రోటోకాల్. ఇది ఇతర ప్రోటోకాల్ల కంటే అనేక ప్రయోజనాలను కలిగి ఉంది:
- తక్కువ ట్రాఫిక్ వినియోగం;
— క్లయింట్ మరియు సర్వర్ మధ్య కనెక్షన్ ఎల్లప్పుడూ తెరిచి ఉంటుంది;
- ఇంటర్నెట్ ఛానెల్ని లోడ్ చేయదు;
- సమాచార ప్రసారంలో జాప్యం లేదు;
- అంశాలకు చందాల అనుకూలమైన వ్యవస్థ;
ఇవన్నీ నిజ సమయంలో పర్యవేక్షించడం మరియు నియంత్రించడం సాధ్యం చేస్తుంది. అయినప్పటికీ, MQTTకి దాని స్వంత సర్వర్ అవసరం, ఇది నెట్వర్క్ క్లయింట్ల మధ్య మధ్యవర్తిగా పనిచేస్తుంది. ఇక్కడ రెండు ఎంపికలు ఉన్నాయి: మీ స్వంత సర్వర్ని సృష్టించండి లేదా మూడవ పక్ష సేవలను ఉపయోగించండి.
వివరించబడిన నియంత్రణ వ్యవస్థ రెండు ప్రధాన భాగాలను కలిగి ఉంటుంది: ఒక MQTT సర్వర్ (సాధారణంగా ఒకటి మాత్రమే) మరియు క్లయింట్లు, ఇవి చాలా ఉండవచ్చు. మన విషయంలో, క్లయింట్లు అనేవి దీనిపై నడుస్తున్న ఒక అప్లికేషన్ అవుతుంది. Android మరియు esp8266 మాడ్యూల్ కూడా.
సిస్టమ్ ఆపరేషన్ అల్గోరిథం క్రింది విధంగా ఉంది. క్లయింట్లు సర్వర్కి కనెక్ట్ అవుతారు మరియు కనెక్ట్ అయిన వెంటనే, వారిలో ప్రతి ఒక్కరూ తనకు ఆసక్తి ఉన్న అంశాలకు సభ్యత్వాన్ని పొందుతారు. క్లయింట్ల మధ్య అన్ని కమ్యూనికేషన్లు సర్వర్ ద్వారా బదిలీ చేయబడతాయి, ఇది వారి సబ్స్క్రిప్షన్ల ఆధారంగా ఇతర క్లయింట్లకు డేటాను దారి మళ్లిస్తుంది.
MQTT సర్వర్.
మా విషయంలో, మేము చాలా అనుకూలమైన సేవను ఉపయోగిస్తాము ఇది ఉచిత టారిఫ్ ప్లాన్ (క్యూట్ క్యాట్) కలిగి ఉంది, ఇది చిన్న స్వంత "స్మార్ట్ హోమ్" వ్యవస్థను అమలు చేయడానికి అవసరమైన అవసరాలను పూర్తిగా కవర్ చేస్తుంది.

సైట్లో నమోదు చేద్దాం మరియు సర్వర్ను యాక్సెస్ చేయడానికి అవసరమైన డేటాను అందుకుందాం. క్లయింట్లను కాన్ఫిగర్ చేస్తున్నప్పుడు, మీరు తప్పనిసరిగా సాధారణ పోర్ట్ను ఉపయోగించాలి (SSL మరియు TLS లేకుండా).

దరఖాస్తు Android.
మా అప్లికేషన్ మైక్రోకంట్రోలర్ కోసం కంట్రోల్ ప్యానెల్గా పని చేస్తుంది మరియు esp8266 నుండి స్వీకరించిన మొత్తం సమాచారాన్ని కూడా స్వీకరిస్తుంది మరియు ప్రదర్శిస్తుంది.
అప్లికేషన్ అంటారు మరియు తక్కువ సంఖ్యలో చాలా అనుకూలమైన విడ్జెట్లతో సిద్ధంగా ఉన్న mqtt క్లయింట్. అప్లికేషన్ను ఎలా ఉపయోగించాలో మరిన్ని వివరాల కోసం మీరు వీడియోను చూడవచ్చు.
ఎస్పి8266.
మాడ్యూల్ Arduino ప్రోగ్రామింగ్ వాతావరణంలో ఫ్లాష్ చేయబడింది, అయితే Arduino యొక్క తాజా వెర్షన్లలోని ఫర్మ్వేర్తో మాడ్యూల్కు సమస్యలు ఉన్నాయని నేను గమనించాలనుకుంటున్నాను, కాబట్టి నేను వెర్షన్ 1.6.4ని ఉపయోగించమని సిఫార్సు చేస్తున్నాను.
ఉదాహరణకు, LED (8266 పిన్) మరియు ds5b18 ఉష్ణోగ్రత సెన్సార్ (20 పిన్) esp2కి కనెక్ట్ చేయబడ్డాయి.
LED ని నియంత్రించడానికి డేటాను స్వీకరించడం అవసరం కాబట్టి, espని కనెక్ట్ చేసిన తర్వాత తప్పనిసరిగా సంబంధిత "పరీక్ష / నేతృత్వంలోని" టాపిక్కు సభ్యత్వాన్ని పొందాలి, లేకపోతే పంపిన మొత్తం డేటా మా మైక్రోకంట్రోలర్ ద్వారా పాస్ అవుతుంది.
ఉష్ణోగ్రత డేటాను పంపడానికి, మీకు సబ్స్క్రిప్షన్ అవసరం లేదు, కానీ ఉష్ణోగ్రత విలువలను పంపేటప్పుడు, ఈ డేటా ఏ అంశానికి వెళ్తుందో మీరు తప్పనిసరిగా సూచించాలి.
వివరణాత్మక వ్యాఖ్యలతో కూడిన స్కెచ్ క్రింద ఉంది.
స్కెచ్ Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину
# చేర్చండి
# చేర్చండి
#చేర్చండి
#చేర్చండి
# ONE_WIRE_BUS 2ని నిర్వచించండి
వన్వైర్ వన్వైర్(ONE_WIRE_BUS);
డల్లాస్ టెంపరేచర్ సెన్సార్లు(&వన్వైర్);
const char *ssid = "విమానాశ్రయం"; // వైఫై యాక్సెస్ పాయింట్ పేరు
const char *pass = "PASSWORD"; // యాక్సెస్ పాయింట్ నుండి పాస్వర్డ్
const char *mqtt_server = "సర్వర్"; // MQTT సర్వర్ పేరు
const int mqtt_port = 11140; // MQTT సర్వర్కు కనెక్ట్ అవ్వడానికి పోర్ట్
const char *mqtt_user = "లాగిన్"; // సర్వర్ నుండి లాగ్లు
const char *mqtt_pass = "పాస్"; // సర్వర్ పాస్వర్డ్
#BUFFER_SIZE 100 ని నిర్వచించండి
బూల్ లెడ్స్టేట్ = తప్పు;
పూర్ణాంక tm=300;
ఫ్లోట్ టెంప్ = 0;
// సర్వర్ నుండి డేటాను స్వీకరించడానికి ఫంక్షన్
వాయిడ్ కాల్బ్యాక్(const MQTT::ప్రచురణ& పబ్)
{
Serial.print(pub.topic()); // సీరియల్ పోర్ట్ కు టాపిక్ పేరును అవుట్పుట్ చేయండి
సీరియల్.ప్రింట్(" => ");
Serial.print(pub.payload_string()); // అందుకున్న డేటా విలువను సీరియల్ పోర్ట్కు అవుట్పుట్ చేయండి
స్ట్రింగ్ పేలోడ్ = pub.payload_string();
if(String(pub.topic()) == "test/led") // మనకు అవసరమైన అంశం నుండి డేటా వచ్చిందో లేదో తనిఖీ చేయండి
{
int stled = payload.toInt(); // అందుకున్న డేటాను పూర్ణాంకం రకానికి మార్చండి
డిజిటల్ రైట్ (5, stled); // అందుకున్న డేటా విలువలను బట్టి LED ని ఆన్ లేదా ఆఫ్ చేయండి
}
}
వైఫైక్లయింట్ w క్లయింట్;
పబ్సబ్క్లయింట్ క్లయింట్(wclient, mqtt_server, mqtt_port);
శూన్య సెటప్ () {
సెన్సార్లు.begin();
సీరియల్.బెగిన్ (115200);
ఆలస్యం (10);
సీరియల్.ప్రింట్ల్న్ ();
సీరియల్.ప్రింట్ల్న్ ();
పిన్ మోడ్ (5, U ట్పుట్);
}
శూన్య లూప్ () {
// వై-ఫైకి కనెక్ట్ అవ్వండి
(WiFi.status() != WL_CONNECTED) అయితే {
సీరియల్.ప్రింట్("దీనికి కనెక్ట్ అవుతోంది");
సీరియల్.ప్రింట్(ssid);
సీరియల్.ప్రింట్ల్న్("...");
వైఫై.బెగిన్(ssid, పాస్);
(WiFi.waitForConnectResult() != WL_CONNECTED) అయితే
తిరిగి;
Serial.println("వైఫై కనెక్ట్ చేయబడింది");
}
// MQTT సర్వర్కు కనెక్ట్ అవ్వండి
(WiFi.status() == WL_CONNECTED) అయితే {
(!client.connected()) అయితే {
Serial.println("MQTT సర్వర్కి కనెక్ట్ అవుతోంది");
(క్లయింట్.కనెక్ట్ (MQTT :: కనెక్ట్ ("arduinoClient2") అయితే
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("MQTT సర్వర్కు కనెక్ట్ చేయబడింది");
క్లయింట్.సెట్_కాల్బ్యాక్(కాల్బ్యాక్);
client.subscribe("test/led"); // LED కోసం డేటాతో టాపిక్కు సబ్స్క్రైబ్ చేయండి
} else {
Serial.println("MQTT సర్వర్కి కనెక్ట్ కాలేదు");
}
}
(client.connected()) అయితే {
క్లయింట్.లూప్();
టెంప్సెండ్();
}
}
} // ప్రధాన లూప్ ముగింపు
// ఉష్ణోగ్రత సెన్సార్ నుండి రీడింగులను పంపే ఫంక్షన్
టెంప్సెండ్(){ నిష్క్రియం చేయండి
(tm==0) అయితే
{
sensors.requestTemperatures(); // మనకు సెన్సార్ నుండి ఉష్ణోగ్రత విలువ వస్తుంది.
ఫ్లోట్ టెంప్ = సెన్సార్లు.getTempCByIndex(0);
client.publish("test/temp",String(temp)); // ఉష్ణోగ్రత సెన్సార్ కోసం అంశానికి ఉష్ణోగ్రత విలువను పంపండి
సీరియల్.ప్రింట్ల్న్ (తాత్కాలిక);
tm = 300; // ఉష్ణోగ్రత విలువలను పంపే మధ్య 3 సెకన్ల విరామం
}
త్మ్--;
ఆలస్యం (10);
}
ఫలితంగా, మేము రిమోట్ కంట్రోల్ మరియు డేటా మానిటరింగ్ కోసం అనుకూలమైన సాధనాన్ని పొందుతాము, అది నేర్చుకోవడం చాలా సులభం మరియు ప్రారంభకులు కూడా ఉపయోగించవచ్చు.
నియంత్రణ వ్యవస్థ యొక్క ఆపరేషన్ను ప్రదర్శించే వీడియో

సిస్టమ్ను సెటప్ చేయడానికి వివరణాత్మక వీడియో సూచనలు

MQTT ప్రోటోకాల్ ద్వారా esp8266 నియంత్రణను ఉపయోగించే ఎంపికలలో ఒకటి

ఇంటర్నెట్ ద్వారా LED స్ట్రిప్ని నియంత్రిస్తోంది

ఈ విషయం గురించి మీకు ఏవైనా ప్రశ్నలు ఉంటే, వీడియో యొక్క రెండవ భాగాన్ని చూడాలని నేను సిఫార్సు చేస్తున్నాను, ఇక్కడ మెటీరియల్ మరింత స్పష్టంగా ప్రదర్శించబడుతుంది.
ఆర్కైవ్లో స్కెచ్ మరియు మైక్రోకంట్రోలర్ను ఉదాహరణ నుండి స్కెచ్తో ఫ్లాషింగ్ చేయడానికి అవసరమైన అన్ని లైబ్రరీలు ఉన్నాయి.
ESP8266WiFi.h లైబ్రరీ ఈ ఆర్కైవ్లో చేర్చబడలేదని దయచేసి గమనించండి; ఇది Arduino వాతావరణంలో బోర్డుల మేనేజర్ ద్వారా ఇన్స్టాల్ చేయబడింది.
MQTT సర్వర్ -
IoT MQTT డాష్బోర్డ్ యాప్ లింక్ -
మీ దృష్టికి అందరికీ ధన్యవాదాలు.
మూలం: www.habr.com
