Мазмуну:

MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот: 8 кадам (сүрөттөр менен)
MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот: 8 кадам (сүрөттөр менен)

Video: MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот: 8 кадам (сүрөттөр менен)

Video: MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот: 8 кадам (сүрөттөр менен)
Video: Using HT16K33 4 digit seven segment display with ESP8266 NodeMCU and D1 Mini 2024, Ноябрь
Anonim
MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот
MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот

Бул көрсөтмөдө мен MQTT протоколу деген эмне экенин жана ал түзмөктөрдүн ортосунда кантип байланышуу үчүн колдонулаарын түшүндүрүп берем, андан кийин практикалык демонстрация катары мен сизге ESP8266 модулу билдирүү жөнөтө турган жөнөкөй эки кардар системасын орнотууну көрсөтөм. баскыч басылганда Python программасына. Тактап айтканда, мен бул долбоор үчүн Adafruit HUZZAH модулун, Raspberry Pi жана рабочий компьютерди колдонуп жатам. Raspberry Pi MQTT брокери катары иштейт жана Python кардары өзүнчө рабочий компьютерден иштетилет (милдеттүү эмес, анткени бул Raspberry Piде иштетилиши мүмкүн).

Бул Нускаманы улантуу үчүн, электроника жана Arduino программасын кантип колдонуу керектиги жөнүндө негизги билимге ээ болушуңуз керек. Сиз ошондой эле буйрук сабынын интерфейсин колдонуу менен тааныш болушуңуз керек (Raspberry Pi үчүн). Сиз MQTT деген эмне экенин жана аны негизги сценарийде кантип колдонуу керектигин билгенден кийин, сиз өзүңүздүн IoT долбоорлоруңузду түзө аласыз!

Керектүү бөлүктөр

  • 1 x Raspberry Pi, жергиликтүү тармакка туташкан (Jessie иштеп жаткан)
  • 1 x ESP8266 модулу (Adafruit HUZZAH)
  • 1 х нан тактасы
  • 3 х Jumper Wires (Эркектен Эркекке)
  • 1 x баскычтар
  • 1 x 10k Ohm резистору (күрөң-кара-кызгылт түс коду)

Мен бул Нускаманы түздүм, анткени MQTT мени дайыма протокол катары кызыктырып келген жана аны колдонуунун ар кандай жолдору бар. Бирок, мен аны колдонуу үчүн түзмөктөрдү кантип коддоо керектигине башымды айланта алган жокмун. Бул менин "Салам, Дүйнө!" Деген сөзүмдүн чынында эмне болуп жатканын билбегенимди/түшүнбөгөнүмдөн улам болду. А түзмөгүнөн жана аны В аппаратына жөнөтүңүз. Ошондуктан, мен бул Нускаманы жазууну чечтим (үмүттөнөм), бул кантип иштээрин үйрөтүү үчүн, ошондой эле ал жөнүндө өз түшүнүгүмдү бекемдөө үчүн!

1 -кадам: MQTT деген эмне?

MQTT деген эмне?
MQTT деген эмне?

MQTT же MQ Telemetry Transport - бул бир нече түзмөктөрдүн бири -бири менен сүйлөшүүсүнө мүмкүндүк берүүчү билдирүү протоколу. Учурда, бул нерселер Интернети үчүн популярдуу протокол, бирок ал башка максаттар үчүн колдонулган, бирок - мисалы, Facebook Messenger. Кызыктуусу, MQTT 1999 -жылы ойлоп табылган, демек ал мендей эле эски!

MQTT түзмөктөр темаларды жарыялап же жазыла алат деген ойго негизделген. Ошентип, мисалы. Эгерде Түзмөк #1 сенсорлорунун биринен температураны жазып алган болсо, анда ал темага жазылган тема (мисалы, "Температура") камтылган билдирүүнү жарыялай алат. Бул билдирүү MQTT брокерине жөнөтүлөт, аны сиз жергиликтүү тармак боюнча которуштуруучу/роутер катары элестете аласыз. MQTT Broker билдирүү алгандан кийин, аны ошол эле темага жазылган бардык түзмөктөргө (бул учурда, Device #2) жөнөтөт.

