Orodha ya maudhui:

Jinsi ya Kutumia MQTT Pamoja na Raspberry Pi na ESP8266: Hatua 8 (na Picha)
Jinsi ya Kutumia MQTT Pamoja na Raspberry Pi na ESP8266: Hatua 8 (na Picha)

Video: Jinsi ya Kutumia MQTT Pamoja na Raspberry Pi na ESP8266: Hatua 8 (na Picha)

Video: Jinsi ya Kutumia MQTT Pamoja na Raspberry Pi na ESP8266: Hatua 8 (na Picha)
Video: Full Control of DC Motor with ESP8266 NodeMCU D1 Mini over WiFi 2024, Juni
Anonim
Jinsi ya Kutumia MQTT Pamoja na Raspberry Pi na ESP8266
Jinsi ya Kutumia MQTT Pamoja na Raspberry Pi na ESP8266

Katika Agizo hili, nitaelezea itifaki ya MQTT ni nini na inatumikaje kuwasiliana kati ya vifaa. Halafu, kama onyesho la vitendo, nitakuonyesha jinsi ya kuanzisha mfumo rahisi wa mteja wawili, ambapo moduli ya ESP8266 itatuma ujumbe kwa mpango wa chatu wakati kitufe kinasukumwa. Hasa, ninatumia moduli ya Adafruit HUZZAH kwa mradi huu, Raspberry Pi na kompyuta ya mezani. Raspberry Pi itafanya kama Broker wa MQTT, na mteja wa Python ataendeshwa kutoka kwa kompyuta tofauti ya desktop (hiari, kwani hii inaweza kuendeshwa kwenye Raspberry Pi).

Ili kufuata hii inayoweza kufundishwa, utahitaji kuwa na ujuzi wa kimsingi wa umeme, na jinsi ya kutumia programu ya Arduino. Unapaswa pia kuwa na mazoea ya kutumia kiolesura cha laini ya amri (kwa Raspberry Pi). Tunatumahi, ukishapata maarifa ya MQTT ni nini, na jinsi ya kuitumia katika hali ya msingi, utaweza kuunda miradi yako ya IoT!

Sehemu Zinazohitajika

  • 1 x Raspberry Pi, iliyounganishwa na mtandao wa karibu (inayoendesha Jessie)
  • 1 x ESP8266 Moduli (Adafruit HUZZAH)
  • 1 x Bodi ya mkate
  • 3 x Jumper waya (Mwanaume-kwa-Mwanaume)
  • 1 x Pushbutton
  • 1 x 10k Mpingaji wa Ohm (Nambari ya rangi ya hudhurungi-Nyeusi-Rangi ya machungwa)

Nimeunda hii inayoweza kufundishwa, kwani MQTT imekuwa ikinivutia kila wakati kama itifaki na kuna njia nyingi tofauti ambazo zinaweza kutumika. Walakini, sikuonekana kupata kichwa changu kuzunguka jinsi ya kuweka nambari za vifaa kuitumia. Hii ni kwa sababu sikujua / kuelewa ni nini kilikuwa kikiendelea kuchukua yangu "Hello, Dunia!" kutoka kifaa A na kuituma kwa kifaa B. Kwa hivyo, niliamua kuandika hii inayoweza kufundishwa (kwa matumaini) kukufundisha jinsi inavyofanya kazi, na pia kuimarisha uelewa wangu mwenyewe juu yake!

Hatua ya 1: MQTT ni nini?

MQTT ni nini?
MQTT ni nini?

MQTT, au Usafirishaji wa Telemetry ya MQ, ni itifaki ya ujumbe ambayo inaruhusu vifaa anuwai kuzungumza. Hivi sasa, ni itifaki maarufu ya Mtandao wa Vitu, ingawa imetumika kwa madhumuni mengine - kwa mfano, Facebook Messenger. Inafurahisha kuwa MQTT ilibuniwa mnamo 1999 - ikimaanisha ni ya zamani kama mimi!

