- Необхідні компоненти:
- Датчик температури LM35:
- Підключення LM35 до NodeMCU:
- Пояснення коду:
- HTML-код для відображення температури на веб-сторінці:
- Робоча:
У попередньому підручнику з початку роботи з NodeMCU ми побачили, що таке NodeMCU і як ми можемо запрограмувати його за допомогою Arduino IDE . Як відомо, NodeMCU має всередині чіп Wi-Fi, тому він також може підключатися до Інтернету. Дуже корисно будувати проекти IoT. Раніше ми використовували ThingSpeak з Arduino для виготовлення термометра IoT, але тут ми створимо власну веб-сторінку для відображення температури.
У цьому посібнику ми вивчимо більше про цей цікавий MCU і повільно занурюємось в Інтернет речей, з'єднавши NodeMCU з Інтернетом. Тут ми будемо використовувати цей модуль для визначення кімнатної температури у веб-браузері, тобто створимо веб-сервер для відображення температури, використовуючи LM35 як датчик температури.
Необхідні компоненти:
- NodeMCU - ESP12
- Датчик температури LM35
- Макет
- Чоловіче-жіночі роз'єми
Датчик температури LM35:
LM35 - це аналоговий лінійний датчик температури. Його вихід пропорційний температурі (у градусах Цельсія). Діапазон робочих температур становить від -55 ° C до 150 ° C. Вихідна напруга змінюється на 10 мВ у відповідь на кожне підвищення або падіння температури o C. Він може працювати від напруги 5 В, а також від напруги 3,3 В, а струм у режимі очікування менше 60 мкА.
Зверніть увагу, що LM35 доступний у 3 варіантах серії, а саме LM35A, LM35C та LM35D. Головна відмінність полягає в їх діапазоні вимірювань температури. Серія LM35D призначена для вимірювання від 0 до 100 градусів Цельсія, де як і серія LM35A призначена для вимірювання більш широкого діапазону від -55 до 155 градусів Цельсія. Серія LM35C призначена для вимірювання від -40 до 110 градусів Цельсія.
Ми вже використовували LM35 з багатьма іншими мікроконтролерами для вимірювання температури:
- Цифровий термометр з використанням мікроконтролера LM35 та 8051
- Вимірювання температури за допомогою мікроконтролера LM35 та AVR
- Цифровий термометр з використанням датчика температури Arduino та LM35
- Вимірювання кімнатної температури за допомогою Raspberry Pi
Підключення LM35 до NodeMCU:
Схема підключення LM35 до NodeMCU наведена нижче:
LM35 - це аналоговий датчик, тому ми повинні перетворити цей аналоговий вихід на цифровий. Для цього ми використовуємо ADC-штифт NodeMCU, який визначається як A0. Ми підключимо вихід LM35 до A0.
Ми маємо 3,3 В як вихідну напругу на штифтах NodeMCU. Отже, ми використаємо 3,3 В як Vcc для LM35.
Пояснення коду:
Повний код із демонстраційним відео наведено в кінці статті. Тут ми пояснюємо кілька частин коду. Ми вже пояснили, як завантажувати код у MCU за допомогою Arduino IDE.
По-перше, ми маємо включити бібліотеку ESP8266wifi для доступу до функцій Wi-Fi..
#включати
Потім введіть своє ім’я та пароль Wi-Fi у поле ssid та пароль . Також ініціалізував змінні та запустив сервер на порту 80 зі швидкістю передачі 115200.
const char * ssid = "*********"; // Ваш ssid const char * password = "***********"; // Ваш пароль float temp_celsius = 0; плаваючий temp_fahrenheit = 0; Сервер WiFiServer (80); void setup () { Serial.begin (115200);
Підключення Wi-Fi встановлюється за допомогою виклику цих функцій.
Serial.println (); Serial.println (); Serial.print ("Підключення до"); Serial.println (ssid); WiFi.begin (ssid, пароль);
На встановлення з’єднання може знадобитися кілька секунд, тому продовжуйте показувати «…», доки з’єднання не встановиться. Тоді система буде продовжувати чекати і перевіряти, чи підключається клієнт…
while (WiFi.status ()! = WL_CONNECTED) { затримка (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi підключений"); server.begin (); Serial.println ("Сервер запущений"); Serial.println (WiFi.localIP ()); }
У розділі циклу прочитайте значення датчика та перетворіть їх у Цельсій та Фаренгейт і відображте ці значення на послідовному моніторі.
недійсний цикл () { temp_celsius = (analogRead (A0) * 330.0) / 1023.0; // Для перетворення аналогових значень у Цельсій На нашій платі є 3,3 В, і ми знаємо, що вихідна напруга LM35 змінюється на 10 мВ на кожен градус підйому / падіння Цельсія. Отже, (A0 * 3300/10 ) / 1023 = за Цельсієм temp_fahrenheit = за Цельсієм * 1,8 + 32,0; Serial.print ("Температура ="); Serial.print (temp_celsius); Serial.print ("Цельсій");
HTML-код для відображення температури на веб-сторінці:
Ми відображаємо температуру на веб-сторінці, щоб вона була доступна з будь-якої точки світу через Інтернет. HTML-код дуже простий; нам просто потрібно використовувати функцію client.println для повторення кожного рядка HTML-коду, щоб браузер міг її виконати.
У цій частині показано HTML-код для створення веб-сторінки, яка відображає значення температури.
Клієнт WiFiClient = server.available (); client.println ("HTTP / 1.1 200 OK"); client.println ("Тип вмісту: text / html"); client.println ("Підключення: закрити"); // підключення буде закрито після завершення відповіді client.println ("Оновити: 10"); // оновлюємо сторінку через 10 с client.println (); client.println (""); client.println (""); client.print ("
Цифровий термометр
"); client.print ("Температура (* C) = "); client.println (temp_celsius); client.print ("
Температура (F) = "); client.println (temp_fahrenheit); client.print ("
"); client.println (" "); затримка (5000); }Робоча:
Після завантаження коду за допомогою Arduino IDE відкрийте послідовний монітор і натисніть кнопку Скинути на NodeMCU.
Тепер ви бачите, що плата підключена до мережі Wi-Fi, яку ви визначили у своєму коді, а також отримали IP. Скопіюйте цей IP і вставте його в будь-який веб-браузер. Переконайтеся, що ваша система, на якій ви використовуєте веб-браузер, має підключатися до тієї самої мережі.
Ваш цифровий термометр готовий, і температура буде оновлюватися автоматично у веб-браузері через кожні 10 секунд.
Щоб зробити цю веб-сторінку доступною з Інтернету, вам просто потрібно встановити переадресацію портів у вашому маршрутизаторі / модемі. Перевірте повний код та відео нижче.
Також перевірте:
- Погодна станція Raspberry Pi: Моніторинг вологості, температури та тиску через Інтернет
- Моніторинг температури та вологості в режимі реального часу через Інтернет за допомогою Arduino та ThingSpeak