Бул долбоордо биз ESP8266 менен теманы жарыялап, MQTT брокери катары иштей турган Raspberry Pi аркылуу ушул эле темага жазыла турган Python скриптин түзөбүз. MQTTтин эң сонун жери - бул жеңил, ошондуктан ESP8266 сыяктуу чакан микроконтроллерлерде иштетүү үчүн эң сонун, бирок ал дагы кеңири жеткиликтүү - ошондуктан биз аны Python скриптинде да иштете алабыз.

Бул долбоордун аягында сиз MQTT деген эмне экенин жана аны келечекте өз долбоорлоруңуз үчүн кантип колдонууну түшүнөсүз деп үмүттөнөбүз.

2 -кадам: MQTT брокерин Raspberry Piге орнотуу

MQTT брокерин Raspberry Piге орнотуу
MQTT брокерин Raspberry Piге орнотуу
MQTT брокерин Raspberry Piге орнотуу
MQTT брокерин Raspberry Piге орнотуу
MQTT брокерин Raspberry Piге орнотуу
MQTT брокерин Raspberry Piге орнотуу

Биздин MQTT тутумун орнотуу үчүн, мурунку кадамда түшүндүрүлгөндөй, бизге брокер керек. Raspberry Pi үчүн биз "Mosquitto" MQTT брокерин колдонобуз. Муну орнотуудан мурун, Raspberry Pi'ди жаңыртуу эң жакшы.

sudo apt-get update

sudo apt-get жогорулатуу

Муну кылгандан кийин, чиркейди, андан кийин чиркей-кардарлардын пакеттерин орнотуңуз.

sudo apt -get чиркейди орнотуу -y

sudo apt-get чиркей-кардарларды орнотуу -y

Бул эки пакетти орнотуп бүткөндөн кийин, биз брокерди конфигурациялашыбыз керек. Чиркей брокеринин конфигурация файлы /etc/mosquitto/mosquitto.conf дарегинде жайгашкан, андыктан муну сүйүктүү текст редакторуңуз менен ачыңыз. Эгерде сизде сүйүктүү текст редактору жок болсо же буйрук сабынын редакторлорунун бирин кантип колдонууну билбесеңиз, мен нанону колдоном, ошондо сиз аны ээрчип кете аласыз:

sudo nano /etc/mosquitto/mosquitto.conf

Бул файлдын ылдый жагында сиз линияны көрүшүңүз керек:

include_dir /etc/mosquitto/conf.d

Бул линияны жок кылыңыз. Файлдын түбүнө төмөнкү саптарды кошуңуз.

allow_anonymous жалган

1883

Бул саптарды терүү менен, биз чымын -чиркейлерге жарактуу колдонуучу аты менен сырсөздү бербеген биздин брокерге кошулууну каалабай тургандыгыбызды айттык (биз муну бир секунданын ичинде орнотобуз) жана биз чиркейлерди каалайбыз порт номери боюнча кабарларды угуу 1883.

