Метеостанция на HTU21D и ESP8266
В этой статье покажу пример подключения модуля температуры и влажности HTU21D к плате NodeMCU на чипе ESP8266.
В этой статье покажу пример подключения модуля температуры и влажности HTU21D к NodeMCU (ESP8266). Контроллер NodeMCU будет считывать температуру и влажности с датчика HTU21D и полученные данный отобразить в WEB странице. В качестве среды разработки используем Arduino IDE
Необходимые детали:
► Контроллер NodeMCU v.2 (ESP8266) x 1 шт.
► Провода DuPont, 2,54 мм, 20 см x 1 шт.
► Датчика температуры и влажности HTU21D x 1 шт.
Подключение
В данном примере используется контроллер NodeMCU v.2 (ESP8266) и датчик HTU21D. Подключение не сложное, необходимо всего четыре провода, первым делом подключаем шину I2C, выводы SDA и SCL подключить к D2 и D1, подключаем питание 3.3 В и GND. Для удобства приведу схему подключения.
Установка библиотеки:
В данном примере используем одну библиотеку «SparkFunHTU21D» скачать ее можно с «Менеджер библиотек» или в конце статьи, на 02.10.2020 версия 1.0.5.
В строке поиска вводим «HTU21D» находим библиотеку «SparkFunHTU21D» и устанавливаем ее.
Так же, не забываем что необходимо установить NodeMCU в среду разработки Arduino IDE, для этого воспользуйтесь этой статьей. После установки библиотек перезапустите, среду разработки Arduino IDE.
Программа:
Теперь, у нас все готово, копируем скетч в Arduino IDE или скачайте готовый файл и загружаем его в NodeMCU, незабываем указать свои данные сети.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
/* Тестировалось на Arduino IDE 1.8.5 Дата тестирования 02.10.2020г. */ #include <ESP8266WiFi.h> // Подключаем библиотеку ESP8266WiFi #include <Wire.h> // Подключаем библиотеку Wire #include "SparkFunHTU21D.h" // Подключаем библиотеку SparkFunHTU21D HTU21D myHumidity; const char* ssid = "Название Вашей WiFi сети "; // Название Вашей WiFi сети const char* password = "Пароль от Вашей WiFi сети "; // Пароль от Вашей WiFi сети WiFiServer server(80); // Указываем порт Web-сервера String header; void setup() { Serial.begin(115200); // Скорость передачи 115200 bool status; myHumidity.begin(); // Инициализация HTU21D Serial.print("Connecting to "); // Отправка в Serial port Serial.println(ssid); // Отправка в Serial port WiFi.begin(ssid, password); // Подключение к WiFi Сети while (WiFi.status() != WL_CONNECTED) { // Проверка подключения к WiFi сети delay(500); // Пауза Serial.print("."); // Отправка в Serial port } Serial.println(""); // Отправка в Serial port Serial.println("WiFi connected."); // Отправка в Serial port Serial.println("IP address: "); // Отправка в Serial port Serial.println(WiFi.localIP()); // Отправка в Serial port server.begin(); } void loop(){ WiFiClient client = server.available(); // Получаем данные, посылаемые клиентом if (client) { Serial.println("New Client."); // Отправка "Новый клиент" String currentLine = ""; // Создаем строку для хранения входящих данных от клиента while (client.connected()) { // Пока есть соединение с клиентом if (client.available()) { // Если клиент активен char c = client.read(); // Считываем посылаемую информацию в переменную "с" Serial.write(c); // Отправка в Serial port header += c; if (c == '\n') { // Вывод HTML страницы if (currentLine.length() == 0) { client.println("HTTP/1.1 200 OK"); // Стандартный заголовок HT client.println("Content-type:text/html "); client.println("Connection: close"); // Соединение будет закрыто после завершения ответа client.println("Refresh: 10"); // Автоматическое обновление каждые 10 сек client.println(); client.println("<!DOCTYPE html><html>"); // Веб-страница создается с использованием HTML client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"); client.println("<meta charset='UTF-8'>"); // Делаем русскую кодировку client.println("<link rel=\"icon\" href=\"data:,\">"); client.println("<style>body { text-align: center; font-family: \"Trebuchet MS\", Arial;}"); client.println("table { border-collapse: collapse; width:40%; margin-left:auto; margin-right:auto; }"); client.println("th { padding: 12px; background-color: #0043af; color: white; }"); client.println("tr { border: 1px solid #ddd; padding: 12px; }"); client.println("tr:hover { background-color: #bcbcbc; }"); client.println("td { border: none; padding: 12px; }"); client.println(".sensor { color:white; font-weight: bold; background-color: #bcbcbc; padding: 1px; }"); client.println("</style></head><body><h1>Метеостанция на TU21D и ESP8266</h1>"); client.println("<table><tr><th>Параметр</th><th>Показания</th></tr>"); client.println("<tr><td>Температура</td><td><span class=\"sensor\">"); client.println(myHumidity.readTemperature()); client.println("<tr><td>Влажность</td><td><span class=\"sensor\">"); client.println(myHumidity.readHumidity()); client.println(" %</span></td></tr>"); client.println("</body></html>"); client.println(); break; } else { currentLine = ""; } } else if (c != '\r') { currentLine += c; } } } header = ""; client.stop(); Serial.println("Client disconnected."); Serial.println(""); } } |
Определение IP (ESP8266):
Теперь необходимо узнать IP модуля, для этого открываем «Мониторинг порта» с выставленной скоростью «115200», в моем случаи сеть выдала «192.168.2.106».
Открываем любой браузер (компьютер должен находиться в той же сети, что и ESP8266 модуль), вводим IP-адрес (192.168.2.106) и нажимаем Enter.
Ссылки
Документация на HTU21D
Библиотека SparkFunHTU21D
Купить на Aliexpress
Плата NodeMCU V2
Провода DuPont, 2,54 мм, 20 см
Датчика температуры и влажности HTU21D
Купить в Самаре и области
Плата NodeMCU V2
Провода DuPont, 2,54 мм, 20 см
Датчика температуры и влажности HTU21D
Добрый день!
Можно ли подключить сразу два датчки температуры и влажности таким образом?