MQTT inategemea wazo kwamba vifaa vinaweza kuchapisha au kujisajili kwa mada. Kwa hivyo, kwa mfano. Ikiwa Kifaa # 1 kimerekodi halijoto kutoka kwa sensorer yake moja, inaweza kuchapisha ujumbe ambao una thamani ya joto iliyorekodiwa, kwa mada (k.m. "Joto"). Ujumbe huu unatumwa kwa MQTT Broker, ambayo unaweza kufikiria kama swichi / router kwenye mtandao wa eneo. Mara baada ya MQTT Broker kupokea ujumbe, utaupeleka kwa vifaa vyovyote (katika kesi hii, Kifaa # 2) ambazo zimesajiliwa kwa mada hiyo hiyo.

Katika mradi huu, tutakuwa tukichapisha mada kutumia ESP8266, na tutaunda hati ya chatu ambayo itajiunga na mada hii hiyo, kupitia Raspberry Pi ambayo itafanya kazi kama MQTT Broker. Jambo kuu juu ya MQTT ni kwamba ni nyepesi, kwa hivyo inafaa kwa kuendesha wadhibiti wadogo kama ESP8266, lakini pia inapatikana kwa upana - kwa hivyo tunaweza kuiendesha kwenye hati ya Python pia.

Tunatumahi, mwisho wa mradi huu, utakuwa na uelewa wa MQTT ni nini na jinsi ya kuitumia kwa miradi yako mwenyewe baadaye.

Hatua ya 2: Kufunga Broker ya MQTT kwenye Raspberry Pi

Kufunga Broker ya MQTT kwenye Raspberry Pi
Kufunga Broker ya MQTT kwenye Raspberry Pi
Kuweka Broker ya MQTT kwenye Raspberry Pi
Kuweka Broker ya MQTT kwenye Raspberry Pi
Kufunga Broker ya MQTT kwenye Raspberry Pi
Kufunga Broker ya MQTT kwenye Raspberry Pi

Ili kuanzisha mfumo wetu wa MQTT, tunahitaji broker, kama ilivyoelezewa katika hatua ya awali. Kwa Raspberry Pi, tutatumia broker wa "Mosquitto" MQTT. Kabla ya kusanikisha hii, ni bora kila wakati kusasisha Raspberry Pi yetu.

Sudo apt-pata sasisho

sasisho la kupata apt

Mara tu unapofanya hivi, weka mbu na kisha vifurushi vya wateja wa mbu.

Sudo apt-get kufunga mbu -y

Sudo apt-install wateja wa mbu -y

Ukimaliza kusanikisha vifurushi hivi viwili, tutahitaji kusanidi broker. Faili ya usanidi wa dalali wa mbu iko katika /etc/mosquitto/mosquitto.conf, kwa hivyo fungua hii na mhariri wa maandishi unayopenda. Ikiwa huna mhariri wa maandishi unaopenda au haujui jinsi ya kutumia wahariri wa laini ya amri, nitatumia nano ili uweze kufuata:

Sudo nano /etc/mosquitto/mosquitto.conf

Chini ya faili hii, unapaswa kuona mstari:

ni pamoja na_dir /etc/mosquitto/conf.d

Futa mstari huu. Ongeza mistari ifuatayo chini ya faili.

ruhusu_bongo lisilojulikana

1883

Kwa kuandika mistari hiyo, tumeambia mbu kwamba hatutaki mtu yeyote anayejiunga na broker wetu ambaye hatumii jina la mtumiaji na nenosiri halali (tutaendelea kuweka hii kwa sekunde) na kwamba tunataka mbu sikiliza ujumbe kwenye nambari ya bandari 1883.

Ikiwa hautaki broker ahitaji jina la mtumiaji na nywila, usijumuishe mistari miwili ya kwanza ambayo tumeongeza (i.e. ruhusu_safahamike… na faili ya nywila_file…). Ikiwa umefanya hivi, basi ruka kuwasha tena Raspberry Pi.

Sasa funga (na uhifadhi) faili hiyo. Ikiwa unafuata pamoja na mfano wa nano, bonyeza CTRL + X, na andika Y unapoombwa.

Kwa sababu tumeambia tu mbu kuwa watumiaji wanaojaribu kutumia broker ya MQTT wanahitaji kuthibitishwa, sasa tunahitaji kuambia mbu jina la mtumiaji na nywila ni nini! Kwa hivyo, andika amri ifuatayo - ukibadilisha jina la mtumiaji na jina la mtumiaji ambalo ungetaka - kisha weka nywila ambayo ungependa unapoambiwa moja uliyotumia).