Эгерде сиз брокердин колдонуучу аты менен сырсөздү талап кылышын каалабасаңыз, биз кошкон биринчи эки сапты кошпогула (б. Эгер сиз муну кылган болсоңуз, анда Raspberry Pi'ни кайра жүктөөгө өтүңүз.

Эми бул файлды жабыңыз (жана сактаңыз). Эгерде сиз нано мисалын ээрчип жатсаңыз, CTRL+X баскычын басыңыз жана суралганда Y деп териңиз.

Биз жөн гана чиркейлерге MQTT брокерин колдонууга аракет кылган колдонуучулардын аутентификациядан өтүшү керектигин айткандыктан, эми колдонуучулардын аты менен сырсөзү эмне экенин чиркейлерге айтыш керек! Ошентип, төмөнкү буйрукту териңиз - колдонуучунун атын сиз каалаган колдонуучу аты менен алмаштырыңыз - андан кийин суралганда каалаган сырсөзүңүздү киргизиңиз (Эскертүү: эгер конфигурация файлын түзөтүүдө сиз башка password_file жолун көрсөтсөңүз, төмөнкү жолду сиз колдонгон бир).

sudo mosquitto_passwd -c/etc/mosquitto/pwfile колдонуучу аты

Биз чиркейлердин конфигурация файлын жаңы эле өзгөрткөнүбүз үчүн, Raspberry Pi'ди кайра жүктөөбүз керек.

sudo өчүрүп күйгүзүү

Raspberry Pi кайра жүктөөнү аяктагандан кийин, сизде MQTT брокери толук иштеши керек! Андан кийин, биз ар кандай түзмөктөрдү/ыкмаларды колдонуп, аны менен байланышууга аракет кылабыз!

3 -кадам: Брокерди тестирлөө

Брокерди тестирлөө
Брокерди тестирлөө

Raspberry Piге чиркейди орноткондон кийин, аны тез тесттен өткөрсөңүз болот - баары туура иштеп жатканына ынануу үчүн. Бул үчүн, биз буйрук сабында колдоно турган эки буйрук бар. mosquitto_pub жана mosquitto_sub. Бул кадамда, мен сизге брокерибизди текшерүү үчүн алардын ар бирин колдонууга жардам берем.

Брокерди текшерүү үчүн, эки буйрук сабынын терезесин ачышыңыз керек. Эгерде сиз Putty же башка SSH кардарын колдонуп жатсаңыз, бул башка SSH терезесин ачуу жана адаттагыдай эле кирүү сыяктуу жөнөкөй. Эгерде сиз Пи -ге UNIX терминалынан кирсеңиз, бул так ошондой. Эгерде сиз Raspberry Pi түз колдонуп жатсаңыз, GUI режиминде эки терминалдык терезени ачышыңыз керек болот (startxcan буйругу GUIди иштетүү үчүн колдонулат).

Эми сиз эки терезени ачтыңыз, биз тестирлөөнү баштай алабыз. Эки терминалдын биринде, колдонуучунун атын жана сырсөздү мурунку кадамда орноткон адамдарга алмаштырып, төмөнкү буйрукту териңиз.

mosquitto_sub -d -u колдонуучунун аты -P сырсөзү -t тест

Эгерде сиз мурунку кадамда колдонуучу аты менен сырсөздү коюуну чечпесеңиз, анда мындан ары буйруктардагы -u жана -P желектерин этибарга албаңыз. Мисалы, mosquitto_sub буйругу азыр мындай болмок:

mosquitto_sub -d -t тест

Mosquitto_sub буйругу бир темага жазылат жана терминалга терезеде көрсөтүлгөн темага жөнөтүлгөн бардык билдирүүлөрдү көрсөтөт. Бул жерде -d мүчүлүштүктөрдү оңдоо режимин билдирет, андыктан бардык билдирүүлөр жана аракеттер экранда чыгарылат. -у жана -П өзүн -өзү түшүндүрүшү керек. Акырында, -t - бул жазылууну каалаган теманын аты - бул учурда "тест".

Кийинки, башка терминал терезесинде, биз "тест" темасына билдирүү жарыялоого аракет кылабыз. Колдонуучунун атын жана сырсөзүн өзгөртүү үчүн кайра эстеп, төмөнкүлөрдү териңиз:

mosquitto_pub -d -u колдонуучунун аты -P сырсөз -t тест -m "Салам, Дүйнө!"

Enter басканда, сиз "Hello, World!" Деген билдирүүнү көрүшүңүз керек. биз колдонгон биринчи терминалдык терезеде пайда болот (жазылуу үчүн). Эгер ушундай болсо, анда сиз ESP8266 боюнча иштей баштайсыз!

4 -кадам: ESP8266 орнотуу (Adafruit HUZZAH)

ESP8266 орнотуу (Adafruit HUZZAH)
ESP8266 орнотуу (Adafruit HUZZAH)
ESP8266 орнотуу (Adafruit HUZZAH)
ESP8266 орнотуу (Adafruit HUZZAH)
ESP8266 орнотуу (Adafruit HUZZAH)
ESP8266 орнотуу (Adafruit HUZZAH)
ESP8266 орнотуу (Adafruit HUZZAH)
ESP8266 орнотуу (Adafruit HUZZAH)

Бул кадам Adafruit HUZZAH үчүн өзгөчө болсо (мен бул долбоорду аягына чыгаруу үчүн колдонуп жатам). Эгерде сиз башка Arduino / ESP8266 түзмөгүн колдонуп жатсаңыз, анда бул кадамды өткөрүп жиберүүңүз мүмкүн. Бирок, мен сизге бул жерде сизге тиешелүү болгон кандайдыр бир маалымат болсо, аны окуп чыгууну кеңеш кылар элем.

Бул долбоор үчүн мен HUZZAHны Arduino программасы менен программалайм. Демек, эгер сизде буга чейин жок болсо, Arduino программасын (1.6.4 жаңыраак) орнотууну тактаңыз. Бул жерден жүктөп алсаңыз болот.

Arduino программасын орноткондон кийин, аны ачып, File-> Preferences бөлүмүнө өтүңүз. Бул жерде сиз (терезенин түбүнө жакын) "Кошумча такталар менеджеринин URL'дери" деген жазуусу бар текст кутучасын көрүшүңүз керек. Бул текст кутучасына төмөнкү шилтемени көчүрүп чаптаңыз:

arduino.esp8266.com/stable/package_esp8266com_index.json

Өзгөртүүлөрдү сактоо үчүн ОК басыңыз. Эми Board Managerди ачыңыз (Tools-> Board-> Board Manager) жана ESP8266 издеңиз. Esp8266 тарабынан ESP8266 Коомдук пакетин орнотуңуз. Arduino программасын өчүрүп күйгүзүңүз.

Эми, биз тактаны программалоодон мурун, биз бир нече башка варианттарды тандашыбыз керек. Аспаптар менюсунан Adafruit HUZZAH ESP8266 тактасын, CPU жыштыгы үчүн 80 МГцти тандаңыз (эгер сиз аны ылдамдатууну кааласаңыз 160 МГцти колдоно аласыз, бирок азыр мен 80 МГцти колдоном), 4M (3M SPIFFS) Flash өлчөмү үчүн, жана жүктөө ылдамдыгы үчүн 115200. Ошондой эле, сиз колдонуп жаткан COM портун тандап алыңыз (бул сиздин орнотууңузга жараша болот).

Кандайдыр бир кодду жүктөөдөн мурун, HUZZAH жүктөгүч режиминде экенине ынанууңуз керек. Муну иштетүү үчүн, тактадагы GPIO0 деп аталган баскычты кармап туруңуз, жана ал кармалып турганда, Баштапкы абалга келтирүү баскычын дагы кармап туруңуз. Андан кийин, Reset баскычын, анан GPIO0 коё бериңиз. Эгер сиз муну туура кылган болсоңуз, анда GPIO0 басканда пайда болгон кызыл LED азыр күңүрт күйүшү керек.

Микроконтроллерге кодду жүктөө үчүн, биринчи кезекте HUZZAH жүктөгүч режиминде экенин текшериңиз, андан кийин Arduino IDEдеги жүктөө баскычын чыкылдатыңыз.

Эгерде сиз HUZZAHны орнотууда кандайдыр бир көйгөйгө туш болуп жатсаңыз, кошумча маалыматты Adafruitтин жеке окуу куралынан тапса болот.

5 -кадам: ESP8266ны программалоо

ESP8266 программалоо
ESP8266 программалоо

Эми биз ESP8266ны программалай баштайбыз, бирок баштаардан мурун сиз төмөнкү китепканаларды Arduino Китепкана менеджерине орнотушуңуз керек (Эскиз-Китепканаларды кошуу-> Китепканаларды башкаруу)

  • Bounce2
  • PubSubClient

Ал китепканаларды орноткондон кийин, мен ушул Нускамага киргизилген кодду иштете аласың (MQTT_Publish.zip). Мен ар бир бөлүмдүн эмне кылып жатканын түшүнүү үчүн комментарий берүүнү туура көрдүм жана бул сиздин муктаждыктарыңызга ылайыкташтырууга мүмкүнчүлүк берет деп үмүттөнөм.

ESP8266 сиздин WiFi тармагыңызга жана MQTT Брокерине (Raspberry Pi) туташа алышы үчүн коддун жогору жагындагы константаларды өзгөртүүнү унутпаңыз.

Эгерде сиз MQTT брокери үчүн колдонуучунун атын жана сырсөзүн коюуну чечпесеңиз, анда анын ордуна MQTT_PublishNoPassword.zip файлын жүктөп алыңыз.

6-кадам: Python Кардарын орнотуу (paho-mqtt)

Python Кардарын орнотуу (paho-mqtt)
Python Кардарын орнотуу (paho-mqtt)

Бактыга жараша, бул кадам абдан жөнөкөй! Чиркей python кардарын орнотуу үчүн, жөн гана буйрук сабына төмөнкүнү терүү керек (Linux/Mac) же ал тургай буйрук көрсөтмөсү (Windows).

pip paho-mqtt орнотуу

Эскертүү: Эгерде сиз Python орноткондо пип орнотулганын жана PATH өзгөрмөсүнө python кошулаарын көрсөтпөсөңүз, Windows командалык тутумунда пип буйругун иштетүү көйгөйү болушу мүмкүн. Муну оңдоонун көптөгөн жолдору бар, бирок менимче Pythonду кайра орнотуу эң оңой жолу. Эгер күмөн санасаңыз - Googleга бериңиз!

7 -кадам: Python кардары - Жазылуу

Python Client - Жазылуу
Python Client - Жазылуу

Бул кадамда биз ESP8266 тарабынан MQTT темасына жөнөтүлгөн (жарыяланган) бардык билдирүүлөрдү иштетүү үчүн Python скриптин (же Raspberry Piнин өзүндө же тармакка туташкан башка компьютерде) орнотобуз.

Мен эмне болуп жатканын түшүнүүгө жардам берүү үчүн комментарий берилген Python кодун (PythonMQTT_Subscribe.py) коштум, бирок мен бул жерде негизги өзгөчөлүктөрдүн айрымдарын түшүндүрөм.

Эгерде сиз мурда MQTT туташуусу үчүн колдонуучу аты менен сырсөздү койгон эмес болсоңуз, анын ордуна PythonMQTT_SubscribeNoPassword.py файлын жүктөп алыңыз.

8 -кадам: ESP8266 түзмөктөрүнүн ортосунда байланыш

ESP8266 түзмөктөрүнүн ортосунда байланыш
ESP8266 түзмөктөрүнүн ортосунда байланыш

Эгерде сиз IoT тармагын орноткуңуз келсе, мисалы, ESP8266 түзмөктөрүнүн ортосунда баарлашууну каалашыңыз мүмкүн. Бактыга жараша, бул биз жазган коддон алда канча татаал эмес, бирок бир нече көрүнүктүү өзгөрүүлөр бар.

Бир ESP башкага маалыматтарды жөнөтүшү үчүн, биринчи ESP темага жарыялоону, ал эми экинчи ESP ошол темага жазылууну талап кылат. Бул жөндөө бир тараптуу сүйлөшүүгө мүмкүндүк берет - ESP (1) - ESP (2). Эгерде биз ESP (2) ESP (1) менен кайра сүйлөшүүсүн кааласак, биз жаңы теманы түзө алабыз, ага ESP (2) жарыялайт жана ESP (1) жазылат. Бактыга жараша, бизде бир эле темада бир нече абонент болушу мүмкүн, андыктан эгер сиз бир нече системага маалыматтарды жөнөткүңүз келсе, сизге бир гана тема керек болот (маалымат жазуучу түзмөктөн башка, алардын баары жазылышат) жарыялоо).

