Мазмұны:

MQTT -ді Raspberry Pi және ESP8266 көмегімен қалай қолдануға болады: 8 қадам (суреттермен)
MQTT -ді Raspberry Pi және ESP8266 көмегімен қалай қолдануға болады: 8 қадам (суреттермен)

Бейне: MQTT -ді Raspberry Pi және ESP8266 көмегімен қалай қолдануға болады: 8 қадам (суреттермен)

Бейне: MQTT -ді Raspberry Pi және ESP8266 көмегімен қалай қолдануға болады: 8 қадам (суреттермен)
Бейне: Using Heltec ESP32 OLED Wifi Kit 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 x Нан тақтасы
  • 3 x қосқыш сымдар (еркектен еркекке)
  • 1 x батырмасы
  • 1 x 10k Ом резисторы (қоңыр-қара-қызғылт сары түс коды)

Мен бұл нұсқаулықты құрдым, өйткені MQTT мені протокол ретінде қызықтырды және оны қолданудың әр түрлі әдістері бар. Дегенмен, мен оны пайдалану үшін құрылғыларды қалай кодтауға болатынын біле алмадым. Бұл менің «Сәлем, әлем!» А құрылғысынан және оны В құрылғысына жіберіңіз. Сондықтан мен сізге бұл нұсқаулықты жазуды жөн көрдім, ол сізге қалай жұмыс істейтінін үйретеді, сонымен қатар бұл туралы өз түсінігімді нығайтады!

1 -қадам: MQTT дегеніміз не?

MQTT дегеніміз не?
MQTT дегеніміз не?

MQTT немесе MQ Telemetry Transport - бұл бірнеше құрылғылардың бір -бірімен сөйлесуіне мүмкіндік беретін хабар алмасу хаттамасы. Қазіргі уақытта бұл заттар Интернеті үшін танымал протокол, бірақ ол басқа мақсаттарда қолданылғанына қарамастан - мысалы, Facebook Messenger. Бір қызығы, MQTT 1999 жылы ойлап табылған, яғни ол мен сияқты ескі!

MQTT құрылғылар тақырыптарды жариялай алады немесе жазыла алады деген идеяға негізделген. Мәселен, мысалы. Егер №1 құрылғы сенсорлардың бірінен температураны тіркеген болса, ол тақырыпқа (мысалы, «Температура») жазылған температура мәні бар хабарды жариялай алады. Бұл хабар MQTT брокеріне жіберіледі, оны жергілікті желідегі коммутатор/маршрутизатор ретінде қарастыруға болады. MQTT брокері хабарламаны алғаннан кейін, оны сол тақырыпқа жазылған кез келген құрылғыларға (бұл жағдайда, №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 жаңартуы

sudo apt-get жаңарту

Сіз мұны жасағаннан кейін, москит, содан кейін москит-клиенттер пакеттерін орнатыңыз.

sudo apt -get mosquitto -y орнатыңыз

sudo apt-get mosquitto-clients -y орнатыңыз

Осы екі пакетті орнатуды аяқтағаннан кейін біз брокерді конфигурациялауымыз керек. Масалар брокерінің конфигурация файлы /etc/mosquitto/mosquitto.conf мекен -жайында орналасқан, сондықтан оны сүйікті мәтіндік редактормен ашыңыз. Егер сізде сүйікті мәтіндік редактор болмаса немесе командалық жол редакторларының кез келгенін қалай қолдануды білмесеңіз, мен нано қолданамын, осылайша сіз келесі әрекеттерді орындай аласыз:

sudo nano /etc/mosquitto/mosquitto.conf

Бұл файлдың төменгі жағында сіз келесі жолды көресіз:

include_dir /etc/mosquitto/conf.d

Бұл жолды жойыңыз. Файлдың төменгі жағына келесі жолдарды қосыңыз.

рұқсат_анонимді жалған

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 терезесін ашып, әдеттегідей кіру сияқты қарапайым. Егер сіз Pi -ге UNIX терминалынан кірсеңіз, бұл дәл солай. Егер сіз Raspberry Pi -ді тікелей қолдансаңыз, GUI режимінде екі терминалды терезені ашу қажет болады (startxcan пәрмені GUI -ді іске қосу үшін қолданылады).

Енді сіз екі терезені аштыңыз, біз тестілеуді бастай аламыз. Екі терминалдың бірінде пайдаланушы аты мен құпия сөзді алдыңғы қадамда орнатылғанмен алмастыратын келесі пәрменді теріңіз.

mosquitto_sub -d -u пайдаланушы аты -P құпия сөзі -t тесті

Егер сіз алдыңғы қадамда пайдаланушы аты мен құпия сөзді орнатпауды шешсеңіз, осы сәттен бастап командалардағы -u және -P жалаушаларын елемеңіз. Мысалы, mosquitto_sub командасы енді:

mosquitto_sub -d -t сынағы

Mosquitto_sub командасы тақырыпқа жазылады және терминал терезесінде көрсетілген тақырыпқа жіберілген кез келген хабарды көрсетеді. Мұнда -d отладка режимін білдіреді, сондықтан барлық хабарламалар мен әрекеттер экранда шығарылады. -u және -P өздігінен түсіндірілуі керек. Соңында, -t - жазылғымыз келетін тақырыптың атауы - бұл жағдайда «тест».

Әрі қарай, басқа терминал терезесінде біз «тест» тақырыбына хабарламаны жарияламақпыз. Пайдаланушы аты мен құпия сөзді өзгертуді қайтадан есте сақтап, келесіні теріңіз:

mosquitto_pub -d -u пайдаланушы аты -P құпия сөзі -t тесті -m «Сәлем, Әлем!»

Enter пернесін басқан кезде сіз «Сәлем, Әлем!» Хабарын көресіз. біз пайдаланатын бірінші терминал терезесінде пайда болады (жазылу үшін). Егер бұлай болса, сіз 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

Өзгертулерді сақтау үшін OK түймесін басыңыз. Енді тақта менеджерін ашыңыз (құралдар-> тақта-> тақта менеджері) және ESP8266 іздеңіз. Esp8266 by ESP8266 қауымдастық бумасын орнатыңыз. Arduino бағдарламалық жасақтамасын қайта іске қосыңыз.

Енді тақтаны бағдарламалауға кіріспес бұрын бірнеше нұсқаны таңдау керек. Аспаптар мәзірінің опциясында тақта үшін Adafruit HUZZAH ESP8266 таңдаңыз, процессор жиілігі үшін 80 МГц (егер сіз оны жылдамдату үшін 160 МГц -ты қолдана аласыз, бірақ мен қазір 80 МГц -ті қолданамын), 4M (3M SPIFFS) жарқыл өлшемі үшін және жүктеу жылдамдығы үшін 115200. Сонымен қатар, сіз қолданатын COM портын таңдағаныңызға көз жеткізіңіз (бұл сіздің орнатуға байланысты болады).

Кез келген кодты жүктемес бұрын, HUZZAH жүктеуші режимінде екеніне көз жеткізу керек. Мұны қосу үшін тақтадағы GPIO0 деп белгіленген түймені басып тұрыңыз, ал ұстап тұрғанда Reset түймесін басып тұрыңыз. Содан кейін, Reset түймесін босатыңыз, содан кейін GPIO0. Егер сіз мұны дұрыс жасасаңыз, GPIO0 пернесін басқан кезде пайда болған қызыл жарық диодты жарықтандыру қажет.

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

Егер сізде HUZZAH орнатуда қиындықтар туындаса, қосымша ақпаратты Adafruit -тің жеке оқулығынан табуға болады.

5 -қадам: ESP8266 бағдарламалау

ESP8266 бағдарламалау
ESP8266 бағдарламалау

Енді біз ESP8266 бағдарламасын жасай бастаймыз, бірақ бастамас бұрын сізге келесі кітапханаларды Arduino Library менеджеріне орнату қажет болады (Sketch-> Кітапханаларды қосу-> Кітапханаларды басқару).

  • Секіру2
  • PubSubClient

Сіз осы кітапханаларды орнатқаннан кейін, осы нұсқаулыққа (MQTT_Publish.zip) енгізген кодты іске қоса аласыз. Мен сізге әр бөлімнің не істеп жатқанын түсіну үшін түсініктеме беруге сенімдімін және бұл сізге оны сіздің қажеттіліктеріңізге бейімдеуге мүмкіндік береді деп үміттенемін.

ESP8266 сіздің WiFi желісіне және MQTT брокеріне (Raspberry Pi) қосылу үшін кодтың жоғарғы жағындағы тұрақтыларды өзгертуді ұмытпаңыз.

Егер сіз MQTT брокері үшін пайдаланушы аты мен құпия сөзді орнатпауды шешсеңіз, оның орнына MQTT_PublishNoPassword.zip файлын жүктеңіз.

6-қадам: Python клиентін орнату (paho-mqtt)

Python клиентін орнату (paho-mqtt)
Python клиентін орнату (paho-mqtt)

Бақытымызға орай, бұл қадам өте қарапайым! Масалардың питон клиентін орнату үшін пәрмен жолына (Linux/Mac) немесе тіпті пәрмен жолына (Windows) келесі әрекеттерді енгізу қажет.

paho-mqtt орнатыңыз

Ескертпе: егер сіз Python орнатқан кезде PATH айнымалы мәніне python және python қосқыңыз келмейтінін көрсетпесеңіз, Windows пәрмен жолында пәрменді іске қосу мәселесі туындауы мүмкін. Мұны түзетудің бірнеше жолы бар, бірақ менің ойымша, Python -ды қайта орнатудың ең оңай жолы. Егер күмәндансаңыз - google -ге беріңіз!

7 -қадам: Python клиенті - жазылу

Python клиенті - жазылу
Python клиенті - жазылу

Бұл қадамда біз ESP8266 MQTT тақырыбына жіберетін (жариялаған) барлық хабарларды өңдеу үшін Python сценарийін (Raspberry Pi -нің өзінде немесе желіге қосылған басқа компьютерде) орнатамыз.

Мен не болып жатқанын түсінуге көмектесу үшін түсініктеме берілген python кодын (PythonMQTT_Subscribe.py) қостым, бірақ мен мұнда негізгі ерекшеліктерді түсіндіремін.

Егер сіз бұрын MQTT байланысы үшін пайдаланушы аты мен құпия сөзді орнатпаған болсаңыз, оның орнына PythonMQTT_SubscribeNoPassword.py файлын жүктеңіз.

8 -қадам: ESP8266 құрылғылары арасындағы байланыс

ESP8266 құрылғылары арасындағы байланыс
ESP8266 құрылғылары арасындағы байланыс

Егер IoT желісін орнатқыңыз келсе, мысалы, ESP8266 құрылғылары арасында байланыс орнатқыңыз келуі мүмкін. Бақытымызға орай, бұл біз жазған кодқа қарағанда әлдеқайда күрделі емес, бірақ бірнеше маңызды өзгерістер бар.

Бір ESP деректерді екіншісіне жіберуі үшін бірінші ЭСП тақырыпқа жариялауы керек, ал екінші ЭСП осы тақырыпқа жазылуы қажет. Бұл орнату біржақты сөйлесуге мүмкіндік береді - ESP (1) - ESP (2). Егер біз ESP (2) ESP (1) -мен сөйлескенін қаласақ, біз жаңа тақырып жасай аламыз, оған ESP (2) жариялайды, ал ESP (1) жазылады. Бақытымызға орай, бізде бір тақырып бойынша бірнеше жазылушылар болуы мүмкін, сондықтан егер сіз деректерді бірнеше жүйеге жібергіңіз келсе, сізге тек бір тақырып қажет болады (деректерді жіберетін құрылғыдан басқа, олардың барлығы жазылады). жариялайды).

Егер сізге әр құрылғы не істеу керектігін анықтауға көмек қажет болса, жүйені адамдар бөлмесі ретінде қарастырыңыз. Егер ESP (1) жарияласа, сіз бұл құрылғыны «динамик» ретінде елестете аласыз, ал тақырыпқа жазылатын кез келген құрылғылар осы мысалда «тыңдаушылар» болып табылады.

Мен төменде ESP8266 тақырыпқа қалай жазылатынын және кейбір хабарларды тыңдай алатынын көрсететін мысал кодын қостым - 1 және 0. Егер 1 қабылданса, борттық жарық диоды (HUZZAH - GPIO 0 үшін) қосылады.. Егер 0 қабылданса, бұл жарық диоды өшеді.

Егер сіз күрделі деректерді өңдегіңіз келсе, бұл ReceivedMessage функциясында орындалуы керек (кодты қараңыз).

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

Кодтың жоғарғы жағындағы айнымалыларды желіге сәйкес өзгертуді ұмытпаңыз!

Ұсынылған: