Съдържание:
- Стъпка 1: Какво е MQTT и как работи
- Стъпка 2: Raspberry Pi
- Стъпка 3: Как да настроите статичен IP адрес
- Стъпка 4: NodeMCU
- Стъпка 5: Python скрипт
- Стъпка 6: Връзки и електрическа схема
- Стъпка 7: Резултат
Видео: Raspberry Pi Говори с ESP8266 Използване на MQTT: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
В този проект ще обясня какво представлява протоколът MQTT и как се използва за комуникация между устройствата, а след това, като практическа демонстрация, ще демонстрирам как да настроя система клиент и брокер, където модул ESP8266, както и RPi говорят един на друг или изпратете съобщение при натискане на бутон.
Необходим материал
1. Малина Пи 3
2. NodeMCU
3. LED
4. Бутон
5. Резистори (10k, 475 ома)
Стъпка 1: Какво е MQTT и как работи
MQTT
MQTT е протокол за пренос на данни от машина към машина (M2M). MQTT е създаден с цел да събира данни от много устройства и след това да ги транспортира до ИТ инфраструктурата. Той е лек и следователно идеален за дистанционно наблюдение, особено в M2M връзки, които изискват малък отпечатък на код или където мрежовата честотна лента е ограничена.
Как работи MQTT
MQTT е протокол за публикуване/абониране, който позволява на крайните мрежови устройства да публикуват в брокер. Клиентите се свързват с този брокер, който след това посредничи в комуникацията между двете устройства. Всяко устройство може да се абонира или регистрира за определени теми. Когато друг клиент публикува съобщение по абонирана тема, брокерът препраща съобщението до всеки клиент, който се е абонирал.
MQTT е двупосочен и поддържа информираност за състоянието на сесията. Ако устройство от край на мрежата загуби свързаност, всички абонирани клиенти ще бъдат уведомени с функцията „Последна воля и завещание“на сървъра MQTT, така че всеки оторизиран клиент в системата да може да публикува нова стойност обратно в края на мрежово устройство, поддържащо двупосочна свързаност.
Проектът е разделен на 3 части
Първо, създаваме MQTT сървър на RPi и инсталираме някои библиотеки.
Второ, ще инсталираме библиотеки в Arduino IDE за NodeMCU, за да работи с MQTT, ще качим кода и ще проверим дали сървърът работи или не.
И накрая, създаваме скрипт в Rpi, качваме необходимия код в NodeMCU и изпълняваме скрипта python, за да контролираме светодиоди както от страна на сървъра, така и от страна на клиента. Тук сървърът е RPi, а клиентът е NodeMCU.
Стъпка 2: Raspberry Pi
1. За да инсталирате най -новия MQTT сървър и клиент в RPi, за да използвате новото хранилище, първо трябва да импортирате ключа за подписване на пакета от хранилища.
wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key добавяне на mosquitto-repo.gpg.key
2. Направете хранилището достъпно за apt.
cd /etc/apt/sources.list.d/
3. В зависимост от версията на Debian, която използвате.
sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget
sudo wget
sudo apt-get update
4. Инсталирайте сървъра Mosquitto с помощта на команда.
sudo apt-get инсталирайте комар
Ако получавате грешки при инсталирането на Mosquitto по този начин.
#################################################################
Следните пакети имат неудовлетворени зависимости: mosquitto: Зависи: libssl1.0.0 (> = 1.0.1), но не може да се инсталира Зависи: libwebsockets3 (> = 1.2), но не се инсталира E: Невъзможност за коригиране на проблеми. пакети.
#################################################################
След това използвайте тази команда за отстраняване на проблеми.
sudo apt-fix-broken install
5. След като инсталирате MQTT сървър, инсталирайте клиента, като използвате команда
sudo apt-get инсталирайте клиенти на комари
Можете да проверите услугите чрез команда.
systemctl статус mosquitto.service
Тъй като нашият MQTT сървър и клиент са инсталирани. Сега можем да го проверим с абониране и публикуване. За абониране и публикуване можете да проверите команди или да посетите уебсайта, както е дадено по -долу.
Mosquitto Sub
Кръчма Mosquitto
За да инсталирате библиотеката paho-mqtt използвайте командата по-долу.
sudo pip инсталирайте paho-mqtt
Пахо
Стъпка 3: Как да настроите статичен IP адрес
Отидете в директорията cd /etc и отворете файла dhcpcd.conf с помощта на всеки редактор. В края напишете тези четири реда.
интерфейс eth0 static ip_address = 192.168.1.100 // ip, който искате да използвате
интерфейс wlan0
статичен ip_address = 192.168.1.68
статични рутери = 192.168.1.1 // вашият шлюз по подразбиране
статични сървъри на име на домейн = 192.168.1.1
След това го запазете и рестартирайте пи.
Стъпка 4: NodeMCU
Инсталирайте необходимите библиотеки в Arduino IDE за NodeMCU
1. Отидете на Sketch ==> Включване на библиотека ==> Управление на библиотеки.
2. Потърсете mqtt и инсталирайте библиотека от Adafruit или можете да инсталирате всяка библиотека.
3. Зависи от библиотеката на sleepydog, така че имаме нужда и от тази библиотека.
Програмата е дадена по -горе, само за проверка дали работи или не. Тук не съм създал скрипт в RPi. Ние просто използваме команди за абониране и публикуване. По -късно ще създадем скрипт за контрол.
mosquitto_pub -h raspberrypi -t "/leds/pi" -m "ON"
mosquitto_pub -h raspberrypi -t "/leds/pi" -m "OFF"
mosquitto_pub -h raspberrypi -t "/leds/pi" -m "TOGGLE"
mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "ON"
mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "OFF"
mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "TOGGLE"
-h ==> име на хост-t ==> тема
-m ==> съобщение
След като проверите програмата Mqtt_check, качете цялата програма в NodeMCU
Стъпка 5: Python скрипт
Както споменах по -горе, имаме нужда от скрипт на python за управление на светодиоди с помощта на бутони. И така, ще създадем скрипт. Сценарият е даден по -горе.
Когато стартирате скрипта, вашият скрипт трябва да изглежда така, както е показано на изображението, ако кодът на резултата не е нула, това е грешка, която можете да проверите за грешка на уебсайта на paho.
Стъпка 6: Връзки и електрическа схема
Свързване на бутон, LED с NodeMCU
NodeMCU ===> ButtonGnd ===> Gnd
3.3V ===> PIN1
GPIO4 (D2) ===> ПИН2
NodeMCU ===> LED
Gnd ===> Катод (-ve)
GPIO5 (D1) ===> Анод (+ve)
Свързване на бутон, LED с RPi
RPi ===> ButtonGnd ===> PIN1
GPIO 23 ===> ПИН2
RPi ===> LED
Gnd ==> Катод (-ve)
GPIO 24 ===> Анод (+ve)
Стъпка 7: Резултат
Уверете се, че скриптът ви работи, в противен случай той няма да може да контролира светодиодите с помощта на бутони.
Препоръчано:
Бутон „Натисни и говори“с крачно управление: 5 стъпки
Бутон „Натисни и говори“, управляван с крак: Ето как направих бутон „Натисни и говори“, който можете да използвате с краката си
Създайте приложение за iPhone, което говори с частици: 4 стъпки
Създайте приложение за iPhone, което говори с Particle Mesh: В този проект ще научите как да заредите приложение на вашия iPhone, което говори директно с табло от частици от трето поколение. Това ще отнеме по -малко от 20 минути от вашето време. Освен това можете да започнете да се занимавате веднага! Нека започнем. Нещата, които няма да
Neopixel Ws2812 Rainbow LED Glow с M5stick-C - Стартиране на Rainbow на Neopixel Ws2812 Използване на M5stack M5stick C Използване на Arduino IDE: 5 стъпки
Neopixel Ws2812 Rainbow LED Glow с M5stick-C | Изпълнение на Rainbow на Neopixel Ws2812 Използване на M5stack M5stick C Използване на Arduino IDE: Здравейте момчета в тази инструкция ще се научим как да използваме неопиксели ws2812 светодиоди или LED лента или LED матрица или LED пръстен с m5stack m5stick-C платка за разработка с Arduino IDE и ние ще направим модел на дъга с него
Накарайте компютъра да говори това, което пишете с помощта на Notepad: 3 стъпки
Накарайте компютъра си да говори това, което пишете с помощта на Notepad: Ето един интересен код, създаден от нас, за да накарате компютъра ви да говори това, което пишете. Ще използваме бележника, за да го създадем. Да започваме
NodeMcu говори с ISD1820 модул: 3 стъпки
NodeMcu говорете с модул ISD1820: В този прост урок ще обясня как да се свържете и използвате модула ISD1820 с помощта на платката NodeMCU. P.S. съжалявам за лошия ми английски. При четене на листа с данни за модула е написано, че: Използването на този модул е много лесно и можете да го насочите чрез p