Mundarija:
- 1 -qadam: MQTT nima?
- 2 -qadam: MQTT brokerini Raspberry Pi -ga o'rnatish
- 3 -qadam: Brokerni tekshirish
- 4 -qadam: ESP8266 -ni sozlash (Adafruit HUZZAH)
- 5 -qadam: ESP8266 dasturlash
- 6-qadam: Python mijozini o'rnatish (paho-mqtt)
- 7 -qadam: Python mijozi - obuna bo'lish
- 8 -qadam: ESP8266 qurilmalari o'rtasida aloqa
Video: MQTT -ni Raspberry Pi va ESP8266 bilan qanday ishlatish kerak: 8 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Bu yo'riqnomada men MQTT protokoli nima ekanligini va u qurilmalar o'rtasida qanday aloqa o'rnatilishini tushuntiraman, keyin amaliy ko'rsatma sifatida men sizga ESP8266 moduli xabar yuboradigan oddiy ikkita mijozli tizimni sozlashni ko'rsataman. tugma bosilganda Python dasturiga. Xususan, men ushbu loyiha uchun Adafruit HUZZAH moduli, Raspberry Pi va ish stoli kompyuteridan foydalanayapman. Raspberry Pi MQTT vositachisi vazifasini bajaradi va Python mijozi alohida ish stoli kompyuteridan ishlaydi (ixtiyoriy, chunki bu Raspberry Pi -da ishlashi mumkin).
Ushbu ko'rsatmaga amal qilish uchun siz elektronika va Arduino dasturidan qanday foydalanishni bilishingiz kerak bo'ladi. Shuningdek, siz buyruq qatori interfeysidan foydalanishni bilishingiz kerak (Raspberry Pi uchun). Umid qilamanki, siz MQTT nima ekanligini va uni asosiy stsenariyda qanday ishlatishni bilganingizdan so'ng, siz o'zingizning IoT loyihalaringizni yaratishingiz mumkin bo'ladi!
Majburiy qismlar
- 1 x Raspberry Pi, mahalliy tarmoqqa ulangan (Jessie bilan ishlaydi)
- 1 x ESP8266 moduli (Adafruit HUZZAH)
- 1 x non paneli
- 3 x o'tish simlari (erkak-erkak)
- 1 x tugma
- 1 x 10k Ohm qarshilik (jigarrang-qora-to'q sariq rang kodi)
Men bu ko'rsatmalarni yaratdim, chunki MQTT meni har doim protokol sifatida qiziqtirgan va uni ishlatishning turli xil usullari mavjud. Biroq, men uni ishlatish uchun qurilmalarni qanday kodlashni bilmayman. Buning sababi shundaki, men "Salom, dunyo!" A qurilmasidan va uni B qurilmasiga yuboring. Shuning uchun men bu ko'rsatmani yozishga qaror qildim (umid qilamanki) sizga bu qanday ishlashini o'rgataman va bu borada o'z tushunchamni mustahkamlayman!
1 -qadam: MQTT nima?
MQTT yoki MQ Telemetry Transport - bu bir nechta qurilmalarga bir -biri bilan gaplashishga imkon beruvchi xabar almashish protokoli. Hozirgi vaqtda bu narsalar Interneti uchun mashhur protokoldir, garchi u boshqa maqsadlarda ishlatilgan bo'lsa ham - masalan, Facebook Messenger. Qizig'i shundaki, MQTT 1999 yilda ixtiro qilingan, ya'ni u men kabi eski!
MQTT qurilmalar mavzularni nashr qilishi yoki ularga obuna bo'lishi mumkin degan fikrga asoslangan. Shunday qilib, masalan. Agar 1 -sonli qurilma sensorlardan birining haroratini yozib olgan bo'lsa, u mavzu bo'yicha yozilgan harorat qiymatini o'z ichiga olgan xabarni nashr qilishi mumkin (masalan, "Harorat"). Bu xabar MQTT Brokeriga yuboriladi, uni mahalliy tarmoqdagi kommutator/yo'riqnoma deb hisoblash mumkin. MQTT Broker xabarni olganidan so'ng, uni xuddi shu mavzuga obuna bo'lgan har qanday qurilmaga (bu holda, Qurilma #2) yuboradi.
Ushbu loyihada biz ESP8266 yordamida mavzu nashr etamiz va MQTT brokeri vazifasini bajaradigan Raspberry Pi orqali shu mavzuga obuna bo'ladigan Python skriptini yaratamiz. MQTT -ning ajoyib tomoni shundaki, u engil, shuning uchun u ESP8266 kabi kichik mikrokontrollerlarda ishlash uchun juda mos keladi, lekin u ham keng tarqalgan - shuning uchun biz uni Python skriptida ham ishga tushirishimiz mumkin.
Umid qilamizki, ushbu loyiha oxirida siz MQTT nima ekanligini va kelajakda uni o'zingizning loyihalaringiz uchun qanday ishlatishni tushunasiz.
2 -qadam: MQTT brokerini Raspberry Pi -ga o'rnatish
MQTT tizimini sozlash uchun bizga oldingi qadamda aytilganidek broker kerak. Raspberry Pi uchun biz "Mosquitto" MQTT brokeridan foydalanamiz. Buni o'rnatishdan oldin, Raspberry Pi -ni yangilab turish yaxshidir.
sudo apt-get yangilanishi
sudo apt-get upgrade
Buni qilganingizdan so'ng, chivin va keyin chivin-mijozlar paketlarini o'rnating.
sudo apt -get mosquitto -y ni o'rnating
sudo apt-get mosquitto-mijozlarni o'rnatish -y
Ushbu ikkita paketni o'rnatishni tugatgandan so'ng, biz brokerni sozlashimiz kerak bo'ladi. Chivin brokerining konfiguratsiya fayli /etc/mosquitto/mosquitto.conf manzilida joylashgan, shuning uchun uni sevimli matn muharriri bilan oching. Agar sizda sevimli matn muharriri bo'lmasa yoki buyruq satrining har qanday tahrirlovchisidan qanday foydalanishni bilmasangiz, men nanodan foydalanaman.
sudo nano /etc/mosquitto/mosquitto.conf
Ushbu faylning pastki qismida siz qatorni ko'rishingiz kerak:
o'z ichiga oladi_dir /etc/mosquitto/conf.d
Bu qatorni o'chirib tashlang. Faylning pastki qismiga quyidagi qatorlarni qo'shing.
ruxsat_anonim yolg'on
parol_file/etc/mosquitto/pwfile tinglovchi 1883
Bu satrlarni yozib, biz chivinlarga aytdikki, biz hech kim bizning brokerimizga haqiqiy foydalanuvchi nomi va parolni kiritmaganini xohlamaymiz (biz buni bir soniya ichida o'rnatamiz) va biz chivinlarga 1883 port raqamidagi xabarlarni tinglang.
Agar siz brokerdan foydalanuvchi nomi va parol talab qilinishini xohlamasangiz, biz qo'shgan birinchi ikkita qatorni kiritmang (ya'ni, ruxsat_anonim … va parol_fayli …). Agar siz buni qilgan bo'lsangiz, Raspberry Pi -ni qayta ishga tushirishga o'ting.
Endi faylni yoping (va saqlang). Agar siz nano -misolni kuzatayotgan bo'lsangiz, CTRL+X tugmachalarini bosing va so'ralganda Y ni kiriting.
Chunki biz chivinlarga MQTT brokeridan foydalanmoqchi bo'lgan foydalanuvchilarni tasdiqlash kerakligini aytganimiz uchun, endi biz chivinlarga foydalanuvchi nomi va parol nima ekanligini aytib berishimiz kerak! Shunday qilib, quyidagi buyruqni kiriting - foydalanuvchi nomini kerakli foydalanuvchi nomi bilan almashtiring - keyin so'ralganda kerakli parolni kiriting (E'tibor bering: agar konfiguratsiya faylini tahrirlashda siz boshqa password_file yo'lini ko'rsatgan bo'lsangiz, quyidagi yo'lni Siz ishlatgan biri).
sudo mosquitto_passwd -c/etc/mosquitto/pwfile foydalanuvchi nomi
Biz chivin konfiguratsiya faylini o'zgartirganimiz uchun, Raspberry Pi -ni qayta ishga tushirishimiz kerak.
sudo qayta yuklash
Raspberry Pi qayta ishga tushirilgandan so'ng, sizda to'liq ishlaydigan MQTT brokeri bo'lishi kerak! Keyinchalik, biz turli xil qurilmalar/usullardan foydalangan holda u bilan ishlashga harakat qilamiz!
3 -qadam: Brokerni tekshirish
Raspberry Pi -ga chivinni o'rnatganingizdan so'ng, uni tezda sinovdan o'tkazishingiz mumkin - hamma narsa to'g'ri ishlayotganiga ishonch hosil qilish uchun. Buning uchun biz buyruq satrida foydalanishimiz mumkin bo'lgan ikkita buyruq mavjud. mosquitto_pub va mosquitto_sub. Bu bosqichda men sizga brokerni sinab ko'rish uchun ularning har birini ishlatib ko'rsatma beraman.
Brokerni sinab ko'rish uchun siz ikkita buyruq satri oynasini ochishingiz kerak bo'ladi. Agar siz Putty yoki boshqa SSH mijozidan foydalanayotgan bo'lsangiz, bu boshqa SSH oynasini ochish va odatdagidek tizimga kirish kabi oddiy. Agar siz Pi -ga UNIX terminalidan kirayotgan bo'lsangiz, bu xuddi shunday. Agar siz to'g'ridan -to'g'ri Raspberry Pi -dan foydalanayotgan bo'lsangiz, GUI rejimida ikkita terminal oynasini ochishingiz kerak bo'ladi (GUI -ni ishga tushirish uchun startxcan buyrug'i ishlatiladi).
Endi siz ikkita oynani ochdingiz, biz testni boshlashimiz mumkin. Ikkala terminalning biriga foydalanuvchi nomi va parolni oldingi qadamda o'rnatganingiz bilan almashtirib, quyidagi buyruqni kiriting.
mosquitto_sub -d -u foydalanuvchi nomi -P parol -t test
Agar siz avvalgi bosqichda foydalanuvchi nomi va parolni o'rnatmaslikka qaror qilgan bo'lsangiz, bundan buyon buyruqlardagi -u va -P bayroqlariga e'tibor bermang. Masalan, mosquitto_sub buyrug'i endi shunday bo'ladi:
mosquitto_sub -d -t testi
Mosquitto_sub buyrug'i mavzuga obuna bo'ladi va terminal oynasida ko'rsatilgan mavzuga yuborilgan barcha xabarlarni ko'rsatadi. Bu erda -d disk raskadrovka rejimini bildiradi, shuning uchun barcha xabarlar va harakatlar ekranda chiqariladi. -u va -P o'z -o'zidan tushunarli bo'lishi kerak. Nihoyat, -t - bu biz obuna bo'lmoqchi bo'lgan mavzuning nomi - bu holda "test".
Keyingi, boshqa terminal oynasida biz "test" mavzusiga oid xabarni chop etishga harakat qilamiz. Foydalanuvchi nomi va parolni o'zgartirishni yana eslab, quyidagilarni kiriting:
mosquitto_pub -d -u foydalanuvchi nomi -P parol -t test -m "Salom, dunyo!"
Enter tugmachasini bosganingizda "Salom, dunyo!" Degan xabarni ko'rishingiz kerak. biz ishlatgan birinchi terminal oynasida paydo bo'ladi (obuna bo'lish uchun). Agar shunday bo'lsa, barchangiz ESP8266 ustida ishlashga tayyormiz!
4 -qadam: ESP8266 -ni sozlash (Adafruit HUZZAH)
Agar bu qadam Adafruit HUZZAHga xos bo'lsa (men bu loyihani bajarish uchun foydalanaman). Agar siz boshqa Arduino / ESP8266 qurilmasidan foydalanayotgan bo'lsangiz, bu bosqichni o'tkazib yuborishingiz mumkin. Ammo, men sizga o'qishni o'tkazib yubormaslikni maslahat berardim, agar bu erda sizga tegishli bo'lishi mumkin bo'lgan ma'lumotlar bo'lsa.
Ushbu loyiha uchun men HUZZAHni Arduino dasturi bilan dasturlashtirmoqchiman. Agar siz hali o'rnatmagan bo'lsangiz, Arduino dasturini o'rnatganingizga ishonch hosil qiling (1.6.4dan yangisi). Siz bu yerdan yuklab olishingiz mumkin.
Arduino dasturini o'rnatganingizdan so'ng, uni oching va Fayl-> Tanlovlar-ga o'ting. Bu erda siz (oynaning pastki qismida) "Qo'shimcha taxtalar menejerining URL manzillari" yorlig'i bo'lgan matnli oynani ko'rishingiz kerak. Ushbu matn maydoniga quyidagi havolani nusxa ko'chiring va joylashtiring:
arduino.esp8266.com/stable/package_esp8266com_index.json
O'zgarishlarni saqlash uchun OK ni bosing. Endi menejer menejerini (Asboblar-> Kengash-> Kengash menejeri) oching va ESP8266-ni qidiring. Esp8266 by ESP8266 hamjamiyat paketini o'rnating. Arduino dasturini qayta ishga tushiring.
Endi, taxtani dasturlashdan oldin, biz bir nechta variantni tanlashimiz kerak. "Asboblar" menyusida Adafruit HUZZAH ESP8266 ni taxta uchun, 80 MGts chastotali chastotani tanlang (agar siz uni haddan tashqari oshirmoqchi bo'lsangiz 160 MGts dan foydalanishingiz mumkin, lekin hozir men 80 MGts dan foydalanmoqchiman), 4M (3M SPIFFS) Flash hajmi uchun va yuklash tezligi uchun 115200. Bundan tashqari, siz foydalanadigan COM portini tanlashingizga ishonch hosil qiling (bu sizning sozlamalaringizga bog'liq bo'ladi).
Har qanday kodni yuklashdan oldin, HUZZAH bootloader rejimida ekanligiga ishonch hosil qilishingiz kerak. Buni amalga oshirish uchun kartadagi GPIO0 belgisini bosing va ushlab turing, Reset tugmachasini bosib ushlab turing. Keyin, Reset tugmasini, keyin GPIO0 -ni qo'yib yuboring. Agar siz buni to'g'ri bajargan bo'lsangiz, GPIO0 tugmachasini bosganingizda yonib turgan qizil LED endi xira yonib turishi kerak.
Kodni mikrokontrollerga yuklash uchun avval HUZZAH yuklash rejimida ekanligiga ishonch hosil qiling, so'ng Arduino IDE -dagi yuklash tugmasini bosing.
Agar siz HUZZAH -ni o'rnatishda muammoga duch kelsangiz, qo'shimcha ma'lumotni Adafruit -ning o'z qo'llanmasida topishingiz mumkin.
5 -qadam: ESP8266 dasturlash
Endi biz ESP8266-ni dasturlashni boshlaymiz, lekin boshlashdan oldin siz Arduino kutubxonasi menejeriga quyidagi kutubxonalarni o'rnatishingiz kerak bo'ladi (Sketch-> Kutubxonalarni qo'shish-> Kutubxonalarni boshqarish).
- Siqish 2
- PubSubClient
Ushbu kutubxonalarni o'rnatganingizdan so'ng, men ushbu ko'rsatmaga (MQTT_Publish.zip) kiritilgan kodni ishga tushirishingiz mumkin. Men har bir bo'lim nima qilayotganini tushunishingiz uchun sharh berishga ishonch hosil qildim va umid qilamanki, bu sizning ehtiyojlaringizga moslashtirishga imkon beradi.
ESP8266 sizning WiFi tarmog'ingizga va MQTT Brokeriga (Raspberry Pi) ulanishi uchun kodning yuqori qismidagi doimiylarni o'zgartirishni unutmang.
Agar siz MQTT Broker uchun foydalanuvchi nomi va parol o'rnatmaslikka qaror qilgan bo'lsangiz, uning o'rniga MQTT_PublishNoPassword.zip faylini yuklab oling.
6-qadam: Python mijozini o'rnatish (paho-mqtt)
Yaxshiyamki, bu qadam juda oddiy! Chivinli piton mijozini o'rnatish uchun buyruq satriga (Linux/Mac) yoki hatto buyruq satriga (Windows) quyidagilarni kiritish kifoya.
paho-mqtt ni o'rnatish
Eslatma: Agar siz Python -ni o'rnatganingizda PATH o'zgaruvchisiga python va pip qo'shilishini xohlamagan bo'lsangiz, Windows buyruq satrida pip buyrug'ini ishlatishda muammo bo'lishi mumkin. Buni tuzatishning bir qancha usullari bor, lekin menimcha, Pythonni qayta o'rnatish - eng oson yo'li. Agar shubhangiz bo'lsa - googlega bering!
7 -qadam: Python mijozi - obuna bo'lish
Ushbu bosqichda biz ESP8266 tomonidan MQTT mavzusiga yuborilgan (chop etilgan) barcha xabarlarni boshqarish uchun Python skriptini (Raspberry Pi -ning o'zida yoki tarmoqqa ulangan boshqa kompyuterda) o'rnatamiz.
Men nima bo'layotganini tushunishga yordam berish uchun sharh berilgan python kodini (PythonMQTT_Subscribe.py) o'z ichiga olganman, lekin men bu erda ba'zi asosiy xususiyatlarni tushuntirib beraman.
Agar siz ilgari MQTT ulanishi uchun foydalanuvchi nomi va parol o'rnatmagan bo'lsangiz, uning o'rniga PythonMQTT_SubscribeNoPassword.py faylini yuklab oling.
8 -qadam: ESP8266 qurilmalari o'rtasida aloqa
Agar siz IoT tarmog'ini o'rnatmoqchi bo'lsangiz, masalan, ESP8266 qurilmalari o'rtasida aloqa o'rnatishingiz mumkin. Yaxshiyamki, bu biz yozgan kodga qaraganda ancha murakkab emas, lekin bir nechta sezilarli o'zgarishlar mavjud.
Bir ESP ma'lumotni boshqasiga yuborishi uchun, birinchi ESP bu mavzu bo'yicha nashr etishi kerak, ikkinchisi esa ushbu mavzuga obuna bo'lishi kerak. Ushbu sozlash bir tomonlama suhbatga imkon beradi - ESP (1) dan ESP (2) gacha. Agar biz ESP (2) ESP (1) bilan qayta gaplashishini istasak, biz yangi mavzu yaratishimiz mumkin, unga ESP (2) nashr etadi va ESP (1) obuna bo'ladi. Yaxshiyamki, bizda bitta mavzu bo'yicha bir nechta obunachilar bo'lishi mumkin, shuning uchun agar siz bir qancha tizimlarga ma'lumotlarni yubormoqchi bo'lsangiz, sizga faqat bitta mavzu kerak bo'ladi (bu ma'lumotni yuboradigan qurilmadan tashqari, ularning hammasi obuna bo'ladi). nashr eting).
Agar sizga har bir qurilma nima qilishi kerakligini aniqlashda yordam kerak bo'lsa, tizimni odamlar xonasi deb o'ylang. Agar ESP (1) nashr qilsa, siz bu qurilmani "karnay" deb tasavvur qilishingiz mumkin va mavzuga obuna bo'lgan har qanday qurilmalar bu misolda "tinglovchilar" dir.
Men quyida ESP8266 qanday mavzuga obuna bo'lishini va ba'zi xabarlarni tinglashini ko'rsatadigan misol kodini qo'shdim - 1 va 0. Agar 1 qabul qilinsa, bortdagi LED (HUZZAH uchun - GPIO 0) yoqiladi.. Agar 0 qabul qilinsa, bu LED o'chadi.
Agar siz murakkabroq ma'lumotlarni qayta ishlashni xohlasangiz, buni ReceivedMessage funktsiyasida bajarish kerak (kodni ko'ring).
O'zingizning loyihalaringiz uchun, agar siz ma'lumotlarni yuborishingiz va qabul qilishingiz kerak bo'lsa, siz oldingi misoldagi nashr funktsiyasini ushbu bosqichga kiritilgan kodga kiritishingiz mumkin. Buni asosiy Arduino loop () funktsiyasida bajarish kerak.
Kodning yuqori qismidagi o'zgaruvchilarni tarmog'ingizga mos ravishda o'zgartirishni unutmang!
Tavsiya:
Nosozliklarni tuzatuvchini ESP32 -da qanday ishlatish kerak: 11 qadam (rasmlar bilan)
ESP32 -da disk raskadrovka dasturidan qanday foydalanish kerak: Siz hech qachon o'z kodingizni ko'rib chiqishni xohlaganmisiz, nima uchun u o'zini shunday tutayotganini? An'anaga ko'ra, ESP32 loyihalarida nima bo'layotganini tushunish uchun cheksiz bosma bayonot qo'shish kerak bo'lardi, lekin yaxshiroq yo'l bor! Nosozliklarni tuzatuvchi
MQTT -ni Raspberry Pi va ESP8266/sonoff bilan qanday ishlatish kerak: 4 qadam
MQTT -ni Raspberry Pi va ESP8266/sonoff bilan qanday ishlatish kerak: Hammaga salom! Bugun men sizga malina pi va ESP8266 asosidagi sonoff wifi o'rni kalitini dunyoning istalgan burchagidan boshqarish uchun sozlashni ko'rsataman. Agar siz mening ko'rsatmalarimni diqqat bilan bajargan bo'lsangiz, bu ko'rsatma
Mac terminalini qanday ishlatish va asosiy funktsiyalarni qanday ishlatish kerak: 4 qadam
Mac terminalini qanday ishlatish va asosiy funktsiyalarni qanday ishlatish kerak: Biz sizga MAC terminalini qanday ochish kerakligini ko'rsatamiz. Shuningdek, biz sizga terminalda ifconfig, kataloglarni o'zgartirish, fayllarga kirish va arp kabi bir nechta xususiyatlarni ko'rsatamiz. Ifconfig sizga IP manzilingizni va MAC reklamangizni tekshirishga imkon beradi
Quyosh energiyasida batareya soatini qanday ishlatish kerak: 15 qadam (rasmlar bilan)
Quyosh energiyasida batareyali soatni qanday ishga tushirish kerak: Bu hissa 2016 yildagi oldingi qo'shimchadan kelib chiqadi, (qarang bu yerga qarang), lekin bu davrda ishni ancha yengillashtiradigan va ish faoliyatini yaxshilaydigan tarkibiy qismlar rivojlandi. Bu erda ko'rsatilgan texnikalar quyosh nurini beradi
Instagram -ni qanday yuklab olish va ishlatish kerak: 28 qadam (rasmlar bilan)
Instagram -ni qanday yuklab olish va undan foydalanish kerak: Ushbu yo'riqnomaning maqsadi Instagram -ni shaxsiy foydalanish uchun yuklab olish va undan foydalanishni o'rganishga yordam berishdir. Ijtimoiy tarmoqlar-bu bizning kundalik hayotimizning tobora o'sib borayotgan qismi, Instagram ijtimoiy tarmoqlarning eng ommabop turlaridan biri sifatida eng yuqori pog'onalarga ko'tarilmoqda