sudo mbu_passwd -c / nk / mbu / jina la mtumiaji la pwfile

Kama tumebadilisha faili ya usanidi wa mbu, tunapaswa kuwasha tena Raspberry Pi.

Sudo reboot

Mara baada ya Raspberry Pi kumaliza kumaliza upya, unapaswa kuwa na broker wa MQTT anayefanya kazi kikamilifu! Ifuatayo, tutajaribu kuingiliana nayo, kwa kutumia vifaa / njia kadhaa tofauti!

Hatua ya 3: Kupima Broker

Kupima Broker
Kupima Broker

Mara tu ikiwa umeweka mbu kwenye Raspberry Pi, unaweza kuipima haraka - tu kuhakikisha kuwa kila kitu kinafanya kazi kwa usahihi. Kwa kusudi hili, kuna amri mbili ambazo tunaweza kutumia kwenye laini ya amri. mosquitto_pub na mosquitto_sub. Katika hatua hii, nitakuongoza kupitia kila moja ya haya kujaribu broker wetu.

Ili kujaribu broker, utahitaji kufungua windows line za amri mbili. Ikiwa unatumia Putty au mteja mwingine wa SSH, hii ni rahisi kama kufungua dirisha jingine la SSH na kuingia kama kawaida. Ikiwa unapata Pi yako kutoka kituo cha UNIX, hii ni sawa kabisa. Ikiwa unatumia Raspberry Pi moja kwa moja, utahitaji kufungua windows mbili za terminal katika hali ya GUI (amri ya kuanza inaweza kutumika kuanza GUI).

Sasa kwa kuwa umefungua windows mbili, tunaweza kuanza upimaji. Katika moja ya vituo viwili, andika amri ifuatayo, ukibadilisha jina la mtumiaji na nywila na zile unazoweka katika hatua ya awali.

mosquitto_sub -d -u jina la mtumiaji -P password -t mtihani

Ikiwa umeamua kutoweka jina la mtumiaji na nywila katika hatua ya awali, basi kuanzia sasa, puuza bendera za -u na -P katika amri. Kwa hivyo, kama mfano, amri ya mbu_sub sasa itakuwa:

mosquitto_sub -d -t mtihani

Amri ya mbu_sub itajiunga na mada, na kuonyesha ujumbe wowote ambao umetumwa kwa mada maalum kwenye dirisha la terminal. Hapa, -d inamaanisha hali ya utatuzi, kwa hivyo ujumbe na shughuli zote zitatolewa kwenye skrini. -u na -P inapaswa kujielezea. Mwishowe, -t ni jina la mada tunayotaka kujisajili - katika kesi hii, "mtihani".

Ifuatayo, katika dirisha lingine la wastaafu, tutajaribu na kuchapisha ujumbe kwa mada ya "mtihani". Andika zifuatazo, ukikumbuka tena kubadilisha jina la mtumiaji na nywila:

mosquitto_pub -d -u jina la mtumiaji -P password -t mtihani -m "Hello, World!"

Unapobonyeza kuingia, unapaswa kuona ujumbe wako "Hello, World!" itaonekana kwenye dirisha la kwanza la terminal tulilotumia (kujiunga). Ikiwa ndio kesi, mmekaa kuanza kufanya kazi kwenye ESP8266!

Hatua ya 4: Kuanzisha ESP8266 (Adafruit HUZZAH)

Kuanzisha ESP8266 (Adafruit HUZZAH)
Kuanzisha ESP8266 (Adafruit HUZZAH)
Kuanzisha ESP8266 (Adafruit HUZZAH)
Kuanzisha ESP8266 (Adafruit HUZZAH)
Kuanzisha ESP8266 (Adafruit HUZZAH)
Kuanzisha ESP8266 (Adafruit HUZZAH)
Kuanzisha ESP8266 (Adafruit HUZZAH)
Kuanzisha ESP8266 (Adafruit HUZZAH)

Hatua hii ikiwa maalum kwa Adafruit HUZZAH (kama hiyo ndiyo ninayotumia kukamilisha mradi huu). Ikiwa unatumia kifaa tofauti cha Arduino / ESP8266, unaweza kutaka kuruka hatua hii. Walakini, napenda kukushauri usome kwa haraka, ikiwa kuna habari hapa ambayo inaweza kukufaa.