Эгерде сизге ар бир түзмөктүн эмне кылышы керек экенин түшүнүүгө жардам керек болсо, системаны адамдардын бөлмөсү катары ойлонуп көрүңүз. Эгерде ESP (1) жарыялап жатса, сиз бул түзмөктү "спикер" катары элестете аласыз жана темага жазылып жаткан бардык түзмөктөр бул мисалда "угуучулар" болуп саналат.

Мен төмөндө мисал кодун коштум, бул ESP8266нын темага кантип жазылып, айрым билдирүүлөрдү угуусун көрсөтөт - 1 жана 0. Эгерде 1 кабыл алынса, борттогу LED (HUZZAH үчүн - GPIO 0) күйгүзүлөт.. 0 алынса, бул LED өчүрүлөт.

Эгерде сиз татаал маалыматтарды иштеткиңиз келсе, бул ReceivedMessage функциясында аткарылышы керек (кодду караңыз).

Өзүңүздүн долбоорлоруңуз үчүн, эгер сиз маалыматты жөнөтүү жана алуу керек болсо, мурунку мисалдан жарыялоо функциясын бул кадамга киргизилген кодго киргизе аласыз. Бул негизги Arduino loop () функциясында каралышы керек.

Коддун жогору жагындагы өзгөрмөлөрдү тармагыңызга ылайыкташтырууну унутпаңыз!

Сунушталууда: