IoT устройствата могат да правят страхотни неща, но съществена част от уравнението е как комуникират. Можете да управлявате това с модул ESP-01.
Това, че разполагате с бюджет, не означава непременно, че не можете да поемете напреднали проекти „Направи си сам“. Ако търсите малък, достъпен и удобен WiFi модул за разширяване на вашите IoT проекти, модулът ESP-01 е чудесен избор. Въпреки това, интегрирането на такъв модул с лек протокол като MQTT може да бъде трудно, особено ако сте нов в разработката на IoT.
Програмирането само на платката ESP-01 може да бъде предизвикателство в сравнение с други модули от серията ESP8266. Но нека да разгледаме основите на цялата настройка на хардуера и софтуера, от която се нуждаете, за да започнете да използвате модула, както и как да настроите MQTT по прост и процедурен начин.
Запознаване с дъската
ESP8266 ESP-01 е малък и компактен WiFi модул, който идва с чип ESP8266EX, който е силно интегриран SoC, предназначен за IoT приложения.
Модулът включва едночипов безжичен микроконтролер с TCP/IP протоколен стек и може да се свързва към безжична мрежа или да действа като точка за достъп. Модулът ESP-01 разполага също с 2x4 пинов конектор, който осигурява достъп до неговите GPIO пинове, захранване и заземяване и UART интерфейс.
Настройка на хардуера
Модулът изобщо не е удобен за макет. За удобство можете да закупите предварително вградена удължителна платка или просто да използвате старомодния начин - като използвате джъмперни проводници и макет.
Има специален програмист, ESP8266 Serial Module Board, който може да улесни вашето програмиране. Ако предпочитате да тръгнете по този маршрут, DIYHOBI има удобен урок за това как да флашнете програма в модула ESP-01 с помощта на програматор (включително USB към TTL CH340G адаптер за модулен конвертор).
Но все още можете да програмирате модула с помощта на платка Arduino. Вижте електрическата схема по-долу за справка.
Въпреки че може да изглежда примамливо, обикновено не препоръчваме да свързвате модула директно към щифта 3.3v на Arduino, тъй като изисква повече ток, отколкото осигурява щифтът. Вместо това свържете Arduino 5V към 3,3 V регулатор на напрежение като LM1117/LD117, след това захранвайте WiFi модула от регулатора.
Не свързвайте VCC и CH_PD щифтове на ESP към 5V щифт на Arduino. Свързване на модула към 5V захранването може да го повреди.
Всички кондензатори са 10uF и резисторът е a 1K резистор.
Софтуерни изисквания
Модулът ESP-01 обикновено се използва с платформата Arduino. Като такъв, настройката на софтуера е доста проста, особено ако сте запознати с Arduino C. Въпреки това, ако сте по-запознати с Raspberry, има много Raspberry Pi IoT проекти можете да опитате.
Това са основните изисквания:
- MQTT брокер или сървър (като Mosquitto или CloudMQTT).
- Arduino IDE с основната библиотека ESP8266.
- Библиотеката PubSubClient за Arduino.
Трябва да запомните, че наличието на ваш собствен MQTT сървър локално ви дава гъвкавост във вашите проекти.
Инсталиране на необходимите библиотеки
Първо изтеглете и инсталирайте Arduino IDE на вашия компютър. Веднъж инсталиран, отворете Arduino IDE и отидете на Файл > Предпочитания.
В Допълнителни URL адреси на мениджъра на табла поле, въведете следния URL адрес:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Кликнете Добре за да затворите прозореца Предпочитания.
След това отидете на Инструменти > дъска > Управител на табла.
След това потърсете esp8266 и инсталирайте пакета за платка esp8266—това включва всички необходими библиотеки за модула ESP-01.
За да инсталирате библиотеката PubSubClient, отидете на Скица > Включете библиотека > Управление на библиотеки.
Търся PubSubClient и щракнете върху библиотеката, за да я инсталирате.
След като сте инсталирали всички необходими библиотеки, можете да започнете да програмирате модула ESP-01. Едно нещо, което трябва да отбележите обаче, е, че можете да използвате Wifi.h който е включен в библиотеката, или изтеглете ESPWifi.h библиотека и го включете в скицата си.
Установяване на връзка между ESP-01 и MQTT брокер
MQTT брокер е сървър, който действа като посредник между MQTT клиенти. Той позволява на клиентите да изпращат и получават съобщения един до и от друг чрез модел публикуване-абониране.
За да свържете вашия ESP-01 модул към MQTT брокер, ще трябва да посочите IP адреса на брокера и номера на порта във вашия код. Вие също ще трябва да предоставите уникален клиентски идентификатор, който идентифицира вашия ESP-01 модул на брокера.
Първо, включете необходимите библиотеки в горната част на вашата скица
#включи <ESP8266WiFi.h>
#включи <PubSubClient.h>
След това дефинирайте подробностите за WiFi и MQTT връзката.
конствъглен* ssid = „ВАШЕТО_SSID“;
конствъглен* парола = "ТВОЯТА ПАРОЛА";
конствъглен* mqtt_сървър = „ВАШИЯ_MQTT_СЪРВЪР“;
Не забравяйте да замените контейнерите с ваши собствени подробности за WiFi и MQTT връзка.
След това създайте WiFi клиент и се свържете с вашата локална WiFi мрежа:
WiFiClient espClient;
невалиденsetup_wifi(){
забавяне (10);
WiFi.begin (ssid, парола);
докато (WiFi.status() != WL_CONNECTED) {
забавяне (500);
}
}
Тази функция трябва да бъде извикана в настройвам() функция на вашата скица.
След това ще трябва да създадете MQTT клиент и да се свържете с вашия MQTT брокер:
PubSubClient клиент(espClient);
невалиденсвържете се отново(){
докато (!client.connected()) {
ако (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Абонирайте се за тема
client.subscribe("тест/тема");
} друго {
забавяне (5000);
}
}
}
След като се свържете с вашия MQTT брокер, можете да започнете да публикувате и да се абонирате за теми.
Публикуване на данни от ESP-01 към MQTT брокер
Сега, след като успешно свързахте вашия ESP01 модул към MQTT брокера, нека да разгледаме как можете да публикувате данни от ESP-01 към брокера.
За да публикувате данни, използвайте client.publish() функция за публикуване на съобщение до в темата тема.
client.publish("в темата", „Здравейте от ESP-01“);
Това ще публикува съобщението „Здравей от ESP-01“ до в темата тема.
Можете също така да публикувате сензорни данни от ESP-01 на брокера. Например, ако имате температурен сензор, свързан към вашия ESP-01, можете да публикувате температурните данни на брокера, както е показано по-долу.
плавам температура = 25.5;
низ temperatureString = низ(температура);
въглен температураChar[5];
temperatureString.toCharArray(температураChar, 5);
client.publish("температура", температураChar);
Това ще публикува данните за температурата в темп тема.
Данните могат да се публикуват в цикъл или на редовни интервали, в зависимост от изискванията на вашия проект. Уверете се, че не наводнявате брокера с твърде много данни и че публикувате на разумен интервал.
Абониране за теми на MQTT и получаване на данни на ESP-01
За да се абонирате за тема, използвайте client.subscribe() функция. За нашия случай по-долу клиентът се абонира за outTopic тема.
client.subscribe("извън темата");
След като сте се абонирали за дадена тема, можете да получавате съобщения, публикувани в тази тема, като използвате client.loop() функция в цикъл () функция в скицата по-долу:
невалиденцикъл(){
ако (!клиент.свързан()) {
свържете се отново ();
}
клиент.loop();
}
Това непрекъснато ще проверява за нови съобщения и ще изпълнява функцията за обратно извикване, когато бъде получено ново съобщение.
За да обработвате получените съобщения, дефинирайте функция за обратно извикване като тази, показана по-долу:
невалиденобратно повикване(въглен* тема, байт* полезен товар, неподписан вътр дължина){
// Отпечатване на полученото съобщение
Сериен.печат("Получено съобщение по темата: ");
Сериен.печат(тема);
Сериен.печат(". Съобщение: ");
за (вътр i=0;iСериен.печат((въглен)полезен товар[i]);
}
Сериен.println();
}
Тази функция ще бъде извикана, когато се получи ново съобщение в абонираната тема. Той ще отпечата полученото съобщение на серийния монитор.
Използване на нива на QoS (качество на услугата) и функции за сигурност
Една от най-важните техники, използвани при обработката на заявки, е използването на нива на QoS (Качество на услугата) за вашите MQTT съобщения. Нивата на QoS определят как брокерът и абонатите трябва да обработват вашите съобщения. Има три нива на QoS: 0, 1 и 2.
QoS ниво 0 е най-малко надеждно, тъй като съобщенията се изпращат само веднъж и не е гарантирано, че ще бъдат доставени до абоната. QoS ниво 1 е по-надеждно, тъй като съобщенията се изпращат поне веднъж и е гарантирано, че ще бъдат доставени до абоната поне веднъж. QoS ниво 2 е най-надеждното, тъй като съобщенията се изпращат точно веднъж и се гарантира, че ще бъдат доставени до абоната точно веднъж. Начинът, по който вашите устройства комуникират, е в съответствие с другите често срещани проблеми със сигурността на Интернет на нещата (IoT) и корекции искате да останете на върха.
За да използвате нивата на QoS, можете да посочите желаното ниво, когато публикувате съобщения с помощта на client.publish() функция:
client.publish("тема", "Здравей свят!", 1);
Това ще публикува съобщението Здравей свят! към тема тема с QoS ниво 1.
Друга усъвършенствана техника е използването Последна воля и завещание (LWT) съобщения. LWT съобщенията са съобщения, които се изпращат от брокера, когато клиент неочаквано прекъсне връзката. Вярваме, че това е важно за откриване на офлайн устройства или за задействане на действия, когато дадено устройство прекъсне връзката.
За да използвате LWT съобщения, можете да посочите LWT съобщението, когато се свързвате с брокера, като използвате client.setWill() функция:
client.setWill("статус", "извън линия", 1, вярно);
Това ще настрои съобщението LWT на извън линия на състояние тема с QoS ниво 1 и флаг за запазване, зададен на вярно.
Подгответе се за следващия си IoT проект
Модулът ESP-01 е достъпно и компактно решение за IoT проекти и използването му с MQTT може да изведе вашия проект на следващото ниво. Въпреки че първоначалната настройка може да бъде плашеща, предимствата на MQTT, като лека комуникация и висока мащабируемост, го правят инвестиция, която си заслужава.