Kwa mradi huu, nitaandaa programu ya HUZZAH na programu ya Arduino. Kwa hivyo, ikiwa haujafanya hivyo, hakikisha kusanikisha programu ya Arduino (mpya zaidi ya 1.6.4). Unaweza kuipakua hapa.

Mara baada ya kusanikisha programu ya Arduino, ifungue na uende kwenye Faili-> Mapendeleo. Hapa unapaswa kuona (karibu na chini ya dirisha) sanduku la maandishi na lebo: "URL za Meneja wa Bodi za Ziada". Katika kisanduku hiki cha maandishi, nakili na ubandike kiunga kifuatacho:

arduino.esp8266.com/stable/package_esp8266com_index.json

Bonyeza Sawa ili kuhifadhi mabadiliko yako. Sasa fungua Meneja wa Bodi (Zana-> Bodi-> Meneja wa Bodi) na utafute ESP8266. Sakinisha esp8266 na kifurushi cha Jumuiya ya ESP8266. Anza tena programu ya Arduino.

Sasa, kabla ya kupangilia bodi, tunahitaji kuchagua chaguzi kadhaa tofauti. Katika chaguo la menyu ya Zana, chagua Adafruit HUZZAH ESP8266 kwa Bodi, 80 MHz kwa Frequency ya CPU (unaweza kutumia 160 MHz ikiwa unataka kuiongezea, lakini kwa sasa nitatumia 80 MHz), 4M (3M SPIFFS) kwa Ukubwa wa Kiwango, na 115200 kwa Kasi ya Kupakia. Pia, hakikisha kuchagua bandari ya COM unayotumia (hii itategemea usanidi wako).

Kabla ya kupakia nambari yoyote, unahitaji kuhakikisha kuwa HUZZAH iko kwenye hali ya bootloader. Ili kuwezesha hii, shikilia kitufe kwenye ubao uliowekwa alama GPIO0, na wakati hii imeshikiliwa, shikilia kitufe cha Rudisha pia. Kisha, toa kitufe cha Rudisha, na kisha GPIO0. Ikiwa umefanya hivi kwa usahihi, taa nyekundu iliyokuja wakati ulibonyeza GPIO0 inapaswa kuwa nyepesi.

Ili kupakia nambari kwa mdhibiti mdogo, kwanza hakikisha HUZZAH iko kwenye hali ya bootloader, kisha bonyeza tu kitufe cha kupakia kwenye Arduino IDE.

Ikiwa una shida yoyote ya kuanzisha HUZZAH, habari zaidi inaweza kupatikana kwenye mafunzo ya Adafruit mwenyewe.

Hatua ya 5: Kupanga programu ya ESP8266

Kupanga programu ya ESP8266
Kupanga programu ya ESP8266

Sasa tutaanza kupanga ESP8266, lakini kabla ya kuanza, utahitaji kusanikisha maktaba zifuatazo katika msimamizi wa Maktaba ya Arduino (Mchoro-> Jumuisha Maktaba-> Simamia Maktaba)

  • Bounce2
  • Mshauri wa PubSub

Mara baada ya kusanikisha maktaba hizo, utaweza kutumia nambari ambayo nimejumuisha kwenye hii inayoweza kufundishwa (MQTT_Publish.zip). Nimehakikisha kutoa maoni ili uweze kuelewa ni nini kila sehemu inafanya, na kwa matumaini hii inapaswa kukuwezesha kuibadilisha na mahitaji yako.

Kumbuka kubadilisha mabadiliko juu ya nambari ili ESP8266 yako iweze kuungana na mtandao wako wa WiFi na Broker yako ya MQTT (Raspberry Pi).

Ikiwa umeamua kutoweka jina la mtumiaji na nywila kwa MQTT Broker, kisha pakua faili ya MQTT_PublishNoPassword.zip badala yake.

Hatua ya 6: Kusanikisha Mteja wa Python (paho-mqtt)

Kuweka mteja wa Python (paho-mqtt)
Kuweka mteja wa Python (paho-mqtt)

Shukrani, hatua hii ni rahisi sana! Ili kusanikisha mteja wa chatu wa mbu, unahitaji tu kuchapa zifuatazo kwenye laini ya amri (Linux / Mac) au hata amri ya haraka (Windows).

bomba funga paho-mqtt

Kumbuka: Haraka ya amri ya Windows inaweza kuwa na shida ya kuendesha amri ya bomba ikiwa haukutaja kuwa unataka bomba iliyosanikishwa na chatu imeongezwa kwa anuwai ya PATH wakati ulipoweka Python. Kuna njia kadhaa za kurekebisha hii, lakini nadhani kuweka tena Python ni njia rahisi. Ikiwa una shaka - mpe google!

Hatua ya 7: Mteja wa Python - Kujiandikisha

Mteja wa Python - Kujiandikisha
Mteja wa Python - Kujiandikisha

Katika hatua hii, tutaanzisha script ya Python (ama kwenye Raspberry Pi yenyewe au kwenye kompyuta nyingine iliyounganishwa na mtandao) kushughulikia ujumbe wote unaotumwa (kuchapishwa) na ESP8266 kwa mada ya MQTT.

Nimejumuisha nambari ya chatu hapa chini (PythonMQTT_Subscribe.py), ambayo imetolewa maoni kukusaidia kuelewa kinachoendelea, lakini nitaelezea baadhi ya huduma kuu hapa pia.

Ikiwa haukuweka jina la mtumiaji na nywila kwa unganisho la MQTT mapema, pakua faili ya PythonMQTT_SubscribeNoPassword.py badala yake.

Hatua ya 8: Kuwasiliana kati ya Vifaa vya ESP8266

Kuwasiliana kati ya Vifaa vya ESP8266
Kuwasiliana kati ya Vifaa vya ESP8266

Ikiwa unataka kuanzisha mtandao wa IoT, kwa mfano, unaweza kutaka kuwasiliana kati ya vifaa vya ESP8266. Kwa kushukuru, hii sio ngumu sana kuliko nambari tuliyoandika hapo awali, hata hivyo, kuna mabadiliko kadhaa mashuhuri.

Kwa ESP moja kutuma data kwa mwingine, ESP ya kwanza itahitaji kuchapisha kwa mada, na ESP ya pili itahitaji kujisajili kwa mada hiyo. Usanidi huu utaruhusu mazungumzo ya njia moja - ESP (1) kwa ESP (2). Ikiwa tunataka ESP (2) kuzungumza tena na ESP (1), tunaweza kuunda mada mpya, ambayo ESP (2) itachapisha, na ESP (1) itajiandikisha. Kwa kushukuru, tunaweza kuwa na wanachama wengi kwenye mada hiyo hiyo, kwa hivyo ikiwa unataka kutuma data kwa mifumo kadhaa, utahitaji mada moja tu (ambayo wote hujiandikisha, isipokuwa kifaa kinachotuma data, kama hiyo itakavyokuwa. kuwa kuchapisha).

Ikiwa unahitaji msaada kujua nini kila kifaa kinahitaji kufanya, fikiria juu ya mfumo kama chumba cha watu. Ikiwa ESP (1) inachapisha, unaweza kufikiria kifaa hiki kama "spika", na vifaa vyovyote vinavyojiunga na mada ni "wasikilizaji" katika mfano huu.

Nimejumuisha nambari ya mfano hapa chini, ambayo inaonyesha jinsi ESP8266 inaweza kujisajili kwenye mada, na usikilize ujumbe fulani - 1 na 0. Ikiwa 1 inapokelewa, LED iliyo kwenye bodi (ya HUZZAH - GPIO 0) imewashwa. Ikiwa 0 imepokelewa, LED hii imezimwa.

Ikiwa unataka kusindika data ngumu zaidi, hii inapaswa kufanywa katika kazi ya KupokeaMessage (angalia nambari).

Kwa miradi yako mwenyewe, ikiwa unahitaji kutuma na kupokea data, unaweza kuingiza kazi ya kuchapisha kutoka kwa mfano uliopita kwenye nambari iliyojumuishwa katika hatua hii. Hii inapaswa kushughulikiwa katika kazi kuu ya Arduino loop ().

Kumbuka kubadilisha vigeuzi juu ya msimbo ili kutoshea mtandao wako!

Ilipendekeza: